Reactor FastH3-Omni Segment
Script a FastH3-Omni Clip Picture by Picture, Shot by Shot
- image
- last_image
- pictures
- sounds
- sequence
- REACTOR_SEQUENCE
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,cutorframe, 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
imagemakes 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.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Name 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>." | |
| seconds | COMBO | How many seconds this segment plays. The model makes clips of only these lengths. | |
| kind | COMBO | How 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. | |
| imageopt | IMAGE | The frame this segment starts on. It starts fresh, as a cut does; needs a picture beside it. | |
| last_imageopt | IMAGE | The frame this segment ends on, on a cut or frame segment; needs a picture beside it. | |
| aspectopt | COMBO | 16:9 | Read on the first segment. |
| picturesopt | COMFY_AUTOGROW_V3 | — | |
| soundsopt | COMFY_AUTOGROW_V3 | — | |
| sequenceopt | REACTOR_SEQUENCE | The segments before this one. Leave it empty on the first segment. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| REACTOR_SEQUENCE | REACTOR_SEQUENCE | — |