🟡 Wildcard Gold
Wildcard text without the Impact Pack weight — 🟡 Wildcard Gold is a tiny prompt-randomizer
- prompt
Wildcards are the oldest trick in the prompt-variety playbook: instead of writing fifty prompts by hand, you write one template with <thing> tokens in it, and a node fills the gaps from a text file each run. The name is a lie, by the way - 🟡 Wildcard Gold doesn't call any API, needs no key, and won't touch your wallet. It's just a text node from a one-node pack called LiquidGold-Wildcard, and it does one thing: <name> expansion with recursion, variable binding, and deterministic seeding, out of the box.
Why would you reach for it over the famous option? The wildcard everyone actually knows in ComfyUI ships inside Impact Pack, where __wildcard__ and {a|b|c} syntax quietly powers a huge share of workflows. Impact Pack is infrastructure you probably already have. But it's a big install, and if you just want to batch-randomize prompts - same character across different outfits, lighting and settings, or a pile of random prompts for dataset work - this node is the featherweight alternative. One file, no dependencies, no model downloads, no GPU involved. It's a niche/new node (basically zero search footprint as of this writing), so treat it as the tool for the job rather than the ecosystem default.
How it works
Drop a people.txt in ComfyUI/custom_wildcards/ with one option per line, and <people> becomes a random line. The loader finds every custom_wildcards folder - the top-level one plus any custom_nodes/**/custom_wildcards dirs, discovered recursively - and indexes all .txt files. Token keys are case-insensitive, and duplicate basenames across folders get merged, so <person> works even if person.txt lives in a subfolder.
The syntax is A1111-style, which is old but never died:
<name>→ random line fromname.txt<folder/name>→ from a nested file<a|b|c>→ pick one of several files that exist<token:1>→ bind the pick so every matching<token:1>in the template uses the same choice (that's how you keep "the same corgi holds the treat" consistent in one run)
Lines themselves get expanded too, so wildcards can reference other wildcards, up to max_passes of recursion. There's a guard against infinite loops if a file references itself.
The inputs that matter
Only four, and you'll mostly touch two of them:
template(multiline STRING) - your prompt with<tokens>in it.seed(INT) - fixed seed means the same picks every run; change it to reshuffle. This is your deterministic-batch friend.max_passes(INT, default 3) - how deep nested expansion goes. Only bump it if your wildcard files chain several levels.missing_policy(keep/empty/error) - what happens when a token has no matching file.keepleaves the token text in place,emptyremoves it,errorstops the node and tells you which wildcard is missing.
Output is a single prompt (STRING). Wire it straight into a CLIP Text Encode (Prompt) or any text input - it doesn't care what the model is, because it only ever deals in text. You can even stack it with a LoRA-syntax line in the template; the node deliberately leaves <lora:...> tokens untouched.
Installing
ComfyUI Manager, search LiquidGold-Wildcard, install, restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/LiquidAum/LiquidGold-Wildcard
Then restart ComfyUI. That's genuinely it - the shipped code imports only the Python standard library, so there's no pip step, no model file to fetch, no CUDA requirement. Your wildcard files live in custom_wildcards/, not next to the node.
Common issues & troubleshooting
- Nothing expands. Check the token key against the filename. Keys are lowercased and matched by basename and full relative path -
<folder/name>needs the file atcustom_wildcards/folder/name.txt. Blank lines are skipped and only.txtis read, so a stray.txt.bakfile won't show up. - A token stays literally in the output. That's
missing_policy: keepdoing its job. Flip it toerroronce while debugging and it'll name the missing file. - The same wildcard picks different things mid-prompt. Use the numeric binding (
<color:1>) so matching tokens share one pick. - Edited a wildcard file and it didn't update? It should - the loader caches a hash of paths, mtimes and sizes and refreshes on change, so no restart needed. If it looks stale, save the file again (some editors write in-place without touching mtime).
For a node this small, the only real trap is expecting Impact Pack's {a|b|c} syntax to work. It won't - this is the angle-bracket dialect. Pick one and be consistent.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| template | STRING | — | |
| max_passes | INT | 31–50 | — |
| missing_policy | COMBO | 3 options: keep, empty, error | |
| seed | INT | 00–18446744073709550000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |