Composition Styler (Advanced)
The SDXL dual-encoder version of the composition menu
- text_positive_g
- text_positive_l
- text_positive
- text_negative_g
- text_negative_l
- text_negative
The same tidy 11-concept composition menu as the plain CompositionStyler - Rule of Thirds, Symmetry, Leading Lines, Negative Space, Framing, Balance, Perspective, Simplicity, Texture, Pattern - wrapped in the "Advanced" node that exposes SDXL's two text encoders. Use this if you're on SDXL and like the finer control; otherwise the basic node does the identical job with fewer sockets.
What "Advanced" means
SDXL runs two text encoders together - the big OpenCLIP-G and the smaller CLIP-L. This node splits your positive prompt into text_positive_g and text_positive_l, one per encoder, and adds negative_prompt_to (Both / G only / L only) for routing the negative. For a soft concept like composition, honestly, splitting G and L is overkill - put the same subject in both and move on. The split is also SDXL-only: SD 1.5 has one encoder, and 2026 LLM-encoded models (Flux 2, Z-Image, Qwen) don't have this architecture at all.
How it works
It's a fork of SDXL Prompt Styler. Each composition concept is a JSON template with a {prompt} slot; your subject drops in, the composition phrase gets wrapped at a strong weight (~2.0), and rewritten prompt strings come out. Text only - nothing loads a model. Remember that composition cues are a bias, not a crop; the model isn't repositioning your subject, it's leaning toward images tagged that way.
Inputs and outputs that matter
- composition - the 11-entry dropdown.
No option= off. - text_positive_g / text_positive_l - your subject, once per SDXL encoder.
- negative_prompt_to -
Both(default),G only, orL only.
log_prompt prints the built prompt. The node returns six strings - text_positive_g, text_positive_l, combined text_positive, and the three negatives. Route _g/_l into an SDXL dual CLIP Text Encode, or use the combined text_positive / text_negative.
Installing it
ComfyUI Manager: search ComfyUI_MileHighStyler, install, restart. Or:
cd ComfyUI/custom_nodes && git clone https://github.com/TripleHeadedMonkey/ComfyUI_MileHighStyler
No models, no dependencies. Nodes appear under ali1234/stylers.
Where people get burned
- Expecting the Advanced node to enforce composition. It won't. Neither node places pixels; if you need a real off-center crop, use aspect ratio or ControlNet. The G/L split changes nothing about that.
- Splitting a soft concept across encoders. Composition is fuzzy enough that G-vs-L micro-tuning is wasted effort. Same text both sides.
- Off SDXL it's pointless. No dual encoders means the
_g/_lsockets do nothing. Use the plain node, or just type "rule of thirds." - Symmetry runs away with it. "Symmetry" at a strong weight will happily mirror a face or body into the uncanny valley. If you get a too-perfect mirror image, that's the emphasis at work - pick a gentler composition concept or reassert the subject after it.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| text_positive_g | STRING | — | |
| text_positive_l | STRING | — | |
| text_negative | STRING | — | |
| composition | COMBO | 11 options: No option, Balance, Framing, LeadingLines, NegativeSpace, Pattern, +5 | |
| negative_prompt_to | COMBO | Both | 3 options: Both, G only, L only |
| log_prompt | BOOLEAN | true | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| text_positive_g | STRING | — |
| text_positive_l | STRING | — |
| text_positive | STRING | — |
| text_negative_g | STRING | — |
| text_negative_l | STRING | — |
| text_negative | STRING | — |