AdvancedStyleSelector
A style picker that doesn't make you read walls of text
- clip
- positive
- negative
- style_name
If you've ever stared at a styles.json file with a thousand entries and thought "there has to be a better way to pick one," this is that way. AdvancedStyleSelector swaps the usual dropdown-of-strings for a thumbnail gallery: you click a picture, it encodes your prompt into CONDITIONING, and you're done - no separate CLIPTextEncode node, no copy-pasting prompt fragments.
It ships with ~1000 styles covering the usual suspects (3D renders, anime, photorealism, sci-fi), each one a name, category, prompt, and negative_prompt combo stored in config/styles.json. Because it encodes straight to conditioning, the node slot where a CLIPTextEncode would normally sit in your graph just disappears. That alone is worth it if you iterate styles a lot.
How it works
The style application logic is refreshingly simple. If a style's prompt contains {prompt}, your positive_text gets substituted in at that spot; otherwise the node appends the style keywords to your text. Then it CLIP-encodes the result through your clip input.
The one switch to understand is use_negative. With it ON, your negative_text is encoded normally. With it OFF - the recommended setting for Flux, SD3.5 and friends - the node outputs ConditioningZeroOut, because those models are trained without negative prompts and benefit from a zeroed negative. That's the classic Flux gotcha handled for you.
The other input that changes how you work is mode:
- Manual - click up to 6 thumbnails; each becomes a slot (
style_1…style_6) and all of them get merged into the singlepositiveoutput. Favorites (the ⭐) and your own saved styles land in aMy Stylescategory up top. - Iterator - cycles through every style in the checked categories, one per queue run, and stops the queue after the last one. Set
iterator_seedto shuffle the order, or leave it at 0 for alphabetical. This is your "render all 40 styles overnight" mode.
Inputs and outputs that matter
You only really touch a handful of pins. clip comes from your checkpoint loader. positive_text and negative_text are your own prompt and anti-prompt (negative hides itself when use_negative is off). Two quality-of-life toggles worth knowing: append_counter tacks a timestamp onto the style_name output (abstract_20260424_143022) so connected Save Image nodes never overwrite, and save_prompt writes the resolved positive/negative to output/prompts/ as a JSON record.
Outputs: positive (CONDITIONING) into the sampler, negative (CONDITIONING) into the sampler's negative slot, and style_name (STRING) for filename or overlay use.
Installing it
It's part of ComfyUI-rogala, so one install gets you all eight nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/rogala/ComfyUI-rogala
Restart ComfyUI and you'll find it under rogala → Prompting → Advanced Style Selector. ComfyUI Manager works too - search "rogala". No pip dependencies and no model downloads; the pack ships its own fonts and thumbnails.
Where people get burned
The folder naming rules. Model thumbnail presets and My Styles thumbnails only accept letters, digits and underscores - FLUX_1 works, FLUX.1 and FLUX-1 silently break across OSes. If your custom thumbnails don't show up, that's the usual culprit. Second gotcha: edit config/styles.json all you want, but hit Reload Styles afterwards - it hot-reloads without a restart, and it also resets the Iterator if you're mid-cycle. And if a thumbnail is missing for a style, the node falls back to the base folder, which can make two styles look identical at a glance. Minor, but worth knowing when you're judging by eye.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| positive_text | STRING | Your positive prompt. Styles will be applied on top. | |
| negative_text | STRING | Your negative prompt. Hidden when use_negative is OFF. | |
| use_negative | BOOLEAN | true | ON: encode negative normally. OFF: output ConditioningZeroOut (for Flux/SD3). |
| mode | COMBO | Manual | 2 options: Manual, Iterator |
| style_1 | STRING | Selected style slot 1 | |
| style_2 | STRING | Selected style slot 2 | |
| style_3 | STRING | Selected style slot 3 | |
| style_4 | STRING | Selected style slot 4 | |
| style_5 | STRING | Selected style slot 5 | |
| style_6 | STRING | Selected style slot 6 | |
| iterator_categories | STRING | Comma-separated categories to iterate. Empty = all. | |
| iterator_seed | INT | 00–4294967295 | Seed for shuffling iterator order (0 = alphabetical). |
| append_counter | BOOLEAN | false | Append a timestamp to style_name output for unique filenames (e.g. abstract_20250424_143022). |
| save_prompt | BOOLEAN | false | Save positive and negative prompts to a JSON file in output/prompts/. |
| thumbnail_preset | STRING | Active model thumbnail preset folder name. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| style_name | STRING | — |