KoO Carousel Unlimited
Unlimited Prompts in One Text Box, Minus the Six-Slot Ceiling
- prompts
- seeds
- filenames
- indices
- active_count
- status
The Carousel Prompt Manager gives you six prompt fields. Six is fine for a character sheet and useless for anything longer, and six fixed text boxes on a canvas is a lot of screen for something you're going to paste into anyway. KoO Carousel Unlimited is the same idea with the fields replaced by one big text box and a delimiter.
You write your prompt list as a script, separate each block with a line that reads ---SCENE---, and the node splits it into lists. Same outputs, same companion Executor, no ceiling.
The delimiter, and the gotcha nobody warns you about
The parser looks for the literal string ---SCENE--- and then takes everything after each occurrence. Here's the code, and the reason your first attempt will lose a prompt:
return [block.strip() for block in text.split(SCENE_DELIMITER)[1:] if block.strip()]
[1:]. The chunk before the first delimiter is discarded. So the script has to start with the marker, not have it between scenes:
---SCENE---
photorealistic full-body frontal view of the character, neutral pose, studio grey backdrop
---SCENE---
three-quarter full-body view, same character, same lighting, slight turn to camera left
Write your first prompt above the first ---SCENE--- and it silently vanishes. The node's own status line will tell you the count, which is the fastest way to catch it: 2 scenes detected | seed mode Fixed | prefix KoO_Carousel. Zero scenes gets you an explicit 0 scenes detected | add ---SCENE--- before each scene, which is a nicer error than most list nodes manage.
The rest of the inputs
base_seed(default 0) andseed_mode-Fixed,Increment,Random Per Prompt, identical semantics to the Prompt Manager. Fixed repeats one seed across every scene; Increment gives each scenebase_seed + n; Random rolls independently per scene.filename_prefix(defaultKoO_Carousel) - sanitized and then numbered_01,_02, …
Outputs are the same six: prompts, seeds, filenames, indices as lists, plus active_count and status as single values. Feed them to KoO Carousel Executor, which re-broadcasts them so the graph runs once per scene.
Practical note that saves real time: because everything derives from one text field, this node is the right one to pair with an LLM or a prompt-writing template. Generate twenty scene descriptions as plain text, paste, queue once. The six-slot Manager is better when you're hand-tuning each prompt on the canvas and want to see them side by side; the Unlimited version is better when the prompts are data.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/kevintronchin-blip/koo-nodes-pack
Restart ComfyUI, refresh the browser. Nothing to pip install - the pack's requirements.txt is aiohttp, numpy, Pillow, torch, all of which are already in a working ComfyUI. No models, no API keys; despite the name it calls nothing external.
It's registered under KoO Tools / Prompt. The pack is at v1.0.3 from KoO.Ai; Registry and Manager availability depend on moderation approval, so if Manager search finds nothing, use the README's ZIP route - extract to ComfyUI/custom_nodes/koo-nodes-pack with __init__.py directly inside that folder.
What goes wrong
First scene is missing. See above. Start with the delimiter.
Only one image renders. Same answer as the Manager: you need the Carousel Executor between these lists and your sampler. A plain text-encode node will take one string and quietly ignore the rest.
Prompts arriving with stray whitespace or blank entries. Each block is .strip()ed and empty blocks are dropped, so blank scenes are harmless. But a block containing only a comment line you meant to skip is a real prompt as far as this node is concerned - it will render something. Keep notes outside the script.
Everything looks the same. seed_mode is Fixed. Increment is the setting you probably wanted.
One honest limitation: this node does no templating, no wildcard substitution, no variable interpolation. It splits text on a marker and hands you lists. That's the point - it's a text-to-lists node, and staying that small is why it's reliable.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| scene_script | STRING | — | |
| base_seed | INT | 00–18446744073709550000 | — |
| seed_mode | COMBO | Fixed | 3 options: Fixed, Increment, Random Per Prompt |
| filename_prefix | STRING | KoO_Carousel | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| prompts | STRING | — |
| seeds | INT | — |
| filenames | STRING | — |
| indices | INT | — |
| active_count | INT | — |
| status | STRING | — |