Shima Styler (Iterator)
Batch-test every style in your library without touching the canvas
- clip
- conditioning_positive
- conditioning_negative
- pos_clip_out
- neg_clip_out
- pos_str
- neg_str
- current_index
- total_count
- formatted_name
- style_mode
Style testing used to be a grind: pick a style, run, look, pick the next, run again. Shima StyleIterator automates the whole loop. It walks through the style library one entry at a time - or auto-queues batch after batch until it's covered them all - re-encoding your base prompt with each style and handing you the index, total count, and a formatted name so you always know which style produced which output.
It's the Iterator of the Styler family: Selector picks one, Favorites is a shortlist, Gallery is visual browsing, and this one is the "run them all and compare later" workhorse. The two modes matter:
style_mode-Artists(uses the bundled artist library, hundreds of entries) orUser Styles(your own entries from the stylesheet).index_mode-increment,decrement, orrandomize. Increment walks forward through the library; randomize hops around, which is nice for quick sampling when you don't want to watch every single style in order.
The inputs
base_prompt- what every style gets applied to. Keep it constant so differences in output are actually the style.index- starting position in the list (default 0).batch_size- how many runs per queue cycle (default 1).auto_queue- the fun one. On, the node auto-queues the next style after each run completes, printing "Batch Complete" when it finishes the list. Off, it's a one-shot iterator.connector,style_strength- same join and weighting controls as the rest of the family. Artist styles get "style of {name}" plus optional categories.use_keywords_in_positive_prompt- appends the artist's category tags to the positive.use_optional_negatives_if_present- pulls each style's optional negative tokens in.clip,conditioning_positive,conditioning_negative,base_string/negative_string** - conditioning inputs; if you wire base_string it outranks the widget prompt.
Outputs: pos_clip_out, neg_clip_out, pos_str, neg_str, current_index, total_count, formatted_name, style_mode. The current_index and total_count pair is the one to feed a filename or an image comparer.
How it keeps running
Its IS_CHANGED returns NaN, the canonical "always rerun" trick - so it can't be accidentally cached out of existence. In auto-queue mode it keeps per-node counters in memory and pokes the server to queue the next run, wrapping the index around the list length.
Installing it
Part of KDB-USJP/shima_wf:
cd ComfyUI/custom_nodes
git clone https://github.com/KDB-USJP/shima_wf
Restart ComfyUI. The artist library ships in the repo (read via openpyxl from the bundled XLSX); no downloads.
The honest advice
Auto-queue is powerful and mildly dangerous: leave it on with 900 artists and it will happily generate 900 images. Set a batch_size and stop it when you've got what you need. Also remember the list is positional - the same index maps to whatever artist occupies that slot, so keep the stylesheet frozen while comparing. The one output everyone forgets is formatted_name: wire it into a Save node's filename and "which style was this" stops being a guessing game. That single habit makes this node worth it.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| base_prompt | STRING | — | |
| style_mode | COMBO | Artists | 2 options: Artists, User Styles |
| index_mode | COMBO | increment | 3 options: increment, decrement, randomize |
| index | INT | 00–18446744073709550000 | — |
| batch_size | INT | 11–100 | — |
| auto_queue | BOOLEAN | false | — |
| connector | COMBO | , | 4 options: and , mixed with , + , , |
| style_strength | FLOAT | 1.00-10–10 | — |
| clipopt | CLIP | — | |
| conditioning_positiveopt | CONDITIONING | — | |
| conditioning_negativeopt | CONDITIONING | — | |
| base_stringopt | STRING | — | |
| negative_stringopt | STRING | — | |
| use_keywords_in_positive_promptopt | BOOLEAN | false | — |
| use_optional_negatives_if_presentopt | BOOLEAN | false | — |
| allow_external_linkingopt | BOOLEAN | false | — |
| show_used_valuesopt | BOOLEAN | false | — |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| pos_clip_out | CONDITIONING | — |
| neg_clip_out | CONDITIONING | — |
| pos_str | STRING | — |
| neg_str | STRING | — |
| current_index | INT | — |
| total_count | INT | — |
| formatted_name | STRING | — |
| style_mode | STRING | — |