Prompt List (Inteliweb)
Five prompts, one node, and a queue that runs each of them
- optional_prompt_list
- PROMPT_LIST
- PROMPT_STRINGS
Batch generation is the thing that turns ComfyUI from a toy into a tool, and Prompt List is the smallest honest version of it: five multiline prompt fields in one node, empty ones ignored, and two different ways to get the results out. The trick is understanding which output to wire where, because the two outputs behave differently on purpose.
How it works
Fill in prompt_1 through prompt_5, leave the blanks blank, and the node collects the non-empty ones into a list. That part is boring in the best way - the build_prompt_list() method just strips empties and returns the same list twice. The difference is in how ComfyUI treats each output. PROMPT_LIST is a single LIST value: one object, handed to nodes that explicitly accept a LIST input. PROMPT_STRINGS is declared as a list-enabled STRING output, which is ComfyUI's mechanism for fanning out execution - connect it to a converted-to-socket prompt input downstream and the queue runs your whole graph once per prompt, each iteration feeding a different string in.
Inputs and outputs.
prompt_1…prompt_5- multiline STRING fields.optional_prompt_list- an optionalLISTthat gets prepended before your five fields, so you can chain lists from another source.- Outputs:
PROMPT_LIST(LIST) andPROMPT_STRINGS(list-enabled STRING).
For a beginner the practical setup is: convert a CLIP Text Encode prompt widget to an input, wire PROMPT_STRINGS into it, hit queue, and ComfyUI walks through all five prompts automatically. That's the pattern that makes "generate variations of this scene description" a one-click thing.
Installing it
It's in the Inteliweb pack:
cd ComfyUI/custom_nodes
git clone https://github.com/maoper11/comfyui_inteliweb_nodes.git
cd comfyui_inteliweb_nodes
python -m pip install -r requirements.txt
ComfyUI Manager: "ComfyUI_Inteliweb_nodes". Only psutil and nvidia-ml-py, no model downloads, restart.
Where people get confused
The most common mistake is treating PROMPT_LIST as the batch output. It isn't - it's a single LIST value, and downstream nodes that don't expect a LIST will choke on it. If you want per-prompt execution, use PROMPT_STRINGS; that's the list-enabled socket. Second, empty prompts are stripped by checking for non-whitespace text, so a field with only spaces counts as empty and gets skipped - which is convenient unless you genuinely wanted to send a blank prompt. And note the optional_prompt_list input prepends rather than replaces, so you can stack sources. It's a tiny node, but for "run these five prompts and compare" it's the least machinery I've found to do the job.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt_1 | STRING | — | |
| prompt_2 | STRING | — | |
| prompt_3 | STRING | — | |
| prompt_4 | STRING | — | |
| prompt_5 | STRING | — | |
| optional_prompt_listopt | LIST | Optional existing prompt list to prepend before the five prompt fields. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| PROMPT_LIST | LIST | The prompts packaged as one LIST value for nodes that explicitly accept a LIST. |
| PROMPT_STRINGS | STRING | The prompts exposed as a STRING sequence so downstream nodes execute once per prompt. |