Wildcard Processor List
Turn a stack of prompts into a batch, not a copy-paste session
- string
- list
What this node is for
You've got ten prompts you want to run. The boring way is paste, queue, paste, queue. The smarter way is to write them all in one multiline box and let ComfyUI treat them as a list - one line, one shot.
That's what Wildcard Processor List [Eclipse] does. It's a wildcard expander, same as its sibling Wildcard Processor, but built for the batch case: feed it several newline-separated prompts, it expands the __wildcards__ and {a|b|c} choices across all of them using one seed, and hands back both the intact text and a proper ComfyUI list you can wire into a text encoder to fire off a whole grid at once.
Why care? Because combinatorial prompting is the cheapest variation machine in this ecosystem. The {brown|blonde|black} bracket trick is old A1111 syntax most people who arrived after 2024 never learned.
How it works
Under the hood it's the Eclipse wildcard engine (core/wildcard_engine.py), the same one the single-prompt Wildcard Processor uses: inline choices {red|green|blue}, file references __colors__, weighted picks {3.0::portrait|1.0::illustration}, quantities like {2$$red|green|blue}, and nested expansion with a depth limit so a cyclic wildcard can't spin forever.
The difference here is deliberate and it's the whole point: the entire source is processed as one batch, in source order, driven by a single seed. A fixed seed gives you one continuous, reproducible sequence of choices across every line - not a fresh roll per line. Change the seed and the whole set reshuffles.
It also doesn't tidy up after itself. string keeps your blank lines, indentation, trailing spaces, and CRLF/LF endings exactly as written. list splits on lines and drops whitespace-only ones, but leaves the spacing on the lines it keeps alone.
Inputs and outputs that matter
Three things you'll actually touch:
- wildcard_text - the multiline source. One prompt or many, newline-separated. Right-click the node to toggle Wrap long lines if you're pasting something long.
- seed - a socketless field that drives the entire batch.
0or above is a fixed, reproducible seed;-1randomizes each queue,-2increments from the last resolved seed,-3decrements. There are also Randomize Each Time, New Fixed Random, and Use Last Queued Seed buttons next to it. - substitutions (optional) - quoted assignments you reference as
{{S1}}, so you can swap reusable text blocks in and out of a template without rewriting it:S1:"a female character", S2:"wearing blue jeans". Keys are case-sensitive, the last duplicate wins, and it's single-pass.
Two fields you'll mostly ignore: wildcards is a picker combo that inserts a discovered __name__ token at your last cursor position and resets itself - a helper, not a value you set. seed_input is an external seed socket; connect a Seed node and it overrides the local seed at queue time.
Outputs are string (layout-preserved text - feed it to a save node or a downstream filter) and list (one non-empty line per item). The list is the batch trigger: each line becomes its own conditioning, one image per prompt.
Install
Easiest route is ComfyUI Manager - search ComfyUI_Eclipse and install, then restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
Then, if you hit a missing-module error on startup, install the declared deps into the same Python that runs ComfyUI:
pip install -r ComfyUI_Eclipse/requirements.txt
# ComfyUI portable on Windows:
python_embeded\python.exe -m pip install -r custom_nodes/ComfyUI_Eclipse/requirements.txt
That requirements file is heavier than you'd expect for a "text utility" pack - torch, torchvision, numpy, Pillow, opencv-python, pilgram, safetensors, PyYAML, aiohttp. The base ComfyUI install already has most of them; you're realistically only missing pilgram, PyYAML, or aiohttp. Don't let the torch line scare you into a reinstall.
On startup Eclipse symlinks models/wildcards/smart_prompt to its own prompts/ folder, so the pack's bundled files show up in the wildcard library without duplication.
Gotchas
Wildcard files live in ComfyUI/models/wildcards/ (subfolders become slash keys like __people/hair-color__). If you add or edit files there, reload the page - the server caches the library on startup, and an unexpanded __name__ in your output almost always means the file isn't where the picker is looking.
A connected seed_input hides the local seed controls. If your seed buttons vanished, that's why. The override resolves at queue time, not live - queue the workflow to see the result.
Results changing between runs isn't a bug if the seed is -1, -2, or -3. Those are meant to move. Pin a concrete seed for reproducibility.
Substitutions silently tolerate typos. A malformed assignment is ignored with a short warning, and a missing {{KEY}} is left as literal text - nothing errors out. If it didn't take, check your quoting.
Finally, a heads-up that bites people returning from the old days: this pack used to be RvTools/RvTools_v2, and version 4.0.0 deleted every legacy node, so workflows built on those old installs fail to load. The README ships a Workflow Migration Tool (plus tools/migrate_workflow.py) to auto-upgrade them with backups - run that before you conclude the pack is broken.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| wildcard_text | STRING | Try using __wildcard__ or {option1|option2} | One or more prompts. Newlines and spacing are preserved. |
| wildcards | COMBO | Select a Wildcard | 1 options: Select a Wildcard |
| seed | INT | 0-3–18446744073709550000 | Seed for the complete wildcard batch. Special values: -1=randomize, -2=increment, -3=decrement. |
| substitutionsopt | STRING | Optional quoted assignments, for example: S1:"a female character", S2:"wearing blue jeans, a white shirt" Use {{S1}} and {{S2}} in wildcard_text. | |
| seed_inputopt | INT | Optional external seed. Overrides the local seed at queue time. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| string | STRING | — |
| list | STRING | — |