BKWILDCARDS Selector
The wildcard node that never makes you learn wildcard syntax
- prompt
If you've ever stared at a wildcard cheat sheet and thought "there has to be an easier way," this is the node that proves you right. BKWILDCARDS Selector doesn't ask you to type __wildcard__ tokens or learn {a|b|c} syntax. It ships roughly 4,800 hand-written entries across 50 categories and seven themes, and turns them into scoped dropdowns. Pick a theme, choose your categories, wire one output into your prompt, and generate.
The catch up front: this node only produces text. It draws one line from each enabled category and joins them into one prompt string, out of a single output called prompt (type STRING). Wire that into your positive prompt block - a CLIPTextEncode node's text input, or a string node like StringFunction that's already feeding your prompt. The node nags you if you forget: it turns red - NOT ready, please wire the node to your prompt block. - and green (ready - press Run) once connected.
How it actually works
Under the hood it's refreshingly honest. Each category is a text file with named sections; the dropdown choices map to those sections. On Run, the node draws one entry from each enabled category and joins them with a separator. The seed drives everything: each category gets its own RNG seeded from your seed plus a stable checksum offset, so the same seed always reproduces the same prompt across sessions and processes. That determinism is also why the on-node preview never lies: preview and generation call the same resolution function, so what you see at queue time is byte-identical to what the image is made from.
Scoping is enforced in Python, not the browser. Select _ghost.runner and only that theme's categories can contribute, no matter what the widgets say. The bundled JS extension just hides off-theme dropdowns; if it fails to load, the node still behaves correctly, it just shows everything.
The inputs that matter
There are a lot of widgets, but you actually set a handful. Theme is the seven bundled releases (_ghost.runner, Whimsical Woods, Autumnal Oxidation, Cassette Futurism, All the Dresses, Nettie Necket, plus an adult lingerie pack); only the selected theme's categories contribute. Gender is - off -, - random - (rolls per seed), Female, Male, or Fluid (both sets of physical options, an androgynous subject). Then the category dropdowns, most reading - off -, - random -, or a named section - off contributes nothing, random draws from the whole file. Small categories like face, nose, lips, and spell casting are simple on/off toggles. Under Settings you get seed (set its control to randomize for a fresh combo per queue), separator (default , ), label_output, and mayhem. label_output on gives you structured lines like gender: a woman, / hair: ... / scene/background: ...; plain gives one comma-joined string. mayhem is one-click chaos - it ignores every selection and composes a fully random cross-theme image. Fun, but it includes the adult pack, mind that when demoing.
A couple of smart touches: a Bald hair pick suppresses hair color and style, and the Cybernetics Color choice is folded into the augment's finish word rather than emitting separately. The resolved text is also embedded into generated PNGs via the workflow metadata, so dragging a finished image back into ComfyUI restores the exact prompt that made it.
Install
Via ComfyUI Manager (search BKWILDCARDS) or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/bkidderz/BKWILDCARDS.git
Then restart ComfyUI. There are no dependencies - Python standard library only, no model files to download. The node title shows the build number (e.g. BKWILDCARDS Selector 0.9.10) so you can confirm an update took.
Common issues
- Output box frozen but new
[BKWILDCARDS] node …lines appear in the server log each run - the backend is fine and the frontend script is stale; restart ComfyUI or hard-refresh the browser. - Toggles for other themes are visible - the JS extension failed to load. It fails open; behavior is still correct because theme gating lives in Python.
- Dropped in your own wildcard file and it doesn't appear - the category scan is cached at import. Restart, or use Refresh Node Definitions.
- Prompt text not in your saved PNGs - the embed rides ComfyUI's metadata path, so anything that strips PNG text chunks (re-encodes, screenshots, most hosts) loses it. Same fight every ComfyUI workflow has, not a BKWILDCARDS bug.
License note, since it matters if you redistribute: the software is MIT, but the wildcard content is CC BY-SA 4.0 - share-alike applies to the library, not the images you generate. Those are yours.
Inputs (68)
| Name | Type | Default | Description |
|---|---|---|---|
| theme | COMBO | _ghost.runner | Only this theme's categories contribute. Others are ignored. |
| common_art_style | COMBO | — off — | always on — Art Style. Pick a section, or random to draw from all 11 entries. |
| gender | COMBO | Female | The subject's gender, injected into the prompt (a feminine adult / a masculine adult). — off —: no gender word and no gendered categories. — random —: roll a gender per seed. Fluid: both genders' physical options available and mixable (an androgynous adult subject). |
| common_ancestry | COMBO | — off — | always on — Ancestry. Pick a section, or random to draw from all 44 entries. |
| common_metatype | COMBO | — off — | always on — Metatype / Species. Pick a section, or random to draw from all 40 entries. |
| body_sliders | COMBO | — off — | Experimental. on: the five sliders below are synthesized into one build phrase (register follows Gender) and the Build preset is ignored. — random —: the five values are rolled from the seed each run and shown on the sliders. preset: the Build preset dropdown speaks and the sliders snap to its section as a starting point. — off —: sliders hidden and inert. Gender — off — silences the lane. Mayhem ignores it. |
| female_build | COMBO | — off — | Female / always on — Feminine Build. Pick a section, or random to draw from all 61 entries. |
| male_build | COMBO | — off — | Male / always on — Masculine Build. Pick a section, or random to draw from all 43 entries. |
| body_mass | INT | 50–10 | — |
| body_bust | INT | 50–10 | — |
| body_waist | INT | 50–10 | — |
| body_hips | INT | 50–10 | — |
| body_tone | INT | 50–10 | — |
| skin_tone | COMBO | — off — | Experimental. Coloration rolled from a palette that fits the current Metatype (human tones for people, reds/violets for tieflings, matte/chrome for androids, fur for beast-forms, …). — off —: none. — random —: roll within the metatype's group. A family name: roll within it. Set Metatype for a fitting roll; with none it defaults to human tones. |
| eyes_eye | COMBO | — off — | always on — Eyes. Pick a section, or random to draw from all 29 entries. |
| female_face | BOOLEAN | false | Female / always on — Feminine Face (26 entries) |
| male_face | BOOLEAN | false | Male / always on — Masculine Face (26 entries) |
| female_nose | BOOLEAN | false | Female / always on — Feminine Nose (9 entries) |
| male_nose | BOOLEAN | false | Male / always on — Masculine Nose (10 entries) |
| female_lips | BOOLEAN | false | Female / always on — Feminine Lips (11 entries) |
| male_lips | BOOLEAN | false | Male / always on — Masculine Lips (10 entries) |
| common_cybernetics | COMBO | — off — | always on — Cybernetics. Pick a section, or random to draw from all 17 entries. |
| common_cyber_color | COMBO | — off — | always on — Cybernetics Color. Pick a section, or random to draw from all 14 entries. |
| hair_type | COMBO | — off — | always on — Hair Type. Pick a section, or random to draw from all 24 entries. |
| hair_style | COMBO | — off — | always on — Hair Style. Pick a section, or random to draw from all 53 entries. |
| hair_color | COMBO | — off — | always on — Hair Color. Pick a section, or random to draw from all 49 entries. |
| cyberpunk_tattoo | COMBO | — off — | _ghost.runner — Tattoos. Pick a section, or random to draw from all 75 entries. |
| cyberpunk_outfit | COMBO | — off — | _ghost.runner — Outfits. Pick a section, or random to draw from all 270 entries. |
| cyberpunk_bodysuit | COMBO | — off — | _ghost.runner — Compression / Zentai Suits. Pick a section, or random to draw from all 144 entries. |
| cyberpunk_weapon | COMBO | — off — | _ghost.runner — Weapons / Carry. Pick a section, or random to draw from all 28 entries. |
| cyberpunk_accent_palette | COMBO | — off — | _ghost.runner — Accent Palette. Pick a section, or random to draw from all 28 entries. |
| cyberpunk_environment | COMBO | — off — | _ghost.runner — Environments. Pick a section, or random to draw from all 360 entries. |
| cyberpunk_pose | COMBO | — off — | _ghost.runner — Poses. Pick a section, or random to draw from all 29 entries. |
| dresses_dress | BOOLEAN | false | All the Dresses — Gowns & Dresses (530 entries) |
| dresses_eastern | COMBO | — off — | All the Dresses — Eastern Attire. Pick a section, or random to draw from all 530 entries. |
| dresses_accent_palette | COMBO | — off — | All the Dresses — Accent Palette. Pick a section, or random to draw from all 24 entries. |
| dresses_environment | COMBO | — off — | All the Dresses — Environments. Pick a section, or random to draw from all 13 entries. |
| dresses_pose | COMBO | — off — | All the Dresses — Poses. Pick a section, or random to draw from all 24 entries. |
| autumnal_oxidation_outfit | COMBO | — off — | Autumnal Oxidation — Outfits. Pick a section, or random to draw from all 337 entries. |
| autumnal_oxidation_accent_palette | COMBO | — off — | Autumnal Oxidation — Accent Palette. Pick a section, or random to draw from all 23 entries. |
| autumnal_oxidation_environment | COMBO | — off — | Autumnal Oxidation — Environments. Pick a section, or random to draw from all 13 entries. |
| autumnal_oxidation_pose | COMBO | — off — | Autumnal Oxidation — Poses. Pick a section, or random to draw from all 23 entries. |
| cassette_futurism_outfit | COMBO | — off — | Cassette Futurism — Outfits. Pick a section, or random to draw from all 139 entries. |
| cassette_futurism_accent_palette | COMBO | — off — | Cassette Futurism — Accent Palette. Pick a section, or random to draw from all 23 entries. |
| cassette_futurism_environment | COMBO | — off — | Cassette Futurism — Environments. Pick a section, or random to draw from all 24 entries. |
| cassette_futurism_pose | COMBO | — off — | Cassette Futurism — Poses. Pick a section, or random to draw from all 24 entries. |
| lingerie_set | COMBO | — off — | COZY SEXY LACY RACY Sleepwear — Lingerie Sets. Pick a section, or random to draw from all 530 entries. |
| halloween_outfit | COMBO | — off — | Haunted Hallows — Costumes. Pick a section, or random to draw from all 245 entries. |
| halloween_environment | COMBO | — off — | Haunted Hallows — Environments. Pick a section, or random to draw from all 26 entries. |
| halloween_pose | COMBO | — off — | Haunted Hallows — Poses. Pick a section, or random to draw from all 30 entries. |
| steampunk_outfit | COMBO | — off — | Nettie Necket — Outfits. Pick a section, or random to draw from all 235 entries. |
| steampunk_environment | COMBO | — off — | Nettie Necket — Environments. Pick a section, or random to draw from all 41 entries. |
| steampunk_pose | COMBO | — off — | Nettie Necket — Poses. Pick a section, or random to draw from all 30 entries. |
| fantasy_tattoo | COMBO | — off — | Whimsical Woods — Tattoos. Pick a section, or random to draw from all 75 entries. |
| fantasy_outfit | COMBO | — off — | Whimsical Woods — Outfits. Pick a section, or random to draw from all 360 entries. |
| fantasy_weapon | COMBO | — off — | Whimsical Woods — Weapons / Carry. Pick a section, or random to draw from all 30 entries. |
| fantasy_accent_palette | COMBO | — off — | Whimsical Woods — Accent Palette. Pick a section, or random to draw from all 31 entries. |
| fantasy_environment | COMBO | — off — | Whimsical Woods — Environments. Pick a section, or random to draw from all 360 entries. |
| fantasy_pose | COMBO | — off — | Whimsical Woods — Poses. Pick a section, or random to draw from all 28 entries. |
| fantasy_spell_casting | BOOLEAN | false | Whimsical Woods — Spell Casting (15 entries) |
| fantasy_spell_effects | COMBO | — off — | Whimsical Woods — Spell Effects. Pick a section, or random to draw from all 20 entries. |
| shots_angle | COMBO | — off — | always on — Shot Angle. Pick a section, or random to draw from all 17 entries. |
| shots_framing | COMBO | — off — | always on — Shot Framing. Pick a section, or random to draw from all 33 entries. |
| separator | STRING | , | Placed between the selections from each enabled category. |
| seed | INT | 00–18446744073709550000 | Drives which line is drawn from each enabled category. |
| label_output | BOOLEAN | true | Labeled: tag each selection (build:, hair:, scene/background:, …) so the renderer reads structured attributes. Plain: one comma-joined string. |
| mayhem | BOOLEAN | false | One-click chaos: ignore every selection and the theme/gender, and build a fully random CROSS-THEME image seeded by seed. Queue again (advance the seed) for a new one. Includes all themes and adult content. |
| resolved | STRING | The prompt this node produced. Filled in automatically; edits are ignored. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |