ComfyUI Node

Rolling Artist

RollingArtist for Danbooru-tag models

By StarAsh042·Created 2 years ago·Updated 9 months ago· 2
Rolling Artist
    • prompt
    • artists_json
    artist_count3
    artist_top_count1
    artist_top_ratio0.01
    artists_prefixtrue
    weight_min0.2
    weight_max1.0
    weight_total2.0
    seed1234
    custom_csv_path
    exclude_artists
    sort_by_weighttrue

    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_count if 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 bundled python modify_danbooru_csv.py to 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_total that can't be met just silently changes. Keep it within artist_count × min to artist_count × max and 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.

    CategoryRollingArtist

    Inputs (11)

    NameTypeDefaultDescription
    artist_countINT31–10
    artist_top_countINT11–10
    artist_top_ratioFLOAT0.010.01–1
    artists_prefixBOOLEANtrue
    weight_minFLOAT0.20.1–2
    weight_maxFLOAT1.00.1–2
    weight_totalFLOAT2.00–20
    seedINT12340–4294967295
    custom_csv_pathoptSTRING
    exclude_artistsoptSTRING
    sort_by_weightoptBOOLEANtrue

    Outputs (2)

    NameTypeDescription
    promptSTRING
    artists_jsonSTRING