Anima Filtered Random LoRA Loader (28/40/52 Auto)
Keyword-filter your way through a big Anima LoRA folder
- model
- clip
- MODEL
- CLIP
- positive_text
- negative_text
- positive
- negative
- preview
The AnimaFilteredRandomLoRALoader is the sibling of Anima Random LoRA Loader, built for the case the 3-folder version handles badly: one big, mixed LoRA folder where you want to pull out specific LoRAs by name and shuffle among those. Instead of three folder slots, it takes one folder plus a keyword filter, and picks randomly from whatever survives the filter - every pick going through the same automatic 28/40 block remap as the rest of the pack.
It's an Anima-only port of the "Filtered Random LoRA Loader" from shin131002's RandomLoRALoader project, with the remap baked in. Same shared design as the 3-folder node: no LoRA Block Weight support, no on-disk remap cache (everything remaps in-memory per run), folder scans skip _29Bremap / _29Bremap_ext files, and remap settings are one shared set rather than per-selection.
The inputs that matter
The keyword filtering is the whole point:
lora_folder_path- the single folder to scan.keyword_filter- space-separated keywords, e.g.style blue_hair. Multiple words can be combined with quotes or brackets for phrases - the same parsing the original RandomLoRALoader uses.filter_mode-AND(a LoRA must match every keyword) orOR(any keyword suffices). AND is the default and usually what you want.search_in_metadata- off by default, filtering matches against filenames only. Turn it on to also match against each safetensors file's embedded metadata (trigger words, training info). First run builds a metadata cache, so that initial scan is slower - subsequent runs are fine.
Everything else is the standard random-loader set: model / clip, additional_prompt_positive / additional_prompt_negative, model_strength / clip_strength (fixed "1.0" or a range like "0.4-0.8"), num_loras (0–20), trigger_word_source (the json_combined / json_random / json_sample_prompt / metadata dropdown), seed, and the shared remap settings: auto_remap, extend_to_new_layers, blend_ratio, extend_strength, manifest.
Outputs
Identical shape to the 3-folder node: model, clip, positive_text and negative_text (prompt strings with each pick as <lora:name:model_strength:clip_strength>, trigger words), ready-made positive and negative CONDITIONING, and a preview IMAGE showing what got selected. Wire the CONDITIONING straight into your sampler and you're done - no text encoder needed.
What it's for, and what it isn't
Reach for this when your collection is too big or too disorganized for the 3-folder approach to make sense. Filename discipline matters more than usual here: if your LoRAs are named a1.safetensors, a2.safetensors, a keyword filter has nothing to grab onto. And because it's Anima-only, it's not a general SDXL/Flux shuffle tool - if that's what you need, the original RandomLoRALoader pack covers those. One behavior to expect: a randomly-selected LoRA that references more blocks than the connected model has raises an error and stops the run, the pack's standard loud-failure choice.
Install
Same pack, same drill:
cd ComfyUI/custom_nodes
git clone https://github.com/shin131002/ComfyUI-Anima29B-Remap.git
or ComfyUI Manager → "Anima-2.9B Remap", then restart. No extra dependencies, no model downloads. The repo is frozen in favor of ComfyUI-Anima-Remap - don't install both, since they register the same node IDs - and as with everything in this pack, remapped LoRA files are non-commercial derivatives under the CircleStone Labs license, while the images they generate are yours to use commercially.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| additional_prompt_positive | STRING | — | |
| additional_prompt_negative | STRING | — | |
| lora_folder_path | STRING | — | |
| include_subfolders | BOOLEAN | true | — |
| unique_by_filename | BOOLEAN | true | — |
| keyword_filter | STRING | — | |
| filter_mode | COMBO | AND | 2 options: AND, OR |
| search_in_metadata | BOOLEAN | false | — |
| model_strength | STRING | 1.0 | — |
| clip_strength | STRING | 1.0 | — |
| num_loras | INT | 10–20 | — |
| trigger_word_source | COMBO | json_combined | 4 options: json_combined, json_random, json_sample_prompt, metadata |
| seed | INT | 00–18446744073709550000 | — |
| auto_remap | BOOLEAN | true | — |
| extend_to_new_layers | BOOLEAN | false | — |
| blend_ratio | FLOAT | 1.000–1 | — |
| extend_strength | FLOAT | 0.500–2 | — |
| manifest | COMBO | 4 options: Auto (Recommended), expand_manifest_28_40.json, expand_manifest_28_52_composed.json, expand_manifest_40_52.json |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| positive_text | STRING | — |
| negative_text | STRING | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| preview | IMAGE | — |