by fantuan-lab
One character image → a full pack of animated chat stickers (WeChat / Telegram / LINE / Discord). Claude Code & Codex skill · 给 AI 一张图,做一整套会动的表情包
# Add to your Claude Code skills
git clone https://github.com/fantuan-lab/animated-sticker-studioGuides for using ai agents skills like animated-sticker-studio.
See how animated-sticker-studio compares with popular alternatives.
animated-sticker-studio is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by fantuan-lab. One character image → a full pack of animated chat stickers (WeChat / Telegram / LINE / Discord). Claude Code & Codex skill · 给 AI 一张图,做一整套会动的表情包. It has 51 GitHub stars.
animated-sticker-studio's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/fantuan-lab/animated-sticker-studio" and add it to your Claude Code skills directory (see the Installation section above). animated-sticker-studio ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
animated-sticker-studio is primarily written in Python. It is open-source under fantuan-lab on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh animated-sticker-studio against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
See comparison
Pipeline: plan → reference → atlases → cut → build → look → fix → deliver. Scripts live in scripts/ (Python 3 + Pillow; ffmpeg for Telegram/MP4). Run every script with --help before first use.
Ask only what you cannot default. Defaults: 16 stickers, Simplified Chinese captions, generic GIF; add wechat if they mention 微信表情开放平台/上架, telegram/line/discord/slack/whatsapp if named. WeChat albums take any 8–24 stickers; LINE packs must be 8, 16 or 24.
Write manifest.json next to the work (format: references/manifest.md). Pick captions from references/phrases.md unless the user gave their own, and give every entry:
pose — what the body does, in English, concrete enough to draw (arms, props, expression). Two entries may never share the same pose with only new text.motion + icon + optional caption_fx — chosen to match the line (table in phrases.md)."keys": 4 and write four key_poses. These become real frame-by-frame animation. Single poses get procedural motion only.Show the user the plan as a short table (编号 / 文案 / 动作) before spending on generation when the pack is ≥24 or the user seems picky; otherwise go.
ref/, set character.reference. Write character.anchors: one English sentence listing what must never change (shape, colours, markings, accessories).gen_atlas.py manifest.json --provider hiapi --make-reference "<description>", show the result, get a yes.One sheet per group (≤16 cells). Either:
image_gen, etc.): gen_atlas.py manifest.json --print-prompts, generate each sheet with the reference attached, save as the printed path, then set the group's atlas and grid.gen_atlas.py manifest.json --provider hiapi|openai (keys only from env: HIAPI_API_KEY, or OPENAI_API_KEY + optional OPENAI_BASE_URL/OPENAI_IMAGE_MODEL). Skips groups that already have an atlas; --group N redraws one. Never print or echo a key.Open every sheet at full size. Reject and redraw (--group N) when the identity drifts, a cell is missing or doubled, limbs are clipped, or two poses are the same.
cut_atlas.py manifest.json — removes solid or fake-checkerboard backgrounds, finds each sprite by its pixels (not by a rigid grid), writes sprites/ and fills every entry's sprites list. Open each atlases/*.index.png and confirm number N shows the pose written for entry N. If the model swapped cells, fix by editing sprites paths in the manifest — never by renaming captions to fit wrong art.
python3 scripts/build_pack.py manifest.json out --mp4 # platforms from manifest
python3 scripts/build_pack.py manifest.json out --only 3,7-9 # quick re-render of a few while iterating
Fonts are found automatically (PingFang/Hiragino/Noto CJK/YaHei); --font overrides. Each platform file is re-encoded until it fits that platform's byte limit; report.json records the setting used.
out/review/motion-XX.png: every sticker as 4 frames side by side on alternating white/dark rows. Check: the motion reads as the caption's emotion, keyframes don't jitter sideways, nothing clipped, no white halo on dark rows, captions legible, accents not covering the face.out/review/contact.png: whole pack at once — check variety and that no two look alike.failing (per-platform spec failures) and pack_issues (near-duplicate poses, wrong pack size, stickers that barely move). Fix all of them or tell the user exactly which remain and why.Fix loop: wrong motion/icon/caption → edit manifest, --only; bad art → redraw that group or cell; then rebuild everything once at the end.
Give the user: the ZIP path, 预览.html (opens offline; light/dark/checker backgrounds and a chat mock-up), the MP4 if made, and a one-line pass/fail per platform from the summary. Mention platform limits that still need a human: WeChat needs a 750×400 banner and copyright paperwork, LINE/Telegram need account-side upload. Specs are in references/platforms.md; say they are as of 2026-11 and the platform console wins.
Keep the original reference and atlases out of the ZIP unless asked.
Give your AI coding agent one character image (or just a description) and get back a full pack of chat stickers that actually animate: it writes the captions and poses, draws every keyframe, adds text and effects, exports to each platform's exact upload spec, compresses every file under the size limit, checks its own work, and zips it up.
Works in Claude Code, Codex, and any agent that can run Python.
An original character, made in one run: 1 character sheet + 3 pose sheets = 4 image-generation calls, no manual retouching. Shown below is the WeChat Sticker Platform export (240×240, ≤500 KB each), submitted for WeChat review on 2026-11-05.
#1–16: one pose each, plus procedural motion. #17–24: real frame-by-frame animation — the paw waves, the tears stream, the yawn opens.
| 001-收到 | 002-好耶 | 003-抱抱 | 004-早安 | 005-在吗 | 006-哈哈哈哈 |
| 007-委屈 | 008-生气了 | 009-我想想 | 010-加油 | 011-谢谢老板 | 012-溜了 |
| 013-震惊 | 014-摸鱼中 | 015-好的 | 016-冲鸭 | 017-拜拜 | 018-鼓掌 |
| 019-打字中 | 020-干饭 | 021-点赞 | 022-哭哭 | 023-困了 | 024-比心 |
| Platform | Spec | Largest / average file | Limit |
|---|---|---|---|
| Generic GIF | 320×320 GIF | 702 KB / 578 KB | 1 MB (soft) |
| WeChat Sticker Platform | 240×240 GIF + 120 thumbnails + transparent cover and icon | 442 KB / 368 KB | 500 KB |
| Telegram video sticker | 512×512 transparent WebM VP9 | 128 KB / 94 KB | 256 KB |
| LINE animated sticker | 320×270 APNG, 12 frames, 2 loops | 298 KB / 270 KB | 300 KB |
Install
~/.claude/skills/animated-sticker-studio/, or tell Claude: "Install this skill: https://github.com/fantuan-lab/animated-sticker-studio"~/.codex/skills/animated-sticker-studio/ (agents/openai.yaml is included).Requires Python 3 + Pillow (pip install Pillow). Telegram export and the MP4 preview also need ffmpeg.
Make a pack
Send your agent a character image and say:
Use animated-sticker-studio to make 16 animated stickers of this character for the WeChat Sticker Platform.
Or: "24 office-worker stickers", "use my own captions", "pixel style", "also export a Telegram version". No image? Describe the character and it will draw a reference sheet for you to approve first.
Image generation: you only need ONE of these
| You use | What to set up | Notes |
|---|---|---|
| Codex | Nothing | Codex has a built-in image tool; the skill hands it the prompts |
| Claude Code (recommended: hiapi) | One hiapi key as HIAPI_API_KEY |
Used for the Onigiri Cat pack, tested. gpt-image-2, 1K transparent, about $0.04 per sheet. Sign up with my invite link: hiapi.ai/invite/fantuan |
| Claude Code (fallback: OpenAI) | Only if you already have an OpenAI or compatible-gateway key: OPENAI_API_KEY |
Code is written but not yet tested; not needed if you use hiapi |
# 1. write manifest.json (format: references/manifest.md, captions: references/phrases.md)
# 2. generate pose sheets
python3 scripts/gen_atlas.py manifest.json --provider hiapi
# 3. cut sprites, then check atlases/*.index.png
python3 scripts/cut_atlas.py manifest.json
# 4. render, export, verify, zip
python3 scripts/build_pack.py manifest.json out --platform wechat,telegram --mp4
Rebuild the example without spending anything (the cut sprites are in the repo):
cd examples/onigiri-cat
python3 ../../scripts/build_pack.py manifest.json out --platform generic,wechat
SKILL.md workflow the agent follows
scripts/gen_atlas.py prompts + image-generation providers
scripts/cut_atlas.py background removal, sprite cutting, index sheets
scripts/build_pack.py render, per-platform export, compression, checks, preview, zip
scripts/sticker_core.py motion, icons, captions, die-cut outline
references/ manifest format, platform specs, caption library (Chinese)
examples/onigiri-cat/ Onigiri Cat: reference, atlases, sprites, finished GIFs