Nodes/ComfyTV/Sequence
ComfyUI Node

Sequence

Stitch Clips and Transitions Into One Cut

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Sequence
  • videos
  • video
force_run_token0
project_id
parent_output_id0
segments

Once you're generating clips instead of shooting them, the next question is always "okay, now how do I cut them together?" That's Sequence - the ComfyTV stage under ComfyTV/Compose that assembles multiple video segments into one output, with in/out points and transitions. It's the middle ground between "drag clips into a timeline" (the pack's bigger Director console) and hand-concatenating with ffmpeg (please don't).

The videos input is the star: it's an autogrow slot, so you wire in as many COMFYTV_VIDEO sources as you have clips and the node hands each one a slot. Then segments - a JSON list, in playback order, [{slot, in_s, out_s, transition, trans_dur}] - drives the actual arrangement: which slot plays, its in/out times in seconds, the transition between segments, and the transition duration. It's driven by the segment-list UI in the node body, so you're mostly arranging rows, not typing JSON. Wire at least one video and give the list at least one segment, and you get one video output: the assembled cut, ready for the color/FX stages downstream.

The transitions are the fun part of the pack - the README claims 57 crossfade variants plus luma wipes. A cut is the zero-effort default; crossfades, dissolves, and wipes are the difference between a montage that feels stitched and one that feels directed.

When Sequence and when Director?

Sequence is for quick assembly: a handful of clips, some transitions, one output. The Director console is the bigger weapon - a shot-by-shot timeline where every clip is generated, with per-clip transitions, shared cast for cross-shot consistency, and content-addressed caching. If you're arranging already-rendered clips, Sequence is less ceremony and it's the one you'll reach for in a small flow. If you're building a whole generated film, go Director.

Install

Ships with ComfyTV:

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart ComfyUI; under ComfyTV → Compose. ComfyUI Manager: search "ComfyTV". Desktop/macOS: clone into the running instance's absolute custom_nodes path (from the startup log), check for a nested ComfyTV/ComfyTV/, and fully restart the backend. No models, no extra Python deps - this is pure timeline math over ffmpeg-available footage.

Troubleshooting

  • "Sequence needs at least one connected video segment." The node's own error: either no videos are wired, or the segments list references slots that aren't connected. With no segments at all, it falls back to concatenating whatever's wired in slot order with cuts - so an empty list is a legal "just glue them together" mode, but a mismatched list errors.
  • Clips play out of order. segments is playback order, not slot order - sort the list.
  • Transition looks like a hard cut. trans_dur of 0 or a cut transition is instant by design; give crossfades a real duration.
CategoryComfyTV/Compose

Inputs (5)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
segmentsSTRINGJSON [{slot, in_s, out_s, transition, trans_dur}] in playback order — driven by the segment list UI
videosCOMFY_AUTOGROW_V3

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO