Nodes/ComfyUI_PromptStyler/PromptStyler: Prompt -> Conditioning (Style Picker)
ComfyUI Node

PromptStyler: Prompt -> Conditioning (Style Picker)

Pick a style, get CONDITIONING — the 585-entry dropdown that skips CLIPTextEncode

By NidAll·Created 7 months ago·Updated 6 months ago· 18
PromptStyler: Prompt -> Conditioning (Style Picker)
  • text_encoder
  • positive
  • styled_prompt
prompt
apply_styletrue
style
template_variant
style_id_override

If you've ever written "a photorealistic cinematic render of a wooden toy" and then typed the same five style words into the prompt box for the fiftieth time, this node is aimed straight at you. PromptStylerConditioning - displayed as "PromptStyler: Prompt -> Conditioning (Style Picker)" - is a one-node style picker: you type your subject, pick a style from a categorized dropdown of 585 curated templates, and it hands you back ready-to-sampler CONDITIONING. No extra prompt-prefix nodes, no token text juggling between nodes, no CLIPTextEncode at all. It's a smaller, friendlier cousin of the "style selector" nodes in bigger packs, built around a genuinely big hand-curated library.

It ships from a small one-dev pack (NidAll/ComfyUI_PromptStyler), which means two things worth knowing up front: it's a passion project with no big community ecosystem behind it, and the author clearly tested it on FLUX 2's klein models - that's where the flux_2_klein template variant comes from.

How it works

Every style is a template with prefix and suffix phrase sets (plus optional Flux-specific variants). Pick a style and the node composes prefix + your prompt + suffix, splits everything into comma phrases, then de-dupes case-insensitively while keeping first occurrences. That de-dupe is the quiet hero here: if the style template already contains a phrase you typed, you don't get it doubled up.

Then it does the part most "style" nodes skip: instead of outputting a string for you to feed into CLIPTextEncode, it calls text_encoder.tokenize() and encode_from_tokens_scheduled() itself and returns CONDITIONING. One node, string in, conditioning out. The styled_prompt output is the exact text that got encoded, which is your ground truth when something looks off.

The inputs that matter

The dropdown style is the whole point - 585 entries in Category | Name | id format (think 3D/CG | Clay Render | cg_clay_render). Two other fields a beginner actually touches:

  • template_variant - default uses the legacy comma-phrase composition; flux_2_klein swaps in the style's Flux-specific phrasing (sentence-style, since Flux-class encoders read your prompt as a message, not a tag bag).
  • apply_style - set it to false and the node just encodes your raw prompt, which is handy for A/B-ing styled vs. unstyled.

style_id_override is the one that looks scary but is simple: paste a style's id and it beats the dropdown. Newly-added or scripted styles get used via this field. The text_encoder input just wires from your checkpoint/model loader.

Outputs: positive (CONDITIONING) goes straight to KSampler.positive; styled_prompt (string) is the encoded text - inspect it, log it, whatever.

Installing it

ComfyUI Manager: search "ComfyUI_PromptStyler" and install. Or the manual way:

cd ComfyUI/custom_nodes
git clone https://github.com/NidAll/ComfyUI_PromptStyler

Then restart ComfyUI (or use "Reload custom nodes"). Here's the rare good news for a node pack in 2026: it's pure Python stdlib - no pip requirements, no model downloads, no API keys, nothing to configure. The 585 styles ship inside the repo.

Where people get burned

The author's own troubleshooting list is honest, and most of it is model-family mismatch. If you get an error instead of an image:

  • Inspect styled_prompt to see what was actually composed.
  • Confirm the text_encoder matches the model family you're sampling with - a Flux CLIP wired into an SD1.5 workflow (or vice versa) is the classic trap.
  • If the error mentions invalid conditioning, run the same styled_prompt through a stock CLIPTextEncode - that isolates whether the text or the encoder is the problem.

Two sharper edges from the source: a missing text_encoder raises a hard error (no silent garbage), and an unknown style_id_override id raises ValueError rather than quietly defaulting. That's deliberate - recent releases tightened the "silently return broken conditioning" behavior into explicit errors. Annoying at first, better than debugging a black image later. For a young pack, that's a sign the maintainer actually cares about the thing breaking loudly.

CategoryPromptStyler

Inputs (6)

NameTypeDefaultDescription
promptSTRING
apply_styleBOOLEANtrue
styleCOMBO585 options: 3D/CG | CAD Product Render | cg_cad_product_render, 3D/CG | Clay Render | cg_clay_render, 3D/CG | Glass and Caustics | cg_glass_and_caustics, 3D/CG | Hard Surface Sci-Fi | cg_hard_surface_sci_fi, 3D/CG | Isometric 3D Room | cg_isometric_3d_room, 3D/CG | Low Poly | cg_low_poly, +579
template_variantCOMBO2 options: default, flux_2_klein
style_id_overrideSTRING
text_encoderCLIP

Outputs (2)

NameTypeDescription
positiveCONDITIONING
styled_promptSTRING