RedNode Wildcards
RedNode Wildcards just writes a plain .txt — which is why it's useful
Nobody's problem with wildcards was ever the syntax. It's that your wildcard library lives in a folder outside ComfyUI, so every small edit becomes alt-tab, find the folder, remember what you called the file, save it, hope the node re-reads it. This node deletes that trip. It renders nothing, it has no outputs, and it never touches your prompt - all it does is write one .txt in the right place.
What a wildcard actually is
A .txt with one value per line, sitting in a folder the wildcard engines search. That's the whole format, and it's why this node is worth having: the pack's own prompt boxes (Prompt Box, Prompt Frame) resolve wildcards, but so does every other wildcard node you have installed - Impact Pack's dynamic-prompt machinery most notably, which is where a large share of the ecosystem quietly inherits __wildcard__ support from. Write the file once and every one of them reads it. No export step, no import step, no per-node copy of your lists.
Worth separating the two layers, because the file is portable and the engine is not. Plain __name__ and {a|b} are the lingua franca every wildcard node understands. Globbing across names and deep nesting are this pack's own extensions, so don't count on another node's reader handling those.
RedNode's engine reads ComfyUI/wildcards and every custom_nodes/*/wildcards folder, matching names case-insensitively with the extension dropped. So __hair__, __Hair__ and a file called hair.txt are the same thing, and blonde/roots means a file at blonde/roots.txt.
The two fields that matter
wildcard is the name only, no underscores - letters, digits, _, -, and / to put it in a folder. It gets referenced as __name__ in any prompt box. Two gotchas baked in on purpose: a space or a dot is rejected outright, and a leading slash is refused rather than trimmed, because trimming /etc/passwd into a subfolder is the kind of quiet "help" you don't want from something that turns a widget into a file path.
values is one value per line. Lines can themselves contain more __wildcards__ or {a|b} choices, and a line starting with # is a note that never gets drawn - which is how you keep a comment block at the top of a long list without it leaking into your prompts.
Those are the only two inputs. There are no outputs to wire, because there's nothing to wire: the node's job is finished the moment you press Save. The panel adds a Load saved dropdown that pulls an existing file's lines in for editing, a Save / Update button, a Delete button, and a live readout that tells you how many values the name currently holds. That readout is more useful than it sounds: if it says installed elsewhere: read only, you're looking at a wildcard some other pack shipped, and Delete won't touch it.
Install
Whole-pack install, same as everything else in RedNode Studio:
cd ComfyUI/custom_nodes
git clone https://github.com/RedNodeAI/ComfyUI-RedNodeStudio.git
Or search RedNode Studio in ComfyUI Manager. Restart ComfyUI. No pip dependencies, nothing to download - you don't need the template or any model to use this node. It registers under RedNode/Prompt.
Where people get burned
The name is shared, not owned. If two installed files share a name, their lines are pooled into one list. Your carefully curated hair.txt plus another pack's hair.txt equals a bigger, weirder hair.txt. Check the readout before you assume the numbers.
Editing the file in a text editor won't show up. The engine caches file contents, and only the node's own Save clears that cache. Hand-edit a wildcard while ComfyUI is running and the next queue can still roll the old lines - genuinely confusing the first time. Save through the node instead, or restart.
Weights are ignored. A1111 muscle memory reaches for 5::blonde, and the engine accepts it without complaining and then treats every option as equally likely. Harmonic weighting doesn't exist here.
A typo stays visible. An unknown __haor__ is left in the text exactly as written rather than silently resolving to nothing. That's the right call - you see the mistake in the render - but it does mean the typo costs you a queue if you don't eyeball the prompt.
One thing worth knowing since it decides how much you use this: wildcards resolve against the run's seed. Fix the seed and you get the same choice back, which is the difference between a reproducible reference set and a slot machine.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| wildcard | STRING | name only, no underscores (letters, digits, _ or -, and / for a folder). Referenced as __name__ in any prompt box. | |
| values | STRING | one value per line. A line may itself contain __wildcards__ or {a|b} choices. Lines starting with # are notes and are never drawn. |
Outputs (0)
No outputs