Not in the top 1,000 by GitHub stars

fantuan-lab/animated-sticker-studio

One character image → a full pack of animated chat stickers (WeChat / Telegram / LINE / Discord). Claude Code & Codex skill · 给 AI 一张图,做一整套会动的表情包

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → e1f06a001d88

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit e1f06a001d889e0d67114b041bde9aa46d976164

43GitHub stars
Not availablestars in 7 days
1skill in this repository
11commits in 30 days

Heat

Insufficient history

Not enough history yet to measure heat. It appears after a few days of data.

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Nov 6, 2026Nov 7, 202643

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

animated-sticker-studio

When your agent uses it

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.

What it loads into context

Frontmatter

136 tokens

Always available to the agent

SKILL.md

1,368 tokens

When the skill is activated

Reference documents

10,109 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 1. Plan (manifest.json)
  2. 2. Reference
  3. 3. Atlases
  4. 4. Cut
  5. 5. Build
  6. 6. Look (required — you cannot watch a GIF, so look at these)
  7. 7. Deliver

Scripts executed separately

  • scripts/build_pack.py
  • scripts/cut_atlas.py
  • scripts/gen_atlas.py
  • scripts/sticker_core.py

Files

  • .gitignoreasset65 bytes
  • LICENSEasset1,068 bytes
  • README.mddoc10,097 bytes
  • README.zh-CN.mddoc11,178 bytes
  • SKILL.mdcore5,513 bytes
  • SKILL.mdcore5,513 bytes
  • agents/openai.yamlasset335 bytes
  • examples/onigiri-cat/atlases/g01.pngasset1,842,523 bytes
  • examples/onigiri-cat/atlases/g02.pngasset1,749,950 bytes
  • examples/onigiri-cat/atlases/g03.pngasset1,777,407 bytes
  • examples/onigiri-cat/contact.pngasset587,191 bytes
  • examples/onigiri-cat/gif/001-收到.gifasset381,883 bytes
  • examples/onigiri-cat/gif/002-好耶.gifasset372,881 bytes
  • examples/onigiri-cat/gif/003-抱抱.gifasset411,084 bytes
  • examples/onigiri-cat/gif/004-早安.gifasset402,719 bytes
  • examples/onigiri-cat/gif/005-在吗.gifasset350,287 bytes
  • examples/onigiri-cat/gif/006-哈哈哈哈.gifasset382,298 bytes
  • examples/onigiri-cat/gif/007-委屈.gifasset381,095 bytes
  • examples/onigiri-cat/gif/008-生气了.gifasset342,140 bytes
  • examples/onigiri-cat/gif/009-我想想.gifasset376,658 bytes
  • examples/onigiri-cat/gif/010-加油.gifasset340,687 bytes
  • examples/onigiri-cat/gif/011-谢谢老板.gifasset401,833 bytes
  • examples/onigiri-cat/gif/012-溜了.gifasset348,899 bytes
  • examples/onigiri-cat/gif/013-震惊.gifasset356,465 bytes
  • examples/onigiri-cat/gif/014-摸鱼中.gifasset442,558 bytes
  • examples/onigiri-cat/gif/015-好的.gifasset383,580 bytes
  • examples/onigiri-cat/gif/016-冲鸭.gifasset367,151 bytes
  • examples/onigiri-cat/gif/017-拜拜.gifasset361,234 bytes
  • examples/onigiri-cat/gif/018-鼓掌.gifasset398,106 bytes
  • examples/onigiri-cat/gif/019-打字中.gifasset95,074 bytes
  • examples/onigiri-cat/gif/020-干饭.gifasset405,067 bytes
  • examples/onigiri-cat/gif/021-点赞.gifasset397,740 bytes
  • examples/onigiri-cat/gif/022-哭哭.gifasset379,852 bytes
  • examples/onigiri-cat/gif/023-困了.gifasset364,322 bytes
  • examples/onigiri-cat/gif/024-比心.gifasset390,494 bytes
  • examples/onigiri-cat/hero.webpasset1,224,724 bytes
  • examples/onigiri-cat/manifest.jsonasset9,346 bytes
  • examples/onigiri-cat/ref/character.pngasset1,060,524 bytes
  • examples/onigiri-cat/social-preview.pngasset229,989 bytes
  • examples/onigiri-cat/sprites/g01_01.pngasset105,255 bytes
  • examples/onigiri-cat/sprites/g01_02.pngasset103,827 bytes
  • examples/onigiri-cat/sprites/g01_03.pngasset112,194 bytes
  • examples/onigiri-cat/sprites/g01_04.pngasset109,966 bytes
  • examples/onigiri-cat/sprites/g01_05.pngasset105,923 bytes
  • examples/onigiri-cat/sprites/g01_06.pngasset123,935 bytes
  • examples/onigiri-cat/sprites/g01_07.pngasset117,404 bytes
  • examples/onigiri-cat/sprites/g01_08.pngasset116,258 bytes
  • examples/onigiri-cat/sprites/g01_09.pngasset109,232 bytes
  • examples/onigiri-cat/sprites/g01_10.pngasset126,315 bytes
  • examples/onigiri-cat/sprites/g01_11.pngasset97,159 bytes
  • examples/onigiri-cat/sprites/g01_12.pngasset102,189 bytes
  • examples/onigiri-cat/sprites/g01_13.pngasset126,019 bytes
  • examples/onigiri-cat/sprites/g01_14.pngasset99,802 bytes
  • examples/onigiri-cat/sprites/g01_15.pngasset105,205 bytes
  • examples/onigiri-cat/sprites/g01_16.pngasset98,850 bytes
  • examples/onigiri-cat/sprites/g02_01.pngasset100,977 bytes
  • examples/onigiri-cat/sprites/g02_02.pngasset103,396 bytes
  • examples/onigiri-cat/sprites/g02_03.pngasset101,855 bytes
  • examples/onigiri-cat/sprites/g02_04.pngasset100,842 bytes
  • examples/onigiri-cat/sprites/g02_05.pngasset107,768 bytes
  • examples/onigiri-cat/sprites/g02_06.pngasset107,767 bytes
  • examples/onigiri-cat/sprites/g02_07.pngasset107,223 bytes
  • examples/onigiri-cat/sprites/g02_08.pngasset105,089 bytes
  • examples/onigiri-cat/sprites/g02_09.pngasset102,046 bytes
  • examples/onigiri-cat/sprites/g02_10.pngasset103,161 bytes
  • examples/onigiri-cat/sprites/g02_11.pngasset101,350 bytes
  • examples/onigiri-cat/sprites/g02_12.pngasset102,063 bytes
  • examples/onigiri-cat/sprites/g02_13.pngasset111,982 bytes
  • examples/onigiri-cat/sprites/g02_14.pngasset112,428 bytes
  • examples/onigiri-cat/sprites/g02_15.pngasset107,552 bytes
  • examples/onigiri-cat/sprites/g02_16.pngasset106,450 bytes
  • examples/onigiri-cat/sprites/g03_01.pngasset104,457 bytes
  • examples/onigiri-cat/sprites/g03_02.pngasset104,509 bytes
  • examples/onigiri-cat/sprites/g03_03.pngasset105,173 bytes
  • examples/onigiri-cat/sprites/g03_04.pngasset109,366 bytes
  • examples/onigiri-cat/sprites/g03_05.pngasset105,116 bytes
  • examples/onigiri-cat/sprites/g03_06.pngasset115,098 bytes
  • examples/onigiri-cat/sprites/g03_07.pngasset112,285 bytes
  • examples/onigiri-cat/sprites/g03_08.pngasset102,772 bytes
  • examples/onigiri-cat/sprites/g03_09.pngasset107,555 bytes
  • examples/onigiri-cat/sprites/g03_10.pngasset106,428 bytes
  • examples/onigiri-cat/sprites/g03_11.pngasset99,626 bytes
  • examples/onigiri-cat/sprites/g03_12.pngasset97,562 bytes
  • examples/onigiri-cat/sprites/g03_13.pngasset103,849 bytes
  • examples/onigiri-cat/sprites/g03_14.pngasset103,379 bytes
  • examples/onigiri-cat/sprites/g03_15.pngasset106,553 bytes
  • examples/onigiri-cat/sprites/g03_16.pngasset102,147 bytes
  • references/manifest.mddoc3,981 bytes
  • references/phrases.mddoc4,391 bytes
  • references/platforms.mddoc2,599 bytes
  • scripts/build_pack.pyruns37,259 bytes
  • scripts/cut_atlas.pyruns11,995 bytes
  • scripts/gen_atlas.pyruns13,383 bytes
  • scripts/sticker_core.pyruns21,255 bytes
