Styler Pipeline
The Styler Pipeline flagship that actually stays reproducible
- positive
- negative
- clip
- positive
- negative
- prompt_debug
This is the main node in andreszs' Styler Pipeline pack, and the one most people mean when they say "the styler." On the surface it's a conditioning box with a strength slider, like every other style node in existence. What's different is what happens when you click Edit: a panel with a searchable style browser, per-category Randomize, and an AI Styler that asks an LLM to pick your styles for you. It's genuinely pleasant to use, which is more than most ComfyUI custom nodes can claim.
Why the JSON matters
The pack ships 1,313 styles across 24 categories, and this node stores your picks as a JSON string mapping category to a stable style key - that's the selected_styles_json input, default {}. Because your selections live in the node data as keys rather than pasted prompt text, the workflow keeps reproducing even if the author edits, reorders, or drops styles from the JSON files. Rename or delete a style you reference, though, and it just logs a warning and skips it; your workflow silently changes meaning. That's the tradeoff for the stability.
How it applies styles
Give it positive and negative CONDITIONING from CLIPTextEncode plus the same clip, and it encodes each selected style's text, scales the tokens by strength, repeats them redundancy times, and concatenates the whole thing onto your existing conditioning. It's token-level surgery on already-encoded prompts, not string concatenation - which is why it plays nice with ControlNet and with the author's Lora-Pipeline area-conditioning nodes.
The inputs and outputs that matter
positive/negative(CONDITIONING) - your encoded prompt pair.strength(FLOAT, 0–3, default 1.0) - start here; push toward 1.3 only on models that ignore you.redundancy(INT, 1–4, default 1) - literal repetition of the style tokens; keep it at 2 or below.selected_styles_json(STRING) - the internal state the Edit panel writes. You can hand-edit it, but you usually shouldn't need to.clip(CLIP, optional) - required for the node to do anything; unlike Advanced Styler, this one raises a "CLIP input is required" error if you forget it.
Outputs are positive, negative, and prompt_debug - the third is the assembled style text, handy for figuring out why a style isn't showing through. Wire positive/negative into KSampler (or area-conditioning nodes) as usual.
Installing it
Zero dependencies, no model downloads, no API key needed for the styling itself - the LLM stuff is optional.
cd ComfyUI/custom_nodes
git clone https://github.com/andreszs/ComfyUI-Styler-Pipeline
Restart ComfyUI and it appears under Styler Pipeline/. Or install via ComfyUI Manager by searching "Styler Pipeline". The pack is young and single-maintainer; if Manager doesn't list it (the author hit that bug himself), the clone works.
The AI Styler, and its asterisks
The AI Styler tab is a fun party trick: describe a look and an LLM returns ranked style suggestions by category. It supports OpenAI, Anthropic, Gemini, Groq, Hugging Face, and Ollama - including local Ollama so it works offline. But read the fine print: tokens are used for the current session only and never saved, and the README warns hard against querying local Ollama while a workflow is running, because it pegs your GPU/CPU and can make the whole machine unstable. Cloud providers are the safer default. One reproducibility note: Randomize per category resolves to the concrete style when you save, so reloading a generated image's workflow gives you the exact style that was picked - no surprises later.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| strength | FLOAT | 1.000–3 | — |
| redundancy | INT | 11–4 | — |
| selected_styles_json | STRING | {} | — |
| clipopt | CLIP | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| prompt_debug | STRING | — |