Ultra Tools Prompt Styler
Ultra Tools Prompt Styler
- positive_prompt
- negative_prompt
The difference from a prompt builder
Ultra Tools Prompt Composer writes a prompt for you. This one takes the prompt you already wrote - or the one coming out of some other generator - and adds mood, style, framing and lens on top, in the syntax your model actually parses.
That's a much smaller job, and for most people it's the more useful one. You've got a prompt. It works. You want to see it as a rainy neon night, then as a gothic candlelit interior, without your subject description mutating every time. A styler keeps the thing you wrote intact and appends a look.
It also fixes the class of problem that annoys tag-model users specifically: Pony's rating tags and Illustrious's source tags fighting each other inside one string.
What it does to your text
Menus. The same vocabulary family as the Composer: nine model profiles (Z-Image, Qwen, Flux, Anima, SDXL, ILXL/Illustrious, Pony, SD 1.5, and a Universal Natural Language catch-all), 26 moods including three randomisers, 35 style DNAs with Auto by Mood, 16 framings, 18 lens presets, style_strength and style_conflict_cleanup.
Then the merge logic, which is the interesting engineering:
- Weights and brackets survive.
(watercolor wash:1.3)and nested parentheses are preserved through the merge, and malformed brackets or stray commas get cleaned rather than passed through. Worth knowing the caveat from the KB: on LLM-encoded models (Z-Image, Krea, Qwen, Anima) attention weights are discarded by the encoder anyway, so "preserved" means "not mangled," not "will take effect." - Painterly styles don't get photographic garnish. Ask for watercolour or ink wash and the node suppresses the camera/lens/DSLR vocabulary it would otherwise add - the single most common reason a style request silently fails.
- Rating and source tags get reconciled. For Pony, Illustrious and Anima profiles, contradictory tags (
rating_safenext torating_explicit) are resolved instead of both being emitted. - Negatives merge without duplication. Your external negative and the model's default negative are combined, deduped - and if your prompt mentions a lamp, candle or neon sign, the node avoids injecting a negative that would delete that light source.
Inputs and outputs
Required widgets: model_profile, mood_family, style_dna, style_strength, style_conflict_cleanup, scene_framing, lens_preset, adult_tone, adult_wardrobe, external_prompt_mode, seed, and custom_text.
external_prompt_mode is the one to set deliberately: Prepend style before external prompt (default), Append style after external prompt (the better choice for the newer instruction-following models, where the subject should lead), or Output style only if you want just the style fragment to mix into your own builder.
Optional inputs are external_positive_in and external_negative_in, both STRING. Wire your Textbox, your other prompt node, or a Composer output into the first one. Outputs are positive_prompt and negative_prompt.
The adult sets exist in both nodes and are off by default; leave adult_tone on default.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Yamoon-jjang/comfyui-Ultra-Tools
Manager → Ultra Tools, restart, Ctrl+F5. No pip dependencies: this is a string engine with locale files, nothing more. If you had the old standalone comfyui-Ultra-* packs, remove them - duplicate node class names across an old and new copy is the number one install problem with this pack.
Troubleshooting
The style isn't landing at all on Anima. The author's own manual says to try this order: turn off quality, speed and style LoRAs first. A style LoRA fixes the look far more strongly than any prompt text can push against it, and you'll spend an hour editing menus to fight a 0.8-weight LoRA.
The output got longer and vaguer. That's style_strength: strong plus a natural-language profile. Drop to balanced, and put your own text in custom_text so the subject stays sharp.
You pasted a weighted Pony prompt and it changed character. Set external_prompt_mode to append rather than prepend. Leading style text on a tag model reorders everything before the tags it was trained on.
One structural note, since it's invisible from the node: the Composer offers a Krea2 Natural profile and this one offers Universal Natural Language instead. If you're on Krea 2 and the result feels slightly off, that's the profile to try, and it's the honest limitation of a pack that hardcodes upstream assumptions.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model_profile | COMBO | Z-Image Natural | 9 options: Z-Image Natural, Qwen Natural, Flux Natural, Anima Mixed, SDXL Tag, ILXL / Illustrious Tag, +3 |
| mood_family | COMBO | Default / None | 26 options: Default / None, 🎲 Random All, 🎲 Random Transformative Style, 🎲 Random Traditional Media Style, Erotic / Sensual, Lyrical / Poetic, +20 |
| style_dna | COMBO | Auto by Mood | 35 options: Auto by Mood, Neutral / Minimal Carryover, Neon Melancholy / Rain Glass, Classical Studio Glamour, Baroque Operatic Atmosphere, Noir Chiaroscuro, +29 |
| style_strength | COMBO | strong | 3 options: subtle, balanced, strong |
| style_conflict_cleanup | COMBO | off | 3 options: off, soft, strong |
| scene_framing | COMBO | auto | 16 options: auto, headshot (face-focused), close-up, upper body, waist-up, three-quarter body, +10 |
| lens_preset | COMBO | auto | 18 options: auto, 18mm ultra-wide dramatic, 24mm wide cinematic, 28mm documentary wide, 35mm environmental, 40mm cinematic natural, +12 |
| adult_tone | COMBO | default | 8 options: default, safe, suggestive, sensual, bold sensual, nsfw, +2 |
| adult_wardrobe | COMBO | auto | 33 options: auto, nude, topless, lingerie, bikini, one-piece swimsuit, +27 |
| external_prompt_mode | COMBO | Prepend style before external prompt | 3 options: Append style after external prompt, Prepend style before external prompt, Output style only |
| seed | INT | 00–18446744073709550000 | — |
| custom_text | STRING | — | |
| external_positive_inopt | STRING | — | |
| external_negative_inopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| positive_prompt | STRING | — |
| negative_prompt | STRING | — |