Multi-LoRA Loader (Wan i2v)
Stack Wan 2.2 i2v LoRAs in one node
- model
- model
- prompt
- prompt_with_triggers
- loaded_loras_info
- all_trigger_words
- filter_info
- filtered_loras_list
Wan 2.2 is where local video generation actually lives these days - it's the last open-weight Wan, and i2v (image-to-video) is the community's favorite mode because anchoring the first frame solves most consistency problems. Video LoRAs stack the same way image LoRAs do: one loader node per LoRA, chained. This node collapses that for the i2v case.
Multi-LoRA Loader (Wan i2v) is the i2v-specific member of the AAA Metadata System pack's loader family. It takes a MODEL (no CLIP - Wan conditions through its own text encoder), applies up to eight LoRAs, and returns the patched model plus a trigger-word-aware prompt. It's purpose-built for the Wan 2.2 i2v models, which is exactly why it does model-only patching: you're nudging the video diffusion weights, not a CLIP.
How it works
The engine is shared across the family, but the interesting bit is the directory filter. The node scans your LoRA library and filters to a Wan\i2v subfolder - the source literally joins "Wan" and "i2v" as the path it will scan. So it assumes you keep your i2v LoRAs in their own folder, separate from t2v. That's a real convention worth adopting anyway: Wan 2.2's two-pass architecture and the speed-LoRA scene mean you'll accumulate a lot of model-specific LoRAs, and mixing i2v and t2v LoRAs is a recipe for nonsense outputs.
Each of the eight slots (lora_1_enable / lora_1_name / lora_1_strength through slot 8) is model-strength only, then you get the family's search tools: search_filename, search_category, search_trigger_word and min_rating. Trigger words work the same way as the other loaders - query_civitai fetches them from the Civitai API when the pack's local database has none, force_civitai_fetch ignores the cache, and trigger_position/trigger_separator control injection.
Outputs
model- your patched model, straight into the video sampler.prompt_with_triggers- your prompt plus injected trigger words.prompt- your original prompt back.filter_info/filtered_loras_list- text reports of what your filters matched.all_trigger_words/loaded_loras_info- every trigger found and the load summary.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/AAA_Metadata_System.git
cd AAA_Metadata_System
pip install -r requirements.txt
Restart ComfyUI, or install "AAA Metadata System" via ComfyUI Manager. No model files to download. The pack is CC BY-NC licensed (non-commercial); commercial use needs a license from the author.
Common issues
- Empty dropdown - your i2v LoRAs aren't in the
Wan\i2vsubfolder it expects. Sort them, togglerefresh_lists(or restart), and rescan. - Filters don't shrink the dropdown - by design; they apply at execution and report in
filter_info. Togglerefresh_liststo rescan the folder. - Trigger words never appear - DB has no entry and
query_civitaiis off. Enable it (needs internet) or prompt the trigger manually. - Loaded a t2v LoRA into an i2v run - not a node bug; that's the folder-mixing trap. This node exists partly so you don't have to think about it.
One honest note: Wan 2.2's speed LoRAs are a whole drama of their own - they can flatten the model's motion and lighting if you stack them carelessly. This node won't stop you from doing that; it just makes it fast and tidy when you do.
Inputs (35)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| prompt | STRING | — | |
| search_filename | STRING | Search in LoRA filenames. Use commas to separate multiple terms. | |
| search_category | COMBO | Any | Filter by LoRA category |
| search_trigger_word | STRING | Search in trigger words from database. | |
| min_rating | INT | 00–5 | Minimum quality rating from database (0 = show all) |
| refresh_lists | BOOLEAN | false | Toggle to refresh LoRA list |
| query_civitai | BOOLEAN | false | Automatically query Civitai for trigger words |
| force_civitai_fetch | BOOLEAN | false | Force fetch from Civitai even if tags exist |
| trigger_position | COMBO | front | 2 options: front, back |
| trigger_separator | STRING | , | — |
| lora_1_enable | BOOLEAN | false | — |
| lora_1_name | COMBO | None | 1 options: None |
| lora_1_strength | FLOAT | 1.00-10–10 | — |
| lora_2_enable | BOOLEAN | false | — |
| lora_2_name | COMBO | None | 1 options: None |
| lora_2_strength | FLOAT | 1.00-10–10 | — |
| lora_3_enable | BOOLEAN | false | — |
| lora_3_name | COMBO | None | 1 options: None |
| lora_3_strength | FLOAT | 1.00-10–10 | — |
| lora_4_enable | BOOLEAN | false | — |
| lora_4_name | COMBO | None | 1 options: None |
| lora_4_strength | FLOAT | 1.00-10–10 | — |
| lora_5_enable | BOOLEAN | false | — |
| lora_5_name | COMBO | None | 1 options: None |
| lora_5_strength | FLOAT | 1.00-10–10 | — |
| lora_6_enable | BOOLEAN | false | — |
| lora_6_name | COMBO | None | 1 options: None |
| lora_6_strength | FLOAT | 1.00-10–10 | — |
| lora_7_enable | BOOLEAN | false | — |
| lora_7_name | COMBO | None | 1 options: None |
| lora_7_strength | FLOAT | 1.00-10–10 | — |
| lora_8_enable | BOOLEAN | false | — |
| lora_8_name | COMBO | None | 1 options: None |
| lora_8_strength | FLOAT | 1.00-10–10 | — |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| prompt | STRING | — |
| prompt_with_triggers | STRING | — |
| loaded_loras_info | STRING | — |
| all_trigger_words | STRING | — |
| filter_info | STRING | — |
| filtered_loras_list | STRING | — |