- name
- gif-whatsapp
- version
- 1.2.0
- description
- Search and send GIFs on WhatsApp. Handles the Tenor→MP4 conversion required for WhatsApp.
- author
- Leo 🦁
- homepage
- https://clawhub.com/skills/gif-whatsapp
- metadata
- {"clawdbot":{"emoji":"🎬","requires":{"bins":["gifgrep","ffmpeg","curl"]},"requiresTools":["message"],"notes":"Uses the platform message tool (already configured) for WhatsApp delivery. gifgrep searches Tenor/Giphy only. Downloads are saved to /tmp and cleaned up after sending."}}
- allowed-tools
- [exec, message]
GIF Sender
Send GIFs naturally in WhatsApp conversations.
CRITICAL: WhatsApp GIF Workflow
WhatsApp doesn't support direct Tenor/Giphy URLs. You MUST:
- Download the GIF
- Convert to MP4
- Send with
gifPlayback: true
Complete Workflow
Step 1: Search for GIF
gifgrep "SEARCH QUERY" --max 5 --format urlSearch in English for best results.
Always get 5 results and pick the best one based on the filename/description - don't just take the first result.
Step 2: Download the GIF
curl -sL "GIF_URL" -o /tmp/gif.gifStep 3: Convert to MP4
ffmpeg -i /tmp/gif.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" /tmp/gif.mp4 -yStep 4: Copy to workspace (REQUIRED!)
cp /tmp/gif.mp4 /root/.openclaw/workspace/gif.mp4⚠️ The message tool can ONLY send files from the workspace directory. Files in /tmp will fail with LocalMediaAccessError.
Step 5: Send via message tool
message action=send to=NUMBER message=" " filePath=/root/.openclaw/workspace/gif.mp4 gifPlayback=trueUse a single space as the message body — WhatsApp requires a non-empty message to send media, but the space won't be visible to the recipient.
One-liner Example
# Search
gifgrep "thumbs up" --max 3 --format url
# Pick best URL, then download + convert + copy to workspace:
curl -sL "https://media.tenor.com/xxx.gif" -o /tmp/g.gif && \
ffmpeg -i /tmp/g.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" /tmp/g.mp4 -y 2>/dev/null && \
cp /tmp/g.mp4 /root/.openclaw/workspace/g.mp4
# Then send with message tool from workspace path, gifPlayback=trueWhen to Send GIFs
✅ Good times:
- User asks for a GIF
- Celebrating good news
- Funny reactions
- Expressing emotions (excitement, facepalm, etc.)
❌ Don't overuse:
- One GIF per context is enough
- Not every message needs a GIF
Popular Search Terms
| Emotion | Search Terms |
|---|---|
| Happy | celebration, party, dancing, excited |
| Approval | thumbs up, nice, good job, applause |
| Funny | laugh, lol, haha, funny |
| Shocked | mind blown, shocked, surprised, wow |
| Sad | crying, sad, disappointed |
| Frustrated | facepalm, ugh, annoyed |
| Love | heart, love, hug |
| Cool | sunglasses, cool, awesome |
Security & Safety Notes
- Source domains: gifgrep only searches trusted GIF providers (Tenor, Giphy)
- File handling: Downloads go to
/tmp, then MUST be copied to workspace before sending (message tool only allows workspace paths) - Empty caption: A single space is used as the message body so WhatsApp sends the GIF without visible text
- WhatsApp integration: Uses the platform's built-in
messagetool — no separate WhatsApp credentials needed - ffmpeg safety: Processes only GIF files from trusted providers; no arbitrary file execution
Why This Works
- WhatsApp converts all GIFs to MP4 internally
- Direct Tenor/Giphy URLs often fail
- MP4 with
gifPlayback=truedisplays as looping GIF - Small file size = fast delivery