Prompt Combiner ➕
Build one prompt out of up to four pieces, with per-piece weights
- combined_text
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.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| separator | STRING | , | — |
| weight_1 | FLOAT | 1.000–3 | — |
| weight_2 | FLOAT | 1.000–3 | — |
| weight_3 | FLOAT | 1.000–3 | — |
| weight_4 | FLOAT | 1.000–3 | — |
| text_1opt | STRING | — | |
| text_2opt | STRING | — | |
| text_3opt | STRING | — | |
| text_4opt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| combined_text | STRING | — |