KIE • Character Reference
Pull one approved face out of a saved Character Pack
- character_pack
- reference_image
- character_prompt
Character consistency is the most complained-about problem in this hobby, and the 2026 answer is not clever conditioning - it's editing. Generate or approve the character once, then feed that image into every later generation as a reference and let the model look at it while it works. That approach depends on having an image you actually approved, in a form you can reuse, and that's the gap this node fills.
It reads a Character Pack - the versioned bundle the pack's KIE • Save Character Pack node writes into ComfyUI's user data folder - and emits one stored view as a native IMAGE, alongside a text prompt describing the character's identity, visual style and continuity rules. Think of it as LoadImage for a curated identity library, with the identity notes attached.
Inputs and outputs
character_pack is the required input and it's a CHARACTER_PACK socket, not a file picker, so it comes from KIE • Load Character Pack - that node lists your saved packs and selects a version. Packs are immutable by name and version on purpose: re-saving identical content is safe, but changing an approved identity means a new version, which protects you from silently regenerating last week's campaign with a different face.
view picks which reference you want: portrait, full_body, profile, or expression_sheet. The dropdown is fixed, but the pack is not - if the pack you loaded never had a full-body reference saved, you'll get a clear error naming the views that do exist rather than an empty image. wardrobe_or_scene_variation is free text and optional; whatever you type is appended to the output prompt as an allowed variation, e.g. "winter coat, snowy street, dusk" while the identity anchors stay untouched. That separation - identity on one side, wardrobe and scene on the other - is the whole discipline of keeping a character recognizable, and the node enforces it structurally.
Outputs: reference_image (a ComfyUI IMAGE tensor, ready for any node that takes a picture) and character_prompt (a string built from the identity description, visual style and continuity rules, plus your variation line).
Wire reference_image into a model node's reference-image socket - the pack's Seedance 2.x nodes have reference_image_urls, and Seedream 4.0 - Edit takes image_urls - and paste character_prompt into that node's prompt as a starting point. The pack uploads the image to KIE for you; no URL juggling.
Where this gets oversold
The node's own description is refreshingly blunt about it: connect the image only to operations that document reference-image support, and understand that a reference plus a prompt is not a universal identity lock. Actual consistency depends on the model and the operation. Feed a face into a text-to-video endpoint with no reference slot and nothing happens; feed it to a model that treats references loosely and you get a cousin, not the character. If you want the strongest identity pressure on a hosted model, the edit-style path - give it the approved image and an instruction - is the one that consistently works, which is the same conclusion the local community reached with instruction-editing models.
If you're used to IP-Adapter or PuLID weights doing this locally at 0.3–0.6 weight with a face LoRA on top, note the difference: there's no adapter here and no weight to tune. It's a reference image and a text description in a request body, and the provider decides how much of it to obey.
Install
Manager → search KIE.ai Nodes Next (publisher id felipeosilva) → install. If it isn't there, the README describes registry publishing as prepared rather than done, 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, then set the KIE key once under Settings → KIE.ai Nodes Next → Connection; the full key stays out of workflow JSON, and KIE_API_KEY overrides it for headless installs.
Gotchas
No pack, no node. This node raises rather than degrading when nothing valid is connected, so wire the Load pack node first.
Reference files live in Comfy's user directory, not the plugin folder - <user dir>/KIE-Nodes-Next/character_packs/<name>/. Copying a pack between machines means copying that folder, and files dragged outside it are rejected as unsafe.
You still pay per generation, and your references go to a third party. Identity content is exactly the kind of input people are squeamish about uploading, and the pack is a client for KIE's hosted models - the image leaves your machine on every call. If a reference depicts a real person, the pack's save node requires you to mark it and confirm permission. That's not ceremony; it's the one place where reusing a face in 200 generated images is a legal question and not just an aesthetic one.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| character_pack | CHARACTER_PACK | — | |
| view | COMBO | 4 options: portrait, full_body, profile, expression_sheet | |
| wardrobe_or_scene_variation | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| reference_image | IMAGE | — |
| character_prompt | STRING | — |