KIE • Load Character Pack
Your character's identity brief, as a wire you can reuse
- character_pack
- identity_prompt
- manifest_json
What it's for
Character consistency is the problem that eats more hours in this hobby than any sampler setting. The reliable answer is a trained LoRA; the fast answer is an edit model plus a reference image; the sloppy answer is retyping the same description into every prompt and watching the character drift.
This node is the pack's answer to the third problem. KIE • Load Character Pack (KIE_Next_Load_Character_Pack, under KIE Next/Studio/Characters) loads a saved, versioned character definition and emits it as text you can wire into any downstream prompt. One node, one source of truth, no retyping.
It's part of the Character Packs feature that landed in the pack's v0.5 release, alongside KIE • Save Character Pack (which creates the pack in the first place), KIE • Character Reference (which pulls one approved view out as an IMAGE) and KIE • Character Consistency Test Plan (which builds an eight-case prompt matrix for manual QA and, notably, never submits a generation job).
The one input
character - a dropdown listing the packs you've already saved, labelled like My Character · v1. Nothing else. No pack selected, no output.
There's a chicken-and-egg bit worth knowing: the dropdown is built when the node's input types are queried. If you've never saved a pack, it offers the placeholder (no saved Character Packs) and the node fails on execute with "No matching saved Character Pack. Save one first, then refresh/re-add this node." Save a pack first, then re-add the node (or reload the page) so the list repopulates.
The three outputs
- character_pack - a
CHARACTER_PACKobject. It's the handle the pack's other character nodes take; the actual data is{directory, manifest}. - identity_prompt - a
STRINGassembled from the pack's saved identity, style and continuity notes, formatted asCharacter identity: … / Visual style: … / Continuity rules: …. This is the output you'll use most: wire it into a prompt concat or paste it at the top of a prompt in any KIE model node. - manifest_json - the full manifest as pretty-printed JSON. Useful for diffing two versions, for debugging why a pack didn't load, and for feeding
elements-style JSON fields on the Kling Omni nodes.
How packs are stored, and why it matters
Packs live in ComfyUI's user data area - under the pack's own KIE-Nodes-Next/character_packs directory, outside the custom node folder. That's deliberate: updating or deleting the extension doesn't take your characters with it, and a pack isn't exported inside your workflow.
They're also immutable by name and version. Saving identical content again is safe; changing anything requires a new version. That's a reproducibility decision rather than a convenience one - an approved character stays the character you approved, and if a later "improvement" breaks your look, the old version is still there. Keep identity anchors separate from wardrobe and scene notes, so a costume change doesn't force a new identity version.
What it does not do
It does not lock identity. The pack's own docs say it plainly: a reference image and a prompt are not a universal identity lock, and consistency depends on the model and operation you feed them to. On a strong reference-conditioning endpoint you'll get fairly tight results; on a plain text-to-video call, you get a prompt that describes your character well. If you need the same face in fifty shots, train the LoRA - this is the tooling for keeping your description honest, not a replacement for training.
Also worth flagging for anyone doing likeness work: the save side requires explicit confirmation of permission when a pack is marked as a real person's likeness. That's the pack being sensible, not a bug.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
Restart ComfyUI, then Settings → KIE.ai Nodes Next → Connection and paste your KIE.ai key once - it's verified before it replaces anything, and you get a masked fingerprint plus a ✅ CONNECTED row. Character Packs themselves are local, but the nodes that use them (the Kling, Veo, Seedance, MiniMax ones this pack generates from KIE's catalog) are API calls on that key. Requirements are requests, Pillow, numpy, PyYAML. ComfyUI Manager search works where the pack is listed; the repo also has a ZIP and a one-click Windows installer in dist/.
Gotchas
- Empty dropdown - you haven't saved a pack yet, or you saved one after the browser last fetched node definitions. Re-add the node or reload.
- An unreadable pack is skipped silently. If a directory has a missing or malformed
character.json, the loader ignores it rather than erroring, so a pack that "disappeared" usually has a corrupt manifest on disk. - Don't wire
manifest_jsoninto a prompt field. It's a full document - descriptions, versions, references. Useidentity_promptfor prompts. - Upgrading mid-project. Packs are versioned and immutable, and the loader filters by manifest schema version - one more reason to bump the version rather than edit a pack in place.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| character | COMBO | 1 options: (no saved Character Packs) |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| character_pack | CHARACTER_PACK | — |
| identity_prompt | STRING | — |
| manifest_json | STRING | — |