Nodes/LiquidGold-Wildcard/🟡 Wildcard Gold
ComfyUI Node

🟡 Wildcard Gold

Wildcard text without the Impact Pack weight — 🟡 Wildcard Gold is a tiny prompt-randomizer

By LiquidAum·Created 9 months ago·Updated 9 months ago· 0
🟡 Wildcard Gold
    • prompt
    â—„templateâ–º
    â—„max_passes3â–º
    ◄missing_policy▾►
    â—„seed0â–º

    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 from name.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. keep leaves the token text in place, empty removes it, error stops 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 at custom_wildcards/folder/name.txt. Blank lines are skipped and only .txt is read, so a stray .txt.bak file won't show up.
    • A token stays literally in the output. That's missing_policy: keep doing its job. Flip it to error once 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.

    Categorytext/Wildcard Gold

    Inputs (4)

    NameTypeDefaultDescription
    templateSTRING—
    max_passesINT31–50—
    missing_policyCOMBO3 options: keep, empty, error
    seedINT00–18446744073709550000—

    Outputs (1)

    NameTypeDescription
    promptSTRING—