SuperAPI AI Directory

ip-consistency-lock

Design & creation

View repository

Updated 10-27 16:28

About this skill

IP Consistency Lock · Consistency Lock

Image models have no "memory"; every image is drawn from scratch. This skill uses reference pack + lock block + drift scoring — three things that turn "looks similar" into "checkable." The other 10 asset skills all call it first.

Belongs to brand-ip-kit-skills · Draft with Flare, fix drift with Sunburst

Required inputs

  • brand/ip-card.md(if none, run ip-character-sheet)
  • brand/ref/ip-sheet.png character sheet first; optional: 2–3 approved final images
  • Images to produce this time: quantity, scene, action

Steps

  1. Build the reference pack(max 3 images, fewer is cleaner): character sheet (required) + one approved final image closest to this action + (if there are props) prop reference. Don't stuff in 5 images with different styles — the model will average them.
  2. Generate the lock block: distill 5–7 "immutable" traits from the identity card, write them into the LOCK template below, and paste itverbatimat the start of every prompt.
  3. Write variable and immutable items separately: variable = action, expression, clothing/props, scene, camera; immutable = LOCK. Change only 1–2 variable items at a time.
  4. Generate in small batches: produce 2 Flare images per scene first, pick the closest one.
  5. Drift scoring(each item 0/1, max 7): silhouette hook, head-to-body ratio, eye style, main color, outline, fixed accessories, pattern placement. ≥6 passes; 4–5 goes to repair; ≤3 redraw.
  6. Repair: use Sunburst for local edits, naming only the problem areas ("change the leaf bud back to two leaves, color #6BAA4B, don't touch anything else").
  7. Add to library: put passing images into brand/ref/approved/, they can serve as a second reference later.

Lock block template (LOCK)

Use image 1 as the ONLY identity reference for "{IP name}". Keep exactly:
- silhouette & hook: {e.g. mandarin-shaped round head with a two-leaf green sprout}
- proportions: {2.5} heads tall, {chubby round body, short legs}
- face: {big glossy dark eyes with one highlight, tiny mouth, pink blush}
- colours: body {#F28C28}, belly/paws {#FFE9C7}, accent {#6BAA4B}, outline {#3B2A20}
- markings & accessories: {3 forehead stripes, cream tail tip; no clothes unless stated}
- rendering: {flat colour, soft cel shading, thick even outline}
Only the pose, expression, props and background below may change.

Scene prompt template

{LOCK}
Scene: {IP name} {action} in {place}, {time/light}. Expression: {expression}. Props: {props}.
Camera: {full body / medium / close-up}, {eye-level / low angle}. Background {detail level} so the character stays dominant.
Aspect {ratio}. {No text | Text exactly: "..."}

Consistency test grid (recommended to run once on first use)

{LOCK}
A 2x2 grid of the SAME character in four situations: (1) {s1} (2) {s2} (3) {s3} (4) {s4}.
Identical head shape, markings, colours and proportions in all panels; only pose, props and background change. Thin white gutters.

Use python scripts/slice_grid.py grid.png --rows 2 --cols 2 --out out/tiles/ to split and score separately.

QC checklist

  • Drift score ≥ 6/7
  • Place images from the same batch side by side; colors and brightness are consistent (none leaning pink/yellow)
  • Clothing/props don't cover the memory hooks
  • Outline thickness looks consistent when camera distance changes

Common failures & fixes

Symptom Cause Fix
The more you edit, the less it looks like it Multiple rounds of edits on the previous final image accumulate error Always go back to the character sheet for reference each time, instead of using the previous image
Changing art style turns it into another character Style words overpower identity Put LOCK first; for style words write only "lighting/material", not "in the style of"
Features get swapped when multiple characters share the frame Feature descriptions aren't bound to specific characters Give each character its own LOCK, bind positions with "the cat (left) / the rabbit (right)"
Body gets thinner after putting on clothes Clothing words bring in human body proportions Write "outfit sized for a {2.5}-head chubby body"
In the same session the model edits "the most recent image" instead of the one you meant References get mixed up in multi-image sessions One image per session, or in the API pass only the one you need

Rendering method · How to render

Route Condition Method
① Built-in tool The agent has built-in 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 you don't have an 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 to upload, and let the user paste it 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 a "change only one spot" 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, leave the text blank and do the typography in post.