Rolling Artist
RollingArtist for Danbooru-tag models
- prompt
- artists_json
If you've ever stared at a fresh seed and wished the style would surprise you instead of the composition, RollingArtist is the node for you. It picks a handful of artists from a Danbooru artist list at random, assigns each a weight, and spits out a ready-to-paste prompt string. On an Illustrious or NoobAI-family model - where a single artist tag reliably shifts the whole look - that's a lazy man's style roulette: one run for painterly, the next for cel-shaded, without touching a LoRA.
It's not a model and not a sampler. It's a small text generator whose only job is producing that string, and it lives entirely inside ComfyUI's node graph.
How it works
The node ships with two CSV artist lists (1,700-ish names in danbooru_art_001.csv, plus a ~33k danbooru_art_full.csv), ordered by popularity - the README and the code both assume earlier rows = more works. artist_top_ratio (default 0.01) slices the top 1% of that list into a "top pool," and artist_top_count (default 1) decides how many of your selected artists must come from that pool. The rest get sampled from the long tail, everything's shuffled, and then weights are rolled.
The weight logic is the part worth understanding. You give weight_min, weight_max, and weight_total (defaults 0.2, 1.0, 2.0). Every weight stays inside the min/max band, and the sum is forced to equal weight_total - clamped to whatever's actually feasible for n artists, so setting weight_total to 20 with a max of 1.0 just quietly gives you n instead. Formatting rule to remember: a weight of exactly 1.0 renders bare (artist:Jane_Smith), anything else gets the paren-and-colon treatment ((artist:John_Doe:0.8)). The whole draw is seeded, so a fixed seed reproduces the same artist lineup every time.
The inputs that actually matter
- artist_count (default 3): how many artists total. The README's advice stands - 3–5 keeps the style focused instead of a muddy mashup.
- artist_top_count / artist_top_ratio: your "famous artists" dial. Raise
top_countif you want the recognizable names dominating; keep the ratio small on the big CSV or the "top" pool becomes meaningless. - seed: this is the one you actually change to reroll. Lock it in once you find a lineup you like.
- artists_prefix (default on): emits
artist:before every name, which is exactly how these tags appear in prompts.
Two outputs: prompt (the string - wire it into a CLIP Text Encode's text input, alongside your normal tags and quality prefix) and artists_json (a JSON blob with name/weight/top per artist, handy if you want to log or parse what got rolled). The optional exclude_artists field lets you blacklist names by exact match, and custom_csv_path points at your own artist list.
Install
Via ComfyUI Manager (search "ComfyUI_RollingArtist") or:
cd ComfyUI/custom_nodes
git clone https://github.com/StarAsh042/ComfyUI_RollingArtist
Then restart ComfyUI. Good news on dependencies: requirements.txt is empty - this is pure Python stdlib, nothing to download, no model files.
Where people get burned
- Custom CSVs with names containing spaces or parens break the output. A name like
hammer (sunset beach)in raw prompt syntax will not parse the way you think. The shipped lists are already normalized, but if you roll your own, run the bundledpython modify_danbooru_csv.pyto replace spaces/dashes with underscores and backslash-escape parentheses. - Pony doesn't do artist tags - Pony removed them in training, so this node is only really meaningful on Illustrious, NoobAI, and their fine-tunes. On Pony you'll get a string that mostly does nothing.
- Weight surprises. Because totals get clamped, a
weight_totalthat can't be met just silently changes. Keep it withinartist_count × mintoartist_count × maxand there are no surprises.
It's a niche little thing with basically zero community footprint, but if you're chasing stylistic variety on Danbooru-tag models, it does exactly one job and does it with a reproducible seed. Roll it, keep the good draws, throw away the rest.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| artist_count | INT | 31–10 | — |
| artist_top_count | INT | 11–10 | — |
| artist_top_ratio | FLOAT | 0.010.01–1 | — |
| artists_prefix | BOOLEAN | true | — |
| weight_min | FLOAT | 0.20.1–2 | — |
| weight_max | FLOAT | 1.00.1–2 | — |
| weight_total | FLOAT | 2.00–20 | — |
| seed | INT | 12340–4294967295 | — |
| custom_csv_pathopt | STRING | — | |
| exclude_artistsopt | STRING | — | |
| sort_by_weightopt | BOOLEAN | true | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| artists_json | STRING | — |