Nodes/ComfyUI Smart Helper Nodes/Smart HunyuanVideo Lora Stack
ComfyUI Node

Smart HunyuanVideo Lora Stack

One node for all your HunyuanVideo LoRAs — up to 50 of them, if you're unhinged

By slvslvslv·Created 2 years ago·Updated about a month ago· 4
Smart HunyuanVideo Lora Stack
  • prev_lora
  • lora
  • lora_string
◄lora_count1►
◄blocks_typedouble_blocks►
◄lora_1_enabledtrue►
◄lora_1_nameNone►
◄lora_1_strength1.00►
◄lora_2_enabledtrue►
◄lora_2_nameNone►
◄lora_2_strength1.00►
◄lora_3_enabledtrue►
◄lora_3_nameNone►
◄lora_3_strength1.00►
◄lora_4_enabledtrue►
◄lora_4_nameNone►
◄lora_4_strength1.00►
◄lora_5_enabledtrue►
◄lora_5_nameNone►
◄lora_5_strength1.00►
◄lora_6_enabledtrue►
◄lora_6_nameNone►
◄lora_6_strength1.00►
◄lora_7_enabledtrue►
◄lora_7_nameNone►
◄lora_7_strength1.00►
◄lora_8_enabledtrue►
◄lora_8_nameNone►
◄lora_8_strength1.00►
◄lora_9_enabledtrue►
◄lora_9_nameNone►
◄lora_9_strength1.00►
◄lora_10_enabledtrue►
◄lora_10_nameNone►
◄lora_10_strength1.00►
◄lora_11_enabledtrue►
◄lora_11_nameNone►
◄lora_11_strength1.00►
◄lora_12_enabledtrue►
◄lora_12_nameNone►
◄lora_12_strength1.00►
◄lora_13_enabledtrue►
◄lora_13_nameNone►
◄lora_13_strength1.00►
◄lora_14_enabledtrue►
◄lora_14_nameNone►
◄lora_14_strength1.00►
◄lora_15_enabledtrue►
◄lora_15_nameNone►
◄lora_15_strength1.00►
◄lora_16_enabledtrue►
◄lora_16_nameNone►
◄lora_16_strength1.00►
◄lora_17_enabledtrue►
◄lora_17_nameNone►
◄lora_17_strength1.00►
◄lora_18_enabledtrue►
◄lora_18_nameNone►
◄lora_18_strength1.00►
◄lora_19_enabledtrue►
◄lora_19_nameNone►
◄lora_19_strength1.00►
◄lora_20_enabledtrue►
◄lora_20_nameNone►
◄lora_20_strength1.00►
◄lora_21_enabledtrue►
◄lora_21_nameNone►
◄lora_21_strength1.00►
◄lora_22_enabledtrue►
◄lora_22_nameNone►
◄lora_22_strength1.00►
◄lora_23_enabledtrue►
◄lora_23_nameNone►
◄lora_23_strength1.00►
◄lora_24_enabledtrue►
◄lora_24_nameNone►
◄lora_24_strength1.00►
◄lora_25_enabledtrue►
◄lora_25_nameNone►
◄lora_25_strength1.00►
◄lora_26_enabledtrue►
◄lora_26_nameNone►
◄lora_26_strength1.00►
◄lora_27_enabledtrue►
◄lora_27_nameNone►
◄lora_27_strength1.00►
◄lora_28_enabledtrue►
◄lora_28_nameNone►
◄lora_28_strength1.00►
◄lora_29_enabledtrue►
◄lora_29_nameNone►
◄lora_29_strength1.00►
◄lora_30_enabledtrue►
◄lora_30_nameNone►
◄lora_30_strength1.00►
◄lora_31_enabledtrue►
◄lora_31_nameNone►
◄lora_31_strength1.00►
◄lora_32_enabledtrue►
◄lora_32_nameNone►
◄lora_32_strength1.00►
◄lora_33_enabledtrue►
◄lora_33_nameNone►
◄lora_33_strength1.00►
◄lora_34_enabledtrue►
◄lora_34_nameNone►
◄lora_34_strength1.00►
◄lora_35_enabledtrue►
◄lora_35_nameNone►
◄lora_35_strength1.00►
◄lora_36_enabledtrue►
◄lora_36_nameNone►
◄lora_36_strength1.00►
◄lora_37_enabledtrue►
◄lora_37_nameNone►
◄lora_37_strength1.00►
◄lora_38_enabledtrue►
◄lora_38_nameNone►
◄lora_38_strength1.00►
◄lora_39_enabledtrue►
◄lora_39_nameNone►
◄lora_39_strength1.00►
◄lora_40_enabledtrue►
◄lora_40_nameNone►
◄lora_40_strength1.00►
◄lora_41_enabledtrue►
◄lora_41_nameNone►
◄lora_41_strength1.00►
◄lora_42_enabledtrue►
◄lora_42_nameNone►
◄lora_42_strength1.00►
◄lora_43_enabledtrue►
◄lora_43_nameNone►
◄lora_43_strength1.00►
◄lora_44_enabledtrue►
◄lora_44_nameNone►
◄lora_44_strength1.00►
◄lora_45_enabledtrue►
◄lora_45_nameNone►
◄lora_45_strength1.00►
◄lora_46_enabledtrue►
◄lora_46_nameNone►
◄lora_46_strength1.00►
◄lora_47_enabledtrue►
◄lora_47_nameNone►
◄lora_47_strength1.00►
◄lora_48_enabledtrue►
◄lora_48_nameNone►
◄lora_48_strength1.00►
◄lora_49_enabledtrue►
◄lora_49_nameNone►
◄lora_49_strength1.00►
◄lora_50_enabledtrue►
◄lora_50_nameNone►
◄lora_50_strength1.00►
◄lora_string►

Smart HunyuanVideo Lora Stack is the "I never want to add another LoRA node again" answer. Where the pack's SmartHVLoraSelect handles one LoRA at a time, this node gives you fifty slots - each with its own name, strength, and an on/off switch - all inside a single node. It's the rgthree Power Lora Loader idea applied to HunyuanVideo, minus the trigger-word fetching and plus a whole lot of vertical space.

Let's be honest about the 50: that's absurd, and the author knows it. The lora_count input controls how many slots actually process, so you use four slots, not fifty. The point is that you never have to insert another node when a workflow grows - you just flip a slot on.

How it works

Pick a blocks_type once (the same none/all/single_blocks/double_blocks choice as the Select node - double_blocks is the safe default for HunyuanVideo), set lora_count, and fill in the enabled slots. On execution it walks slots 1 through lora_count, skips anything disabled or set to None, and collects the rest into one HYVIDLORA list with per-LoRA strengths. Every enabled LoRA is appended to the human-readable lora_string output, one line each:

char_lora, str:0.8, blocks:(double_blocks)
style_lora, str:0.5, blocks:(double_blocks)

That string is your reproducibility receipt - wire it into SmartSaveText and every render logs exactly what it loaded.

The inputs that matter

  • lora_count - how many slots get processed (0–50).
  • blocks_type - the block-group selector applied to all stacked LoRAs.
  • lora_N_enabled - the toggle that actually matters when you're A/B-ing whether a LoRA helps.
  • lora_N_name - dropdown, defaults to None (slot unused).
  • lora_N_strength - per-LoRA, −10 to 10.
  • prev_lora - chain in a previous stack/select output to combine groups.

Outputs are the same pair as the Select: lora (HYVIDLORA) and lora_string (STRING).

What it's for, in context

HunyuanVideo's LoRA culture is real - people stack a character LoRA, a motion LoRA, and a style LoRA the way SDXL folks stacked style+character+concept. Doing that with five separate loader nodes clutters the graph fast. This collapses the whole stack to one node with visible on/off toggles, so you can disable the style LoRA between runs without rewiring anything. If your workflow lives in the pack's HunyuanVideo world, this is the stacker you reach for.

Installing it

It's part of SmartHelperNodes; install the pack once:

cd ComfyUI/custom_nodes
git clone https://github.com/slvslvslv/ComfyUI-SmartHelperNodes

Restart ComfyUI, or install via ComfyUI Manager by searching "SmartHelperNodes". No pip dependencies (requirements.txt is empty), no model downloads.

Common issues

