LZ Anima Artist Pack (Split + Encode)
The artist-chain node that makes Anima artist mixing actually work
- clip
- artist_pack
Anima's one real weakness is artist mixing. Its Qwen text encoder is great with natural language and tags - but blend two artist tags in a prompt the way you would on Illustrious and the results are inconsistent, which is exactly the complaint you'll see in every Anima thread: "anima artist mixing kinda sucks." LZ Anima Artist Pack is the first half of this pack's answer: it turns your artist chain into separate encoded conditionings plus per-artist weights, which a partner node (LZAnimaArtistCrossAttn) then injects directly into the model's cross-attention layers. Instead of hoping the text encoder merges the names, you're steering the attention itself.
What it does
Two inputs: clip and artist_chain - a multiline string of artist names, comma- or newline-separated, like wlop, sakimichan, krenz. Optionally a base_prompt. It splits the chain, encodes each artist separately (each as "name\nbase" when a base prompt is present, in the <artist>\n<prompt> shape Anima's training favors), and bundles everything into a single ANIMA_PACK output carrying the per-artist conditionings, labels, weights, and the base prompt's own conditioning.
The weight syntax is where it gets interesting - two systems that coexist:
(name:1.5)bracket syntax - classic CLIP weighting; it biases the text encoding layer. Nonlinear.::name::1.5weight syntax - this one is LZ's own: it sets a linear weight for the cross-attention injection stage that the CrossAttn node performs. Different layer, different feel.- They stack:
::(wlop:1.1)::0.8applies both.
Default weight is 1.0, range 0.0–4.0, and there's a soft cap of 32 artists (it truncates with a warning - and honestly, if you're past 32 you're past coherent).
The wider picture
This node never touches a model. It's the "split + encode" half; feed its ANIMA_PACK into LZAnimaArtistCrossAttn (the "inject" half) or into the all-in-one LZAnimaArtistNode which does both. Think of it as the prompt-preparation stage of a two-stage artist-mixing pipeline. The fork's lineage is worth knowing: this family is a modified port of An1X3R's Anima-Artist-Mixer (MIT-licensed, by An1X3R and 汐浮尘), so if you've seen that project, this is its ComfyUI-native form.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/liz-ils/ComfyUI-LZNodes
restart → LZNodes/Anima in the node menu. ComfyUI Manager: search ComfyUI-LZNodes. No extra dependencies.
Where people get burned
- This node alone does nothing visible. It outputs only an ANIMA_PACK. If you expected an image, you're missing the CrossAttn half - a very common first-run confusion.
- The
base_promptrecommendation is real: leave it blank and each artist encodes against nothing, which is weaker. The tooltip's suggested<artist>\n<base_prompt>format exists because it matches how Anima was trained. - Bracket weights ride the CLIP layer and
::weights ride the injection layer - they're not interchangeable dials. Reaching for(name:2)when you meant::name::2changes what you're tuning, and people get inconsistent results precisely because they conflate the two.
If you've been fighting Anima's tag-blending, this is the node that reframes the problem: stop asking the text encoder to average names, and start feeding one artist at a time into the model's attention with explicit weights. It's the sharpest tool in this pack.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| artist_chain | STRING | Artist chain. Separate with commas or newlines. Example: wlop, sakimichan, krenz Supports two weight syntaxes (can coexist): 1) Bracket syntax (wlop:1.5) - affects CLIP encoding layer, nonlinear 2) ::weight syntax ::wlop::1.5 - affects cross-attn injection layer, linear Default weight=1.0. Range [0.0, 4.0]. ::weight and brackets can be stacked: ::(wlop:1.1)::0.8 | |
| base_promptopt | STRING | Base prompt (optional). Recommend format: '<artist>\n<base_prompt>' |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| artist_pack | ANIMA_PACK | — |