ACB PPP Wildcard Concat
Pick wildcards from dropdowns and chain them into a prompt
- prompt
Most wildcard users type __hair__ into a text box and hope. ACB PPP Wildcard Concat is the GUI way: ten dropdowns, each listing your actual wildcards by name, and it builds the __name__ references for you, joined by a separator you choose. The output is a plain string you feed into ACB Prompt Post Processor (or any text input), and the main node does the actual rolling later. If you want a fast way to assemble a prompt from your wildcard library without typing double-underscores from memory, this is it.
How it works
The node reads your wildcard folders at load time and populates each dropdown - wildcard_1 through wildcard_10. Select one per slot, and the node emits their references concatenated:
__subject__, __clothing__, __setting__
A few details make it more than a fancy combobox:
- filter - a prefix that filters which wildcards appear in the dropdowns (default
build, so it only shows names starting with "build" until you change it). Editing this refreshes the lists - the whole point is to keep a big library navigable. Set it to empty to see everything. - separator - glue between references, default
", ". - previous_prompt - an optional string that gets prepended. It exists so you can chain two Concat nodes together (first node's
prompt→ second node'sprevious_prompt) and exceed the ten-slot limit, or bolt on a fixed prefix. - prompt (output) - the concatenated
__wildcard__text.
Because it emits unresolved __name__ references, the actual choice happens downstream - in combinatorial or multiple mode on the main node, each selected wildcard rolls per generation, which makes this node pair well with batch variation.
The folder gotcha
There's one thing the dropdowns depend on that isn't on this node: your wildcard folders. The node reads whatever wildcard paths the pack has configured, and unlike the ACB PPP Wildcard Options node it has no folders input of its own. So to point it at your library, add an entry to your extra_model_paths.yaml:
ppp_wildcards:
wildcards: /absolute/path/to/your/wildcards
(Under ComfyUI's root, extra_model_paths.yaml is the standard file for custom model/library paths.) No path configured, empty dropdowns - that's the single most common "why is this blank" report.
Install
Same pack as the rest. ComfyUI Manager → search "Prompt PostProcessor", or:
cd ComfyUI/custom_nodes
git clone https://github.com/acorderob/sd-webui-prompt-postprocessor
Restart ComfyUI. Requirements are lark, numpy, ruamel.yaml, pydantic; no model downloads. It also registers a small web route (/acb_ppp/wildcards) to refresh the dropdown lists as you change the filter.
Common issues
Beyond the folder issue: dropdowns go stale if you add wildcard files while ComfyUI is running - re-select a slot or reload the workflow to force a refresh. And remember the filter default. People change the separator to " " and then wonder why their tag-style prompt lost its commas; the separator lands literally between the __ references, so it becomes part of the prompt text. If your wildcards are inside { } choices or nested constructs, the main node's grammar handles those fine - this node only handles the top-level assembly. Keep the main node in the graph; without it, __name__ text just sits there unrolled.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| filter | STRING | build | Filter wildcards by prefix (changing this refreshes the dropdowns) |
| separator | STRING | , | Separator used to concatenate the selected wildcard references |
| wildcard_1 | COMBO | Wildcard 1 | |
| wildcard_2 | COMBO | Wildcard 2 | |
| wildcard_3 | COMBO | Wildcard 3 | |
| wildcard_4 | COMBO | Wildcard 4 | |
| wildcard_5 | COMBO | Wildcard 5 | |
| wildcard_6 | COMBO | Wildcard 6 | |
| wildcard_7 | COMBO | Wildcard 7 | |
| wildcard_8 | COMBO | Wildcard 8 | |
| wildcard_9 | COMBO | Wildcard 9 | |
| wildcard_10 | COMBO | Wildcard 10 | |
| previous_promptopt | STRING | Connect to the prompt output of another Wildcard Concat node to chain more than 10 wildcards |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |