Nodes/comfyui-reactor-api/Reactor FastH3-Omni Segment
ComfyUI Node

Reactor FastH3-Omni Segment

Script a FastH3-Omni Clip Picture by Picture, Shot by Shot

By reactor-team·Created 16 days ago·Updated about 20 hours ago· 6
Reactor FastH3-Omni Segment
  • image
  • last_image
  • pictures
  • sounds
  • sequence
  • REACTOR_SEQUENCE
◄prompt—►
◄seconds▾►
◄kind▾►
◄aspect16:9►

One shot, not a video

Reactor FastH3-Omni Segment gives you one shot of a scripted video - its own prompt, length, pictures and sounds. Wire several together and you have a sequence. Wire the last into Reactor Render and you have an mp4; wire it into a Reactor Sequence Visualizer and you can see the whole thing on a frame ruler first.

FastH3-Omni is the video-with-sound model at the centre of it - nine reference pictures, three reference sounds, an optional first and last frame - in the omni-modal mould of 2026's video-with-sound models - MiniMax's H3 among them - where text, pictures and audio are one context rather than an audio pass bolted onto a silent generator. You're casting and directing, not rolling dice.

Two things up front: it runs on Reactor's cloud through an API key, so your prompts and pictures leave the machine, and it is not the ReActor face-swap node people usually mean by "reactor". Different company, name coincidence.

How it works

Each segment node is bookkeeping, not generation. It packs its widgets into one beat - prompt, length, references, sounds, how it enters from the segment before - and either starts a sequence or appends a beat to the one wired into sequence. Nothing touches the network until you queue Reactor Render, which turns the chain into one enqueue command per segment and runs them over a single session.

The part worth understanding is how a segment enters. kind has three settings: shot carries on softly from the clip before, cut starts fresh, and frame starts afresh from the previous segment's last frame, carrying its sound along as an audio reference. A shot with no image goes to the model as "continue from clip N", so a three-segment chase stays one continuous piece of motion; attach an image and that segment opens fresh, exactly as a cut does.

A segment with no pictures still generates - references bend the look rather than pasting anything in. And aspect, read on the first segment, crops pinned frames to its shape: a portrait still on a 16:9 canvas is centre-cropped, not squashed.

The inputs that matter

  • prompt - the naming is the whole game. Pictures are Picture 1, Picture 2, … in socket order; sounds are <Audio 1>, <Audio 2>. The author's nine-picture example writes <Subject 1> is the weathered fisherman in <Picture 1>, wearing the armour from <Picture 5>, and gives each sound its own sentence saying whether it's a voice, a sound or music - otherwise it may be ignored.
  • seconds - a picker, and only these five lengths exist: 5.875, 8, 10.125, 12.25, 14.375. Not a suggestion - they're the lengths whose sound lasts exactly as long as the picture.
  • kind - shot, cut or frame, per the above. On the first segment it just opens the video.
  • pictures - autogrow: connect one and the next socket appears, up to nine. These are what a prompt can name. (The live Realtime node takes three.) sounds work the same way, up to three, each 2–15 seconds, and need a picture beside them or the clip before.
  • image / last_image - the segment's first and last frames. An image makes it start fresh, and both need at least one picture beside them. aspect (16:9 default, also 1:1, 9:16, 4:3) is read on the first segment; sequence is the segments before this one, empty on the first.

The one output is a REACTOR_SEQUENCE - to the next segment, or to Reactor Render, whose VIDEO goes into Save Video. And since these are ordinary sockets, another node can write the prompt or generate a reference image, which is the reason to build this in Comfy instead of a web UI.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/reactor-team/comfyui-reactor-api
pip install -r comfyui-reactor-api/requirements.txt

The whole dependency list is reactor-sdk>=1.6 - light, no PyTorch surprises. Also on ComfyUI Manager as comfyui-reactor-api.

Then get a key: copy config.ini.example to config.ini inside the pack folder and paste your reactor.inc key under [API], or set REACTOR_API_KEY in the environment ComfyUI launches from - the env var wins. For the bundled examples, copy the repo's example_inputs/ into ComfyUI's input.

Where it goes wrong

No key, no run. You get a clean error naming the expected path, or "Reactor rejected the API key; check REACTOR_API_KEY". That path is the pack's own directory, not ComfyUI's root - the first thing people get wrong.

One session at a time. A second Reactor job prints "Waiting for another Reactor session to finish" and waits, even while a Realtime window holds the session. Raise MAX_CONCURRENT under [Sessions] in config.ini and restart.

References in the wrong place. A sound needs a picture beside it or a clip before it; a first or last frame needs a picture beside it; a frame segment takes no image of its own. And the audio cap is really three - or two on a segment that continues the one before, where the incoming clip's sound claims a slot.

Stale ComfyUI. The picture and sound sockets are autogrow, one appearing each time you connect one, on a pack built for ComfyUI's newer node API. On an old install they never appear - update before filing that as a bug.

CategoryReactor/Generate video

Inputs (9)

NameTypeDefaultDescription
promptSTRINGName each picture by its number: the connected pictures are Picture 1, Picture 2, … in socket order. For example: "The person in Picture 1 walks through the garden in Picture 2. The camera follows from the side." Name each sound by its number: the connected sounds are <Audio 1>, <Audio 2>, … in socket order. Give each its own sentence saying whether it is a voice, a sound or music, or the model may ignore it. For example: "<Audio 1> is the voice reference for <Subject 1>."
secondsCOMBOHow many seconds this segment plays. The model makes clips of only these lengths.
kindCOMBOHow this segment enters from the one before: shot blends softly, cut starts fresh, frame starts afresh from its last frame and carries its sound on as an audio reference. The first segment just opens the video.
imageoptIMAGEThe frame this segment starts on. It starts fresh, as a cut does; needs a picture beside it.
last_imageoptIMAGEThe frame this segment ends on, on a cut or frame segment; needs a picture beside it.
aspectoptCOMBO16:9Read on the first segment.
picturesoptCOMFY_AUTOGROW_V3—
soundsoptCOMFY_AUTOGROW_V3—
sequenceoptREACTOR_SEQUENCEThe segments before this one. Leave it empty on the first segment.

Outputs (1)

NameTypeDescription
REACTOR_SEQUENCEREACTOR_SEQUENCE—