Turn a single line like "I want an orange cat as a mascot" intoreusable character assets: a character sheet with three views + expressions + colour palette + proportion ruler, plus a text version of the "IP identity card". The 11 skills that follow all rely on these two things to keep the same character.
Belongs to brand-ip-kit-skills · Default model GPT Image 2.5 Flare (final draft can switch to Sunburst)
When to use
- The brand has no IP yet and needs to be designed from scratch; or there is a hand-drawn/AI sketch that needs to be "locked in".
- There is an existing IP but no formal character sheet, so every generated image looks different.
Required input
| Required | Optional |
|---|---|
| Brand name + one-line positioning (what it sells, to whom) | Existing sketch / reference images (up to 3) |
| Character archetype (animal/object/person/abstract) | Specify primary colour HEX, forbidden elements |
| 3 personality keywords (e.g.: energetic, stubborn, loves to sleep) | Target use: mainly stickers? mainly packaging? (affects line weight) |
If required items are missing, ask first; do not make up the brand positioning yourself.
Steps
- Archetype × brand hook: list 3 directions, each direction = archetype + a "memory hook" related to the brand (e.g.: orange cat = cat + orange leaf sprout on its head). The hook must be recognisable in the silhouette alone. Have the user pick one.
- Write the IP identity card(see template below), save as
brand/ip-card.md. All values must be specific: head-to-body ratio, primary colour HEX, outline colour and weight, fixed accessories. - Produce concept drafts: use template A to run 3–4 Flare images, looking only at the design, not the layout. After the user picks one, save the selected image as
brand/ref/ip-concept.png。 - Produce the character sheet: template B, using the concept image as reference (if there is a reference image, use the edits endpoint). Landscape 1536×1024.
- Acceptance check: tick off each item on the QC checklist; for parts that fail, use Sunburst for local fixes ("only change the tail in the back view to match the front view, leave everything else untouched").
- Finalise: save the character sheet as
brand/ref/ip-sheet.png; usescripts/palette.py extract brand/ref/ip-sheet.pngto verify the actual colour values; if the deviation is large, write it back to the identity card or retouch the image.
IP identity card template (brand/ip-card.md)
IP 名:{中文名} / {English name}
原型:{例:圆滚滚的橘猫幼崽}
记忆钩子:{例:头部轮廓是橘子,头顶两片绿叶芽}
头身比:{2.5} 头身;体型 {圆/方/水滴}
五官:{眼睛形状与高光,嘴,腮红}
配色:主色 {#F28C28};辅色 {#FFE9C7};点缀 {#6BAA4B};描边 {#3B2A20 粗描边}
固定配件:{只有叶芽,不戴帽子、不穿衣服}
画风:{扁平 + 柔和赛璐璐阴影 / 3D 软胶 / 手绘蜡笔 …}
性格:{元气 / 嘴硬 / 爱睡}
禁止:{写实毛发、人类手指、第二种主色}
Prompt templates
A · Concept draft (text-to-image)
Original brand mascot concept for "{brand}", {one-line positioning}.
Character: {archetype}, memorable hook: {hook}. Personality: {k1}, {k2}, {k3}.
Proportions {ratio} heads tall, {body shape}. Palette: {primary HEX}, {secondary HEX}, {accent HEX}, outline {outline HEX}.
Style: {style}. Single character, full body, front 3/4 view, plain light background, no text.
B · Character sheet (with reference image)
Use image 1 as the identity reference. Character design reference sheet for "{IP name}".
{paste the whole IP identity card}
Layout on an off-white board with faint grid: top row = turnaround front / side / back at identical scale on one baseline,
with a height ruler marked "{ratio} HEADS"; bottom-left = {4} expression busts ({e1}, {e2}, {e3}, {e4});
bottom-right = colour swatches labelled with hex codes; title block reading exactly "{IP name} · CHARACTER SHEET".
Same proportions and markings in every view. No other text.
QC checklist
- The tops of the head and the soles of the feet in the three views are on the same horizontal line, and the body sizes are consistent
- The patterns and accessory positions in the side/back views are logically consistent with the front view (the back view has not grown the front view's facial features)
- Silhouette test: still recognisable when filled in black (the hook is in the outline)
- Colour block HEX matches the identity card (use
palette.pyto sample and verify the colours) - Facial features are still legible when scaled down to 64px → can be used as an avatar and icon
- Title text is correct character by character; no extra garbled characters
Common failures & fixes
| Symptom | Fix |
|---|---|
| The three views are different sizes and not aligned | Add "identical scale, all standing on one baseline" to the prompt; or split into three separate images and then use make_board.py to stitch them together |
| Extra patterns appear out of nowhere on the back / the side view is wrong | Write clearly in the identity card: "Back: solid color + 3 stripes"; use Sunburst to locally fix the back |
| The face shape changes whenever the expression changes | Only generate a "head-and-shoulders portrait" expression, and write "same head shape, only eyes and mouth change" |
| Looks like a well-known IP | Change the hook instead of the color; avoid descriptions like "looks like XX", and do not write any existing IP names in the prompt |
| Garbled text | Change the title to Sunburst or leave it blank and add text later |
Rendering method · How to render
| Route | Condition | Method |
|---|---|---|
| ① Built-in tool | The agent's own image generation (Codex imagegen, ChatGPT, etc.) | Call it directly, using the reference images in brand/ref/ as input images |
| ② 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 |
| ③ Neither | — | Output the final prompt + the list of reference images that need to be uploaded, so the user can paste them into any image generation tool that supports reference images |
Model routing: defaults to GPT Image 2.5 Flare(gpt-image-2.5-flare, fast, suitable for drafts and scenes); when the image contains text labels/Chinese titles that must be correct word for word, or when doing "change only one thing" local edits, 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, leave the text blank and do the typography later.