Fans Styler
Ten dropdowns, ten categories, one prompt library you can edit in a spreadsheet
- STYLE 1
- STYLE 2
- STYLE 3
- STYLE 4
- STYLE 5
- STYLE 6
- STYLE 7
- STYLE 8
- STYLE 9
- STYLE 10
Fans Styler is the flagship of the ComfyUI-Fans pack, and it's the node that either makes the pack a keeper or leaves you mildly annoyed, depending on how much you like tinkering with CSV files. It hands you ten dropdowns - shot type, camera, film, lighting, photographer, color, theme, emotion, material, and one leftover category called "cat3" - and each one spits out a STRING you can wire straight into your prompt. Pick a bird's-eye shot here, a Golden Hour light there, "in the style of Annie Leibovitz" over there, and you've got a consistent block of prompt text without remembering how to spell any of it.
It's an SDXL-era workflow, honestly. On modern LLM-encoded models a lot of styling vocabulary reads differently than it did in 2024, but the camera column alone is worth the install: styles2.csv maps labels like "Ambiance-Bright and vibrant" to real gear (Canon EOS R6 with Canon EF 16-35mm f/2.8L III USM lens). Naming an actual camera body is one of the highest-leverage phrases you can add to a prompt, so this library hands you a curated list of them on a plate.
How it works
Under the hood there's nothing clever. The node reads ten CSVs out of the pack's styles/ folder at load time. Each row is two columns: the name you see in the dropdown, and the text that actually gets injected into your prompt. Select "None" and you get an empty string; pick anything else and the node appends the row's second column plus a comma and a space - or just a space, if you set with_comma_condition to "No".
The two inputs you actually touch:
style1throughstyle10- one dropdown per category. Style 1 is Shot Type, style 2 Camera Option, style 3 Film, and so on up to style 10.with_comma_condition- "Yes" (default) appends,to every chunk so they chain into a clean comma-separated list; "No" appends a space instead.
Outputs are STYLE 1 through STYLE 10 - ten separate STRINGs, one per category, in the order you pick them. Wire them into a concatenate node (the pack ships Fans Text Concatenate for exactly this) and then into CLIP Text Encode.
The real trick: the CSVs are yours
This is where the node earns its keep. Everything in the dropdowns lives in plain two-column CSV files you can edit in any text editor or spreadsheet. Want your own camera? Add a row. Hate the film list? Replace it. The author even left style 10 as a demo - it's a stub category with the values red / gren / blue (typo and all), clearly there to show you the format. Edit it or ignore it.
Two ground rules from the README: keep the filenames exactly as they are - the code looks up styles1.csv … styles10.csv by name, so renaming breaks the node - and save CSV files as UTF-8 (an older commit literally fixed an encoding bug here). After you edit, you don't restart ComfyUI; just refresh the browser tab and the dropdowns rebuild.
One quirk to know about: the CSVs use ------ lines as visual separators, and those lines show up as selectable dropdown entries. If you pick one you'll inject "------" into your prompt. Don't. They're noise - the node was just built fast and never filtered them out.
Install
The easy way is ComfyUI Manager - search for "ComfyUI-Fans" and hit install, then restart. Manual install is the same as any custom node:
cd ComfyUI/custom_nodes
git clone https://github.com/uarefans/ComfyUI-Fans
Then restart ComfyUI. No requirements.txt, no model downloads, no heavy dependencies - the whole pack is pure Python plus the CSVs. If a workflow you downloaded is missing this node, that's the missing-node song everyone knows, and Manager fixes it.
Troubleshooting
- Dropdowns don't show your edits: you edited the CSV but ComfyUI's browser tab is stale. Refresh the tab, don't restart the server.
- Node gone after restart / "No Styles" entries: the CSV path couldn't be found - usually because the folder was renamed. Restore the exact filenames.
- Ugly prompt text: remember the dropdown label is just an index; the injected text is column two. If a label and its value don't match (camera "Ambiance-Dark and moody" outputting a Sony body), that's by design, not a bug.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| with_comma_condition | COMBO | Yes | 2 options: Yes, No |
| style1 | COMBO | Shot Type | 30 options: None, Shot Type, ------, Bird's Eye View Shot, Candid Shot, Closeup Shot, +24 |
| style2 | COMBO | Camera Option | 68 options: None, Camera Option, ------, Ambiance-Adventure/Action, Ambiance-Bright and vibrant, Ambiance-Dark and moody, +62 |
| style3 | COMBO | Film | 120 options: None, Film, ------, 300, 2001: A Space Odyssey, 2010: The Year We Make Contact, +114 |
| style4 | COMBO | Lighting | 17 options: None, Lighting, ------, Foggy, Hazy, Overcast, +11 |
| style5 | COMBO | Photographer | 113 options: None, Photographer, ------, ---- Portrait Photography, Richard Avedon, Annie Leibovitz, +107 |
| style6 | COMBO | Color | 47 options: None, Color, ------, Analogous-Colors, Aqua, Azure, +41 |
| style7 | COMBO | Theme | 38 options: None, Theme, ------, Hyper Real, Hyperrealistic, Magic Realism, +32 |
| style8 | COMBO | Emotion | 15 options: None, Emotion, ------, Anger, Anticipation, Despair, +9 |
| style9 | COMBO | Material | 69 options: None, Material, ------, Physical Properties - Blobby, Physical Properties - Blobs, Physical Properties - Cracks, +63 |
| style10 | COMBO | cat3 | 5 options: None, cat3, red, gren, blue |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| STYLE 1 | STRING | — |
| STYLE 2 | STRING | — |
| STYLE 3 | STRING | — |
| STYLE 4 | STRING | — |
| STYLE 5 | STRING | — |
| STYLE 6 | STRING | — |
| STYLE 7 | STRING | — |
| STYLE 8 | STRING | — |
| STYLE 9 | STRING | — |
| STYLE 10 | STRING | — |