Nodes/ComfyUI-CineStack-H3/CineStack H3 Director Group (Image to Video)
ComfyUI Node

CineStack H3 Director Group (Image to Video)

Moving Your Shot List Out of the Timeline

By guomenghao·Created 6 days ago·Updated 3 days ago· 0
CineStack H3 Director Group (Image to Video)
  • first_frame
  • last_frame
  • group
◄prompt►
◄duration_sec5.0►
◄first_pass_seed►

The Director keeps its shot list inside its own UI panel - you add cards, type a prompt on each, and the node's internal timeline data remembers all of it. That's lovely for a person clicking around. It's awkward when you want the graph itself to be in charge: three shots whose prompts come from a rewrite node, or a shot list you want to copy, mute and reorder as graph objects.

CineStack H3 Director Group (Image to Video) is the escape hatch. It packs exactly one H3 image-to-video shot into a single node with a single group output, which the Director's i2v_groups socket accepts.

What it is for

Think of it as the Director's shot card, promoted to a real node. You get a prompt field per shot - and because it's a normal input, you can wire a prompt-expand or LLM-rewrite node into it, which you can't do with a card buried in the timeline panel. You get duration_sec per shot. You get the frames. And you get first_pass_seed, which is the pack's headline feature, per shot, without clicking into a panel.

The trade-off is explicit in the docs: when groups are connected, they override the UI cards for execution. External priority. So if you wire a group in and then edit a card in the timeline and nothing changes, that's not a bug - the graph wins.

Inputs and the t2v / i2v / fl2v trick

Two required fields. prompt is the shot's prompt, and duration_sec defaults to 5 seconds, accepted from 0.2 to 120 and then snapped to H3's 17k+5 frame grid at the Director's frame rate.

The optional first_frame and last_frame don't just add keyframes - they decide the task. No frames at all and it's text to video. First frame only and it's image to video. Last frame alone, or both, and it's first/last-frame video. Official FL2VA genuinely allows last-only, which is a genuinely useful trick: pin the ending pose and let the model work out how to get there.

first_pass_seed is a STRING rather than an INT on purpose - it carries the full uint64 range as decimal text, so JavaScript rounding never eats your seed. Leave it blank and it inherits the Director's per-segment setting, then the global seed. Type 0 and it's fixed at zero, which is not the same thing.

One thing this node deliberately does not control: output size. width and height live on the Director, because every segment shares one canvas. If your 4:3 reference comes out 16:9, that's the Director's setting, not this node's.

Output

A single group output of type MMX_DIR_GROUP. Wire it straight into the Director's i2v_groups for a one-shot graph, or into a Groups Combine when you have several shots and care about their order.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/guomenghao/ComfyUI-CineStack-H3.git
python -m pip install -r ComfyUI-CineStack-H3/requirements.txt

Restart ComfyUI. These packer nodes live under CineStack/H3/Groups - note the extra subfolder, which is where people lose them. The pack is Git-installed at 0.6.11 and not on the Comfy Registry.

You'll need the H3 fl2va UNET and ref2va UNET depending on your task modes, the minimax CLIP, and both VAEs. There's a ready-made graph in the repo's example_workflows/ (minimax_h3_director_external_groups_i2v.json) that wires Group → Combine → Director, and the README's honest note about those files applies: they're wiring templates, not a preset configuration. Check the models and output settings before you hit Queue.

Where people get burned

"I changed the card and nothing happened." External groups win. Edit the group node, or unplug it.

Duration looks wrong. It snaps to the frame grid. 5 seconds at 24fps is 120 frames, which isn't on the grid - 124 is, so you get 124. That's H3's requirement, not a rounding bug.

A shot generates as pure text-to-video when you expected your keyframe. The frame input is empty or wasn't connected. The task type is inferred entirely from which frames are present; there's no explicit mode switch here.

Segments look different from the ones in the panel. Also expected - once a group is connected, per-segment seeds come from the group's first_pass_seed when it's non-empty, then the Director card, then the global seed, in that order.

CategoryCineStack/H3/Groups

Inputs (5)

NameTypeDefaultDescription
promptSTRINGPrompt for this group (can connect an expand/rewrite node).
duration_secFLOAT5.00.2–120Clip duration in seconds (snapped to MiniMax 17k+5 frames @ fps).
first_frameoptIMAGEOptional first frame → i2v / fl2v. Official FL2VA also allows last-only.
last_frameoptIMAGEOptional last frame → fl2v (alone or with first_frame).
first_pass_seedoptSTRING固定本组一采 seed;留空继承导演台分段设置或全局 seed。

Outputs (1)

NameTypeDescription
groupMMX_DIR_GROUP—