Nodes/ComfyUI-RedNodeStudio/RedNode Text Combine
ComfyUI Node

RedNode Text Combine

Assembling prompts from parts with RedNode Text Combine

By RedNodeAI·Created 26 days ago·Updated 15 days ago· 0
RedNode Text Combine
    • text
    separator,
    channel
    config{}
    channel_out
    part_1
    part_2
    part_3
    part_4
    part_5
    part_6
    part_7
    part_8
    part_9
    part_10
    part_11
    part_12
    part_13
    part_14
    part_15
    part_16
    part_17
    part_18
    part_19
    part_20
    part_21
    part_22
    part_23
    part_24
    part_25
    part_26
    part_27
    part_28
    part_29
    part_30
    part_31
    part_32

    RedNode Text Combine is the pack's plain string joiner, and its headline feature is in the description: it can assemble your text with no wires at all. You type pieces into rows, wire strings in when you have them, or subscribe to a named channel and every string posted to it shows up as a row automatically. Drag to reorder, switch a row off to drop it from the result, and the joined text comes out one socket.

    That reads like a minor quality-of-life node, and for filenames and workflow text it mostly is. But there's a real generation workflow hiding behind it. With the current crop of models - Krea 2 and the rest of the LLM-encoded generation - the community's prompt practice has shifted from one giant comma-tag soup to structuring the prompt in blocks: subject, surroundings, lighting, style, each as its own piece you can vary independently. That's exactly what a combine node is for. Build each block once (a lighting block, a subject block, a style block), then join them in one place instead of maintaining a sprawling text box you have to rewrite every time something changes.

    How it works

    The node gives you up to 32 part_* inputs (part_1 through part_32), all strings, all wired. Between the pieces goes the separator - default is ", " (comma-space), and if you type \n as literal backslash-n you get a newline instead. A config JSON widget holds the row list - which parts exist, in what order, which are toggled off - and the panel edits it for you, same as the rest of this pack.

    The wireless half is the channel system, and it's the same one the pack's Sender/Grabber prototypes use. Set channel to a name and every string published to that channel becomes a row here, no wire. Set channel_out to a name and this node's joined result goes out onto that channel, so anything else subscribed picks it up. The one trap: don't set them to the same name - the node would wait on itself forever, so it deliberately leaves the value out and says so in the console. Output is a single text socket.

    The inputs that matter

    For a beginner, honestly, just two:

    • separator - how pieces join. Comma-space suits tag-style prompts; a space or empty suits natural sentences.
    • part_1, part_2, … - your pieces, either typed into the row or wired from other nodes.

    The channel / channel_out pair is the power feature - skip it until you're comfortable, then it's what lets you drive prompts from one place without a canvas full of wires.

    For prompts specifically, use the other node

    This is the pack's plain joiner. If you're assembling CLIP text, the sibling RedNode Prompt Combine adds a "final prompt" flag that marks the finished string as the real prompt for the rest of the workflow. Grab that one for prompt duty. Text Combine is the unglamorous version for everything else - filenames, JSON you're building, text you're handing to a node that isn't prompt-flavored.

    Installing it

    Same pack as everything else here - RedNode Studio, 52 nodes, zero pip dependencies. ComfyUI Manager → search "RedNode Studio", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/RedNodeAI/ComfyUI-RedNodeStudio.git
    

    Restart, and it's under the RedNode category. Python 3.10+; no model downloads for this one (the Krea 2 nodes in the pack have their own requirements, but the prompt tools don't). License is PolyForm Noncommercial - free for personal/hobby use, commercial needs permission.

    Common issues

    The only real failure mode is the channel self-wait described above - if your text output mysteriously comes back empty and the console mentions a channel, you've wired channel and channel_out to the same name. Pick different names. Beyond that, remember the separator is literal: want a newline between blocks, type \n, don't paste an actual line break. And if a row isn't appearing in the output, check it isn't toggled off - off rows are deliberately left out, which is the feature you use when you want to A/B a block without deleting it.

    CategoryRedNode/Prompt

    Inputs (36)

    NameTypeDefaultDescription
    separatorSTRING, placed between the pieces. Type \n for a newline.
    channelSTRINGOPTIONAL. Name a channel and every string on it becomes a row here, with no wires. Leave it empty to use only the rows you add by hand.
    configSTRING{}
    channel_outSTRINGOPTIONAL. Put this node's joined text onto a channel, so anything subscribed to that name picks it up with no wire. Reading and sending the same channel would make this node wait on itself, so that value is left out and the console says so.
    part_1optSTRING
    part_2optSTRING
    part_3optSTRING
    part_4optSTRING
    part_5optSTRING
    part_6optSTRING
    part_7optSTRING
    part_8optSTRING
    part_9optSTRING
    part_10optSTRING
    part_11optSTRING
    part_12optSTRING
    part_13optSTRING
    part_14optSTRING
    part_15optSTRING
    part_16optSTRING
    part_17optSTRING
    part_18optSTRING
    part_19optSTRING
    part_20optSTRING
    part_21optSTRING
    part_22optSTRING
    part_23optSTRING
    part_24optSTRING
    part_25optSTRING
    part_26optSTRING
    part_27optSTRING
    part_28optSTRING
    part_29optSTRING
    part_30optSTRING
    part_31optSTRING
    part_32optSTRING

    Outputs (1)

    NameTypeDescription
    textSTRING