ComfyUI nodes for chaining MiniMax H3 clips without the quality slowly falling apart.
When you chain H3 clips, each new clip starts from the tail of the last one. You tell the model where to start, but never where to end. Detail is lost a little in every clip, and because each clip starts from the one before, the loss stacks up over the chain.
Give the model a target. Before a shot is rendered, Clown Prophecy Sampler renders a short, clean ending for that shot from the shot's own prompt and reference pictures. Clown Anchoring pins that ending to the back of the shot, so the shot has to land on good-quality frames. Clown Context pins the previous shot's tail to the front, so the motion carries over.
Do this every two shots or so and the quality never drops far enough to notice.
| Node | What it does |
|---|---|
| Clown Context | Holds the previous shot's last frames (and audio) at the start of this shot. |
| Clown Anchoring | Holds a source's frames (and audio) at the end of this shot. Plug Clown Prophecy's ending into next_shot. |
| Clown Prophecy Sampler | Renders the clean ending for the shot, before the shot exists. |
| Clown Prophecy Prompt | How the ending is worded: Ollama rewrites the prompt so it only describes the ending, your own text, or the shot prompt as is. |
| Clown Shot Counter | The shot number, plus previous_shot and continuation (true from shot 2 on). |
| Clown Force Audio | Puts a real sound track (song, voice) into the latent so the sampler keeps it and lip-syncs to it. |
Everything shows up under the Clown Context Suite category.
| Setting | Meaning |
|---|---|
bypass |
On = Prophecy does nothing and the workflow runs normally, with the main sampler making its own sound. Lets you drop the node into any workflow. |
run_every |
1–10. Prophecy only runs on shots that are multiples of this (3 = shots 3, 6, 9…). Other shots run normally. |
prophecy_frames |
Length of the ending (5, 22, 39, 56, 73…). Match Clown Anchoring's tail_frames. |
seed |
Seed for the ending only. |
audio_mask |
How much the main sampler may change the shot's sound: 0 = keep it exactly, 1 = remake it. Ignored when the sound comes from Clown Force Audio with its own mask. |
accept |
Off = render a candidate ending, show it, and stop. Run again to reroll. On = use that ending and render the shot. On with no candidate yet = render one and use it straight away. |
prophecy_latent_folder |
Folder in output/ where the endings are saved. |
The shot's sound: if the latent going in already carries sound (from Clown Force Audio), Prophecy uses it. Otherwise it makes the shot's sound with a tiny quick render first, so the ending and the full shot share the same sound.
| Setting | Meaning |
|---|---|
use_classic_counter on |
The shot_number box is the shot. increment / decrement change it each time you hit run, increment after accept only after an accepted Prophecy run (one shot at a time only), fixed never. |
use_classic_counter off |
The shot is worked out when the run starts: highest saved latent in latent_prefix + 1. A rejected ending saves nothing, so a batch rerolls the same shot until one is accepted, then moves on. Each new chain needs its own empty folder. |
latent_prefix |
The Save Latent filename_prefix (count mode). |
The box at the bottom of the node shows the shot the last run used, and in count mode how many latents are saved and which shot is next.
Both copy real latents into the shot at matching block positions and mask them so the sampler keeps them. Frame counts go 5, 22, 39, 56, 73… (17n + 5); the drop settings go in steps of 17.
head_frames(Context) is the overlap with the previous shot. If you use pre-split audio, set it to the audio overlap (e.g. 39).drop_last/drop_firsttrim the held frames from either end.hold_audioholds the audio under the held frames too.
Rules that work:
- Context and Anchoring must never hold the same frames.
- The Anchoring frames must outnumber the Context frames.
example_workflows/clown_context_suite_example.json makes a talking vlog from pre-split audio clips and one prompt file per shot.
- Set the prompt folder in Load Text Batch From Dir and the audio folder in Shot Audio (one file per shot). One
.txtand one audio file per shot, numbered in order. - Load your two reference pictures.
- Set the batch count to the number of shots and run. With the counter on
incrementandaccepton, every shot renders in one go.
Video Settings is set to 8-second shots (192 frames), Clown Context to 39 / drop_last 17 to match a 39-frame audio overlap, and Prophecy to run every 2 shots.
- ComfyUI-H3-Motion-Context (save / load latent)
- ComfyUI-H3-Prompt-IDE
- ComfyUI-KJNodes
- ComfyUI-VideoHelperSuite
- rgthree-comfy
- ComfyUI-Custom-Scripts
- ComfyUI-Easy-Use
- ComfyMath
- Load Text Batch From Dir, Load Audio Batch From Dir, LoadImageCrop, VideoResolutionNode, and the MiniMax low-VRAM nodes
Clown Prophecy Prompt in ollama mode needs Ollama running locally.
Clone into ComfyUI/custom_nodes/ and restart ComfyUI:
cd ComfyUI/custom_nodes
git clone https://github.com/roycho87/clown_context_suite
No extra Python packages needed.