Random Artist Picker (Image Saver)
Roll random artist style tags from a list
- tags
A prompt-randomizer for style exploration. You keep a text file of artist names, and this node pulls one (or a few) at random each run and spits them out as a tag string you drop into your prompt. It's a slot machine for aesthetics - great for breaking out of a rut when every generation is starting to look the same.
It leans on a specific truth about anime models: on the Illustrious and NoobAI families (and Danbooru-trained models generally), artist names function as style tags. Because those models learned Danbooru's exact vocabulary, a tag like by artgerm or a booru artist handle nudges the whole image toward that artist's look, no LoRA required. NoobAI in particular leans hard on artist tags for its aesthetic. So a node that randomly samples from a curated artist list is a legitimately good way to discover styles you'd never have typed yourself. (Worth knowing the flip side: Pony stripped artist tags out, so this trick does little there, and natural-language models like Flux want prose, not tags.)
How it works
Point it at a text file of artist names, tell it how many to grab, and it randomly selects that many, formatting them into a clean prompt fragment. The formatting options exist because booru-style names are messy - underscores, parentheses, casing - and a raw dump breaks prompts.
The inputs and outputs
The essentials:
file_path- path to your text file of artists. This is the whole show; no file, nothing to pick from.count(default 1) - how many artists to draw. One artist gives a clean style; blending two or three creates hybrids, sometimes muddy, sometimes magic.seed- controls the random draw. Fix it to reproduce a roll, randomize it to keep exploring.
The formatting knobs, all of which matter more than they look:
replace_underscore(default true) - turnsstudio_ghibliintostudio ghibli, which is what prompts actually want.escape_parens(default true) - escapes parentheses in names so they don't get read as ComfyUI attention-weighting syntax and wreck your prompt.delimiter(default,) - what goes between multiple picks.weight_by_count- if your file carries usage counts, this biases the draw toward more-common artists instead of uniform random.prefix- text prepended to each pick (e.g.byto getby artgerm).excludeandfilter- narrow the pool: drop names you don't want, or keep only ones matching a filter.trailing_comma(default false) - whether to leave a comma on the end for easy concatenation.
One output: tags (STRING) - the formatted artist string, ready to wire into your text encode or concatenate onto a base prompt.
How to install it
ComfyUI Manager: search "ComfyUI Image Saver", install, restart.
Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/alexopus/ComfyUI-Image-Saver
cd ComfyUI-Image-Saver
pip install -r requirements.txt
then restart. No models to download - but note you supply your own artist list; the node doesn't ship one.
Common issues & troubleshooting
Empty output. Almost always the file_path - a wrong path, or a file the ComfyUI process can't read. Point it at a real, readable text file with one name per line.
Parentheses in a name break the prompt. Booru artist handles love parentheses, and unescaped they collide with ComfyUI's (tag:1.2) weighting syntax. Keep escape_parens on (it defaults on) and they'll be treated as literal text.
The artist tag does nothing. Check your model. Artist-as-style-tag is an Illustrious/NoobAI/Danbooru-lineage feature. On Pony (artist tags removed) or on natural-language models like Flux, a random booru artist name carries little to no weight - that's the model, not the node.
Same artist every run. A fixed seed reproduces the same draw by design. Set the seed to randomize (or use ComfyUI's randomize-after-generate) if you want a fresh pick each time.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| file_path | STRING | path to a CSV file with artist, trigger, count, and url columns | |
| count | INT | 11–1000 | number of artists to pick |
| delimiter | STRING | , | string used to join picked artist triggers |
| replace_underscore | BOOLEAN | true | replace underscores with spaces in output |
| escape_parens | BOOLEAN | true | escape ( and ) as \( and \) to prevent ComfyUI from interpreting them as attention weights |
| trailing_comma | BOOLEAN | false | append a trailing comma to the result |
| weight_by_count | BOOLEAN | false | use the count column as sampling weight — artists with more posts are more likely to be picked |
| seed | INT | 00–18446744073709550000 | random seed — same seed produces the same selection |
| prefix | STRING | string prepended to each artist trigger, e.g. 'artist:' or '@' | |
| exclude | STRING | comma-separated artist names to exclude from the pool before sampling (case-insensitive, underscores and spaces are equivalent) | |
| filter | STRING | only consider artists whose name contains this substring (case-insensitive); leave empty for no filtering |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| tags | STRING | — |