โ๏ธ CR Combine Prompt
Build a prompt from four reusable blocks
- prompt
- show_help
If you build prompts like a lot of people do - a subject block, a style block, a lighting block, a quality-tags block - CR Combine Prompt is the node that stitches those four pieces into one string with a comma between each. It's CR Text Concatenate's bigger sibling: same idea, four slots instead of two, and a separator that already defaults to a comma because it was built with prompts in mind.
The payoff is modularity. Keep your reusable phrases in their own nodes (or CR Text boxes) and Combine Prompt assembles them at runtime. Want to A/B two styles? Swap what feeds part2 and leave the rest alone. Want a "quality tags" block you paste into every workflow? Wire it into part4 once. This is the small, unsexy discipline that turns a tangle of hardcoded prompts into something you can actually maintain.
How it works
It takes up to four text parts, drops the separator between each non-empty one, and outputs a single string. Empty parts are skipped, so you don't get stray commas or gaps when a slot is blank - you can wire only part1 and part3 and it behaves. The default separator is , which is exactly right for tag-style prompts; change it to , if you want the extra space, or to a newline if you're feeding something that likes line breaks.
The inputs and outputs that matter
part1โpart4- your four prompt fragments, all optional and all multiline. Type into them or wire them from other string nodes. Order matters: they're joined in sequence, and in prompting, earlier tokens tend to carry a touch more weight.separator- defaults to,. For prompts, leave it or make it,. This is the only real knob.
Outputs:
prompt- the combined string, ready to feed a CLIP Text Encode.show_help- a wiki link; leave it hanging.
Where people overreach: this is string assembly, not weighting or conditioning math. It won't blend concepts or manage emphasis - for that you're into (token:1.2) syntax or dedicated conditioning nodes. Combine Prompt just concatenates cleanly, which is 90% of what you actually need.
How to install it
Comfyroll Studio, by Suzie1 and RockOfFire, is a mature utility pack - no models to download, no unusual dependencies.
- ComfyUI Manager - search Comfyroll Studio, install, restart.
- Manual -
cd ComfyUI/custom_nodes && git clone https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes.git, then restart ComfyUI.
Also on CivitAI.
Common issues
The node itself is dead simple, so the troubleshooting is really about the pack loading at all. If it doesn't, your ComfyUI log shows Comfyroll Studio: Failed to load Graphics nodes / Failed to load Utility nodes and then NameError: name 'CR_HalftoneGrid' is not defined. Don't chase the NameError - it's downstream of a real import error further up the log, typically an incompatible Pillow (PIL) version that some other custom node installed. Because Comfyroll loads its nodes as a single block, one broken import can take the whole pack offline, this node included. Reinstall Pillow into ComfyUI's Python (pip install --upgrade --force-reinstall pillow) and restart. Beyond that, the only "bug" you'll hit is a separator you forgot to set - an empty one mashes your blocks together, so keep it at a comma for prompt work.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| part1opt | STRING | โ | |
| part2opt | STRING | โ | |
| part3opt | STRING | โ | |
| part4opt | STRING | โ | |
| separatoropt | STRING | , | โ |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | โ |
| show_help | STRING | โ |