Nodes/OmniNodes/Prompt Combiner ➕
ComfyUI Node

Prompt Combiner ➕

Build one prompt out of up to four pieces, with per-piece weights

By TensorVizion·Created 3 months ago·Updated 21 days ago· 1
Prompt Combiner ➕
    • combined_text
    ◄separator, ►
    ◄weight_11.00►
    ◄weight_21.00►
    ◄weight_31.00►
    ◄weight_41.00►
    ◄text_1►
    ◄text_2►
    ◄text_3►
    ◄text_4►

    Modular prompts are the whole game once your workflows outgrow a single text box: a character block here, a style block there, a lighting fragment from a wildcard. Prompt Combiner ➕ joins up to four fragments into one string, and - the useful part - applies a per-fragment weight while it does it. Weight 1.0 passes a fragment through untouched; anything else gets wrapped in the (fragment:weight) emphasis syntax that SD1.5/SDXL encoders understand, so you can push a style block to 1.2 or duck a character block to 0.8 without rewriting it.

    It's the text equivalent of a mixer channel strip: four sources in, one bus out, each source with its own level.

    How it works

    The four text_N inputs are optional - any disconnected slot is skipped entirely, with no dangling separator left behind, so you can use one slot or four and the output stays clean. separator defaults to ", " but accepts anything, including \n for line-per-fragment prompts. Weights run 0.0–3.0 and are wrapped only when they differ from 1.0, so a default-all-ones run produces a plain joined string with no syntax noise.

    Output is a single combined_text string. Wire it straight into a CLIP Text Encode - or into the pack's Prompt Cleaner first, because fragments assembled from multiple sources are exactly where duplicate tags sneak in.

    The inputs that matter

    text_1 through text_4 (strings, each convertible to an input so you can wire in another node's output), the four weight_N floats, and separator. That's it. The practical pattern: keep character descriptors in one slot, style in another, and use the weights to fine-tune emphasis without touching the text.

    A note on the emphasis syntax, since people overuse it: (fragment:1.2) genuinely pushes attention, but stacking a dozen weighted fragments fights itself. Use weights on the blocks that matter, not everything. The KB's prompt-engineering doc has the longer version of this argument.

    Installing it

    Part of the OmniNodes pack:

    cd ComfyUI/custom_nodes/
    git clone https://github.com/TensorVizion/OmniNodes
    

    Restart ComfyUI (or search "OmniNodes" in ComfyUI Manager). No extra dependencies. Registers under TensorVizion/Prompt. If it doesn't appear after install, restart completely and check the terminal for [OmniNodes] ✅ Loaded lines.

    For anyone assembling prompts from reusable blocks - which, if you're honest with yourself, is everyone doing real work in ComfyUI - this is a small node that earns its place fast.

    CategoryTensorVizion/Prompt

    Inputs (9)

    NameTypeDefaultDescription
    separatorSTRING, —
    weight_1FLOAT1.000–3—
    weight_2FLOAT1.000–3—
    weight_3FLOAT1.000–3—
    weight_4FLOAT1.000–3—
    text_1optSTRING—
    text_2optSTRING—
    text_3optSTRING—
    text_4optSTRING—

    Outputs (1)

    NameTypeDescription
    combined_textSTRING—