CineTimeline · H3 分段参考路由
How CineTimeline routes the right reference images to each H3 segment
- clip
- video_vae
- audio_vae
- image1
- image2
- image3
- image4
- image5
- image6
- image7
- image8
- image9
- positive
- av_latent
- mux_audio
- conditioned_prompt
- media_map_json
- report
This is a segment-level reference router for MiniMax H3. In a multi-shot timeline, each shot has its own references - this shot is character A in the red dress, that one is the interior of the room, this one carries over the previous shot's last frame. The pack's CineTimelinePlan node figures out which references are "active" for the currently selected shot and writes that into a reference_plan_json. This node is what turns that plan into actual conditioning for the H3 model, one segment at a time.
You almost never hand-edit this node. It sits between CineTimelinePlan and your segment renderer, and it's marked CineTimeline/internal for a reason: it's plumbing, and its job is to stop you from hand-wiring nine reference inputs per shot.
How it works
Under the hood it's a thin, honest wrapper. It parses the reference_plan_json, reads the image_slots list, maps each slot to the matching connected image1 through image9 input, and then calls the installed T8 conditioner's build_conditioning directly - minimax-h3-audio-T8's own conditioning builder, with a fixed tuning baked in (native mode, a 0.35 weight, match reference handling, and the official 2-to-15-second duration profile). The pack deliberately does not reimplement H3 conditioning; it routes references and delegates the math.
The inputs that matter:
reference_plan_json- the plan fromCineTimelinePlan. Non-negotiable; if it's not valid JSON the node fails fast.image1–image9- the physical reference inputs. Only the slots the plan asks for get used.clip,video_vae,audio_vae- the model's text encoder and its two VAEs (video and audio are separate for H3). These come from your H3 model loader.prompt- the current segment prompt (wire upsegment_promptfromCineTimelinePlan).width,height,length- defaults 864×480, 124 frames. Width/height step in 32-pixel increments, the H3 grid.
And the outputs:
positive- the CONDITIONING for the sampler.av_latent- the audio-video latent, straight to your sampler.mux_audio- an AUDIO handle for anything that needs the audio side.conditioned_prompt,media_map_json,report- diagnostics and the media mapping, handy for verifying which images actually landed in this segment.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/bo341805sg/ComfyUI-CineTimeline
# restart ComfyUI
And here's the dependency that will actually bite you: this node does import custom_nodes.minimax-h3-audio-T8.conditioning at runtime. If that pack isn't installed, this node dies on load. The README's stated requirement is minimax-h3-audio-T8 1.3.2, plus KJNodes' MiniMaxH3MemoryEfficientSageAttentionPatch for the sampling side. Install those first:
# KJNodes and minimax-h3-audio-T8 via ComfyUI Manager
# (ComfyUI-H3-Motion-Context only if you use motion-context continuation)
Gotchas
- The error message is the feature. If the plan asks for
image5and you didn't connect one, the node raises a clear "segment requests image5, but that workflow input is not connected" error. Wire all nine slots if your timeline references wander, or keep your per-shot reference count inside the slots you've connected. - It only handles image references. H3's video and audio references exist in the pack's reference model, but this node is image-slots only - the rest is handled elsewhere in the chain.
- The tuning is fixed in the source (a 0.35 weight, match reference handling). This is not the place to go hunting for a "reference strength" slider; the pack keeps that at the model/plan level.
- The
<Picture N>ordinals in your prompt are remapped byCineTimelinePlanto match the actual slot order, so a prompt you wrote with<Picture 3>may arrive here renumbered. That's expected, not a bug - checkconditioned_promptorreportif you're confused about which image is which.
Reach for it as part of the full H3 chain, not alone. On its own it's just a wrapper around T8's conditioner; in the context of CineTimelinePlan's reference plan it's what makes multi-shot character consistency work without rebuilding the graph for every cut.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| video_vae | VAE | — | |
| audio_vae | VAE | — | |
| prompt | STRING | — | |
| width | INT | 86432–16384 | — |
| height | INT | 48032–16384 | — |
| length | INT | 1245–3600 | — |
| reference_plan_json | STRING | — | |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| image4opt | IMAGE | — | |
| image5opt | IMAGE | — | |
| image6opt | IMAGE | — | |
| image7opt | IMAGE | — | |
| image8opt | IMAGE | — | |
| image9opt | IMAGE | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| av_latent | LATENT | — |
| mux_audio | AUDIO | — |
| conditioned_prompt | STRING | — |
| media_map_json | STRING | — |
| report | STRING | — |