Nodes/Ultra Tools/Ultra Tools Prompt Styler
ComfyUI Node

Ultra Tools Prompt Styler

Ultra Tools Prompt Styler

By Yamoon-jjang·Created 14 days ago·Updated 9 days ago· 5
Ultra Tools Prompt Styler
    • positive_prompt
    • negative_prompt
    ◄model_profileZ-Image Natural►
    ◄mood_familyDefault / None►
    ◄style_dnaAuto by Mood►
    ◄style_strengthstrong►
    ◄style_conflict_cleanupoff►
    ◄scene_framingauto►
    ◄lens_presetauto►
    ◄adult_tonedefault►
    ◄adult_wardrobeauto►
    ◄external_prompt_modePrepend style before external prompt►
    ◄seed0►
    ◄custom_text►
    ◄external_positive_in—►
    ◄external_negative_in—►

    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_safe next to rating_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.

    CategoryUltra Tools

    Inputs (14)

    NameTypeDefaultDescription
    model_profileCOMBOZ-Image Natural9 options: Z-Image Natural, Qwen Natural, Flux Natural, Anima Mixed, SDXL Tag, ILXL / Illustrious Tag, +3
    mood_familyCOMBODefault / None26 options: Default / None, 🎲 Random All, 🎲 Random Transformative Style, 🎲 Random Traditional Media Style, Erotic / Sensual, Lyrical / Poetic, +20
    style_dnaCOMBOAuto by Mood35 options: Auto by Mood, Neutral / Minimal Carryover, Neon Melancholy / Rain Glass, Classical Studio Glamour, Baroque Operatic Atmosphere, Noir Chiaroscuro, +29
    style_strengthCOMBOstrong3 options: subtle, balanced, strong
    style_conflict_cleanupCOMBOoff3 options: off, soft, strong
    scene_framingCOMBOauto16 options: auto, headshot (face-focused), close-up, upper body, waist-up, three-quarter body, +10
    lens_presetCOMBOauto18 options: auto, 18mm ultra-wide dramatic, 24mm wide cinematic, 28mm documentary wide, 35mm environmental, 40mm cinematic natural, +12
    adult_toneCOMBOdefault8 options: default, safe, suggestive, sensual, bold sensual, nsfw, +2
    adult_wardrobeCOMBOauto33 options: auto, nude, topless, lingerie, bikini, one-piece swimsuit, +27
    external_prompt_modeCOMBOPrepend style before external prompt3 options: Append style after external prompt, Prepend style before external prompt, Output style only
    seedINT00–18446744073709550000—
    custom_textSTRING—
    external_positive_inoptSTRING—
    external_negative_inoptSTRING—

    Outputs (2)

    NameTypeDescription
    positive_promptSTRING—
    negative_promptSTRING—