🤖 Prompt Enhancer
Prompt Enhancer (WildPromptor) — rewrite prompts with an LLM
- prompt
This node takes a short, plain prompt and rewrites it into a longer, more detailed one using a language model. You type "a cat on a windowsill," it hands back something with lighting, mood, and camera language filled in. It's the pack's answer to the thing half of us already do manually - paste a rough idea into an LLM and ask it to make the prompt better - except it runs inside the graph.
WildPromptor is by 1038lab, better known for the ComfyUI-RMBG background-removal pack.
Why this exists now
LLM-assisted prompting stopped being a novelty and became standard practice. Community mentions of "prompt enhancer" went up roughly twentyfold from 2023 to 2026, and it fits the current architecture perfectly: if your model's text encoder is itself a language model reading your prompt as an instruction (Z-Image, Flux 2, Anima, ERNIE all work this way), then having an LLM write that instruction is just translating between two things that speak the same language. A node that does it on the fly is a natural fit.
How it works - and the thing to understand
Here's the part that trips people up. Look at the node's inputs and you'll notice there's no model dropdown and no API key field. That's not an oversight - the backing model and endpoint are configured in the pack's config.json (the README calls out that config.json holds the server and API data). The node itself is deliberately thin. Whatever LLM you pointed the pack at, that's what does the rewriting.
So the enhancer is only as good as what's behind it, and if it errors or returns nothing, config.json is the first place to look - not the node.
The inputs and outputs
All four inputs are required and simple:
- prompt - your input text (multiline)
- batch_size - how many enhanced variations to generate, capped at 20
- combine_output - if false you get a list of separate variations; if true they're merged into one string
- seed - for reproducible generations
The output is prompt, a STRING list, which flows into a CLIP Text Encode or into Prompt Concat if you want to wrap it.
batch_size here is genuinely useful: set it to 8 and you get eight different takes on the same idea in one queue, which is a fast way to explore phrasings.
Is it worth it?
Depends on your model. On an LLM-encoded model, a good enhancer earns its place - clean structure and concrete detail is exactly what those encoders reward. But there's a real trap: more words is not better. Past roughly 75–100 effective tokens these models start to drift, and an enhancer that pads your prompt to 400 words is actively hurting you. If the output reads like an essay, trim it. Three to five strong concepts, subject first, beats a paragraph of adjectives every time.
For old-school tag models (Illustrious, Pony), you generally want tags, not prose - so an enhancer that emits flowery sentences is working against the encoder unless it's been told to output comma-separated booru tags.
Installing it
ComfyUI Manager → search ComfyUI-WildPromptor → install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/1038lab/ComfyUI-WildPromptor
then restart. It lands under 🧪AILab/🤖AI.
Common issues
- It errors or returns nothing - the model/endpoint isn't set. Check
config.json; the node has no in-graph way to pick a model. - Output is bloated and dilutes results - that's the enhancer over-writing. Lower expectations on length, or edit the result down before generating.
- It writes sentences but my model wants tags - the backing model needs to be instructed to emit tags for SDXL-lineage checkpoints; prose is fine only for LLM-encoded models.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Input prompt to be enhanced | |
| batch_size | INT | 11–20 | Number of enhanced prompts to generate |
| combine_output | BOOLEAN | false | Combine all outputs into one string or output as separate records |
| seed | INT | 00–18446744073709550000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |