Prompts
Paste 10 prompts into one box
- positive
- negative
You know that thing where you get ChatGPT or Claude to spit out a dozen prompt ideas, and then you sit there queueing them one at a time like a chump? ComfyUI-Prompts (displayed as just Prompts, category utils/string) is the fix. You paste all twelve into one text box, separate them with **, and hit queue once - ComfyUI generates one image per block in a single run. That's the entire pitch, and it does it without any API, any models, or any dependencies beyond the Python standard library.
The author, jeremytenjo, is a small-time ComfyUI utility-node dev who posts his tools on r/comfyui (ComfyUI-Downloader, ComfyUI-Group-Bypasser). This one's his simplest - and honestly the least likely to get "why not just use X" pushback, because there's no native ComfyUI node that splits prompt text into blocks. It's a niche but a real one.
How it works
The mechanism is dumb in the good way. The node takes your text, splits it on divider (default **), strips whitespace around each chunk, and drops empty ones. Each chunk becomes one entry in a STRING list output - the key part is OUTPUT_IS_LIST = (True, True). ComfyUI sees a list output and iterates every downstream node once per item, which is exactly how one queue run becomes multiple images. It's the same batching trick the ecosystem has leaned on for prompt variations since day one (there's a reason the "workflow graph" docs talk about batched prompt variations as a core ComfyUI power move), just with a paste-friendly front end.
Each block gets parsed line by line. If a block has positive: and negative: labels (matched case-insensitively at line start), they're split out and the rest of those sections join back with newlines. No labels? The whole block is positive and negative is empty. Clean, predictable, and it handles \r\n from copy-pasting Windows text.
The two fields a beginner actually touches:
text(required) - your prompt blocks, separated by the divider. It's markeddynamicPrompts, so ComfyUI's{a|b}wildcard engine runs on it before splitting. You can combine both tricks if you want.divider(required, default**) - the exact string to split on. Change it to***or a unique word like--NEW--if your prompts contain**.
The other two are optional and self-explanatory: prompt_positive_prefix gets prepended verbatim to every positive (handy for a shared style tag or trigger word), and prompt_negative_default is the fallback used whenever a block's negative is missing or blank.
Outputs are positive (STRING list) and negative (STRING list), wired straight into your two CLIP Text Encode nodes.
Install
Nothing heavy - no requirements.txt, no model downloads, no pip installs:
cd ComfyUI/custom_nodes
git clone https://github.com/jeremytenjo/ComfyUI-Prompt-List
# restart ComfyUI
Or use ComfyUI Manager and search for ComfyUI-Prompt-List - note it's the repo name, not the node name, so "Prompts" alone may not surface it. After restart, right-click → Add Node → utils/string → Prompts.
Where people get burned
- The divider is a literal substring split. If your actual prompt text contains
**(someone pasting markdown bold, say), it'll tear the prompt in half. Change the divider or scrub the text. - Per-block negatives are only worth typing on models that actually use CFG. The node happily splits them out, but on Flux, Turbo/Lightning checkpoints, and other guidance-distilled models the negative does nothing at their designed CFG - the box exists, the effect doesn't. It's still a great fit for SDXL/Pony/Illustrious workflows.
- Expecting A1111 separators. There's no
BREAKor&&magic here. If you paste Auto1111-style batches expecting them to be honored, they won't be - you need the**(or your own divider). - Empty
textreturns one (possibly prefixed) entry with the fallback negative, so you get a render instead of an error. That's a feature until you fat-finger and wonder where the blank output came from.
That's it. If "many images from one prompt list, with per-prompt negatives" is your need, this is a five-minute install that does exactly that.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| divider | STRING | ** | — |
| prompt_positive_prefixopt | STRING | — | |
| prompt_negative_defaultopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| positive | STRING | — |
| negative | STRING | — |