Anima Prompt Studio Advanced LoRA
Let <lora:> tags in your prompt build the stack
- lora_stack
- positive_prompt
- negative_prompt
- anima_mod_guidance_quality_tags
- anima_mod_guidance_negative_prompt
- use_anima_mod_guidance
- use_negative_anima_mod_guidance
- metadata_prompt
- metadata_negative_prompt
- width
- height
- LORA_STACK
If you've come from A1111, you know the feeling: you type <lora:name:0.8> in the prompt and the LoRA just... loads. ComfyUI never worked that way - LoRAs are graph nodes, not prompt syntax. Anima Prompt Studio Advanced LoRA splits the difference: it's the full Advanced editor, plus it scans your prompt fields for <lora:...> tags and emits an actual LORA_STACK for the graph to consume. The prompt stays human-readable, the LoRA stack still ends up on the model.
What it is
Same editor and execution lifecycle as Prompt Studio Advanced - reorderable positive/negative fields, NAIA fill, resolution buckets, wildcard control, Mod Guidance routing, metadata outputs. On top of that it adds one optional input and one extra output:
lora_stack(optional) - a stack you feed in from Anima LoRA Preset or another source.LORA_STACK(output) - your input stack, followed by every LoRA extracted from enabled positive fields, in field order.
So the output stack is "what you gave me, plus whatever <lora:...> tags appeared in the prompt." Wire it to a LoRA loader or straight into the AiO Generator's lora_stack socket and the tags in your prompt become applied LoRAs.
The syntax it understands
The extraction targets A1111 and LoraManager style:
<lora:name:model[:clip]>
name is the LoRA file, model is the model-side weight, and the optional clip weight is the text-encoder side. Two LoRAs in a field produce two entries in the stack. Tags are extracted from enabled positive fields in the order the fields appear, so prompt order maps to stack order - put your strongest LoRA earlier if ordering matters to you.
The extra output is what makes this node worth it over the plain Advanced version: one wire to the model and your prompt is its own LoRA manifest. Combined with the pack's wildcard support (a wildcard can expand into a <lora:...> tag at queue time), it's the full "prompt embeds its own LoRAs" workflow in one node.
The inputs that matter
Everything meaningful is inherited from Prompt Studio Advanced: use_naia / consume_naia_on_queue for NAIA fill, use_anima_mod_guidance / use_negative_anima_mod_guidance for quality routing, and the resolution/wildcard controls. The internal advanced_fields JSON is front-end managed - don't hand-edit. Outputs are the standard ten (positive, negative, mod guidance x2, booleans x2, metadata x2, width, height) plus the LORA_STACK.
Install and gotchas
Same pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/n0va39/ComfyUI-EasyUseAnima
cd ComfyUI-EasyUseAnima && pip install -r requirements.txt
Restart ComfyUI; Manager: "ComfyUI EasyUse Anima".
Where people trip: a malformed tag (missing colon, wrong filename) usually produces no stack entry rather than an error - check your LORA_STACK output with a display node if nothing seems to apply. And the extraction only reads enabled positive fields; a <lora:...> sitting in the negative field or a disabled field is silently ignored. LoRA weights are the A1111 convention (0.5–1.0 typical); Anima LoRAs generally train fast and stack well, but three or more at high weight is where even this model starts to bleed.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| use_naia | BOOLEAN | false | Internal request flag. The front-end exposes this as the NAIA Prompt field's 'Fill from NAIA' button, which fills that field with a fresh NAIA random prompt. |
| consume_naia_on_queue | BOOLEAN | true | Internal one-shot mode. Successful NAIA fills are saved with the request flag off so loaded workflows reuse the stored prompt. |
| use_anima_mod_guidance | BOOLEAN | false | true: positive output excludes quality fields and sends them through the mod guidance quality output. |
| resolution_bucket | STRING | 1024 | Internal selected latent resolution bucket. |
| resolution_size | STRING | 1024 * 1024 (1:1) | Internal selected latent resolution, formatted as width * height (ratio). |
| resolution_custom_width | INT | 102432–8192 | Internal custom latent width. Values are snapped to multiples of 32. |
| resolution_custom_height | INT | 102432–8192 | Internal custom latent height. Values are snapped to multiples of 32. |
| pin_trigger_tags_to_front | BOOLEAN | false | Legacy internal flag. Trigger field Pin buttons control trigger placement. |
| advanced_fields | STRING | [{"id":"positive_quality","pane":"positive","type":"quality","label":"Quality Tags","text":"newest, masterpiece, best quality, score_8, score_7:, highres, absurdres, very aesthetic","height":72,"enabled":true},{"id":"positive_artist","pane":"positive","type":"artist","label":"Artist Tags","text":"","height":72,"enabled":true},{"id":"positive_trigger","pane":"positive","type":"trigger","label":"Trigger Words","text":"","height":72,"enabled":true,"pin":true},{"id":"positive_general","pane":"positive","type":"general","label":"General Tags","text":"","height":150,"enabled":true},{"id":"positive_trailing","pane":"positive","type":"general","label":"General Tags","text":"location, (A highly aesthetic Pixiv style illustration, clean composition, high-quality digital art, detailed background, sharp focus on facial expressions.:0.6)","height":72,"enabled":true},{"id":"negative_general","pane":"negative","type":"general","label":"General Tags","text":"","height":120,"enabled":true}] | Internal JSON payload for Advanced Prompt Studio fields. |
| use_negative_anima_mod_guidance | BOOLEAN | false | true: negative output excludes negative quality fields and sends them through the negative Mod Guidance output. |
| wildcard_mode | COMBO | 일반 | General expands deterministically; Sequential uses seed % option_count. Seed control independently decides the next seed. |
| wildcard_seed | INT | 00–18446744073709550000 | Wildcard seed used by Advanced Prompt Studio fields. Browser/public editing and next-seed range: 0..9007199254740991. The Python backend continues accepting uint64 values for legacy workflow validation, but values above the public maximum are best-effort in the browser because JavaScript may already have lost integer precision. Fixed does not intentionally advance a legacy value; increment, decrement, and randomize return the next seed to the public range. |
| wildcard_seed_after_generate | COMBO | fixed | After an accepted queue: keep the seed fixed, randomize it, or increment it by one. |
| lora_stackopt | LORA_STACK | Optional LoRA stack. Prompt-tag LoRAs are appended in positive-field order. |
Outputs (11)
| Name | Type | Description |
|---|---|---|
| positive_prompt | STRING | Final positive prompt assembled from enabled positive fields. |
| negative_prompt | STRING | Final negative prompt assembled from enabled negative fields. |
| anima_mod_guidance_quality_tags | STRING | Positive quality fields routed to Anima Mod Guidance. |
| anima_mod_guidance_negative_prompt | STRING | Negative quality fields routed to Anima Mod Guidance. |
| use_anima_mod_guidance | BOOLEAN | Boolean flag passed through for Anima Mod Guidance workflow control. |
| use_negative_anima_mod_guidance | BOOLEAN | Boolean flag passed through for negative Anima Mod Guidance workflow control. |
| metadata_prompt | STRING | Positive metadata prompt with metadata filters applied. |
| metadata_negative_prompt | STRING | Negative metadata prompt with metadata filters applied. |
| width | INT | Selected latent width. |
| height | INT | Selected latent height. |
| LORA_STACK | LORA_STACK | Input LoRA stack followed by LoRAs extracted from enabled positive fields. |