Face Styler (Advanced)
Expressions and emoticon tags
- text_positive_g
- text_positive_l
- text_positive
- text_negative_g
- text_negative_l
- text_negative
FaceStylerAdvanced sets a facial expression from a menu of ~50 - happy, smug, flustered, angry, confused, plus a handful of Danbooru emoticon tags like :p, :o, :d. Getting the emotion you want on a generated face is one of those small things that's weirdly fiddly to prompt by hand, so a curated expression dropdown is a genuinely reasonable idea. This is the SDXL dual-CLIP variant of that menu.
Worth knowing which world these tags come from: the emoticon-style entries (:p, :d) are pure Danbooru vocabulary, so this node is at its best on booru-trained anime models. The plain-English ones (happy, angry) are broad enough to land on most checkpoints.
How the "Advanced" plumbing works
SDXL runs two text encoders, CLIP-G and CLIP-L. This node feeds them separately - text_positive_g to G, text_positive_l to L - and applies the chosen expression to both, wrapped at the pack's strong default weight (~2.0). MileHighStyler is a fork of the classic SDXL Prompt Styler. negative_prompt_to (Both / G only / L only) routes the entry's built-in negative; Both by default.
The inputs and outputs that matter
- face - the ~50-entry expression dropdown;
noneis off. - text_positive_g / text_positive_l - your subject per encoder; same text in both if unsure.
- text_negative - your negative, with the style's negative routed by
negative_prompt_to.
log_prompt prints the assembled prompt to the console. Six outputs: text_positive_g, text_positive_l, merged text_positive, and text_negative_g / text_negative_l / merged text_negative. Feed _g / _l into a CLIPTextEncodeSDXL, or just take the merged text_positive / text_negative into a normal CLIP Text Encode.
Installing it
ComfyUI Manager: search ComfyUI_MileHighStyler, install, restart. Or:
cd ComfyUI/custom_nodes && git clone https://github.com/TripleHeadedMonkey/ComfyUI_MileHighStyler
then restart. No models, no requirements.txt, no dependencies - Python and JSON. Nodes appear under ali1234/stylers.
Where people get burned
- Emoticon tags need a booru model.
:pand:dare Danbooru conventions - they land on Pony/Illustrious/NoobAI/WAI and SD1.5 anime, and do little on photoreal or base SDXL. The word-based expressions are safer across the board. - Expression fights a small face. If the face is tiny in frame, no tag will render a clear expression - the model has too few pixels. Get the face bigger (or fix it in a detailer pass) before blaming the tag.
- Advanced when basic would do. The G/L split only matters with a CLIPTextEncodeSDXL and different per-encoder text. Otherwise use the merged outputs.
- Model era. Dual-CLIP is SDXL-only; meaningless on the 2026 LLM-encoded models (Flux 2, Z-Image, Qwen), where you'd just write "a smug expression" in plain words.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| text_positive_g | STRING | — | |
| text_positive_l | STRING | — | |
| text_negative | STRING | — | |
| face | COMBO | 50 options: none, happy, disgust, smug, flustered, confused, +44 | |
| 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 | — |