Continuity Guide Frames
Continuity Guide Frames — where a ControlNet drawing becomes frames
- IMAGE
Let's get the honest part out first: you will never add this node by hand. Continuity Guide Frames is an internal node in the ComfyUI-Continuity pack, marked dev-only, and the only thing that creates it is the pack's big Creator node. When you press the scissors-and-trace workbench, aim a shot at a ControlNet guide, and hit Render, the Creator writes one of these into the graph for you. Its job, per the pack's own description, is "one pass's window of a ControlNet guide, at the render's canvas and rate."
Here's the mental model: in the pack's timeline, Continuity Clip Frames is what a seam inherits from an earlier clip, and this node is the mirror image - what a pass is pointed at. You traced a clip on the ControlNet bench, the drawing landed in input/continuity/control/, and the shot it's aimed at needs to sample frame-for-frame against that drawing. This node turns the file into the exact stretch of frames that one generation needs.
How it works
The node reads the traced file, trims it to your window, decodes it at the render's resolution and frame rate, and hands back an IMAGE tensor. Three behaviors are worth knowing because they'll look like bugs the first time you see them:
- The window.
startandendare in seconds, and a zeroendmeans "to the end of the file" - that's the untrimmed case. A still image (PNG/JPG/etc.) is treated as one drawing every frame is aimed at, so it's expanded to the full frame count. - A short guide holds its last frame. If the drawing runs out before the shot does, the last frame is held rather than looped or padded black. That's deliberate - a guide that ran out is a shot that stops moving with the drawing, not a failed one.
- Resize before, not after. It fits the frames to
width/height(0 means leave native) so the tensor handed to the apply node is small enough to be sane - fifteen seconds of 1080p float32 is about nine gigabytes, and the same window at a 768-edge canvas is under one.
Why is this a node at all instead of a tensor the emitter builds inline? Because the emitter runs at queue time on the event loop, and decoding fifteen seconds of video there would stall the progress socket for every render in the queue. This node runs where the executor runs it, and ComfyUI caches its output across queues that didn't change it. The cache key even fingerprints the file's mtime, so re-tracing over the same filename forces a re-render instead of a cache hit on a drawing that no longer exists.
The inputs that matter
You won't set these by hand, but if you're digging through a workflow: filename is the guide file, frames is how many frames the pass needs, fps defaults to 24, and start/end are your trim. The single output, IMAGE, feeds the family's guide node - LTXVAddGuide on LTX 2.5, the equivalent apply on H3.
Installing it
It ships with the pack, nothing extra. cd ComfyUI/custom_nodes, clone, restart:
cd ComfyUI/custom_nodes
git clone https://github.com/roadmaus/ComfyUI-Continuity
Restart ComfyUI. There's no pip install - the pack's declared dependencies are empty. The node itself needs no weights; if your tracing uses depth or pose, those run their own models (Depth Anything 3, or SDPose plus an SD 1.5 VAE), but the guide reading is pure arithmetic. One historical quirk: the node's module still says ComfyUI-MiniMax-Creator, the pack's old name. GitHub redirects the old address, so an old clone keeps pulling, but point it at the new repo if you can.
Troubleshooting
The two failure modes are both in the source, not guesses. If the guide file is empty at the trim point, you get a clear refusal: "the guide ... has nothing at ... s. Re-trim it on the card, or trace it again on the ControlNet bench." And if a re-trace seems to have no effect on a pass, remember the mtime fingerprint - make sure the file actually changed, then re-render. Other than that, treat this node the way the pack intends: a piece of machinery that shows up in your graph, does one job, and isn't something you touch. It's one of the rare plumbing nodes where "ignore it and let the Creator drive" is genuinely the right workflow.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| filename | STRING | — | |
| start | FLOAT | 0.0000–86400 | — |
| end | FLOAT | 0.0000–86400 | — |
| frames | INT | 51–100000 | — |
| width | INT | 00–16384 | — |
| height | INT | 00–16384 | — |
| fps | FLOAT | 24.0001–240 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |