Nodes/comfyui-minimax-h3-audio-T8/H3 Motion Recovery · Retimed Relay Length (T8 EXP)
ComfyUI Node

H3 Motion Recovery · Retimed Relay Length (T8 EXP)

The one-number node that keeps Prompt Relay honest

By T8mars·Created 2 months ago·Updated about 7 hours ago· 1,158
H3 Motion Recovery · Retimed Relay Length (T8 EXP)
  • motion_plan
  • length
  • report_json

What it is

One input, two outputs, and about thirty seconds of your attention - but skipping it costs you an afternoon.

MiniMaxH3MotionRelayLengthEXPT8 takes a signed Motion Recovery plan and returns length: the expanded H3 frame count for the retimed second pass. That's the number you type (or wire) into an independent Prompt Relay Plan's frame count so the Relay's time events are built on the same timeline your sampler is actually running.

Motion Recovery expands the timeline deliberately - frames get held and duplicated so the repair pass has room - so this number is neither the finished clip's length nor pass one's length. Eyeballing it is how you end up with prompt events that fire a beat early, or a Relay node that refuses to bind at all.

Inputs and outputs

  • Input: motion_plan - the signed Motion plan.
  • Outputs: length (INT) and report_json.

No model call, no sampling, no VAE. The report records the plan SHA and the expanded frame count, which is the thing you'll want when you're staring at a graph a week later wondering which take this was.

Why it refuses things

It rejects plans that aren't ready and reject "abstain" states, and it rejects frame counts that aren't H3-aligned. That last check is the useful one: the Relay plan downstream expects a timeline that H3's alignment rule can actually produce, and letting an arbitrary number through would just move the failure to a place where the error message is less obvious.

So the flow is:

motion_plan → Motion Relay Length → length → Prompt Relay Plan (frame count)
                                              → Relay Conditioning → Motion Relay Bind

MiniMaxH3MotionRelayBindEXPT8 will then compare its own derived frame count against your Relay plan's and raise if they disagree. This node is how you get them to agree the first time.

Install

Part of the same pack as every other node here:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8

Or ComfyUI Manager → MiniMax H3 Audio T8, then fully exit and restart ComfyUI and refresh the page. This node is trivial to run; the hard part is having the other fifty-odd nodes in the graph, and those need a recent ComfyUI core with native H3 support.

Models needed for the surrounding Motion Recovery graph - not this node - are the standard H3 set: transformer in models/diffusion_models, Qwen3-VL text encoder in models/text_encoders, video and audio VAEs in models/vae. The repo ships no weights, and requirements.txt deliberately installs no packages so it can't replace your torch/CUDA build.

Common issues

"Motion Relay needs a ready H3-aligned retimed plan." Your plan isn't in the state this node requires - typically because the earlier Motion preparation stage reported an abstain, or the expanded length never got computed. Fix it upstream; there's nothing to tune here.

The number looks wrong. It's the expanded count, not the delivered clip length. If you expected your finished clip's frame count, you're thinking about the wrong timeline - and if the Relay plan is built on that number, it will be wrong in a way that's hard to spot in the output.

The Relay Bind still complains about frame count. Then the plan you fed the Relay isn't the plan that produced this length. Copy the Relay Plan for each stage rather than sharing one between a Motion stage and something else; the pack's docs are explicit that plans don't interchange across stages.

CategoryT8/MiniMax H3/Modular Sampling/Experimental

Inputs (1)

NameTypeDefaultDescription
motion_planH3_T8_MOTION_RECOVERY_PLAN—

Outputs (2)

NameTypeDescription
lengthINT—
report_jsonSTRING—