Nodes/comfyui-minimax-h3-audio-T8/MiniMax H3-World Action Timeline / 动作时间线 (T8)
ComfyUI Node

MiniMax H3-World Action Timeline / 动作时间线 (T8)

Scripting H3-World's 37-step action timeline

By T8mars·Created about a month ago·Updated a day ago· 1,031
MiniMax H3-World Action Timeline / 动作时间线 (T8)
    • action_plan
    • action_script_json
    • report_json
    action_presetforward
    custom_timeline_json[ {"start_latent":0,"end_latent":12,"keys":["W"]}, {"start_latent":12,"end_latent":25,"keys":["L"]}, {"start_latent":25,"end_latent":37,"keys":[]} ]

    This is the node that makes MiniMax H3 feel less like a slot machine and more like a scene you directed. H3-World is a community control LoRA for H3 (T8mars ships a byte-identical port pinned to the original), and its whole trick is that it fixes the output to one format - first-frame I2VA at 832×480, 124 frames, 24fps, roughly 5.17 seconds - so it can give you per-frame control over what happens. "Action Timeline" is the steering wheel: the thing that turns "the man walks forward, camera pans right" from a hope into an instruction.

    What it actually builds

    The clip runs through 37 latent time points, and this node writes one action row per latent. Every latent gets a short sentence, like "the man walks forward, camera pans right slowly." Those 37 sentences are what downstream nodes bind to the video latents one-to-one, so frame 3 can be walking while frame 20 is a pan - without the actions bleeding into each other.

    Pick a preset and you're done: forward, back, strafe-left, strafe-right move the character; tilt-up/tilt-down and pan-left/pan-right move the camera; pan-left-fast/pan-right-fast are the F-key versions; still holds everything. The keys map the way the tooltip says: WASD drives the character, IJKL drives the camera, F makes a pan fast.

    The custom preset is where it gets interesting. You write a JSON list of segments that tile latent indices 0 through 37 with no gaps - note the ranges are end-exclusive, which trips people up at first:

    [
      {"start_latent": 0,  "end_latent": 12, "keys": ["W"]},
      {"start_latent": 12, "end_latent": 25, "keys": ["L"]},
      {"start_latent": 25, "end_latent": 37, "keys": []}
    ]
    

    That's 12 latents of walking, 13 of slow right pan, then 12 holding steady. The node validates hard: segments must start exactly where the last one ended, end at 37, and only use the known keys. Opposing keys (W/S, A/D, J/L, I/K) cancel each other out, and F is only legal alongside J or L - you can't fast-pan and slow-pan at once.

    Inputs and outputs

    Only two inputs, and honestly action_preset is 90% of what you'll touch. custom_timeline_json only matters when preset is custom.

    Out the other side you get three things:

    • action_plan (type T8_H3_WORLD_ACTION_PLAN) - this is the one you wire onward into MiniMaxH3WorldI2VAConditioningT8Advanced. It's a signed payload; the conditioning node checks its hash, so don't hand-edit it downstream.
    • action_script_json - the 37 resolved sentences, handy for eyeballing what a preset actually said.
    • report_json - diagnostics.

    Wiring it up

    The full chain lives in examples/workflows/26-h3-world in the pack: Action Timeline → MiniMaxH3WorldModelComposerT8Advanced (the LoRA loader) → MiniMaxH3WorldI2VAConditioningT8Advanced → a native H3 sampler (50 Euler/native-flow steps, CFG 1.0, video/audio shift 12/3) → MiniMaxH3WorldSafeVideoSaveT8Advanced. Just swap the included first frame for your own.

    Installing and the honest caveats

    Install the pack via ComfyUI Manager (search "MiniMax H3 Audio T8") or git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8 into custom_nodes, then fully restart. These World nodes add no extra pip dependencies. You do need a recent ComfyUI with native MiniMax H3 support, plus the H3 base model, Qwen3-VL text encoder and video/audio VAEs in the usual models folders - and the H3-World LoRA, which lives at models/loras/minimax/H3-World/step-10000.safetensors (see the Model Composer article for the download command).

    Three gotchas. First, the 832×480×124 contract is fixed for now - don't "helpfully" change resolution or frame count downstream, because the action positions and attention mask are bound to it. Second, this is a standalone chain: don't stack OpenVDN, SLA, VSA or attention-takeover nodes on top. Third, H3 is a heavy 33B model and the weight license geofences out the US, EU, UK and Korea - check that before you build a workflow around it. On a 16GB card, run one job at a time.

    CategoryT8/MiniMax H3/World

    Inputs (2)

    NameTypeDefaultDescription
    action_presetCOMBOforwardWASD controls the character; IJKL controls the camera; F makes pan fast.
    custom_timeline_jsonSTRING[ {"start_latent":0,"end_latent":12,"keys":["W"]}, {"start_latent":12,"end_latent":25,"keys":["L"]}, {"start_latent":25,"end_latent":37,"keys":[]} ]Only used when preset=custom. Segments must tile 0..37 without gaps.

    Outputs (3)

    NameTypeDescription
    action_planT8_H3_WORLD_ACTION_PLAN
    action_script_jsonSTRING
    report_jsonSTRING