Anima 角色造型台(服装 / 姿势 / 场景)
Five prompt slots, a lock on the door, and one-click dressing
- upstream_wardrobe
- text
- wardrobe
This is the node the pack is named for and the one you'll actually spend time in. It gives you five text boxes - character_tags, clothing_tags, pose_tags, expression_tags, scene_tags - a preset browser full of Danbooru tags synced from the author's prompt library, and three rows of one-click buttons that fill them. Then it does the part the other prompt-text nodes don't: it writes down who put each tag there, so a downstream roll can't quietly redecorate the character you just cast.
What it produces, and how
Feed it text and it produces a text string plus a wardrobe declaration - a structured object listing each tag, its slot, its authority tier, and a sequence number. That declaration is the whole trick, because a plain STRING wire can't carry any of this: it arrives as characters, so nothing downstream can distinguish your chosen outfit from something a pack appended. Slots are the bookkeeping: artist, count, character, appearance, relation, clothing, pose, expression, scene, free. Clothing, pose, expression, scene and artist are sticky (first writer locks them); the rest are replaceable, so swapping the character recalculates her features instead of leaving the old hair colour stuck in the prompt.
The Studio's own boxes go in at plugin-level authority, which outranks loose prose in your prompt. Its optional opt_prompt input takes the upstream text and treats it as body-level, so upstream prose gets deduplicated and organized rather than ignored. If you wire upstream_wardrobe in as well, the upstream declaration keeps its sequence numbers - which is how first-write-wins survives a chain of these nodes.
One detail worth trusting your graph to: leave all five boxes empty and the node is a byte-for-byte passthrough. The author regression-tests that. So you can insert it, queue, confirm the image didn't change, and then start choosing things.
The controls that matter
The four policy widgets - clothing_policy, pose_policy, expression_policy, scene_policy - are respect by default, meaning upstream wins and this node only registers its tags. Set one to override and it force-promotes your claim past everything. That's the escape hatch, and it's deliberately not the default.
character_feature_policy is the interesting inverse, and the reason to prefer this pack's approach over "lock everything": on the default override, features follow the character, so changing who she is changes the hair and eyes. Flip it to protect and upstream appearance tags get locked against downstream rewriting - useful when an img2img pass or a downstream node keeps re-adding its own idea of her face.
roll_level is what the buttons draw at, mapped straight onto the five-level NSFW scale. allow_public decides whether public and semi-public venues can carry high-exposure outfits. huge_breasts rewrites any body-size trait to huge breasts. order_mode at preserve keeps your word order and only inserts; normalize sorts by canonical slot order.
The buttons call back into the server's own roll engine - the same one the standalone Roll node uses - and write the result into the widgets, so you can see what was chosen and edit it before queuing. Worth knowing: the control values are English keys with Chinese display labels supplied by the pack's locale files, which is why old workflows that stored "1 · 擦边" still work. Hand-edit a workflow and write that display label into a combo value, though, and you're the one who gets the 参数校验未通过 error.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/lingdongbudong/Comfyui-Anima-Wardrobe
# restart ComfyUI
Manager users: search Anima-Wardrobe and install. No third-party Python dependencies, and the preset libraries (about 2.6 MB of JSON) ship in the repo, so there's no model download step. The panel is native JS served by the pack, talking to local routes it registers - presets, the slot contract, and the roll endpoints behind the buttons.
Worth stealing from the repo even if you never open it: after editing a workflow by hand, run the pack's own validator before you load it.
python tools/verify_workflow.py my_workflow.json # report mismatches
python tools/verify_workflow.py my_workflow.json --fix # patch them
python tools/selfcheck.py # full contract self-test, no ComfyUI needed
The validator compares every widget value in the graph against the node's declared options and checks the chain - so a combo value written as a Chinese label gets caught without restarting ComfyUI. There's no reason ComfyUI's whole ecosystem shouldn't ship that.
Where people get burned
A missing panel means a cached page, not a broken install. Restart ComfyUI, then hard-refresh the browser tab - the buttons and the report are frontend JS, and browsers hang onto it.
Confusing respect with override is the number-one head-scratcher. Under respect, if an upstream pack already claimed the clothing slot, your carefully typed outfit is registered and shadowed. The arbitration report renders inside the node UI and names the winner, so look there before assuming the node is broken.
Do not turn on protect globally. Locking appearance is exactly the failure mode the slot contract was built to avoid - you swap characters and the old hair colour comes back. Leave it on override unless you have a specific reason.
Last thing, for context: think of this as a place to park decisions, not a prompt enhancer. Keeping clothing separate from identity pushes in the same direction as Anima's own weakness - multi-character attribute bleeding - which is more than most prompt tooling manages.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| character_tags | STRING | — | |
| clothing_tags | STRING | — | |
| pose_tags | STRING | — | |
| expression_tags | STRING | — | |
| scene_tags | STRING | — | |
| clothing_policy | COMBO | respect | 2 options: respect, override |
| pose_policy | COMBO | respect | 2 options: respect, override |
| expression_policy | COMBO | respect | 2 options: respect, override |
| scene_policy | COMBO | respect | 2 options: respect, override |
| character_feature_policy | COMBO | override | 2 options: override, protect |
| order_mode | COMBO | preserve | 2 options: preserve, normalize |
| roll_level | COMBO | suggestive | 6 options: sfw, suggestive, explicit, hardcore, extreme, any |
| allow_public | BOOLEAN | false | — |
| huge_breasts | BOOLEAN | false | — |
| opt_promptopt | STRING | — | |
| upstream_wardrobeopt | ANIMA_WARDROBE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |
| wardrobe | ANIMA_WARDROBE | — |