Nodes/arkennemasis Nodes/arkennemasis Hailuo Scene (one clip, start to finish)
ComfyUI Node

arkennemasis Hailuo Scene (one clip, start to finish)

One scene, start to finish, and not an ounce of VRAM more

By Hishamahmer·Created 2 months ago·Updated 8 days ago· 9
arkennemasis Hailuo Scene (one clip, start to finish)
  • model
  • clip
  • vae
  • audio_vae
  • sampler
  • sigmas
  • image
  • last_frame
  • video
  • path
prompt
width1280
height736
length243
seed1000
reseed_each_runtrue
filename_prefixnemasis/scene

ArkHailuoScene renders ONE scene end to end with Hailuo MiniMax H3 - condition, sample, decode video and audio, mux and write the file - then frees everything. It's the "one scene at a time" node that makes the arkennemasis video chain's per-scene loop hold memory at a single scene instead of accumulating every scene's latents until the graph runs out of VRAM.

It wraps the full H3 pipeline into a single node: video VAE, audio VAE, sampler, sigmas, and the scene's first-frame still go in, a finished VIDEO file comes out. That "then free everything" is the part people underrate - inside a loop that renders scene after scene, it's the difference between a 12-scene film fitting in 16GB and dying at scene four.

The inputs that matter

The model-side inputs are model, clip, vae (the video VAE), audio_vae (the audio VAE - the thing that gives the clip its soundtrack; H3 generates audio natively, which is why there are two VAEs), sampler, and sigmas - wire them from the pack's Video Model setup or any standard H3 nodes.

The scene-side inputs are where the workflow lives:

  • image - this scene's still, the first frame of the clip.
  • prompt - the scene's text.
  • width / height - 1280×736 by default.
  • length - frames for this scene, wired from Scene List so each clip runs its own duration. It's forceInput on purpose: a widget carrying a link occupies a widgets_values slot, and slot-count disagreement shifts every later value in saved workflows. (This pack is religious about not corrupting saved graphs, and it shows.)
  • seed - a base seed, mixed with this scene's prompt, so every scene of a run samples differently instead of all sharing one noise pattern.
  • reseed_each_run - default on: draw fresh noise every run. Off reproduces the same clip down to the audio - including the same garbled speech, which the tooltip warns "looks like the scene is locked." Turn it off only to reproduce a specific take exactly.
  • filename_prefix - relative to ComfyUI's output dir; each call appends the next counter so clips land in scene order.
  • last_frame - optional closing frame. Give it one and H3 animates the transition from the first frame to this one instead of inventing motion from a single still. That's the first-frame-to-last-frame transformation.

Outputs: video (the VIDEO type) and path.

A licensing note worth knowing

H3's open weights ship under the MiniMax H3 Community License, which geofences out the US, EU, UK and South Korea - users in those regions are not licensed to run the local weights at all (the hosted Hailuo API remains globally available). That's a real constraint on who can legally use this node, and it's the kind of thing worth checking before you build a production pipeline on it. The pack doesn't hide it, and neither should you.

Installing

It's part of comfyui-arkennemasis:

cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install replicate httpx

restart, under arkennemasis/Video. You'll also need the H3 model files and ComfyUI's own MiniMax H3 support in place - this node orchestrates them rather than shipping the weights.

Where people get burned: forgetting that length is a frames count on H3's 17k+5 frame grid (Narration Length exists precisely to compute this from a voice-over), and expecting the single-still mode to produce motion it wasn't asked for - no last_frame, and H3 invents the motion from the still, which is a coin flip you should know you're taking.

Categoryarkennemasis/Video

Inputs (15)

NameTypeDefaultDescription
modelMODEL
clipCLIP
vaeVAEThe VIDEO vae.
audio_vaeVAEThe AUDIO vae — this is what gives the clip its soundtrack.
samplerSAMPLER
sigmasSIGMAS
imageIMAGEThis scene's still — the FIRST frame of the clip.
promptSTRING
widthINT128032–16384
heightINT73632–16384
lengthINT2435–2048Frames for THIS scene, wired from Scene List so each clip runs its own duration. forceInput on purpose: a widget carrying a link occupies a widgets_values slot and any disagreement about slot counts shifts every later value.
seedINT10000–18446744073709550000Base seed. It is mixed with THIS scene's prompt, so every scene of a run samples differently instead of all of them sharing one noise pattern.
reseed_each_runBOOLEANtrueDraw fresh noise on every run. With this off, re-running an unchanged scene reproduces the SAME clip down to the audio - including the same garbled speech, which looks like the scene is locked. Turn it off only when you want to reproduce a specific take exactly.
filename_prefixSTRINGnemasis/sceneRelative to ComfyUI's output dir. Each call appends the next counter, so clips land in scene order.
last_frameoptIMAGEOptional CLOSING frame. Given one, H3 animates the transition from `image` to this, instead of inventing motion from a single still. This is what a first-frame-to-last-frame transformation needs.

Outputs (2)

NameTypeDescription
videoVIDEO
pathSTRING