emo-img — Sticker / Emoji Image Skill
Send sticker images (表情包) in chat conversations. Hybrid search: local collection first, then Tenor online.
Storage
- Sticker collection:
~/.openclaw/stickers/ - Index file:
~/.openclaw/stickers/index.json - Override with
STICKER_DIRenv var
Commands
Search (hybrid: local first, then online)
python3 {baseDir}/scripts/sticker.py search "开心"
python3 {baseDir}/scripts/sticker.py search "thumbs up" --limit 3
Returns JSON with local and online arrays. Local results have a file path; online results have a url.
Search local only
python3 {baseDir}/scripts/sticker.py search-local "哭"
Search online only (Tenor)
python3 {baseDir}/scripts/sticker.py search-online "excited" --limit 5
Add a local file
python3 {baseDir}/scripts/sticker.py add /path/to/sticker.gif --name "happy-cat" --tags "开心,猫,happy,cat"
Download from URL and save
python3 {baseDir}/scripts/sticker.py download "<url>" --name "thumbs-up" --tags "好的,赞,ok"
List all stickers
python3 {baseDir}/scripts/sticker.py list
Remove a sticker
python3 {baseDir}/scripts/sticker.py remove "happy-cat"
Sending Stickers
Use the message tool with the media field to send sticker images. This works for ALL channels (WhatsApp, Telegram, Discord, etc.) — no external CLI needed.
{
"action": "send",
"channel": "<current_channel>",
"to": "<recipient>",
"message": "",
"media": "<sticker_file_path>"
}
The media field accepts local file paths directly (e.g. /Users/.../.openclaw/stickers/bocchi-shy.gif).
For online results not yet downloaded, first run download to save locally, then send the saved file path.
Workflow
- User says something like "发个表情包" or "send a sticker about X"
- Run
search "<keyword>"to find matching stickers - If local results exist, use the
filepath directly - If only online results, download first with
download, then use the saved file path - Send via the appropriate channel (auto-detect from conversation context)
- Optionally ask user if they want to save an online sticker to local collection
Tips
- Tag stickers in both Chinese and English for better search
- Use
--tagswith comma-separated keywords when adding stickers - The Tenor demo API key has rate limits; set
TENOR_API_KEYenv for heavy use