Skill: shaharsha/gif-whatsapp (version 1.3.0)

--- 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: 1. Download the GIF 2. Convert to MP4 3. Send with `gifPlayback: true` ## Complete Workflow ### Step 1: Search for GIF ```bash gifgrep "SEARCH QUERY" --max 5 --format url ``` Search 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 ```bash curl -sL "GIF_URL" -o /tmp/gif.gif ``` ### Step 3: Convert to MP4 ```bash ffmpeg -i /tmp/gif.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" /tmp/gif.mp4 -y ``` ### Step 4: Copy to workspace (REQUIRED!) ```bash 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=true ``` Use 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 ```bash # 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=true ``` ## When 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 `message` tool — 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=true` displays as looping GIF - Small file size = fast delivery


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)