FL MiniMax H3 Prompt Timeline
The H3 node that turns a prompt into an actual edit timeline
- clip
- vae
- audio_vae
- prompt_schedule
- prompt_envelopes
- ref_images
- ref_videos
- ref_video_audios
- ref_audios
- scheduled
- latent
- semantic
- timeline
If you're generating MiniMax H3 video in ComfyUI, this is the node you start from. FL MiniMax H3 Prompt Timeline does two jobs in one: it builds the native nested H3 video/audio latent, and it writes strict, time-masked prompt conditioning across that latent. So instead of a single global prompt that H3 has to somehow hold for its whole clip, you get per-section prompts that switch at frame-exact boundaries. That's the difference between "a video" and "a shot that cuts to a tracking shot at frame 48."
H3 deserves the setup. It's the 33B omni-modal model MiniMax opened in August 2026 - text, image, video and audio in one context, with audio generated jointly with the picture rather than bolted on. It landed hard on day one and got day-zero ComfyUI support, and it's geofenced out of the US, EU, UK and Korea under its community license, so check that before you go deep. The catch on hardware is real too: it's a heavy model, and 2K at 15 seconds needs serious VRAM. This pack doesn't add any of those problems - it adds the editing layer on top.
How it works
You hand the node three encoders: a MiniMax-compatible Qwen3-VL text encoder (clip), the H3 video VAE (vae), and the H3 audio VAE (audio_vae). The global_prompt is your persistent subject/style/context - it's the default conditioning under every scheduled mask and it gets prepended to every scheduled section. Then you describe the timeline one of two ways:
- A manual timeline in the
timelinetext box, in frame ranges. Zero-based, end-exclusive, fixed 24 fps:
[0 - 48]
Wide establishing shot. The subject turns toward camera.
[48 - 96]
Hard cut to a low tracking shot as the subject moves forward.
- A connected
prompt_schedule(theFL_PROMPT_SCHEDULEfrom FL Audio Beat Prompt Schedule in ComfyUI Fill Nodes), which takes precedence and carries exact detected timing. This is the audio-reactive path - more on that in the Beat Shot Planner article.
H3 snaps requested lengths to its 17k+5 frame grid, which is why length steps by 17. What comes out is four things: scheduled conditioning for your first sampling pass, the native nested latent (video and audio together), a fast semantic conditioning for low-denoise refinement (cheaper than the strict schedule - good for upscale passes), and a reusable encoded timeline.
The inputs that actually matter
duration_policy- strict rejects ranges that run past the aligned H3 duration,clamptrims them,fitsquashes the whole schedule to fit. Start on strict; you want to know when your timeline is wrong, not silently fix it.affect_audio- "video only" or "video and audio tokens". Since H3 generates audio natively, this is where you decide whether your text masks also drive the sound. The tradeoff is coherency vs. prompt cost.ref_images,ref_videos,ref_video_audios,ref_audios- the autogrowing reference sockets. Character or scene references are the whole game for keeping identity across shots.prompt_envelopes- audio-reactive envelopes from Fill Nodes. The tooltip says it plainly: each unique prompt adds one conditioning evaluation per sampling step, so envelopes cost you.
Installing and the gotchas
Same story for the whole pack: install FL MiniMax H3 via ComfyUI Manager, or
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI-FL-MiniMaxH3.git
then restart ComfyUI. No extra Python dependencies - it rides on ComfyUI's built-in H3 support, and it does not bundle model weights. You need the H3 ref2va diffusion model, the Qwen3-VL text encoder, minimax_h3_video_vae_fp16.safetensors and minimax_h3_audio_vae_fp32.safetensors in your normal model directories.
Where people trip: these nodes migrated out of ComfyUI Fill Nodes, so don't run this pack alongside an old Fill Nodes release that still registers the MiniMax node IDs - you'll get duplicate registrations. Update Fill Nodes, install this pack, restart. And remember the output latent is nested H3 format: decode it with the H3 VAEs, and don't run it through nodes that expect a flat latent. timeline exists precisely so you can resize the latent and rebuild conditioning later with Apply Timeline.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | MiniMax H3 text encoder used for the global and scheduled prompts. | |
| vae | VAE | MiniMax H3 video VAE used for reference images and reference videos. | |
| audio_vae | VAE | MiniMax H3 audio VAE used for audio references and video soundtracks. | |
| global_prompt | STRING | Persistent subject, style, and scene context. This is the default conditioning under scheduled masks and is prepended to every scheduled prompt. | |
| width | INT | 134432–16384 | Width of the native H3 video latent in output pixels. |
| height | INT | 76832–16384 | Height of the native H3 video latent in output pixels. |
| length | INT | 1245–3600 | Requested frame count at H3's fixed 24 fps. H3 snaps it to the 17k+5 frame grid. |
| time_unit | COMBO | seconds | Legacy unit used only by manual timeline headers. Connected prompt schedules own their time unit; H3 video always runs at 24 fps. |
| bpm | FLOAT | 120.01–999 | Legacy constant BPM used only for manual timelines in beats mode. Connected prompt schedules carry exact detected timing. |
| transition_mode | COMBO | cosine | Transition curve between contiguous sections in the manual timeline. |
| transition_frames | INT | 40–96 | Manual timeline transition width in 24 fps video frames. |
| affect_audio | COMBO | video only | Choose whether scheduled text masks affect only H3 video tokens or both generated video and audio tokens. |
| duration_policy | COMBO | strict | strict rejects ranges past the H3 duration; clamp trims them; fit scales the full schedule to the aligned H3 duration. |
| ref_image_size | COMBO | match | match limits reference image area to the output canvas; max uses H3's maximum reference short edge. |
| timelineopt | STRING | Legacy manual ordered time ranges followed by prompt text. Used only when prompt_schedule is not connected. | |
| prompt_scheduleopt | FL_PROMPT_SCHEDULE | Optional exact-time schedule, such as the output of FL Audio Beat Prompt Schedule. When connected, it overrides the manual timeline. | |
| prompt_envelopesopt | COMFY_AUTOGROW_V3 | Optional audio-reactive prompt envelopes. Each unique prompt adds one conditioning evaluation per sampling step. | |
| ref_imagesopt | COMFY_AUTOGROW_V3 | Optional H3 reference images. Add sockets as needed. | |
| ref_videosopt | COMFY_AUTOGROW_V3 | Optional H3 reference videos. Add sockets as needed. | |
| ref_video_audiosopt | COMFY_AUTOGROW_V3 | Optional soundtracks paired by index with reference videos. | |
| ref_audiosopt | COMFY_AUTOGROW_V3 | Optional standalone H3 audio references. Add sockets as needed. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| scheduled | CONDITIONING | Strict latent-time conditioning for the first H3 sampling pass. |
| latent | LATENT | Native nested MiniMax H3 video/audio latent. |
| semantic | CONDITIONING | Single semantic timeline conditioning for faster low-denoise refinement passes. |
| timeline | FL_H3_TIMELINE | Reusable encoded H3 timeline for applying the same schedule after spatial resizing. |