Subject Styler (Advanced)
Subject presets for SDXL's two encoders
- text_positive_g
- text_positive_l
- text_positive
- text_negative_g
- text_negative_l
- text_negative
The Advanced take on SubjectStyler: the same broad subject categories - Animal, Art, Building, Child, Female, Food, Male, Nature, Technology, Vehicle - but shaped for SDXL's dual-encoder plumbing. If your workflow uses a CLIPTextEncodeSDXL node with its separate text_g and text_l inputs, this is the version to drop in.
Quick refresher on why that split matters: SDXL encodes your prompt through two text encoders, OpenCLIP-ViT/bigG and CLIP-ViT/L, and the second one carries a real share of SDXL's control over composition and subject framing. Talking to each encoder directly is the point of the Advanced node.
What you set
text_positive_g/text_positive_l- your prompt for the G and L encoders. Same text in both is the normal case.text_negative- your negative prompt.subject- the category dropdown;No optiondisables styling.negative_prompt_to-Both,G only, orL only, deciding where the preset's built-in negative goes. DefaultBoth.log_prompt- prints the assembled prompt to the console.
The six outputs are text_positive_g, text_positive_l, text_positive, text_negative_g, text_negative_l, text_negative. Feed _g and _l into CLIPTextEncodeSDXL's matching boxes; if you're on a plain single CLIP Text Encode, take the merged text_positive / text_negative and ignore the split.
Installing it
ComfyUI Manager, search ComfyUI_MileHighStyler. If Manager doesn't list it (it's an older pack and coverage is hit-or-miss), clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/TripleHeadedMonkey/ComfyUI_MileHighStyler
Restart ComfyUI. No models, no dependencies - just JSON templates, so it's instant to install and free at runtime.
Common snags
Two things bite people. First, the subject categories are deliberately coarse - Male, Vehicle, Nature frame the shot, they don't describe it, so you still need a real subject in your positive text. Second, the six outputs: don't wire all of them, pick a lane. SDXL dual-encode uses _g and _l; anything else uses the merged pair.
A note on picking Advanced over basic: only reach for this version if your workflow genuinely uses a CLIPTextEncodeSDXL node. If you're on a plain single CLIP Text Encode, the extra G/L machinery buys you nothing and the basic SubjectStyler is cleaner. The split earns its keep only when both encoders are actually in play.
The pack-wide reality check: the whole two-encoder design only exists on SDXL, so this node belongs on the SDXL lineage - Illustrious, Pony, Juggernaut, NoobAI. On a 2026 LLM-encoded model (Flux 2, Z-Image, Anima) there's no G/L to split, the style weighting is discarded, and the negative is inert at CFG 1. It's the right tool on the older stack and a no-op on the newer one.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| text_positive_g | STRING | — | |
| text_positive_l | STRING | — | |
| text_negative | STRING | — | |
| subject | COMBO | 11 options: No option, Animal, Art, Building, Child, Female, +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 | — |