π 1. Artist Iterator (V2)
Batch-test 100 artists without babysitting ComfyUI
- artist_tag
- current_index
- total_count
- index_string
You've got a base prompt you like and twenty artist tags you want to run it through. The boring way: edit the prompt box, hit queue, compare, repeat twenty times. This node is the not-boring way - it hands you one artist per queue run, so you can queue the whole batch and walk away.
ArtistListIterator is the core of the g7b2/ComfyUI-Artist-Tester pack, and it's about as simple as the idea gets. You paste a list, one artist per line, and it outputs a single line plus some counters. It doesn't render anything, doesn't touch a model, needs no API key. It's a prompt-management node, and that's the point: batch-testing artists is the classic "the UI has no button for this" ComfyUI job - batched prompt variations are exactly what a form interface can't express - and this is a tiny dedicated tool for it.
How it works
The node keeps a counter in memory, keyed by an MD5 hash of your list's text. That hash is the "counter isolation" the README brags about: give two of these nodes different lists and they each track their own position without clobbering each other. The flip side is the counter is bound to the list content - change a line or reorder, and the hash changes, so the counter starts over.
There are four select_mode options:
- Auto Increment (default): 0, 1, 2β¦ wraps around. Nothing clever.
- Random (No Repeat): the one you want for a long batch. The seed shuffles the list's indices deterministically, like building a playlist, and the counter walks it. Run a hundred artists with one seed and you'll see every one exactly once before any repeats.
- Random (Pure): old behavior, uses Python's global random, can hit the same artist twice in a row. Fine for A/B vibes, wrong for a clean sweep.
- Fixed (Use Input): pick a specific line by feeding
index_input.
Two implementation details matter. The node overrides IS_CHANGED to return NaN, which tells ComfyUI "never cache me" - without that, ComfyUI would run the node once, cache it, and you'd be stuck on artist #1 forever. And the counter lives in Python memory, not in your workflow JSON: restart ComfyUI and you're back at line one.
The inputs you'll actually touch
text_list- one artist per line, whitespace trimmed, blank lines skipped. The default isGreg Rutkowski,artist:wlop,artist:ciloranko- note theartist:prefix, the CivitAI-style tag format many models were trained on.select_mode- described above.seed- only does anything in Random (No Repeat). It reshuffles the playlist; the other modes ignore it entirely.reset_counter- labelled "Reset (Run Once)" for a reason. Flip it on, queue once, flip it back off, or it resets every run and you never leave artist #1.index_input(optional) - for Fixed mode.
Outputs and wiring
You get four: artist_tag (the line itself), current_index (0-based), total_count, and index_string - a zero-padded string like 001 whose padding adapts to your list length, so filenames sort correctly whether you have 9 artists or 100. The canonical wiring is artist_tag β ArtistPromptComposer's artist_tag input, and index_string β the save node's filename prefix if you want per-artist files.
Installing
Same deal as the whole pack: ComfyUI Manager, search "ComfyUI-Artist-Tester", or
cd ComfyUI/custom_nodes
git clone https://github.com/g7b2/ComfyUI-Artist-Tester.git
then restart. Zero dependencies, zero model downloads - pyproject.toml lists an empty dependencies, and all three nodes are pure Python. It shows up under the "π¨ Artist Tester" category.
Gotchas worth knowing
- The counter is session-only. If ComfyUI restarts or crashes mid-batch, you're back at artist #1; there's no resume built in.
- In Random (No Repeat), the permutation depends on the seed and the list length. Add or delete a line mid-batch and the shuffle changes - you can see repeats at the boundary.
- Changing the seed mid-batch reshuffles too, which can re-hit an artist you already did.
- It's a tiny MIT pack (v2.0.0, beta) with essentially no community footprint, so like any custom node it's worth a skim of the source before you trust it with a production workflow.
That's the whole tool. Paste your list, pick a mode, queue the batch.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| text_list | STRING | Greg Rutkowski artist:wlop artist:ciloranko | β |
| select_mode | COMBO | Auto Increment | 4 options: Auto Increment, Random (No Repeat), Random (Pure), Fixed (Use Input) |
| seed | INT | 00β18446744073709550000 | β |
| reset_counter | BOOLEAN | false | β |
| index_inputopt | INT | 00β18446744073709550000 | β |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| artist_tag | STRING | β |
| current_index | INT | β |
| total_count | INT | β |
| index_string | STRING | β |