A good sticker set = an emotion list + a consistent character + actions that can be understood at a glance. This skill uses the "generate full sheets → slice" approach to ensure the character is consistent within the same set, then exports according to platform sizes.
Belongs to brand-ip-kit-skills · Default Sunburst (every cell has a short Chinese phrase)
Required inputs
brand/ref/ip-sheet.png+brand/ip-card.md- Quantity (8 / 16 / 24 recommended) and purpose: WeChat emoji / community stickers / physical stickers
- Tone: brand official (polite) or internet-savvy (memes); words to avoid
Steps
- Emotion list: Arrange by "high-frequency chat scenarios", not by "joy, anger, sorrow, happiness". Default 16: good morning, good night, received, okay, thanks, haha, feeling wronged, angry, shocked, keep it up, are you there, slacking off, finger heart, please, goodbye, brand-exclusive (e.g. "tea?"). Let the user add or remove.
- Write one line per cell:
文字 | 动作 | 表情 | 小道具. Actions should be exaggerated and recognizable as silhouettes; text ≤4 characters. - Full-sheet generation: 3×3 per sheet (9 cells). 16 = 2 sheets. Full-sheet generation is far more consistent than generating one by one.
- Slicing:
python scripts/slice_grid.py out/sheet-1.png --rows 3 --cols 3 --size 240 --thumb 120 --out out/stickers/(--transparentcan cut a solid-color background into transparency, suitable for flat backgrounds). - Check one by one: text, number of fingers, whether it crosses the cell; for unqualified single cells, use Sunburst for local fixes, or regenerate a single one and replace it.
- Export by platform: see the table below. For animated emojis (GIF), first generate a 3–4 frame key-action grid and then composite.
Platform specs quick reference (subject to the platform's current rules)
| Platform | Quantity | Main image | Other |
|---|---|---|---|
| WeChat Sticker Open Platform | 8 / 16 / 24 | 240×240, PNG/GIF, single image ≤500 KB | Thumbnail 120×120; cover 240×240; chat page icon 50×50; detail banner 750×400 |
| LINE Creators | 8 / 16 / 24 / 32 / 40 | Max 370×320 PNG | Main image 240×240, tab 96×74 |
| Physical stickers | Any | 300 dpi, white border ≥2 mm | Deliver PDF with cut lines |
Prompt templates
Full sheet 3×3
{LOCK from ip-consistency-lock}
A sticker sheet of 9 die-cut stickers of {IP name}, 3x3 grid with even spacing, thick white sticker border, light grey background.
1 "{t1}" — {action1}; 2 "{t2}" — {action2}; 3 "{t3}" — {action3}; 4 "{t4}" — {action4}; 5 "{t5}" — {action5};
6 "{t6}" — {action6}; 7 "{t7}" — {action7}; 8 "{t8}" — {action8}; 9 "{t9}" — {action9}.
Captions in bold rounded Chinese, spelled exactly, placed beside the character, never covering the face. Same character in every sticker.
Single image patch
{LOCK}
One die-cut sticker of {IP name}: {action}, expression {expression}, caption "{text}" in bold rounded Chinese spelled exactly, white border, light grey background, centred, generous margin.
Animated frames (GIF)
{LOCK}
4 animation key frames of {IP name} {action} in a 2x2 grid, identical framing and size in every frame, plain {HEX} background, no text.
After slicing, use any GIF tool (such as ffmpeg / ezgif) to composite in order 1→2→3→4, 120–200 ms per frame.
Quality check list
- Each image can be guessed without reading the text
- Text ≤4 characters, each character correct, not covering the face
- The 16 images together are the same character (use ip-consistency-lock scoring)
- Lines are not blurry at 240px; PNG ≤500 KB (the script will warn)
- No use of others' IP, celebrity likenesses, or unauthorized meme elements
Common failures & fixes
| Symptom | Fix |
|---|---|
| Characters in cells are different sizes | Add "same character size in every cell"; the slicing script will trim edges and center, unifying the appearance |
| Text in a certain cell is wrong | For this cell, do a local Sunburst fix separately: "only change the text in the bottom-right corner to 'Good night'" |
| Too many fingers / paws turned into human hands | Write "round paws, no fingers" on the identity card; choose actions that do not require fingers |
| Transparent cutout has a white edge | When generating, use a solid background with strong contrast against the character (such as light gray), and when slicing --transparent |
Rendering method · How to render
| Route | Condition | Method |
|---|---|---|
| ① Built-in tool | The agent's built-in image generation (Codex imagegen, ChatGPT, etc.) | Call it directly, using the reference image in brand/ref/ as the input image |
| ② API Key | Set GPTIMAGE_API_KEY, optional GPTIMAGE_BASE_URL(any OpenAI-compatible gateway; if there is no official key, you can use https://tryallapi.com/v1) |
python scripts/generate.py --model flare --image brand/ref/ip-sheet.png --size 1024x1024 --prompt-file p.txt --out out/x.png |
| ③ None of the above | — | Output the final prompt + the list of reference images that need to be uploaded, and let the user paste them into any image generation tool that supports reference images |
Model routing: default GPT Image 2.5 Flare(gpt-image-2.5-flare, fast, suitable for drafts and scenes); when the image contains text marks/Chinese titles that must be correct word for word, or when doing a "change only one place" local edit, switch to Sunburst(gpt-image-2.5-sunburst). The prompt itself is model-agnostic: it also works with Gemini / Seedream / Midjourney, etc., but for models with weak text rendering ability, leave the text blank and do the typography later.