ComfyUI-NeonsStyleExplorer
A Comfyui style explorer with the ability to add your own styles and a catalog where you can save previews generated in that style. you can create multiple catalogs so you can have a different catalog per image model. over 1000 built in styles!
Nodes (3)
Neons Style Explorer
A style catalog node for ComfyUI. A style entry is a style prefix and nothing
else: it describes how the picture is rendered and closes with the medium —
... anime style image, ... photograph style image, ... cgi style image.
No instructions to the model, no sentences about what the image contains.
Nodes (category Neons):
- Neons Style Explorer — text in, text out
- Neons Style Explorer (Encode) — the same plus CLIP encode
- Neons Gallery Capture — headless equivalent of the Save button
Read the manual — every widget, the browser, previews, the crawl workflow, catalogs and troubleshooting.
Install
ComfyUI Manager — search for Neons Style Explorer and install, then restart ComfyUI.
Manually — clone into ComfyUI/custom_nodes/ and restart:
cd ComfyUI/custom_nodes
git clone https://github.com/Neon-Sparks/ComfyUI-NeonsStyleExplorer
Restart ComfyUI after installing or updating — a browser refresh loads the new interface but not the node's HTTP routes, so new features fail until the process restarts.
No extra dependencies: it uses Pillow and numpy, both of which ComfyUI already ships. Python 3.9+.
Output
masterpiece, best quality, Anime broadcast still: flat cel colouring in hard
shadow bands, simplified on-model faces, painted matte background, mild
compression softness and grain, TV-frame colour, anime style image. a woman on
a fire escape at night
masterpiece, best quality, (anime_screenshot:1.1), (anime_coloring:1.1),
(cel_shading:1.1), (film_grain:1.1), 1girl, rooftop
output_format— natural | danbooru | natural + danboorustyle_weight— a 1.0–5.0 slider; wraps the clause as(clause:weight)in natural mode and every style tag as(tag:weight)in booru modesstyle_position— put the style clause at the start or the endquality— a separate quality-prefix box, always kept at the very front- three axes —
style,format(what job the frame does),finish(a stackable realism qualifier) 🎲 Randomat the top of every style dropdown, withroll_scope(all / family / favourites / recent / has preview / missing preview) androll_seedplus its control-after-generate widget (set it to randomize so every run rolls anew)- Named catalogs — keep a separate preview set per model ("my Krea 2", "SDXL", a client project): each catalog has its own gallery, favourites and recents, while the style texts and your edits stay shared. Pick one from the toolbar, add one with + New catalog
- Crawl through — a switch that walks the main style dropdown one entry per
queued run instead of rolling, starting from the style you have selected, over
whatever
roll_scopeselects; setroll_scopeto missing preview,auto_galleryto every, queue a few hundred runs and the gallery fills itself in order - Favourites and recents — star entries from the card or the node toolbar, filter the browser by them, and let the dice roll inside either list; every run records the style it used
The panel
The preview scales with the node on both axes, the button row sits under it, and
the panel body is click-through so the node still drags from anywhere. Buttons:
Roll, Catalog, Save, Edit, and a ⋯ menu (browse formats and
finishes, roll style 2/3, new custom style, clear, delete shots). The composed
prompt updates live underneath.
Catalog browser
Banner at the top that scrolls away under a sticky toolbar, then a virtualised grid — only the visible cards are mounted, so a thousand entries scroll smoothly. Search over name, alias, family and tags; filter by axis, family, source and preview state; hover shows the clause; Edit opens the entry; JSON import/export for style packs.
Gallery
The gallery ships empty — nothing is bundled. Generate, then press Save: the last result becomes that style's preview.
Up to eight shots per style, click a thumbnail in the strip to make it the
cover, auto_gallery can fill them automatically. Previews are keyed on the
style's stable id, so renaming never orphans an image.
The catalog
3015 entries — 1419 with every clause hand-written for this catalog, plus the 1596-entry imported Extra family, across nine families: photography & film 249, traditional painting 208, anime & manga 164, design & aesthetics 150, 3D & games 148, illustration 122, comics & print 83, experimental & material 79, western animation 68. Three axes — 2867 styles, 97 formats, 51 finishes. The Extra family is imported from ThetaCursed's Krea 2 style collection under its MIT licence; see THIRD-PARTY-NOTICES.md. Old [Clio] names are relabelled [v2], and every merged duplicate keeps its old name as a search alias. STYLES.md lists everything.
tools/build_all.sh # import + lint + index + docs + examples + tests
python3 tools/lint.py --all # every finding
node tools/check_web.mjs # UI: undefined calls and bad imports
python3 tests/test_compose.py # 49 tests
The source of truth for the text is tools/written/*.json; import_source.py
merges it into styles/. The linter enforces the wording rules: the clause must
close with its medium, must not contain instruction or scope language, must not
name picture content, ≤380 characters, and every tag must exist in
data/tags.txt.
Layout
catalog.py loading, merging, caching, lookup, roll
compose.py the one composer (the UI calls it over HTTP)
nodes.py the nodes
gallery.py preview gallery on disk
store.py overrides / custom / hidden styles
styles/ the catalog, one file per family
data/tags.txt validated booru tag vocabulary
web/ api, css, panel, catalog_ui, main
tools/ import, lint, and the hand-written source in tools/written/
MIT licensed.