Read SKILL.md

# 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.
View the complete source on GitHub

Skills included

  • animated-sticker-studio

Repository facts

License
MIT
Created
Nov 5, 2026
Last pushed
Nov 6, 2026
Forks
4
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 7, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 1 note
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 66 signals by file

README.md

  • Network accessline 9
    <p align="center">   <a href="https://github.com/fantuan-lab/animated-sticker-studio/stargazers"><img src="https://img.shields.io/github/stars/fantuan-lab/animated-sticker-studio?style=flat&color=f5a623" alt="stars"></a>
  • Network accessline 10
    <a href="https://github.com/fantuan-lab/animated-sticker-studio/stargazers"><img src="https://img.shields.io/github/stars/fantuan-lab/animated-sticker-studio?style=flat&color=f5a623" alt="stars"></a>
  • Network accessline 11
    <a href="https://github.com/fantuan-lab/animated-sticker-studio/releases"><img src="https://img.shields.io/github/v/release/fantuan-lab/animated-sticker-studio?color=e85d75" alt="release"></a>
  • Network accessline 12
    <img src="https://img.shields.io/badge/Claude_Code-skill-d97757" alt="Claude Code skill">
  • Network accessline 13
    <img src="https://img.shields.io/badge/Codex-skill-10a37f" alt="Codex skill">
  • Network accessline 14
    <img src="https://img.shields.io/badge/WeChat%20%C2%B7%20Telegram%20%C2%B7%20LINE%20%C2%B7%20Discord%20%C2%B7%20Slack%20%C2%B7%20WhatsApp-6%20platforms-4c9be8" alt="WeChat, Telegram, LINE, Discord, Slack, WhatsApp">
  • Network accessline 15
    <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT license"></a>
  • Network accessline 69
    - Claude Code: put this folder at `~/.claude/skills/animated-sticker-studio/`, or tell Claude: *"Install this skill: https://github.com/fantuan-lab/animated-sticker-studio"*
  • Network accessline 85
    |---|---|---| | 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, 
  • Network accessline 86
    | 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 pe
  • Network accessline 87
    [Credential-related source omitted]
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 88
    [Credential-related source omitted]
  • Network accessline 126
    - Platform specs reflect public requirements as of November 2026; the platform's own console is the final word. Store listings (banners, copyright paperwork, account setup) are still up to you. - Your reference image is sent to the image pr
  • Network accessline 128
    - Built after studying [WoYun520/pixel-gif-sticker-pack](https://github.com/WoYun520/pixel-gif-sticker-pack); the Chinese README has a point-by-point comparison.

README.zh-CN.md

  • Network accessline 9
    <p align="center">   <a href="https://github.com/fantuan-lab/animated-sticker-studio/stargazers"><img src="https://img.shields.io/github/stars/fantuan-lab/animated-sticker-studio?style=flat&color=f5a623" alt="stars"></a>
  • Network accessline 10
    <a href="https://github.com/fantuan-lab/animated-sticker-studio/stargazers"><img src="https://img.shields.io/github/stars/fantuan-lab/animated-sticker-studio?style=flat&color=f5a623" alt="stars"></a>
  • Network accessline 11
    <a href="https://github.com/fantuan-lab/animated-sticker-studio/releases"><img src="https://img.shields.io/github/v/release/fantuan-lab/animated-sticker-studio?color=e85d75" alt="release"></a>
  • Network accessline 12
    <img src="https://img.shields.io/badge/Claude_Code-skill-d97757" alt="Claude Code skill">
  • Network accessline 13
    <img src="https://img.shields.io/badge/Codex-skill-10a37f" alt="Codex skill">
  • Network accessline 14
    <img src="https://img.shields.io/badge/WeChat%20%C2%B7%20Telegram%20%C2%B7%20LINE%20%C2%B7%20Discord%20%C2%B7%20Slack%20%C2%B7%20WhatsApp-6%20platforms-4c9be8" alt="WeChat, Telegram, LINE, Discord, Slack, WhatsApp">
  • Network accessline 15
    <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT license"></a>
  • Network accessline 57
    [WoYun520/pixel-gif-sticker-pack](https://github.com/WoYun520/pixel-gif-sticker-pack) 是个不错的项目,示例很多,这个 skill 就是在读完它的代码之后做的。主要多做了这些:
  • Network accessline 83
    > 帮我安装这个表情包 skill:https://github.com/fantuan-lab/animated-sticker-studio
  • Network accessline 100
    |---|---|---| | Codex | 什么都不用配 | Codex 自带出图工具,skill 会把提示词交给它 | | Claude Code(推荐用 hiapi) | 一个 hiapi 的 key,设置成环境变量 `HIAPI_API_KEY` | 饭团猫就是用它做的,已实测。gpt-image-2,1K 透明背景,一张图集约 $0.04。没有账号可以用我的邀请链接注册:[hiapi.ai/invite/fantuan](https://hiapi.ai/invi
  • Network accessline 101
    | Codex | 什么都不用配 | Codex 自带出图工具,skill 会把提示词交给它 | | Claude Code(推荐用 hiapi) | 一个 hiapi 的 key,设置成环境变量 `HIAPI_API_KEY` | 饭团猫就是用它做的,已实测。gpt-image-2,1K 透明背景,一张图集约 $0.04。没有账号可以用我的邀请链接注册:[hiapi.ai/invite/fantuan](https://hiapi.ai/invite/fantuan) | 
  • Network accessline 102
    [Credential-related source omitted]
  • Access to secretsline 102
    [Credential-related source omitted]
  • Access to secretsline 103
    [Credential-related source omitted]

SKILL.md

  • Access to secretsline 34
    [Credential-related source omitted]

scripts/build_pack.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/cut_atlas.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/gen_atlas.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 9
    Providers (keys come from the environment only, never from arguments):   hiapi   HIAPI_API_KEY        gpt-image-2 image-to-image via https://api.hiapi.ai/v1/tasks (data-URI reference)
  • Network accessline 10
    [Credential-related source omitted]
  • Access to secretsline 10
    [Credential-related source omitted]
  • Network accessline 11
    [Credential-related source omitted]
  • Access to secretsline 11
    [Credential-related source omitted]
  • Network accessline 126
    data = json.dumps(body).encode() if body is not None else None     for i in range(tries):         req = urllib.request.Request(url, data=data,
  • Network accessline 127
    [Credential-related source omitted]
  • Network accessline 128
    req = urllib.request.Request(url, data=data,
  • Network accessline 129
    [Credential-related source omitted]
  • Network accessline 130
    try:             with urllib.request.urlopen(req, timeout=timeout) as r:                 return json.load(r)
  • Network accessline 131
    with urllib.request.urlopen(req, timeout=timeout) as r:
  • Network accessline 142
    for i in range(tries):         try:             urllib.request.urlretrieve(url, dest)
  • Network accessline 143
    try:             urllib.request.urlretrieve(url, dest)             return
  • Network accessline 144
    urllib.request.urlretrieve(url, dest)
  • Network accessline 152
    def hiapi(prompt, ref: Path | None, ratio, dest: Path, resolution="1K"):     key = os.environ.get("HIAPI_API_KEY") or sys.exit("没有 HIAPI_API_KEY 环境变量")     api = "https://api.hiapi.ai/v1/tasks"
  • Network accessline 153
    [Credential-related source omitted]
  • Access to secretsline 153
    [Credential-related source omitted]
  • Network accessline 154
    api = "https://api.hiapi.ai/v1/tasks"
  • Network accessline 175
    def openai(prompt, ref: Path | None, ratio, dest: Path, resolution="1K"):     key = os.environ.get("OPENAI_API_KEY") or sys.exit("没有 OPENAI_API_KEY 环境变量")     base = os.environ.get("OPENAI_BASE_URL", "https://api.openai.com").rstrip("/")
  • Network accessline 176
    [Credential-related source omitted]
  • Access to secretsline 176
    [Credential-related source omitted]
  • Network accessline 177
    [Credential-related source omitted]
  • Access to secretsline 177
    [Credential-related source omitted]
  • Access to secretsline 180
    [Credential-related source omitted]
  • Network accessline 190
    f'Content-Type: image/png\r\n\r\n').encode()         body += ref_bytes(ref, 1024) + f"\r\n--{boundary}--\r\n".encode()         req = urllib.request.Request(f"{base}/images/edits", data=body, headers={
  • Network accessline 191
    [Credential-related source omitted]
  • Network accessline 192
    req = urllib.request.Request(f"{base}/images/edits", data=body, headers={
  • Network accessline 193
    [Credential-related source omitted]
  • Network accessline 194
    with urllib.request.urlopen(req, timeout=300) as r:
  • Network accessline 200
    dest.write_bytes(base64.b64decode(item["b64_json"]))     else:         urllib.request.urlretrieve(item["url"], dest)
  • Possible obfuscationline 200
    dest.write_bytes(base64.b64decode(item["b64_json"]))
  • Network accessline 202
    urllib.request.urlretrieve(item["url"], dest)

scripts/sticker_core.py

  • Executable scriptline 1
    Executable file

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Declared and executed: 1 fact
  • Contacts api.openai.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/gen_atlas.py:177High confidence
Signal confidence: 66 facts

and 16 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.