Two things bite people. First, lora_count defaults to 1 - bump it or your second enabled slot silently does nothing. Second, the node only describes LoRAs; the lora output still needs a HunyuanVideo application node that understands HYVIDLORA to merge the weights, same as the Select. If you enable slots and see no change, that's the first thing to check. And if you ever genuinely fill all 50 slots, we should talk.

CategorySmartHelperNodes

Inputs (154)

NameTypeDefaultDescription
lora_countINT10–50—
blocks_typeCOMBOdouble_blocks4 options: none, all, single_blocks, double_blocks
lora_1_enabledBOOLEANtrue—
lora_1_nameCOMBONone1 options: None
lora_1_strengthFLOAT1.00-10–10—
lora_2_enabledBOOLEANtrue—
lora_2_nameCOMBONone1 options: None
lora_2_strengthFLOAT1.00-10–10—
lora_3_enabledBOOLEANtrue—
lora_3_nameCOMBONone1 options: None
lora_3_strengthFLOAT1.00-10–10—
lora_4_enabledBOOLEANtrue—
lora_4_nameCOMBONone1 options: None
lora_4_strengthFLOAT1.00-10–10—
lora_5_enabledBOOLEANtrue—
lora_5_nameCOMBONone1 options: None
lora_5_strengthFLOAT1.00-10–10—
lora_6_enabledBOOLEANtrue—
lora_6_nameCOMBONone1 options: None
lora_6_strengthFLOAT1.00-10–10—
lora_7_enabledBOOLEANtrue—
lora_7_nameCOMBONone1 options: None
lora_7_strengthFLOAT1.00-10–10—
lora_8_enabledBOOLEANtrue—
lora_8_nameCOMBONone1 options: None
lora_8_strengthFLOAT1.00-10–10—
lora_9_enabledBOOLEANtrue—
lora_9_nameCOMBONone1 options: None
lora_9_strengthFLOAT1.00-10–10—
lora_10_enabledBOOLEANtrue—
lora_10_nameCOMBONone1 options: None
lora_10_strengthFLOAT1.00-10–10—
lora_11_enabledBOOLEANtrue—
lora_11_nameCOMBONone1 options: None
lora_11_strengthFLOAT1.00-10–10—
lora_12_enabledBOOLEANtrue—
lora_12_nameCOMBONone1 options: None
lora_12_strengthFLOAT1.00-10–10—
lora_13_enabledBOOLEANtrue—
lora_13_nameCOMBONone1 options: None
lora_13_strengthFLOAT1.00-10–10—
lora_14_enabledBOOLEANtrue—
lora_14_nameCOMBONone1 options: None
lora_14_strengthFLOAT1.00-10–10—
lora_15_enabledBOOLEANtrue—
lora_15_nameCOMBONone1 options: None
lora_15_strengthFLOAT1.00-10–10—
lora_16_enabledBOOLEANtrue—
lora_16_nameCOMBONone1 options: None
lora_16_strengthFLOAT1.00-10–10—
lora_17_enabledBOOLEANtrue—
lora_17_nameCOMBONone1 options: None
lora_17_strengthFLOAT1.00-10–10—
lora_18_enabledBOOLEANtrue—
lora_18_nameCOMBONone1 options: None
lora_18_strengthFLOAT1.00-10–10—
lora_19_enabledBOOLEANtrue—
lora_19_nameCOMBONone1 options: None
lora_19_strengthFLOAT1.00-10–10—
lora_20_enabledBOOLEANtrue—
lora_20_nameCOMBONone1 options: None
lora_20_strengthFLOAT1.00-10–10—
lora_21_enabledBOOLEANtrue—
lora_21_nameCOMBONone1 options: None
lora_21_strengthFLOAT1.00-10–10—
lora_22_enabledBOOLEANtrue—
lora_22_nameCOMBONone1 options: None
lora_22_strengthFLOAT1.00-10–10—
lora_23_enabledBOOLEANtrue—
lora_23_nameCOMBONone1 options: None
lora_23_strengthFLOAT1.00-10–10—
lora_24_enabledBOOLEANtrue—
lora_24_nameCOMBONone1 options: None
lora_24_strengthFLOAT1.00-10–10—
lora_25_enabledBOOLEANtrue—
lora_25_nameCOMBONone1 options: None
lora_25_strengthFLOAT1.00-10–10—
lora_26_enabledBOOLEANtrue—
lora_26_nameCOMBONone1 options: None
lora_26_strengthFLOAT1.00-10–10—
lora_27_enabledBOOLEANtrue—
lora_27_nameCOMBONone1 options: None
lora_27_strengthFLOAT1.00-10–10—
lora_28_enabledBOOLEANtrue—
lora_28_nameCOMBONone1 options: None
lora_28_strengthFLOAT1.00-10–10—
lora_29_enabledBOOLEANtrue—
lora_29_nameCOMBONone1 options: None
lora_29_strengthFLOAT1.00-10–10—
lora_30_enabledBOOLEANtrue—
lora_30_nameCOMBONone1 options: None
lora_30_strengthFLOAT1.00-10–10—
lora_31_enabledBOOLEANtrue—
lora_31_nameCOMBONone1 options: None
lora_31_strengthFLOAT1.00-10–10—
lora_32_enabledBOOLEANtrue—
lora_32_nameCOMBONone1 options: None
lora_32_strengthFLOAT1.00-10–10—
lora_33_enabledBOOLEANtrue—
lora_33_nameCOMBONone1 options: None
lora_33_strengthFLOAT1.00-10–10—
lora_34_enabledBOOLEANtrue—
lora_34_nameCOMBONone1 options: None
lora_34_strengthFLOAT1.00-10–10—
lora_35_enabledBOOLEANtrue—
lora_35_nameCOMBONone1 options: None
lora_35_strengthFLOAT1.00-10–10—
lora_36_enabledBOOLEANtrue—
lora_36_nameCOMBONone1 options: None
lora_36_strengthFLOAT1.00-10–10—
lora_37_enabledBOOLEANtrue—
lora_37_nameCOMBONone1 options: None
lora_37_strengthFLOAT1.00-10–10—
lora_38_enabledBOOLEANtrue—
lora_38_nameCOMBONone1 options: None
lora_38_strengthFLOAT1.00-10–10—
lora_39_enabledBOOLEANtrue—
lora_39_nameCOMBONone1 options: None
lora_39_strengthFLOAT1.00-10–10—
lora_40_enabledBOOLEANtrue—
lora_40_nameCOMBONone1 options: None
lora_40_strengthFLOAT1.00-10–10—
lora_41_enabledBOOLEANtrue—
lora_41_nameCOMBONone1 options: None
lora_41_strengthFLOAT1.00-10–10—
lora_42_enabledBOOLEANtrue—
lora_42_nameCOMBONone1 options: None
lora_42_strengthFLOAT1.00-10–10—
lora_43_enabledBOOLEANtrue—
lora_43_nameCOMBONone1 options: None
lora_43_strengthFLOAT1.00-10–10—
lora_44_enabledBOOLEANtrue—
lora_44_nameCOMBONone1 options: None
lora_44_strengthFLOAT1.00-10–10—
lora_45_enabledBOOLEANtrue—
lora_45_nameCOMBONone1 options: None
lora_45_strengthFLOAT1.00-10–10—
lora_46_enabledBOOLEANtrue—
lora_46_nameCOMBONone1 options: None
lora_46_strengthFLOAT1.00-10–10—
lora_47_enabledBOOLEANtrue—
lora_47_nameCOMBONone1 options: None
lora_47_strengthFLOAT1.00-10–10—
lora_48_enabledBOOLEANtrue—
lora_48_nameCOMBONone1 options: None
lora_48_strengthFLOAT1.00-10–10—
lora_49_enabledBOOLEANtrue—
lora_49_nameCOMBONone1 options: None
lora_49_strengthFLOAT1.00-10–10—
lora_50_enabledBOOLEANtrue—
lora_50_nameCOMBONone1 options: None
lora_50_strengthFLOAT1.00-10–10—
prev_loraoptHYVIDLORAFor loading multiple LoRAs
lora_stringoptSTRING—

Outputs (2)

NameTypeDescription
loraHYVIDLORA—
lora_stringSTRING—