DEV Community

AI-KSK
AI-KSK

Posted on Originally published at youtube.com

MiniMax H3 Action Director: One Graph, Three Modes, Nine LoRA Presets

The useful starting point for this action-video workflow is not its most dramatic promotional claim. It is the control panel: which generation mode is selected, which prompt belongs to that mode, and which LoRA coefficients actually reach the model?

The supplied MiniMax H3 Action Director export is one workflow with 95 nodes and 160 links. Its nine presets are arithmetic recipes inside that graph, not nine independent workflow files. It supports three intended input routes and an optional latent-refinement path. This walkthrough follows the saved configuration; it does not report a new video render, successful character match, or verified action-contact result.

Prepare the exact dependencies

Both base-model loaders select minimax_h3_fl2va_pruned_int8_convrot.safetensors. The reference branch adds minimax_h3_ref_lora_layer20-49adaln_proj_rank_256_bf16.safetensors before its action LoRAs. It does not select a separate Ref2VA checkpoint in this export.

Other common loader references are:

  • qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors, with encoder type minimax;
  • minimax_h3_video_vae_int8_convrot.safetensors;
  • minimax_h3_audio_vae_fp32.safetensors.

The five action-LoRA filenames are H3_Combat_V2.safetensors, Bunny_weapon_combatV1.safetensors, GunFu.safetensors, Motion_Repair_V2.safetensors, and H3_Fight_Flow_V1.safetensors. Optional refinement also references minimax_h3_latent_upscaler_3d_fp16.safetensors through MinimaxH3LatentUpscaler3DRefineHandoff.

These are asset references, not bundled weights or proof of architecture, quantization mechanics, license, or GPU compatibility. Resolve matching implementations and assets before queueing. A zero coefficient does not establish that an unavailable LoRA filename will be accepted by every loader or validation system.

Read the saved defaults before choosing a route

The current export stores main mode ① as true, secondary mode ② as false, refinement ③ as false, preset ④ as 2, duration ⑥ as 10 seconds, and both manual-LoRA switches ⑦/⑧ as false.

The top-level controls route the following inputs:

Main mode ① Secondary mode ② Intended route Inputs to replace
False False Text-to-video Prompt node 17
False True First/last-frame video Image nodes 97 and 98; prompt 96
True Either Reference-conditioned video Image nodes 26 and 27; prompt 25

The main mode takes precedence through the model, conditioning, and latent switches. In the saved reference configuration, flipping ② alone does not select the first/last-frame route.

Each route has its own prompt text. The saved first/last-frame prompt, for example, describes a promotional sequence rather than the same action scene as the reference prompt. Replace the prompt associated with the selected route rather than assuming one global prompt controls all modes.

The selected input filenames are not proof that those pictures are included. Supply real, authorized images and inspect which ones reach the active branch.

Follow model routing and step selection

The ordinary model path starts at loader 2 and passes through the five action-LoRA loaders. The reference path starts at loader 22, adds reference adapter 95, and then passes through its five action-LoRA loaders. Switch 29 selects between those paths using main control 35.

Conditioning and latent selectors 30 and 31 follow the same main control. Their ordinary inputs come from the text-versus-first/last selectors 101 and 102; their reference inputs come from node 28.

Step selector 108 receives 20 from node 107 on its false branch and 25 from node 33 on its true branch. Its switch input also comes from main control 35. Both scheduler nodes receive this selected step value through links. Consequently, a scheduler's stored 20 widget is not enough to describe the current reference-mode configuration.

The sampler selector stores res_multistep. The first scheduler stores simple and denoise 1; the refinement scheduler stores simple and denoise 0.3. The latter value does not establish that refinement executes a full additional 20 or 25 iterations. Actual scheduling and node behavior require the matching implementation and a run record.

What the nine automatic presets change

Preset node 39 feeds the coefficient expressions. The first-stage manual switch at node 40 determines whether those expressions use their preset recipe or manual values. The second-stage expressions also receive first-stage manual controls and their own override switch at node 68.

The following table evaluates the saved expressions with both manual switches false. Values are static arithmetic results, not measured image effects. The order is Combat / Weapon / GunFu / Motion / Fight Flow. Refinement coefficients matter only when that stage is used.

