Nodes/ComfyUI-CharacterPromptBuffer/Character Prompt Manager
ComfyUI Node

Character Prompt Manager

Same Character, Ten Variations, One Queue Run

By Kyreo·Created 4 months ago·Updated 4 months ago· 2
Character Prompt Manager
    • text
    • seed
    basemasterpiece, best quality, vibe light
    characterold man sitting on a couch, grey hair, casual clothes
    otherssimple background
    variations
    randomize_seedtrue
    manual_seed0

    You've dialed in a character you like - hair, eyes, outfit - and now you want to see them in a dozen situations: night scene, rain, a different framing. Normally that means retyping the full prompt twelve times, or babysitting the queue and hand-editing between runs. Character Prompt Manager is the node that collapses that into one queue run. It takes a fixed prompt skeleton, slaps a list of variations onto it, and emits one complete prompt per variation - plus a matching seed for each.

    The name oversells it a little. There's no management happening, no state, no API call. It's a text template joiner with a seed generator bolted on, and that's exactly the right scope for a batch-variation node.

    How it works

    Three of the inputs are constants. base holds your quality tags, style and shot type; character is the character description; others is background, lighting, atmosphere. The fourth input, variations, is a list. For every item in that list the node builds one prompt:

    {base},
    {character},
    {variation},
    {others}
    

    Then it pairs each prompt with a seed: with randomize_seed on, a fresh random integer per variation; with it off, your manual_seed repeated for the whole batch.

    The sneaky part is hidden in the code: when randomize_seed is on, the node's IS_CHANGED always returns a random value, so ComfyUI re-executes it every run and draws new seeds. That's why one queue run gives you new results instead of ComfyUI caching the node's output and replaying the same seeds. Flip randomize_seed off and the node reports "unchanged" - which is exactly what you want when you're trying to reproduce a specific image.

    The inputs and outputs that matter

    The three multiline boxes are what you'll actually type into - and the pack's front-end makes them tall and labels them Base / Character / Others so you stop confusing them. variations gets wired from the Variation Buffer. The outputs do what the README says: text → CLIP Text Encode (positive prompt), seed → the seed input on your KSampler.

    Where people get burned:

    • The varying part goes in variations, not character. The character box is constant across the whole batch. If the outfit or pose should differ between images, that lives inside each variation string - think "fixed identity + a list of what changes."
    • Empty variations mean nothing renders. Feed the node an empty or blank list and it returns empty lists; downstream silently produces nothing. No error, you'll just wonder why the queue finished instantly.
    • Seeds only match variations if the wiring is right. Randomize on = every execution draws new seeds, which is what you want for exploration. Found a keeper? Turn it off and set manual_seed, and the whole batch becomes reproducible.
    • Blank or whitespace-only variation lines are stripped, so sloppy pastes don't break the batch.

    Installing

    ComfyUI Manager → search ComfyUI-CharacterPromptBuffer, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Kyreo/ComfyUI-CharacterPromptBuffer
    

    Restart, and both nodes of the pack show up under conditioning → Character Prompt Manager. There are no dependencies and no model downloads - this is pure Python text juggling, so it can't break your environment.

    What it doesn't do

    Be clear-eyed about this: it won't keep your character consistent on its own. Same prompt skeleton, different seeds and variations still means the model re-invents the face every time - that's the whole character-consistency problem, and a text node isn't a solution to it. What it does do is make the "same person, ten scenes" exploration cheap, so you can throw a stack of variations at a character LoRA or a reference workflow and cherry-pick the winners. For a zero-dependency utility, that's a fair deal.

    Categoryconditioning/Character Prompt Manager

    Inputs (6)

    NameTypeDefaultDescription
    baseSTRINGmasterpiece, best quality, vibe light
    characterSTRINGold man sitting on a couch, grey hair, casual clothes
    othersSTRINGsimple background
    variationsSTRING
    randomize_seedBOOLEANtrue
    manual_seedoptINT00–4294967295

    Outputs (2)

    NameTypeDescription
    textSTRING
    seedINT