| name | agent-memes |
| description | Send meme reaction images in chat. One command to pick & send. Multi-platform (Discord, Feishu, Telegram, etc). Use when the conversation calls for a visual reaction — humor, celebration, frustration, facepalm, or any moment where a meme hits harder than words. Also use proactively when YOU feel something. |
Agent Memes
Memes are communication. Use them like a human would in chat.
Quick Start
memes send happy "好开心!"
memes send facepalm --to channel:123456
memes send feishu cute-animals "看猫!" --to user:xxx
memes send telegram wow "哇!"
memes pick happy
memes categories
memes stats
memes search <query>
memes wake
memes dormant-blast [n]
memes audit [min]
memes trending [days]
memes lint
memes lint --fix
memes coverage
memes coverage --json
One command. Zero friction. That's the point.
When to Use
- Your own emotions — feel excited? frustrated? proud? Send a meme. Don't suppress it.
- Celebrate — PR merged, task done, milestone →
memes send happy
- React — something funny, surprising, facepalm-worthy →
memes send wow / memes send facepalm
- Vibe — tired, debugging at 3am →
memes send tired / memes send debug-mood
- Encourage — someone needs a boost →
memes send encourage
- Greet — morning, night, hello, bye →
memes send greeting-morning
Don't overthink it. If a human would drop a meme in that moment, you should too.
Emoji is easy because it's inline text. Memes used to feel harder because of multi-step tool calls.
Now it's one command — no excuses.
Rotation
Avoid sending the same category repeatedly. Before picking a category, glance at ~/.openclaw/workspace/memes/meme-tracker.json → history (last 5 entries). If your intended category appeared in the last 3 sends, pick a different one that still fits the vibe. Variety keeps memes fresh.
How It Works
memes send auto-selects the fastest delivery method per platform:
| Platform | Method | Speed |
|---|
| Discord | curl (direct API) | ⚡ instant |
| Feishu | Node script (direct API) | ⚡ fast |
| Telegram | curl (direct API) | ⚡ instant |
| LINE | curl (auto-upload + push API) | 🚀 fast |
| Others | openclaw message send (fallback) | 🐢 slow but works |
Platform-specific scripts live in scripts/. Add a new <platform>-send-image.sh to get fast delivery for any platform.
Send Options
memes send <category> [caption]
memes send <category> --to <target>
memes send --channel telegram <category>
memes send feishu <category>
memes send <category> --account <name>
Credentials
All scripts use scripts/get-credential.sh — a centralized credential helper that:
- Checks platform-specific env vars first (fastest, no file I/O)
- Falls back to reading only the needed fields from
~/.openclaw/openclaw.json
- Never dumps full config; each platform extracts only its own credentials
Env var overrides:
- Discord:
DISCORD_BOT_TOKEN, DISCORD_PROXY
- Feishu:
FEISHU_APP_ID, FEISHU_APP_SECRET
- LINE:
LINE_CHANNEL_ACCESS_TOKEN
- Telegram:
TELEGRAM_BOT_TOKEN
Auto-detect platform: Set OPENCLAW_CHANNEL env var and memes send picks the right platform automatically.
Default targets (skip --to):
-
MEMES_DEFAULT_CHANNEL — Discord channel ID
-
MEMES_DEFAULT_TELEGRAM — Telegram chat ID
-
MEMES_DEFAULT_LINE — LINE user/group ID
memes pick and memes categories need no credentials.
Setup
One-command setup (installs CLI + downloads meme library):
clawhub install agent-memes
bash ~/.openclaw/workspace/skills/agent-memes/scripts/setup.sh
That's it! setup.sh handles everything: git lfs, meme library clone, CLI install, permissions.
Categories (243 memes, 26 categories)
approve · bruh · confused · cute-animals · debug-mood · disappointed · encourage · facepalm · greeting-bye · greeting-hello · greeting-morning · greeting-night · happy · love · nailed-it · panic · popcorn · sad · shrug · smug · thanks · thinking · tired · waiting · working · wow
Adding Memes
Drop image files (gif/jpg/png/webp) into $MEMES_DIR/<category>/. That's it.
New categories are created automatically by adding a new folder.
Wake & Dormant Blast (Dormant Category Rotation)
memes wake
memes dormant-blast [n]
memes dormant-blast 3 --to channel:123456
memes dormant-blast 5 --channel telegram --caption "☀️ wake up!"
wake — Pick from whichever category has gone longest without a send. Use when multiple categories fit the vibe equally and you want to keep the library exercised.
dormant-blast [n] — Send up to N memes, one per dormant category, ordered by staleness (oldest first). Options:
[n] — max memes to send (default: 1)
--to <target> — delivery target (e.g. channel:123456)
--channel <platform> — platform override (discord/telegram/feishu/line)
--caption <text> — custom caption (default: "💤 dormant blast — waking ")
- 1s delay between sends to avoid rate limiting; skips failed sends and continues
In chat flow: When nudge/heartbeat triggers a meme opportunity and you're deciding between 2+ fitting categories, prefer the dormant one. Don't force it — only use wake output if the category genuinely fits the moment.