Multi-LoRA Loader (Qwen)
Stack Qwen-Image LoRAs without the CLIP dance
- model
- model
- prompt
- prompt_with_triggers
- loaded_loras_info
- all_trigger_words
- filter_info
- filtered_loras_list
Qwen-Image is Alibaba's 20B image family - the one whose Edit line basically became the open instruction-editing standard. If you're running it and you stack LoRAs, you'll discover the same annoyance as everywhere else: one LoraLoader node per LoRA, chained in series. Multi-LoRA Loader (Qwen) collapses that chain into a single node that applies up to eight Qwen LoRAs at once.
It's the Qwen-specialized member of the AAA Metadata System pack's loader family, and the thing that sets it apart from the Flux loader is right in the input list: there's no CLIP. Qwen-Image conditions through its own Qwen text encoder rather than a CLIP object, so the node takes a MODEL only, patches it, and returns the model plus a trigger-word-aware prompt. REQUIRES_CLIP = False isn't a simplification - it's the correct wiring for this architecture.
How it works
Same engine as the rest of the family (they all inherit from one base loader in the pack source). It scans your LoRA library and filters to the Qwen subdirectory - the code filters on a Qwen folder under your LoRA path - then presents up to eight slots (lora_1_enable/lora_1_name/lora_1_strength through slot 8). Each slot is model strength only; no CLIP strength, again because there's no CLIP.
On top of the slots you get the standard search tools: search_filename (comma-separated substring match), search_category (style/character/pose/effect…), search_trigger_word (against the pack's local LoRA database), and min_rating (0–5 quality filter). And the trigger-word machinery: query_civitai fetches trigger words from the Civitai API when the DB has none, force_civitai_fetch ignores the cached copy, and trigger_position (front/back) plus trigger_separator control how words get injected into your prompt.
Outputs
model- the patched model, straight into your sampler.prompt_with_triggers- your prompt with the LoRAs' trigger words inserted.prompt- your original prompt, returned untouched (handy if you only want the patch).filter_info/filtered_loras_list- text reports of what your filters matched.all_trigger_words/loaded_loras_info- every trigger found and the per-LoRA 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 search "AAA Metadata System" in ComfyUI Manager. No model downloads. Worth knowing: the pack is CC BY-NC for non-commercial use; commercial use requires a license from the author.
Common issues
- Empty dropdown - your Qwen LoRAs aren't in a
Qwensubfolder. The loader is hardcoded to that directory, so sort your files and togglerefresh_lists(or restart) to rescan. - Search filters appear to do nothing to the dropdown - by design; the dropdown is built at node creation and filters run at execution. Check
filter_infofor what actually matched, and togglerefresh_liststo rescan. - No trigger words injected - either the DB lacks an entry and
query_civitaiis off (turn it on; it needs internet), or the LoRA simply has no recorded trigger.
Is this the node that makes Qwen-Image magical? No - but if you've got a few character or style LoRAs on top of Qwen-Image, it turns a ladder of loader nodes into one box, and the trigger-word injection saves you from memorizing each LoRA's magic phrase. Just get the folder layout right first.
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 | — |