Nodes/ComfyUI-LZNodes/LZ Anima Artist Pack (Split + Encode)
ComfyUI Node

LZ Anima Artist Pack (Split + Encode)

The artist-chain node that makes Anima artist mixing actually work

By liz-ils·Created 7 months ago·Updated 13 days ago· 1
LZ Anima Artist Pack (Split + Encode)
  • clip
  • artist_pack
artist_chain
base_prompt

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.5 weight 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.8 applies 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_prompt recommendation 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::2 changes 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.

CategoryMyCustomNodes/Anima

Inputs (3)

NameTypeDefaultDescription
clipCLIP
artist_chainSTRINGArtist 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_promptoptSTRINGBase prompt (optional). Recommend format: '<artist>\n<base_prompt>'

Outputs (1)

NameTypeDescription
artist_packANIMA_PACK