Preset label from the source note First-stage coefficients Refinement coefficients
A0 Basic action 0.65 / 0 / 0 / 0 / 0 0.4 / 0 / 0 / 0 / 0
A1 Dynamic-motion repair 1 / 0 / 0 / 0.5 / 0 0.65 / 0 / 0 / 0.2 / 0
A2 Two-character interaction 0.65 / 0 / 0 / 0 / 0.65 0.4 / 0 / 0 / 0 / 0.25
A3 Combined action 0.7 / 0 / 0 / 0.5 / 0.65 0.45 / 0 / 0 / 0.2 / 0.25
A4 Weapon choreography 0 / 0.45 / 0 / 0 / 0 0 / 0.25 / 0 / 0 / 0
A5 GunFu 0 / 0 / 0.9 / 0 / 0 0 / 0 / 0.65 / 0 / 0
A6 Sustained action 0 / 0 / 0.9 / 0.5 / 0 0 / 0 / 0.65 / 0.25 / 0
A7 Close-range action 0.5 / 0 / 0.9 / 0.3 / 0 0 / 0 / 0.65 / 0.25 / 0
A8 General motion repair 0 / 0 / 0 / 0.9 / 0 0 / 0 / 0 / 0.3 / 0

The second-stage recipe is not simply a uniform percentage of the first. A7, for example, has a nonzero first-stage Combat coefficient but zero in its automatic refinement recipe. Enabling either manual switch changes the formula inputs, so the table no longer describes every effective coefficient.

Changing the preset number changes these connected coefficient expressions. It does not rewrite the separate prompt strings at nodes 17, 25, or 96. Keep the selected prompt consistent with the fictional scene you intend to generate, and do not assume a preset creates the right action merely because of its label.

Duration is a frame budget, not a rendered result

Duration node 105 supplies this expression at node 106:

max(5, round(a * 24)) + (5 - (max(5, round(a * 24)) % 17)) % 17
Enter fullscreen mode Exit fullscreen mode

Its integer output connects to the length inputs of all three generation-condition nodes. Evaluating the expression gives 124 frames for 5 seconds and 243 frames for 10 seconds, both satisfying the intended 17n+5 form.

At the configured 24 fps, those budgets correspond arithmetically to approximately 5.17 and 10.13 seconds. They are not measurements of produced video files. The condition nodes' stored length defaults are connected over, so quoting their saved 124 value as the current ten-second setting would be incorrect.

Single-stage versus optional refinement

With control 59 false, width and height come from resolution selector 104. It stores 16:9, a 0.98-megapixel target, and alignment 32. Those controls describe the selected configuration, not independently checked dimensions.

With control 59 true, width and height selectors instead receive 896 and 512 from nodes 60 and 61. Refinement node 65 stores a 1344×768 target, and output switch 66 selects its latent result instead of the first sampler's output. Both video decoder 13 and audio decoder 14 consume that selected latent.

The source note warns that the refinement extension may still be required to import or validate the graph even when the refinement switch is off. A disabled route is not a guarantee that missing custom-node classes can be ignored. Use a compatible installation or a separately verified single-stage version; this package does not invent one.

Refinement is not guaranteed to improve a particular scene. Compare actual results before describing it as sharper, more faithful, or more stable.

Audio and output need their own inspection

Reference node 28 has an audio connection from LoadAudio 109, but that loader is saved in mode 4 with a None selection. Verify the installed node's handling of this state instead of assuming that a usable audio reference is present.

The graph decodes audio from the selected latent and connects it, alongside decoded video frames, to CreateVideo and then SaveVideo. That is not a direct source-audio remux or proof of synchronized, preserved audio.

The save prefix still contains the word Veda, while the current notes say the Turbo/Veda acceleration routes were removed. The node list contains no separately named Turbo/Veda acceleration route. A filename prefix is not evidence that acceleration is active, and this export should not be promoted as an eight-step configuration on that basis.

A practical first-run checklist

  1. Resolve the exact assets and node implementations, including the optional refinement node's import requirements.
  2. Confirm the main route and edit its corresponding prompt. Replace only the relevant image inputs with authorized material.
  3. Start with the saved automatic preset controls unless deliberately testing manual weights. Record changes rather than altering several variables at once.
  4. Check duration, the selected resolution route, and any audio-reference state before queueing.
  5. After an actual run, inspect output dimensions, duration, audio, character consistency, continuity, and whether the intended interaction is visually coherent.

No render, compatibility test, performance result, or licensing determination is attached here. The source-provided tutorial offers context; its URL was not live-verified for this package. The local file named as subtitles contains promotional metadata rather than a spoken transcript, so it is not treated as a record of tested behavior. Check workflow, model, LoRA, node, artwork, and input-image rights separately before redistribution or commercial use.


Getting the workflow

Published by this channel. The graph is free; the weights and LoRAs are separate and carry their own terms.

The two RunningHub posts were matched to this JSON by content, not by title: same 26 node types, same six LoRA filenames, and overlapping node-id arrays in the page payloads. The Bilibili page returned HTTP 412 to this client and was not read.

Top comments (0)