LoraLoaderVanilla
The plain LoRA loader that hands you trigger words as data
- model
- clip
- MODEL
- CLIP
- civitai_tags_list
- meta_tags_list
- lora_name
This is the heart of the ComfyUI-Lora-Auto-Trigger-Words pack: a normal, full LoRA loader - MODEL in, MODEL + CLIP out - that also gives you the trigger words for whatever LoRA you loaded, as two list outputs you can pipe anywhere. It looks like a stock loader until you realize the right side is spitting out data the stock loader keeps hidden in a browser tab.
The problem it's aimed at is the most boring recurring failure in local generation: "LoRA not working," and the checklist answer "did you include the trigger word?" People tab over to Civitai, read the trained words, type them in by hand, and forget them by next week. This pack turns that manual step into a graph connection. If you already use rgthree's Power Lora Loader or Lora Manager, you've seen this data in a right-click dialog; this loader is the version that hands it to you as lists you can actually wire into the prompt.
How it works
Pick the LoRA in lora_name, set strength_model and strength_clip (both default 1.0; the old 0.5–0.8 rule of thumb applies on SDXL-family bases), and it loads exactly like any ComfyUI LoRA loader. What's new: before applying, it builds the two tag lists.
civitai_tags_list- computes the file's SHA-256, queries Civitai's publicmodel-versions/by-hashendpoint, and pulls the model'strainedWords. Results are cached inloras_tags.json, so it only hits the network once per LoRA.force_fetchre-runs the lookup even when cached.meta_tags_list- parses the safetensors header's__metadata__forss_tag_frequencyand returns the training tags sorted by how often they appeared during training. This works with no network at all, and it's the source that's most likely to match what the trainer actually prompted.
append_loraname_if_empty is the fallback: if both lists come back empty, it adds the LoRA's filename as a tag, on the theory that some trainers make the filename the trigger. It's a guess, not a guarantee, but a better empty-handed default than nothing.
Outputs: MODEL and CLIP go to your sampler chain as usual; civitai_tags_list and meta_tags_list (both LIST) feed TagsFormater to view or TagsSelector to filter; lora_name returns the resolved filename, handy if you overrode it. There's also an optional override_lora_name string input - wire LoraListNames (or any lora_name output) into it and it ignores the dropdown, which is how you build dynamic workflows where the LoRA is chosen elsewhere.
Vanilla vs Advanced
"Vanilla" means no frills: the dropdown has no thumbnail preview and there's no "View info..." right-click option. The LoraLoaderAdvanced version adds those, but requires pythongosssss/ComfyUI-Custom-Scripts installed. Same loading logic underneath, so pick Vanilla if you don't want the dependency.
Installing
ComfyUI Manager, search "ComfyUI-Lora-Auto-Trigger-Words", install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/idrirap/ComfyUI-Lora-Auto-Trigger-Words
No model downloads and no extra Python deps for the Vanilla node - the Civitai lookup just uses requests, which ComfyUI already ships. The two real gotchas: the Civitai fetch needs the file to be on Civitai under its hash (no match or no internet → empty list), and the first run on a big LoRA does a full SHA-256 read of the file, which takes a moment. Neither is a bug; both are the price of reading tags you didn't have to type.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| lora_name | COMBO | 0 options: | |
| strength_model | FLOAT | 1.00-10–10 | — |
| strength_clip | FLOAT | 1.00-10–10 | — |
| force_fetch | BOOLEAN | false | — |
| append_loraname_if_empty | BOOLEAN | false | — |
| clipopt | CLIP | — | |
| override_lora_nameopt | STRING | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| civitai_tags_list | LIST | — |
| meta_tags_list | LIST | — |
| lora_name | STRING | — |