Nodes/KIE.ai Nodes Next/KIE • Character Consistency Test Plan
ComfyUI Node

KIE • Character Consistency Test Plan

Eight prompts that tell you whether your model can hold a face

By felipederosilva·Created about a month ago·Updated a day ago· 3
KIE • Character Consistency Test Plan
  • character_pack
  • case_prompt
  • reference_view
  • test_matrix_json
◄test_case▾►
◄variation_notes►

Every "is this model good at character consistency?" argument online is settled by vibes and two cherry-picked outputs. This node is the opposite: it generates a fixed, reviewable test matrix for one saved Character Pack so you can run the same eight conditions against a model and compare what comes back.

It doesn't generate anything. No media, no API call, no credits. It writes prompts and tells you which reference view each one needs. The testing is on you - which is honest, because "does the face hold up" is a judgement call and no node is going to make it for you.

Inputs and outputs

character_pack is a CHARACTER_PACK socket from KIE • Load Character Pack, the same versioned pack the pack's other character nodes use. test_case is the one you're generating right now - and it's a genuinely well-chosen list of eight:

  • portrait · front, portrait · three-quarter, portrait · profile
  • full body · front, full body · wide frame
  • camera · low angle, camera · high angle
  • continuity · changed scene

That covers the failure modes that actually bite: identity drift as the head turns, proportion drift when the character is small in frame, and the classic collapse when you change location and lighting. The descriptions baked into the prompts are specific - the wide-frame case tells the model to keep proportions and silhouette recognizable, the angle cases tell it the face must stay identifiable, and the changed-scene case explicitly says to vary location, lighting and wardrobe while leaving identity-defining traits alone.

variation_notes is optional free text, and it does exactly one thing: it's appended to the prompt for the continuity · changed scene case, since that's the case where "change the scene" needs a definition. Type notes for other cases and they're quietly ignored.

Outputs are case_prompt (the full prompt text for the selected case), reference_view (which stored view this case should use - portrait, full_body or profile), and test_matrix_json (all applicable cases with their view and prompt, indented, so you can keep the whole plan in a file or feed it downstream).

The flow: pick a case, wire case_prompt into a model node's prompt, feed the matching reference from KIE • Character Reference - setting the same view value it reports - generate, then repeat for the next case. Paste all eight renders side by side and you have an actual answer about that model.

It skips what your pack can't do

Nice touch: cases whose required view isn't in your pack are dropped from the matrix instead of failing. If you only saved a portrait, full body cases just aren't in test_matrix_json. Pick a case you can't support and you get a clear error naming the missing view - better than a confusing blank prompt. There's also an advisory check for saving packs marked as a real person's likeness, which the pack requires you to confirm permission for.

What to expect when you run it

Read this before you conclude your favorite model is bad. Consistency is model- and operation-dependent, and it is not solved. A reference image plus a prompt is not an identity lock - the node's own description says so, and it's the right way to frame the results. Your practical scale of expectations:

Portrait refs hold reasonably well across front and three-quarter views on current models. Profile is where drift shows up first - that's why it's a separate test case. Full body and wide frame are where proportions go wobbly, and this is the case people skip and then wonder why their character looks like a different build in the wide shot. Changed scene is the real stress test: it's the closest thing to the workflow people actually want, and it's where the model has the most chances to reinvent rather than reference.

If scores disappoint across the board, the general 2026 fix is to stop regenerating and start editing: hand the model the approved image plus an instruction and let it transform that image rather than synthesize a new one from a description. That's the path that made character consistency a routing decision instead of a research problem. On this pack, that's Seedream 4.0 - Edit and the Seedance reference modes.

Install

Manager → search KIE.ai Nodes Next (publisher id felipeosilva). If Manager comes up empty, the README still describes registry publication as prepared, so clone it:

cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt

Restart ComfyUI. Requirements are requests, Pillow, numpy and PyYAML; nothing is downloaded. The API key is set once under Settings → KIE.ai Nodes Next → Connection, and KIE_API_KEY takes priority on servers.

Gotchas

This node tests; it doesn't fix. Two other things in the pack are explicitly still follow-up work as of v0.5.0: an automated QA graph and character-sheet generation. Nothing here scores your renders.

Eight cases means eight paid generations per model if you run the set properly, and Seedance-class video is where a session gets expensive fast. Test on images first, on the cheapest resolution your model offers second.

Keep identity notes and wardrobe notes separate in the pack itself. The change-one-thing-at-a-time discipline the test matrix enforces collapses if the pack's identity description already bakes in a coat and a street.

CategoryKIE Next/Studio/Characters

Inputs (3)

NameTypeDefaultDescription
character_packCHARACTER_PACK—
test_caseCOMBO8 options: portrait · front, portrait · three-quarter, portrait · profile, full body · front, full body · wide frame, camera · low angle, +2
variation_notesoptSTRING—

Outputs (3)

NameTypeDescription
case_promptSTRING—
reference_viewSTRING—
test_matrix_jsonSTRING—