Nodes/KIE.ai Nodes Next/KIE • Load Character Pack
ComfyUI Node

KIE • Load Character Pack

Your character's identity brief, as a wire you can reuse

By felipederosilva·Created about a month ago·Updated about 22 hours ago· 3
KIE • Load Character Pack
    • character_pack
    • identity_prompt
    • manifest_json
    ◄character▾►

    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_PACK object. It's the handle the pack's other character nodes take; the actual data is {directory, manifest}.
    • identity_prompt - a STRING assembled from the pack's saved identity, style and continuity notes, formatted as Character 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_json into a prompt field. It's a full document - descriptions, versions, references. Use identity_prompt for 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.
    CategoryKIE Next/Studio/Characters

    Inputs (1)

    NameTypeDefaultDescription
    characterCOMBO1 options: (no saved Character Packs)

    Outputs (3)

    NameTypeDescription
    character_packCHARACTER_PACK—
    identity_promptSTRING—
    manifest_jsonSTRING—