Multiline Text Input
Wildcard variant syntax in a plain text box
- text
Looks like any other text box on the surface. Type a prompt, wire the output to a CLIPTextEncode, done. The difference shows up the moment you write {red hair|blonde hair|black hair} in that box - this node will pick one of the three every time it runs, instead of passing the literal curly braces through as text. It's a multiline field with the dynamicprompts library (the same open-source engine A1111's old Dynamic Prompts extension was built on) wired directly into it.
Why you'd reach for it
{a|b|c} variant syntax and __wildcard__ file lookups are old A1111 conventions that never really went away - Impact Pack, for one, ships the same syntax and a lot of workflows quietly depend on it without crediting where it came from. If you're already running the Animagine Prompt pack for its tag toggles, this node gets you the same kind of variety-per-run without installing anything extra: write {standing|sitting|walking} inside your base prompt and batch a few generations, and each one lands on a different pick. It's the cheapest way to build a little variation into a prompt without hand-editing it between every queue.
How it works
Point the node's text through dynamicprompts, and it scans for {option1|option2|option3} blocks, resolving each to one option per run. Per the pack's own description it also understands wildcard-style tokens the same library uses for pulling from external files, on top of the inline bracket syntax. If you've used Automatic1111's Dynamic Prompts extension before, the syntax will feel immediately familiar - same underlying library, different host.
Inputs and outputs
Three fields:
text- your prompt, with or without{a|b|c}blocks. Plain text passes through unchanged.use_dynamic_prompts(on by default) - the processing switch. Flip it off and the node becomes a pure pass-through, useful if you want to type literal curly braces without them being interpreted, or you're debugging and want to isolate whether a weird result is coming from the variant resolution or somewhere else downstream.seed- per the node's own tooltip, the seed for dynamic-prompts generation,-1for random.
One output, text - a resolved string, ready to wire into a CLIPTextEncode, or straight into Animagine Prompt's positive_prompt/negative_prompt if you want your base scene to have built-in variety before the tag toggles get appended on top.
Installing it
ComfyUI Manager: search ComfyUI-Animagine-Prompt - this node comes bundled with it, there's no separate pack for just this one node. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/gmorks/ComfyUI-Animagine-Prompt
then restart. Worth flagging: the README's install steps are literally "clone, restart" - it doesn't call out a pip install anywhere, even though this node depends on the dynamicprompts package under the hood. If you installed by hand and get an import error for dynamicprompts on startup, that's why - install it yourself (pip install dynamicprompts, or check the pack folder for a requirements.txt). ComfyUI Manager installs pack dependencies automatically, so this mostly bites people who cloned manually.
Where people get burned
The number one gotcha isn't specific to this node, it's a general ComfyUI habit: if your variant pick isn't changing between runs, it's almost always the seed sitting on a fixed value. Right-click the seed widget and set "control after generate" to randomize (or increment) - leave it fixed and ComfyUI will happily reuse the same resolved output run after run, since nothing about the node's inputs actually changed from its point of view. Second: if brackets in your text aren't resolving at all, check use_dynamic_prompts is actually on before assuming something's broken - with it off, this is by design a plain pass-through node, not a bug.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| use_dynamic_prompts | BOOLEAN | true | — |
| seed | INT | -1-1–4294967295 | Seed for dynamic prompts generation (-1 for random) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |