Animated Sticker Studio skill

A skill that turns a character image into an animated sticker pack and exports it for WeChat, Telegram, LINE and Discord.

  • 62 ★ on the repository
  • Last commit
  • MIT
Skill

Extended access

Why this level

  • The skill runs its own Python scripts and sends requests to a connected image generator.
All reasons and checks

fantuan-lab/animated-sticker-studio

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/animated-sticker-studio

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • The skill runs its own Python scripts and sends requests to a connected image generator.

This is third-party code. Review the repository files before installing.

What it does

Animated Sticker Studio walks an agent through the pipeline: a pack plan in `manifest.json`, a character reference, pose atlases, cutting, building, a visual check and a ZIP. Some stickers get 2–4 drawn keyframes (a wave, applause, tears, a yawn); the rest are animated procedurally with captions and effect icons. The skill exports a pack to the specs of WeChat Sticker Platform, Telegram, LINE, Discord, Slack and WhatsApp, or to plain GIF. Files are re-encoded until they fit the size limit. For self-review each sticker is laid out as four frames on a light and a dark row so the agent can spot clipping, halos and repeated poses.

Who it is for. Sticker authors and owners of brand mascots who build packs with Claude Code or Codex.

Good fit when

  • You have a mascot and need a 16–24 sticker pack for WeChat.
  • A finished pack must be re-exported for Telegram or LINE with different limits.
  • One sticker came out badly and must be redone.
  • You have only a description and want a reference sheet to approve first.

Not a fit when

  • You need a single still drawing, not a pack.
  • No image generator is available.
  • You need video animation longer than a few seconds.

Example request

Use animated-sticker-studio to make 16 animated stickers of this character for the WeChat Sticker Platform.

Limitations

Python 3 and Pillow are required, plus ffmpeg for Telegram export and the MP4 preview. Frames are drawn by a connected image generator, so the agent needs access to at least one, and its requests may be billed. Default captions are in Simplified Chinese; supply your own for another language. The skill cannot promise moderation approval. Marketplace rules change, so review the final files before uploading.

How to disable. Delete the `animated-sticker-studio` folder from the agent skills directory. Finished packs live in your working folder and are removed separately.

FAQ

Which platforms does export support?

WeChat Sticker Platform, Telegram, LINE, Discord, Slack, WhatsApp and plain GIF. Size, format, frame count and byte limits are applied per platform.

How is this different from animating one still?

Gestures such as a wave get 2–4 drawn keyframes, with procedural motion layered on top of a single still.

What does it need?

Python 3 and Pillow, plus ffmpeg for Telegram and MP4. The agent also needs access to an image generator.

Can I set my own captions?

Yes. Captions come from a phrase reference unless the user supplies their own, so list the texts you want in the request.

How many stickers are in a pack?

16 by default. WeChat albums take 8–24 stickers, and LINE packs must hold 8, 16 or 24.

Discussion

No questions or reviews yet.

Skills

A Codex skill that turns one character image into nine transparent animated GIF stickers in 36 styles.

SkillExtended access96Repository stars

A director skill for stick-figure videos: from a topic or text it prepares a storyboard proposal and ten-second clip prompts in one of four visual styles

SkillMinimal access5.8KRepository stars

A skill that turns Chinese story copy or a set of ordered images into a vertical hand-drawn animation, a silent diary-comic picture track

SkillExtended access2.5KRepository stars

Skill for Claude Code and Codex: turns two character sheets and a line of story into an anime episode with one fixed cast

SkillExtended access139Repository stars

A Claude Code skill for short animated videos drawn in code: seven styles, story and storyboard sign-off, voice-over and an MP4 render

SkillExtended access1.8KRepository stars

A skill that turns a script into a finished video with voice-over, subtitles, a cover and a publish text, frames drawn by code.

SkillBroad access85Repository stars

README in short

Pipeline from plan to ZIP with a frame check on light and dark backgrounds. 22 motion presets, 5 caption animations and 17 vector effect icons.

README badge

Original SKILL.md

---
name: animated-sticker-studio
description: Turn a character image (mascot, OC, pet photo, 3D render, or just a text description) into a full pack of animated chat stickers — real keyframe animation plus motion, captions and effects — exported to the exact spec of WeChat 表情开放平台, Telegram, LINE, Discord, Slack, WhatsApp or plain GIF, auto-compressed under each size limit, visually verified and zipped. Use for 表情包/动态表情/贴纸/sticker pack requests of any size (8 to 100+), for redoing single stickers, or for converting an existing pack to another platform.
---

# Animated Sticker Studio · 动态表情包工坊

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.

## 1. Plan (manifest.json)

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](references/manifest.md)). Pick captions from [references/phrases.md](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).
- For the 4–8 stickers where the gesture IS the joke (挥手, 鼓掌, 打字, 干饭, 点赞, 哭, 打哈欠, 比心…) put them in a group with `"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.

## 2. Reference

- User image → copy into `ref/`, set `character.reference`. Write `character.anchors`: one English sentence listing what must never change (shape, colours, markings, accessories).
- 3D model → render a front/three-quarter view with the face visible, use that.
- Only a description → `gen_atlas.py manifest.json --provider hiapi --make-reference "<description>"`, show the result, get a yes.
- Use only art the user owns or may adapt. Do not recreate a third party's character from memory.

## 3. Atlases

One sheet per group (≤16 cells). Either:

- **Your own image tool** (Codex `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`.
- **Bundled providers**: `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.

## 4. Cut

`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.

## 5. Build

```sh
python3 scripts/build_pack.py manifest.json out --mp4          # platforms from manifest

Report a problem