π Triple Prompt
Three prompt fields, auto-joined with commas so you don't have to babysit punctuation
- text1
- text2
- text3
- concatenated_text
A lot of prompting habits are really "keep a few reusable blocks and combine them" - a subject description, a style/quality block, a negative-leaning list of things to avoid, whatever your workflow tends to reuse. Doing that with plain string-concatenate nodes works, but you end up manually managing commas: forget one between blocks and two tags run together; add one after an empty block and you get a stray leading comma in your prompt. Triple Prompt is a small, specific fix for exactly that annoyance - three text fields, each output individually, plus a fourth output that's all three joined with correct comma handling.
How it works
You get three independent multiline text boxes. Each is available as its own output if you need to route them separately - say, one block feeding a positive prompt and another feeding somewhere else entirely - and a fourth output gives you all three concatenated into one string. The concatenation logic is the actual value here: it adds a comma between blocks only where one isn't already present at the end of a block, and if a field is left empty, it's skipped cleanly rather than leaving a double comma or an orphaned separator in the joined result. According to the pack's changelog, output naming for this node was specifically fixed in v1.1.1, so if you're on an older version and the output names look different than expected, updating is the fix.
This is a small piece of what the wider community calls prompt chunking or block-based prompting - building a prompt out of reusable, swappable pieces (subject, style, quality tags, and so on) rather than one long hand-typed string you edit in place every time.
Inputs and outputs that matter
text1,text2,text3- three independent multiline string inputs, all defaulting to empty. Use them for whatever split makes sense for your workflow - subject / style / quality tags is a common pattern, but there's no enforced meaning to which field is which.
Four outputs: text1, text2, text3 (the individual fields, passed through unchanged, useful if you need to route one block somewhere specific) and concatenated_text (all three joined with automatic comma handling) - wire whichever combination you actually need into your CLIP Text Encode or wherever downstream.
How to install it
ComfyUI Manager: search "GOAT Nodes", install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/AconexOfficial/ComfyUI_GOAT_Nodes.git
then restart ComfyUI. Nothing to download - it's text handling, no models or dependencies involved.
Common issues & troubleshooting
Only using concatenated_text and ignoring the individual outputs is fine - the per-field outputs exist for the cases where you need one block routed somewhere the joined string shouldn't go (say, text3 is a negative-leaning block you want feeding a separate negative prompt encode rather than mixed into the positive one). If you don't need that split, just use the combined output and leave the individual ones unconnected.
Weird punctuation in the joined output on an older pack version. The changelog specifically calls out an output-naming fix in v1.1.1 - if your comma handling looks off, update the pack via ComfyUI Manager before assuming you're doing something wrong.
Comma handling only looks at trailing punctuation, not full prompt syntax. It's checking whether a block ends in a comma before adding one - it's not parsing or validating your prompt syntax more broadly (weighting parentheses, LoRA tags, embedding syntax like GOAT's own Embedding Selector output). Keep that in mind if you're combining this with more complex prompt fragments; the auto-comma logic is specifically about not double- or under-punctuating between the three blocks, nothing more.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| text1 | STRING | β | |
| text2 | STRING | β | |
| text3 | STRING | β |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| text1 | STRING | β |
| text2 | STRING | β |
| text3 | STRING | β |
| concatenated_text | STRING | β |