⚜️ Wildcard Processor
Turn __category__ tags into endless prompt variety
- string
If you've ever wanted a workflow that generates a genuinely different image every time you hit queue - not just a different seed, a different person - this is the node for that. Type __hairstyle__ and __weather__ into your prompt, and this node swaps each one for a random line pulled from a matching .txt file. Batch a dozen and you've batched a dozen different photos, no manual editing required.
How it works
The README is upfront that this one's a refactor: it's built on the same idea Impact Pack and Inspire Pack use for their own wildcard handling, trimmed down and with a couple of extras added. If you've used __wildcard__ syntax before through Impact Pack, this will feel immediately familiar - same double-underscore convention, same "pick a random line from a text file" mechanism. Just don't expect the two to share a wildcard library: FOCUS keeps its own dedicated focus_wildcards folder, separate from Impact Pack's, so if you want a category available to both you'll need to copy the .txt file over yourself.
It scans your prompt text for any __name__ token (no spaces inside the underscores), looks for a matching focus_wildcards/name.txt, and picks one line at random using the node's seed. Everything else in the string passes through untouched.
Inputs and outputs that matter
prompt_input- your prompt, multiline, with as many__wildcard__tokens mixed in as you want.seed- controls which line gets picked from each matching file. Same seed, same picks, every time - this is what makes it reproducible rather than pure chaos.freeze_wildcards- the toggle that makes this genuinely useful rather than just a novelty. Land on a combination you like, flip this on, and the resolved wildcards stay locked while you keep exploring variation through your sampler's noise seed instead. This pairs directly with the pack's own Global Seed Controller: freeze the wildcards, let that node's random mode keep rolling the noise seed, and you get controlled variation on a composition you've already picked instead of starting over from scratch.
Output is a single string - your prompt with every wildcard resolved, ready to feed into a CLIP Text Encode node (or into Style Injector first, if you're stacking style on top).
Installing it
Via ComfyUI Manager: search Comfyui FOCUS nodes, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/DJ-Tribefull/Comfyui_FOCUS_nodes
Restart ComfyUI. The wildcard .txt files ship inside the repo's focus_wildcards folder - nothing extra to download, but you'll almost certainly want to add your own categories over time, which is as simple as dropping a new .txt file in that folder.
Common issues & troubleshooting
A token doesn't resolve - it just shows up literally in your image. Check for a typo first: the token has to match the filename exactly, including no spaces, and filesystems are case-sensitive on Linux. __Weather__ won't match weather.txt.
Every generation looks the same. You're on a fixed seed with freeze_wildcards off but never changing the seed value. Randomize the seed, or explicitly bump it, to get new picks.
You installed Impact Pack's wildcards and expected this node to see them. It won't - separate folder, separate node. Copy the files across if you want overlap.
This is old A1111-era tooling - the __wildcard__ and {a|b|c} dynamic-prompt conventions predate most of the current LLM-encoded model ecosystem, and a lot of people who arrived after 2024 never learned the syntax. If you're used to typing plain sentences for a model like Z-Image or Anima, this node is specifically for the CLIP-based, tag-friendly side of things - SD 1.5/SDXL and its finetunes - where dropping in a random tag genuinely changes the output.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| freeze_wildcards | BOOLEAN | false | — |
| prompt_input | STRING | — | |
| seed | INT | 00–18446744073709550000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| string | STRING | — |