③ Prompt · Enzino H3 WF ✦
③ Prompt is where your clip's timing actually lives (not ④ Render)
- bus
- first_frame
- last_frame
- references
- ✦
You'd expect the node called "Render" to hold the duration and the aspect ratio. In this chain it doesn't. ③ Prompt · Enzino H3 WF ✦ is the clip-specification node: mode, prompt, style, duration, aspect, resolution, and the reference pictures. ④ Render, next stop, is purely "how do I denoise this".
That split is a bit surprising the first time, but it's coherent - everything that changes what the video is lives here, and everything that changes how it's computed lives downstream. Once you know, you stop hunting.
The mode picker is the important one
mode takes five values: text, image, first_last, references, last. The first four are your Text, Image, First + Last and References modes. last is End frame and it's a legacy value - old workflows still load with it, but the card doesn't offer it anymore, because end-frame generation is a Studio-node feature. If you want to land a shot on a specific frame in the Free chain, you're really doing First + Last.
The modes change what the header of your prompt has to say, and H3 is fussy about that. So auto_header exists, and it's on by default. When you pick Image or First + Last, the node prepends the official H3 header for that mode, with the shot number derived from the highest [Shot n] in your text and the duration filled in seconds. If you already wrote a header yourself - a prompt beginning with "For the target video" or "How the reference pictures" - it leaves it alone.
The prompt format is not freeform
The node's default value is a two-shot example, and it's the best thing in the pack to copy from. The shape is three blocks:
integrated_multimodal_description: [Shot 1] Live-action, cinematic, ...
[Shot 2] At 00:02.500, the camera cuts to a medium close-up of ...
the gruff, low-voiced old man (S1) squints into the wind and says:
<d>[French] Elle tiendra encore cette nuit.</d>
overall_soundscape: Strong wind gusts howl around the tower ...
non_diegetic_music: Low sustained cello drones at a slow tempo ...
That's the whole trick of H3: the picture, the ambience and the score are three sections of one description, because the model generates them together. Leave out overall_soundscape: and you get a silent, airless clip. Dialogue goes in <d>...</d> with a language tag, and speakers get (S1) / (S2) tags so the same voice stays with the same character across shots. Eleven languages work.
Duration accepts 1–15 seconds in half-second steps, but H3 samples on a 17k+5 frame grid at 24 fps, so your number gets snapped: a 5-second request becomes 124 frames, about 5.2 seconds. If you're writing [Shot 2] At 00:02.500 timings by hand, aim them at where the grid will actually land or the cut drifts.
Size: pixel budget, not resolution
aspect gives you auto, 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 3:2, 2:3. resolution gives ten presets from 480p to 1080p plus custom_mp and custom. Here's the thing worth internalising - the pack sizes by pixel budget, the way the official H3 resolution selector does. Every aspect ratio gets the same pixel count as 16:9 at that preset, snapped to a multiple of 32. So 768p is 1344×768 in 16:9, 992×992 in 1:1, 1152×864 in 4:3. A portrait clip isn't secretly cheaper or more expensive; it's the same area, differently shaped.
custom_mp is the escape hatch, and its tooltip is the honest warning: "Your own pixel budget (resolution = custom_mp). 1.0 ≈ H3 native." Past about 1 MP you're asking for more detail than H3 was trained for - slower, riskier, not obviously better. 1.3–1.5 MP is where people land for wide shots with small faces.
Pictures in
first_image and last_image are file paths - the card gives you upload slots, and the strings behind them are what these widgets hold. ref_images is a JSON list of the same kind of thing, for References mode.
The real inputs are the three optional ones. first_frame and last_frame take IMAGE and override the slots ("Overrides the First frame slot" is the tooltip's own wording), so you can drive the node from another node's output. references takes IMAGE and appends after the card's pictures - nine is the ceiling either way - which is how you feed crop results or a generated character sheet straight in.
ref_image_size is match or max - match is usually right; max is for tiny references you want scaled up before conditioning.
Wiring, install, gotchas
Output is the ✦ ENZINO_H3 wire, into ④ Render. If you skip ② LoRAs, wire ① Models straight in here.
cd ComfyUI/custom_nodes
git clone https://github.com/byenzinoai/ComfyUI-Enzino-H3-Studio
# restart ComfyUI, Ctrl+F5
No pip dependencies; needs a recent ComfyUI with native H3. This node is in the Free edition.
The style dropdown (eleven entries - none, plus ten official H3 effect embeddings like bullet_time, truman_show, four_seasons) only works if the matching minimaxh3_<style>.safetensors is in models/embeddings. If it isn't, the style is skipped and you get a console line, not an error. And image modes: describe what moves. H3 can already see the picture - re-describing it wastes prompt and, worse, invites it to change things you liked.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| bus | ENZINO_H3 | — | |
| mode | COMBO | image | 5 options: text, image, first_last, references, last |
| first_image | STRING | — | |
| last_image | STRING | — | |
| prompt | STRING | integrated_multimodal_description: [Shot 1] Live-action, cinematic, a wide shot at blue hour frames a red-and-white lighthouse on a granite headland of the Breton coast, heavy Atlantic waves bursting white against the rocks below. The camera pushes in with small amplitude at slow speed as the lantern room flickers on and its beam begins to sweep across the low storm clouds. [Shot 2] At 00:02.500, the camera cuts to a medium close-up of an old lighthouse keeper in a yellow oilskin coat at the top railing, rain streaming down his weathered face; the gruff, low-voiced old man (S1) squints into the wind and says: <d>[French] Elle tiendra encore cette nuit.</d> overall_soundscape: Strong wind gusts howl around the tower while waves crash and drain back over the rocks. Rain spatters on oilskin fabric and metal railings, and the lantern mechanism hums steadily overhead. non_diegetic_music: Low sustained cello drones at a slow tempo, joined by a distant solo fiddle melody that swells gently on the cut and fades with the last wave. | — |
| auto_header | BOOLEAN | true | — |
| style | COMBO | none | 11 options: none, art_is_explosion, blooming_flowers, bullet_time, dark_magic, fire_breath, +5 |
| duration | FLOAT | 5.01–15 | — |
| aspect | COMBO | auto | 9 options: auto, 16:9, 9:16, 1:1, 4:3, 3:4, +3 |
| resolution | COMBO | 768p | 10 options: 480p, 576p, 640p, 720p, 768p, 896p, +4 |
| custom_mp | FLOAT | 1.000.2–4 | Your own pixel budget (resolution = custom_mp). 1.0 ≈ H3 native. |
| ref_images | STRING | [] | — |
| ref_image_size | COMBO | match | 2 options: match, max |
| first_frameopt | IMAGE | — | |
| last_frameopt | IMAGE | — | |
| referencesopt | IMAGE | References mode: extra reference pictures, added after the card's pictures (9 max). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| ✦ | ENZINO_H3 | — |