ComfyUI Node

Wildcard Manager

The Santodan Wildcard Manager

By Santodan·Created about a year ago·Updated 2 months ago· 28
Wildcard Manager
    • processed_text
    • processed_string
    • all_wildcards
    wildcards_list
    input_textA {*cute|big|small} {+cat|dog} is sitting on the __object__.
    processing_mode
    seed0

    Wildcards are old-school A1111 tech that most people who landed in ComfyUI after 2024 never learned - the {blue|red|green} and __person__ syntax that turns one prompt into a randomized pool. The catch in ComfyUI is that the canonical wildcard machinery lives inside the Impact Pack, which is a lot of nodes to install just for a text trick. The Santodan Wildcard Manager gives you the same syntax as a single, standalone node with file management built in.

    The author explicitly built it to be drop-in compatible with the Impact Pack's wildcard processor, so existing wildcard files and {a|b|c} prompts carry over. It reads from your root ComfyUI/wildcards folder - both .txt (the default, extension optional in the tag) and YAML (.yaml/.yml, including nested keys like styles.yaml/lighting).

    The syntax, in one sitting

    • {blue|red|green} - pick one at random.
    • __person__ - pull a random line from person.txt in your wildcards folder.
    • {*red|blue} / __*person__ - the * prefix means "always random, seed ignored."
    • {+red|blue} / __+person__ - the + prefix steps through options in order across queue runs, so each image in a batch gets a different item in sequence.
    • {5::red|2::green|blue} - weighted: red is most likely, blue least.
    • {1-2$$ and $$cat|dog|bird} - multi-select with a custom separator (here, "and").
    • {2$$, $$3#__colors__} - a quantifier that repeats a wildcard so you can multi-pick from it.
    • Nesting works recursively, and lines starting with # are comments in both the text field and your files.

    What to actually set

    Four inputs, and only two matter most of the time:

    • input_text - your template. Comes with a demo prompt to play with.
    • seed - controls every pick except *-prefixed ones, which are deliberately unseeded.
    • processing_mode - line by line treats each non-comment line as a separate prompt (great for batch runs where you want N different prompts); entire text as one keeps paragraphs intact.
    • wildcards_list - a dropdown of your files. Selecting one inserts its tag into the text.

    Three outputs: processed_text (a list - one string per line in line-by-line mode), processed_string (everything joined into a single string, for feeding a normal CLIP text encode), and all_wildcards (every available tag, for building pickers elsewhere).

    The part that beats Impact for daily use

    The node is an output node with built-in file management, and it rescans without a restart. The author tested this in public: create a file, and the dropdown sees it immediately; edit or delete it, same run cycle. There are buttons for insert, edit/create, and delete - to make a new file, select [Create New] in the dropdown, name it, and use the editor. That alone kills the "I added a wildcard and had to restart ComfyUI" loop that plagues manual approaches.

    Gotchas

    • processed_text is a list, so if you're not doing batch work, wire processed_string into your encoder instead or you'll get a type mismatch.
    • Files live in ComfyUI/wildcards at the ComfyUI root - not custom_nodes, not models. On first launch the pack creates the folder for you.
    • The + sequential behavior is global across all WildcardManager instances in your workflow, not per node. Two managers in one graph share the step counter - which is either a feature or a footgun depending on your workflow.

    Install

    ComfyUI Manager (search "Santodan") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Santodan/santodan-custom-nodes-comfyui
    

    Restart, done. No dependencies, no models to download - pure Python plus a little frontend. If you already run Impact Pack and only care about wildcards, you don't need this. If you want the syntax without hauling in FaceDetailer and friends, this is the lighter way in.

    CategorySantodan/Wildcard

    Inputs (4)

    NameTypeDefaultDescription
    wildcards_listCOMBO1 options: [Create New]
    input_textSTRINGA {*cute|big|small} {+cat|dog} is sitting on the __object__.
    processing_modeCOMBO2 options: entire text as one, line by line
    seedINT00–18446744073709550000

    Outputs (3)

    NameTypeDescription
    processed_textSTRING
    processed_stringSTRING
    all_wildcardsSTRING