Dark Combiner
Seven strings, one delimiter, one output — the combiner the author admits is legacy
- STRING
DarkCombine takes up to seven text inputs and joins them into one string with a delimiter of your choosing, \n by default. It's a prompt assembly node: wire several sources into text_a through text_g, and out comes one combined string you can feed to a CLIP Text Encode. If you're building a prompt out of multiple generated pieces - a subject from one node, lighting from another, a camera style from a third - this is the join point.
But here's the honest framing you should know before you build around it: the author says it isn't really needed anymore. The README is blunt - "It isn't really needed anymore since DarkPrompt supports combining from previous DarkPrompt nodes." So this node is a holdover from the pack's earlier design, kept around for compatibility and for the one job it's still cleanly the right tool for.
How it works
Every non-empty input gets appended in order (text_a, text_b, ...) with the delimiter string between them, and empty inputs are skipped entirely - so you can leave half the sockets unplugged and get a clean result instead of a prompt full of blank lines. A delimiter of literal \n becomes a real newline. The inputs are forceInput, meaning they're sockets you wire things into rather than typing into boxes.
The reason it's mostly superseded: DarkPrompt's combine_with input does the same joining as part of the randomization. So if every piece of your prompt is coming from DarkPrompt nodes, chaining them saves you the middleman node entirely. Where DarkCombine still earns its keep is mixing a DarkPrompt output with a static string, or combining outputs that aren't DarkPrompts - any text sources, say two captioning or list nodes. For that, seven inputs plus a delimiter is genuinely handy.
The inputs
text_a…text_g(STRING sockets) - up to seven sources; unused ones are ignored.delimiter(STRING, default\n) - what goes between the joined pieces. A comma-space for tag-style prompts,\nfor multi-line conditioning blocks.
Output: a single STRING with everything joined.
Install
Same pack, same drill:
cd ComfyUI/custom_nodes
git clone https://github.com/darkpixel/darkprompts.git
Then restart ComfyUI. Or Manager → "DarkPrompts". No dependencies, no models.
One gotcha if you ever hit it: if you type a delimiter and the join looks wrong, check whether you passed a literal backslash-n (\\n) instead of an actual newline - the code translates \\n to a newline but a stray \n in some JSON-exported workflows won't survive. When in doubt, paste the output into a Show Text node and look at what's actually between the sections.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| delimiteropt | STRING | — | |
| text_aopt | STRING | — | |
| text_bopt | STRING | — | |
| text_copt | STRING | — | |
| text_dopt | STRING | — | |
| text_eopt | STRING | — | |
| text_fopt | STRING | — | |
| text_gopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |