NS Prompt List
One Node, Up to 50 Prompt Boxes, One Comma-Joined String
- text
NS Prompt List is a boring node and proud of it. You get a configurable number of text boxes (2 to 50), and it joins whatever's in them into a single comma-separated string. That's the whole job. Boring plumbing nodes are the ones that actually make workflows readable - this is the "one source, many consumers" pattern from the utility layer, applied to prompt text.
Why does that exist? Because ComfyUI's default prompt setup means editing a prompt means hunting through the graph. If you keep your prompt as separate labeled parts - subject, style, lighting, negative-ish concerns - each in its own box, you can change "lighting" without touching the rest, and every downstream consumer (CLIP Text Encode, an LLM prompt builder, whatever) reads the same assembled string from one place. It's the prompt equivalent of a primitive node: one authoritative value, fanned out.
How it works
Set inputcount (2–50) and only that many boxes appear - no more scrolling past 48 blank fields. Fill the boxes, and the node joins them with commas into one STRING output. It's a join, not a batch: the output is a single string, so it doesn't fan out a workflow the way list-emitting nodes do. That's the sibling NS Structured Prompt List's job.
Comma-joining has a real benefit for the 2026 model landscape: most LLM-encoded bases (Qwen, Z-Image, the Flux family) want natural-language instructions, and a comma-separated list is the classic compact form that still reads fine through those encoders. Just don't expect (word:1.3) weighting syntax to survive - on modern encoders that's discarded as literal punctuation anyway, so plain text in the boxes is the right call.
Inputs and output
Required: inputcount and prompt_1 through prompt_50 (only the first inputcount are visible/used). Output: a single text STRING.
A typical shape: prompt_1 = "studio product photo of a matte black espresso machine", prompt_2 = "soft window light", prompt_3 = "minimal marble countertop". Result: one comma-joined string you can wire to your CLIP encoder.
Install and setup
Part of the Symbiotica pack (symbiotica-ai/comfyui-nodes). ComfyUI Manager → search "Symbiotica", or:
cd ComfyUI/custom_nodes
git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
pip install -r symbiotica/requirements.txt
Restart. No keys, no models, no ffmpeg - this is pure graph glue.
Troubleshooting
- Only the first few boxes show - that's
inputcountdoing its job. Bump it and the rest appear. - The prompt has stray commas at the end - empty boxes join as empty strings, so
"subject, style,"with a trailing comma is normal if you leave the last box blank. Fill or trim; it's cosmetic to most encoders but can confuse an LLM downstream. - Nothing comes out - check you wired the
textoutput somewhere and aren't expecting the node to save anything; it's a value node, not an output node. - You want a batch, not a string - this isn't it. Reach for NS Structured Prompt List (JSON in, list out) or the pack's Load Text List for multi-prompt iteration.
Inputs (51)
| Name | Type | Default | Description |
|---|---|---|---|
| inputcount | INT | 52–50 | — |
| prompt_1 | STRING | — | |
| prompt_2 | STRING | — | |
| prompt_3 | STRING | — | |
| prompt_4 | STRING | — | |
| prompt_5 | STRING | — | |
| prompt_6 | STRING | — | |
| prompt_7 | STRING | — | |
| prompt_8 | STRING | — | |
| prompt_9 | STRING | — | |
| prompt_10 | STRING | — | |
| prompt_11 | STRING | — | |
| prompt_12 | STRING | — | |
| prompt_13 | STRING | — | |
| prompt_14 | STRING | — | |
| prompt_15 | STRING | — | |
| prompt_16 | STRING | — | |
| prompt_17 | STRING | — | |
| prompt_18 | STRING | — | |
| prompt_19 | STRING | — | |
| prompt_20 | STRING | — | |
| prompt_21 | STRING | — | |
| prompt_22 | STRING | — | |
| prompt_23 | STRING | — | |
| prompt_24 | STRING | — | |
| prompt_25 | STRING | — | |
| prompt_26 | STRING | — | |
| prompt_27 | STRING | — | |
| prompt_28 | STRING | — | |
| prompt_29 | STRING | — | |
| prompt_30 | STRING | — | |
| prompt_31 | STRING | — | |
| prompt_32 | STRING | — | |
| prompt_33 | STRING | — | |
| prompt_34 | STRING | — | |
| prompt_35 | STRING | — | |
| prompt_36 | STRING | — | |
| prompt_37 | STRING | — | |
| prompt_38 | STRING | — | |
| prompt_39 | STRING | — | |
| prompt_40 | STRING | — | |
| prompt_41 | STRING | — | |
| prompt_42 | STRING | — | |
| prompt_43 | STRING | — | |
| prompt_44 | STRING | — | |
| prompt_45 | STRING | — | |
| prompt_46 | STRING | — | |
| prompt_47 | STRING | — | |
| prompt_48 | STRING | — | |
| prompt_49 | STRING | — | |
| prompt_50 | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |