SplitLoraList
Sorting high-noise and low-noise LoRAs before they load
- STRING
- STRING
If you've run a Wan 2.2 style high/low-noise expert setup, you already know the annoyance: LoRAs come in two flavours, one for the high-noise model and one for the low-noise model, and the two lists have to reach two different samplers. SplitLoraList is the node that takes a combined list and cuts it in half.
It's a one-liner, but it's the piece that makes the pack's prompt files usable for two-expert workflows: your TOML can describe all the LoRAs for a generation in one place, PromptDecode emits them as a single string, and this node separates them into the two streams the samplers need.
How it works
r = lora_list.split("\n--\n", 1)
return (r[0], r[1] if len(r) == 2 else "")
A single split on the literal line --, at most once. Everything above the separator goes out of the first output, everything below goes out of the second, and if there's no separator at all the second output is an empty string. The first output is the "high noise" side and the second is "low noise", matching the convention the pack's own parser uses: PromptDecode builds its LoRA output as <lora:...> tags, and if any of them were marked low-noise it appends a -- line and then those tags.
That convention matters elsewhere in the pack. MultipartCLIPTextEncode stops loading when it hits a -- line - deliberately, so a full combined list handed to a high-noise stage doesn't quietly apply both sets. LoadLoraFromLoraList does not have that guard, so feeding it a combined list loads everything. This node is how you avoid having to remember which is which:
PromptDecode.lora_list ──► SplitLoraList ──► LoadLoraFromLoraList (high) ──► KSampler 1
└► LoadLoraFromLoraList (low) ──► KSampler 2
Inputs and outputs
lora_list - a multiline STRING (tooltip: "Lora list."). Two outputs, both STRING: high noise, then low noise.
Install
Manager search for the pack, or:
cd ComfyUI/custom_nodes
git clone https://github.com/morino-kumasan/comfyui-toml-prompt
restart. Nothing to install - requirements.txt is empty and this node is pure string handling. Ignore the README's install block; it still uses the pack's old comfyui-utils name over SSH.
Where people get burned
The separator is the exact line --, not a dash pair anywhere. \n--\n means a line that is nothing but two hyphens. A trailing -- at the end of a tag list works (the split yields an empty second half); a -- with a space after it, or a ---, does not, and you'll get everything in the high-noise output.
An empty low output is not an error. No separator means "no low-noise LoRAs", and empty strings are fine to feed into the loaders - they iterate zero lines. Nothing to debug.
Splitting doesn't sort. It splits on a marker someone has to have written. If your combined list has no marker because nothing upstream emits one, this node can't invent the distinction - build the two lists with two MultipleLoraTagLoader nodes instead.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| lora_list | STRING | Lora list. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | High noise lora list. |
| STRING | STRING | Low noise lora list. |