Nodes/ComfyUI Seed Wildcard Pack/Anima Artist Formatter
ComfyUI Node

Anima Artist Formatter

Weight) syntax

By sinanzoo2nd·Created 8 months ago·Updated 3 months ago· 0
Anima Artist Formatter
    • anima_formatted
    • sdxl_original_text
    text
    target_weight2.00

    Anima has its own way of expressing "I want this artist's style, strongly": the (@artist name:2) tag. If you've been writing artistname as a plain tag and wondering why the style feels weak, or if you're porting an SDXL prompt full of (artist:1.5) weight syntax into Anima, this is the node that translates for you. It takes a text list of artist names and reformats every one into Anima's native syntax - with a passthrough output that leaves your original untouched.

    Why the format matters

    Anima was trained on Danbooru tag data, and the (@artist:weight) form is how the model card itself recommends embedding artists - the @ marks an artist tag and the number sets how strongly the style applies. Plain artistname tags work, but the bracketed weighted form is where Anima actually dials in a style. The whole Anima ecosystem treats artist tags as the biggest single lever in the model, so getting this syntax right is not cosmetic.

    How it works

    The node takes text (a multiline string, comma-separated) and target_weight (a float, default 2.0) and does three passes:

    1. Strips every weight number - anything like :0.2 or :1.5 gets removed
    2. Strips unescaped parentheses (escaped \( survives, which matters for names with parens in them)
    3. Splits on commas, trims, and rewraps each name as (@name:target_weight)

    So artgerm (medium), wlop:1.2 becomes (@artgerm:2.0), (@wlop:2.0) - weights normalized to whatever target_weight you set, all to the same value. That uniform weighting is a feature for consistency, though it means you can't mix weights in one pass; vary per-tag by running a second pass or editing after.

    The two outputs:

    • anima_formatted - the rewritten string for your Anima positive prompt
    • sdxl_original_text - your input passed through completely untouched, for the SDXL branch of a parallel workflow

    That passthrough is the quietly clever bit: it lets you keep one shared prompt text and feed the formatted version to an Anima sampler while the SDXL fork gets the original with all its own weight syntax intact.

    Where it fits

    Typical wiring: an AnimaRandomArtistSelector (or a wildcard line, or your own list) produces comma-separated artist names → this node → positive prompt → Anima checkpoint. It also pairs with the pack's DanbooruTextCategorizer, whose ARTIST_PROMPT output is exactly the comma-joined artist list this node wants as input. Used that way you get the full pipeline: categorize a messy prompt, extract the artist block, and reformat it into Anima syntax in one chain.

    Install

    It ships in the ComfyUI Seed Wildcard Pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/sinanzoo2nd/ComfyUI-Seed-Wildcard-Pack
    

    or ComfyUI Manager → search Seed Wildcard → install, restart. No extra dependencies, no model files, no network calls - it's pure string surgery, which is exactly the kind of node that either works or is trivially debugged.

    Gotchas

    • Empty input returns empty strings, which is fine unless you expected a fallback - if your artist source comes back empty, you'll silently get nothing, so check upstream.
    • Only unescaped parens are stripped. If you feed it already-escaped text like kakao \(noise-111\), the parens survive - that's deliberate (some artist names have them), but it means your input needs to be consistent about escaping or you'll get a mix.
    • The target_weight applies to everything. If you need per-artist weights - (@name:1.2) for one, (@name:3) for another - this node isn't the tool; do that edit by hand or split the list.
    CategoryAnima/Text

    Inputs (2)

    NameTypeDefaultDescription
    textSTRING
    target_weightFLOAT2.000–10

    Outputs (2)

    NameTypeDescription
    anima_formattedSTRING
    sdxl_original_textSTRING