String Concatenate (CCN)
Stitch prompts and filenames together without a tangle of text nodes
- text
Nobody installs a node pack for a concatenate node. But once you've spent an afternoon dragging half a dozen text primitives around trying to assemble one prompt, you start hunting for exactly this. String Concatenate (CCN) is the ComfyCollectorNodes answer to "I have four strings and I want them joined," and it's refreshingly no-fuss: up to four text inputs, one optional delimiter, one text output. That's the whole node.
You'll reach for it in two places. First, prompt assembly - stitch a subject, a style block, and a camera note into one string before it hits CLIP Text Encode or a token counter. Second, filenames: build character_lora_scale_v2 from parts so you're not hand-editing a save path every run. It's plumbing in the purest sense, the "one source, many consumers" layer that comfyui-node-plumbing.md calls out: type it once, wire it everywhere.
How it works
The mechanism is about as simple as it gets, with one smart default: empty strings are skipped. Leave string_3 blank and you get the other three joined with the delimiter, not a dangling comma. That single behavior saves you the conditional-join dance you'd otherwise build with switches.
The delimiter field is where the tiny bit of magic lives. Type a literal \n or \t and it becomes a real newline or tab - handy when you're assembling a multi-line prompt block. Want a comma? Just type a comma. Want nothing between parts? Leave it empty.
The inputs and outputs that matter
delimiter- the joiner between parts. Supports the\n/\tescapes.string_1throughstring_4- the parts. Empty ones are dropped.
That's it. Everything goes in as a widget or a wired STRING input, and a single text output comes out, ready for whatever downstream string consumer you've got.
How to install it
ComfyCollectorNodes is one install for all of these nodes. Easiest path is ComfyUI Manager - search for ComfyCollectorNodes in the Custom Nodes Manager and hit Install. Or clone it manually:
cd ComfyUI/custom_nodes
git clone https://github.com/valkymaera/ComfyCollectorNodes.git
Then restart ComfyUI. The pack ships no extra Python dependencies, so there's no pip step. Every node in it shows up in the menu with a (CCN) suffix, so search the node picker for CCN to see them all.
Common issues
The big gotcha is the empty-string skip, and it cuts both ways. It's usually exactly what you want, but you can't use this node to join with an empty part on purpose - if you need a,,b you're better off with String Splitter's cousin String Replacer, or just doing it by hand. Second, the delimiter is a widget, not an input socket by default; if you're switching between joiners dynamically, right-click and convert it to an input.
It's a small node, but it's one of those that quietly disappears into every workflow you build. That's the point.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| delimiter | STRING | — | |
| string_1 | STRING | — | |
| string_2 | STRING | — | |
| string_3 | STRING | — | |
| string_4 | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |