Face Styler
A dropdown of facial expressions
- text_positive
- text_negative
FaceStyler is the expression menu - 50 entries covering how your subject's face reads: happy, angry, disgust, smug, flustered, confused, smile, frown, plus the Danbooru-style emoticon tags like :p, :o, :d. If your characters keep coming out with the same blank neutral stare, this is a quick way to inject a mood. It's a small, practical node, and expression is one of those details that makes a portrait feel alive versus feeling like a mannequin.
Worth noting those emoticon entries (:p, :o, :d) are literal booru face tags - they mean specific expressions to anime SDXL models, which is a hint about where this menu works best.
How it works
MileHighStyler is a fork of SDXL Prompt Styler. Each expression is a JSON template with a {prompt} slot; the node drops your text_positive in and wraps the expression phrase at a strong weight (~2.0). Since these are largely Danbooru face tags, they land cleanest on the models trained on that vocabulary - the SDXL anime family (Illustrious, NoobAI, Pony). Output is a rewritten prompt string into your CLIP Text Encode; nothing touches the model.
The inputs and outputs that matter
- face - the 50-entry expression dropdown.
noneis the off switch. - text_positive - your subject; the expression attaches to it.
- text_negative - optional negative text.
log_prompt prints the finished prompt to the console. Outputs are text_positive and text_negative strings, into a 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
- Wrong model family. The emoticon tags (
:p,:o) are booru vocabulary. On an anime SDXL checkpoint they produce exactly the right face; on a photoreal base or a 2026 LLM-encoded model they may do little or read literally. Match the menu to the model. - Expression fights a small face. In a wide shot the face is a handful of pixels and the model can't render a subtle "smug" into it. Expression cues pay off in portraits and close-ups; in a full-body scene they mostly get lost.
- Model era. The
2.0weighting is SDXL/SD 1.5 syntax and gets silently discarded on 2026 LLM-encoded models (Flux 2, Z-Image, Qwen). Plain words like "smiling" still work there as instructions; the emoticon tags are the part that won't travel. - One expression at a time. Like the rest of the pack, it's a single dropdown. It nudges a mood; it doesn't do fine emotional direction.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| text_positive | STRING | — | |
| text_negative | STRING | — | |
| face | COMBO | 50 options: none, happy, disgust, smug, flustered, confused, +44 | |
| log_prompt | BOOLEAN | true | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| text_positive | STRING | — |
| text_negative | STRING | — |