Multi Prompts (Text-Driven)
Ten prompt slots in one node, each with its own weight and on/off switch
- string_out
Multi Prompts (Text-Driven) is the "manage a pile of prompt fragments in one place" node of this pack. Instead of scattering five text boxes across your graph and muting them by physically deleting text, you get up to ten slots in a single node, each with its own text, its own attention multiplier, and its own little checkbox that decides whether it goes into the output. Toggle a character off, crank a style up, hit queue. That's the workflow it's selling.
How it works
The first input, num_prompts, is a combo box from 1 to 10 (default 3) and it actually reshapes the node: a bit of JavaScript hides every slot beyond the number you picked, so the node shrinks and grows instead of always showing ten rows. For each visible slot there's a text_N multiline box, a multiplier_N float (0.0–10.0, default 1.0), and an active_N boolean toggle.
There's also optional_text_in - a string pin for merging an upstream fragment, which gets prepended to the output if it's non-empty.
The output is a single string_out. The backend walks the slots in order, skips anything with active off, drops empty text, and joins the rest with a comma - no spaces. Anything with a multiplier other than 1.0 gets wrapped in standard CLIP attention syntax, so a slot at 1.5 becomes (text:1.5) with trailing zeros stripped (1.10 renders as 1.1, which is a small touch you'll appreciate if you've ever eyeballed a prompt string full of 1.00s).
The honest caveat
This node is built around CLIP-era prompt engineering, and that only works on CLIP-encoded models - SD 1.5, SDXL, Illustrious, NoobAI, Pony, WAI. On those, (word:1.3) is real and the comma-no-space output is fine. On Flux and especially on the LLM-encoded models (Z-Image, Klein, Anima, Krea 2), attention weights are silently discarded and there's no token chunk boundary to care about - so the weight slider does nothing and you'd be better off writing an instruction. Know which family your checkpoint belongs to before you build your whole graph around this.
Also note the output strips spaces after commas - a, b becomes a,b. That's harmless for tag-style prompting and costs a few tokens on anything sentence-based. If you want your fragments joined with ", " instead, use Join Strings (Text-Driven) with that delimiter; these nodes are designed to chain.
Install
Part of ComfyUI Text-Driven Workflows - install via ComfyUI Manager (search "ComfyUI Text-Driven Workflows") or:
cd ComfyUI/custom_nodes
git clone https://github.com/kanryu/ComfyUI-Text-Driven-Workflows.git
Restart, and you're done: no pip deps, no model files, empty dependency list. The one thing to watch is the pack's reliance on the new ComfyUI V3 extension API - if your ComfyUI is old enough that comfy_api.latest doesn't exist, the pack logs "Failed to load nodes" and you'll find nothing under Text-Driven Workflows. Update ComfyUI and it resolves.
Bottom line
It's a multi-slot prompt switch you can toggle with checkboxes, and it's genuinely pleasant to use for A/B-ing a style or character set. It overlaps with a lot of other prompt-switcher packs in the ecosystem, but it's dependency-free, it shows you everything at once, and for a CLIP model it does exactly what it says. Reach for it when "I want three variants of this scene on tap" is the problem.
Inputs (32)
| Name | Type | Default | Description |
|---|---|---|---|
| num_prompts | COMBO | 3 | 10 options: 1, 2, 3, 4, 5, 6, +4 |
| text_1 | STRING | — | |
| multiplier_1 | FLOAT | 1.00–10 | — |
| active_1 | BOOLEAN | true | — |
| text_2 | STRING | — | |
| multiplier_2 | FLOAT | 1.00–10 | — |
| active_2 | BOOLEAN | true | — |
| text_3 | STRING | — | |
| multiplier_3 | FLOAT | 1.00–10 | — |
| active_3 | BOOLEAN | true | — |
| text_4 | STRING | — | |
| multiplier_4 | FLOAT | 1.00–10 | — |
| active_4 | BOOLEAN | true | — |
| text_5 | STRING | — | |
| multiplier_5 | FLOAT | 1.00–10 | — |
| active_5 | BOOLEAN | true | — |
| text_6 | STRING | — | |
| multiplier_6 | FLOAT | 1.00–10 | — |
| active_6 | BOOLEAN | true | — |
| text_7 | STRING | — | |
| multiplier_7 | FLOAT | 1.00–10 | — |
| active_7 | BOOLEAN | true | — |
| text_8 | STRING | — | |
| multiplier_8 | FLOAT | 1.00–10 | — |
| active_8 | BOOLEAN | true | — |
| text_9 | STRING | — | |
| multiplier_9 | FLOAT | 1.00–10 | — |
| active_9 | BOOLEAN | true | — |
| text_10 | STRING | — | |
| multiplier_10 | FLOAT | 1.00–10 | — |
| active_10 | BOOLEAN | true | — |
| optional_text_inopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| string_out | STRING | — |