Install
openclaw skills install @zhuwenzhuang/sticker-managerSticker library management for OpenClaw. Use this skill to save, search, tag, rename, clean up, collect, import, and recommend stickers or reaction images. It supports local inventory management for JPG / JPEG / PNG / WEBP / GIF files. Default library path: ~/.openclaw/workspace/stickers/library/ Override with: STICKER_MANAGER_DIR
openclaw skills install @zhuwenzhuang/sticker-managerManage a local sticker / reaction-image library with keyword lookup, quality checks, semantic tags, batch import/collection workflows, and media sending support.
Authors:
Repository / backup source:
message tool~/.openclaw/workspace/stickers/library/~/.openclaw/media/inbound/Environment overrides:
STICKER_MANAGER_DIRSTICKER_MANAGER_INBOUND_DIRSTICKER_MANAGER_LANGSTICKER_MANAGER_VISION_MODELSWhen the user sends an image/GIF and says things like:
Basic save:
python3 scripts/save_sticker.py "custom_name"
Save from recent media history:
python3 scripts/save_sticker.py --list-history
python3 scripts/save_sticker.py --history-index=2 "saved_from_history"
python3 scripts/save_sticker.py --source=file_39---example.jpg "saved_by_source"
Quality-aware save:
python3 scripts/save_sticker_auto.py "custom_name"
python3 scripts/save_sticker_auto.py --history-index=3 "quality_checked_name"
If no name is provided, save_sticker_auto.py exits with code 2 and returns analysis markers so the assistant can ask a model to name the image.
Command:
python3 scripts/get_sticker.py "keyword"
List all stickers:
python3 scripts/get_sticker.py
Matching order:
Rename:
python3 scripts/manage_sticker.py rename "old_name" "new_name"
Delete:
python3 scripts/manage_sticker.py delete "name"
Clean very small files:
python3 scripts/manage_sticker.py clean
Add tags:
python3 scripts/sticker_semantic.py tag "sticker_name" "happy,calm" "meeting,celebration" "thumbs-up,approved" "A calm approval reaction image."
Suggest for direct context:
python3 scripts/sticker_semantic.py suggest "we finally fixed it"
python3 scripts/sticker_semantic.py suggest "we finally fixed it" --strategy=model
List tag database:
python3 scripts/sticker_semantic.py list
Prepare model payload only:
python3 scripts/sticker_semantic.py prepare-model "the user is nervous but pretending to be calm"
Recommend from chat history:
python3 scripts/sticker_semantic.py context-recommend ./chat_history.json --top=5
Collect from URLs or local files:
python3 scripts/collect_stickers.py --sources-file ./sources.txt --out-dir ./stickers/batch --prefix sticker --target-count 15
If the final count is below target, the command exits with code 2 and prints NEED_MORE=....
Import from local directories:
python3 scripts/batch_import.py ./stickers --target-dir ~/.openclaw/workspace/stickers/library/
python3 scripts/batch_import.py ./stickers --auto-tag
Discover sources from directories, URLs, or pages:
python3 scripts/discover_sources.py ./stickers
python3 scripts/discover_sources.py https://example.com/image1.gif
python3 scripts/discover_sources.py https://example.com/gallery
python3 scripts/discover_sources.py --fetch-urls https://example.com/image1.gif
Default discovery is lightweight:
pending unless --fetch-urls is usedAnimation rule (mandatory):
Generate a vision plan for a single file:
python3 scripts/sticker_semantic.py auto-tag ./sticker.gif
Generate plans for a directory:
python3 scripts/sticker_semantic.py auto-tag-dir ./stickers/
Standalone vision fallback plan:
python3 scripts/sticker_semantic.py vision-plan ./sample.png "find a doubtful or suspicious emotion"
This returns a JSON plan with:
Suggested default model order:
bailian/kimi-k2.5openai/gpt-5-miniAfter resolving a file path, send it with the message tool.
Example:
message(
action="send",
channel="telegram",
target="<chat_id>",
media="/absolute/path/to/sticker.gif",
caption="Here you go"
)
If you need to reply to a specific message, pass replyTo="<message_id>".
The auto-save flow checks media size before saving.
| Level | File size | Action |
|---|---|---|
| High | >= 50KB | save directly |
| Good | >= 20KB | save directly |
| Medium | >= 10KB | save directly |
| Low | >= 5KB | usable, but lower confidence |
| Too low | < 5KB | reject unless forced |
Force-save example:
python3 scripts/save_sticker_auto.py "low_quality_name" --force
STICKER_MANAGER_VISION_MODELS__MODEL_MATCH__, __AUTO_TAG__, __SEMANTIC_BATCH__, __ANALYZE_HISTORY__, and __CONTEXT_RECOMMEND__ markers as structured handoff payloads for the outer assistant layerscripts/common.py - shared path, i18n, and vision-plan helpersscripts/get_sticker.py - keyword lookup and inventory listscripts/manage_sticker.py - rename, delete, and cleanupscripts/save_sticker.py - basic save from inbound or history mediascripts/save_sticker_auto.py - quality-aware save flowscripts/sticker_semantic.py - tagging, recommendation, auto-tag planning, and context analysisscripts/collect_stickers.py - batch collection with dedupe and semantic-plan outputscripts/batch_import.py - local-directory import with optional auto-tag planningscripts/discover_sources.py - discovery from URLs, directories, and static pagesscripts/check_sensitive.py - publish-safety scan for sensitive-looking contenttests/ - pytest coverage for CLI and workflow behaviors