Ultra Tools Prompt Composer
Build a scene prompt from menus instead of a blank text box
- positive_prompt
- negative_prompt
What it's for
Prompting in 2026 is not one skill. A Pony tag list and a Z-Image instruction are different languages, and the same sentence that sings on an LLM-encoded model does nothing on Illustrious. If you switch models - and you switch models - you spend half your time re-learning syntax instead of making pictures.
Ultra Tools Prompt Composer is a scene builder. You pick subject, action, location, time of day, framing, lens and style from menus, and it assembles a prompt written in the syntax the model family you selected actually understands. Nine profiles: Z-Image, Krea2, Qwen and Flux in natural-language mode; SDXL, ILXL/Illustrious, Pony and SD 1.5 in tag mode; Anima as a mixed case.
It is, bluntly, a very opinionated set of dropdowns. That's the feature. It's for the person who knows what image they want and not what to type, and it's a decent teaching tool for the reverse: flip the profile from Z-Image Natural to Pony Tag with everything else identical and watch the same scene get rewritten.
What's actually inside
The menus are large. mood_family has 26 entries (noir, gothic romance, fashion editorial, classical, dreamlike, plus three randomisers). style_dna has 35 - the physical-medium half includes watercolour, oil, charcoal, ink wash, pixel art, miniature diorama - with an Auto by Mood default that picks something that fits. scene_framing has 16 options from headshot to wide shot, lens_preset 18 focal-length presets from 18mm to long-lens compression.
Then the subject block, which is where most of the value sits: subject_profile (adult woman, couple, group, background only, product), age, appearance, ethnicity, hair, outfit, expression, pose, action. And the scene block: location, location detail, time of day, weather, props.
builder_detail_mode (simple / advanced / professional) controls how much of that menu surface is visible at once - start on simple, because 40 dropdowns on one node is paralysing.
Three mechanisms are worth knowing:
style_conflict_cleanup(off/soft/strong). If you asked for watercolour and your text also says "photorealistic, DSLR", the style loses. This dials down the contradicting language.style_strength(subtle/balanced/strong) sets how much of the final string is style versus content.prompt_source_modedecides the mode of the whole node: build a scene from scratch, style an incoming prompt, or style only. With an external_positive_in wired,external_prompt_modecontrols whether the style goes before or after your text.
And seed, which matters more than it looks: the random mood and style picks are seeded, so a combination you like can be reproduced.
Inputs and outputs
Nothing is required to be wired. The optional inputs are external_positive_in and external_negative_in (both STRING). custom_text is a free-text field the author promises never to reinterpret - it goes in as written.
Outputs are positive_prompt and negative_prompt, both STRING. Positive goes into your CLIP Text Encode, or straight into Ultra Tools Image + PiD's positive_prompt. Negative goes wherever your model wants it - and on a CFG-1 model that's nowhere, which is fine; wire it into a tag-model graph and it starts earning its keep.
One thing to be aware of: the node includes optional adult prompt menus, off by default and gated behind separate adult_* widgets. They're documented as adult-subject-only. If you don't want to see them, leave adult_tone on default and don't raise adult_menu_level.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Yamoon-jjang/comfyui-Ultra-Tools
Or Manager → Ultra Tools. Restart and hard-refresh; the menu labels are localised via web/prompt_composer_locale.js and follow your ComfyUI language setting (Korean or English). No pip dependencies at all - this is pure data plus string assembly, no models and no network.
If an older standalone pack was installed alongside, remove it. Duplicate class names are the pack's most common install injury.
Honest limits
The generated prompt is a prompt, not a photograph. Every menu is a taste decision made by one person in Korean, and some of the vocabulary sits between natural language and tag soup - you'll want to edit custom_text on top of the output, which is exactly how the author expects it to be used.
And because the model profiles carry hardcoded assumptions, a checkpoint that's based on one family but retrained oddly will not follow the profile's syntax perfectly. The general rule from the KB holds: check what your checkpoint is actually built on, not what year it says. If a composer-tuned prompt underperforms, the thing to test first is the profile, not the mood.
Inputs (40)
| Name | Type | Default | Description |
|---|---|---|---|
| model_profile | COMBO | Z-Image Natural | 9 options: Z-Image Natural, Krea2 Natural, Qwen Natural, Flux Natural, Anima Mixed, SDXL 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 | 56 options: auto, nude, topless, lingerie, bikini, one-piece swimsuit, +50 |
| prompt_source_mode | COMBO | Auto | 4 options: Auto, External Prompt Composer, Standalone Scene Builder, Style Only |
| builder_detail_mode | COMBO | simple | 3 options: simple, advanced, professional |
| external_prompt_mode | COMBO | Prepend style before external prompt | 3 options: Append style after external prompt, Prepend style before external prompt, Output style only |
| subject_profile | COMBO | auto | 9 options: auto, adult woman, adult man, adult couple, two adult women, two adult men, +3 |
| subject_age | COMBO | auto | 6 options: auto, 20s, 30s, 40s, 50s, 60s+ |
| subject_appearance | COMBO | auto | 10 options: auto, natural-looking, cute, beautiful, elegant, glamorous, +4 |
| subject_ethnicity | COMBO | auto | 10 options: auto, Korean, East Asian, Southeast Asian, South Asian, Western, +4 |
| subject_hair | COMBO | auto | 24 options: auto, short hair, long dark hair, long hair, wavy hair, bob cut, +18 |
| subject_outfit | COMBO | auto | 38 options: auto, casual jeans and t-shirt, white blouse and dark skirt, knit sweater and skirt, summer dress, elegant long dress, +32 |
| subject_expression | COMBO | auto | 33 options: auto, natural expression, gentle smile, broad smile, bright happy smile, laughing face, +27 |
| subject_pose | COMBO | auto | 24 options: auto, standing, sitting, leaning, walking, looking back, +18 |
| subject_action | COMBO | auto | 45 options: auto, standing still, sitting at a table, walking naturally, looking out the window, looking at the camera, +39 |
| location_type | COMBO | auto | 56 options: auto, cozy living room, modern apartment, bedroom, bathroom, hotel room, +50 |
| location_detail | COMBO | auto | 21 options: auto, minimal modern, luxury, vintage classic, dark intimate, bright spacious, +15 |
| time_of_day | COMBO | auto | 10 options: auto, dawn, morning, daytime, afternoon, late afternoon, +4 |
| weather_light | COMBO | auto | 22 options: auto, clear, cloudy, rainy, snowy, foggy, +16 |
| scene_props | COMBO | auto | 48 options: auto, none, plants, book / magazine, cup / drink, smartphone, +42 |
| auto_extra_detail | COMBO | auto | 4 options: auto, light auto fill, balanced auto fill, rich auto fill |
| adult_menu_level | COMBO | essential | 2 options: essential, professional |
| adult_exposure_level | COMBO | auto | 11 options: auto, clothed sensual, revealing outfit, lingerie / underwear, swimwear, implied nude / covered, +5 |
| adult_scene_privacy | COMBO | auto | 11 options: auto, private indoor, bedroom / hotel room, boudoir bedroom, luxury hotel suite, private lounge, +5 |
| adult_scene_mood | COMBO | auto | 23 options: auto, soft boudoir, romantic warm intimacy, fashion editorial sensual, luxury hotel evening, private mirror moment, +17 |
| adult_pose_style | COMBO | auto | 30 options: auto, relaxed sensual pose, reclining sensual pose, seated sensual pose, standing confident pose, looking over shoulder, +24 |
| adult_lighting | COMBO | auto | 19 options: auto, warm bedside light, low-key shadow, soft window backlight, candlelit glow, studio rim light, +13 |
| adult_scene_props | COMBO | auto | 26 options: auto, satin sheets, sheer curtains, bedside lamp, large mirror, velvet chair, +20 |
| adult_body_focus | COMBO | auto | 15 options: auto, face and expression, upper body elegance, full body silhouette, legs-focused fashion framing, back and shoulder silhouette, +9 |
| adult_framing_bias | COMBO | auto | 10 options: auto, portrait safe, close portrait, upper body, waist-up, full body, +4 |
| 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 | — |