SCAIL-2 Long Video Context
SCAIL-2 Long Video Context — the plain manual version, when you'd rather pick your own window
- model
- model
SCAIL-2 handles about 81 frames natively, and past that it's chunked: the clip gets split into overlapping windows, sampled separately, and stitched back together. This node is the manual version of that. You tell it how big each chunk should be (segment_len) and how much should overlap (segment_overlap), and it patches your diffusion MODEL so the sampler does the windowing for you. It's the straightforward sibling in the same pack as the "Smart" node - no strategy tables, no auto-decisions, just your numbers.
Think of it as the compatibility node. The Smart version is the one the author points you toward for daily use because it reads total_frames and picks sane chunk sizes. This one exists for when you already know what you want: replicating the official 81-frame / 5-overlap chunking, testing a specific window against artifacts, or holding the exact same settings across runs. If that's not you, grab the Smart node and don't look back.
How it works
Under the hood it's identical to the Smart node: your segment_len gets clamped to the 4n+1 pattern SCAIL-2's VAE requires, converted from pixel frames to latent frames ((frames-1)//4 + 1), and handed to ComfyUI's built-in comfy.context_windows.IndexListContextHandler with dim=2 (temporal). The defaults - 205 frames with 73 overlap, sized for ~15-second clips on a big-VRAM card - are the same table the Smart node lands on for that length, so the two nodes produce equivalent patches when you feed them matching numbers.
The one setting to understand is cond_retain_index_list, default "0". It keeps condition index 0 - your reference image - in every window. Drop it and each chunk re-anchors independently and identity drifts across boundaries; that's the classic SCAIL-2 long-clip failure, and this is the knob that holds it off.
The inputs that matter
segment_len- the chunk size in pixel frames. Default 205, steps by 4 to stay 4n+1.segment_overlap- overlap between chunks in pixel frames. Default 73; the tradeoff is bigger overlap smooths seams but doubles up compute.cond_retain_index_list- keep"0"unless you know you need more.
context_schedule, context_stride, fuse_method, freenoise, and causal_window_fix are the same context-window tuning knobs you'd find on ComfyUI's core Long Video Context nodes - the defaults (standard_static, stride 1, pyramid, freenoise off, causal fix on) are fine to leave alone. There's exactly one output, the patched model, which wires straight into your sampler. No diagnostics like the Smart node's decision string, so if you're debugging whether you actually got a single pass, this isn't the node that'll tell you.
Install
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/1GirlUniversity/ComfyUI-SCAIL2-LongVideoContext.git
Restart ComfyUI. No extra Python packages - the requirements file is comments-only - but you need a current ComfyUI with comfy.context_windows, and you still need the SCAIL-2 model weights yourself (Comfy-Org's scaled/MXFP8 release is the sane download). It doesn't replace the official SCAIL-2 nodes; it patches the model between your loader and sampler, alongside the stock graph.
Gotchas
Because there's no auto-sizing, feeding a segment_len larger than your clip means it runs single-pass - that's fine, just not what you wanted. If you OOM with 205/73 defaults, shrink the window before you shrink anything else. And on an older ComfyUI build, the import fails outright: update core first.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| segment_len | INT | 2051–99999 | — |
| segment_overlap | INT | 730–99999 | — |
| context_schedule | COMBO | standard_static | 4 options: standard_static, standard_uniform, looped_uniform, batched |
| context_stride | INT | 11–32 | — |
| fuse_method | COMBO | pyramid | 4 options: pyramid, relative, flat, overlap-linear |
| freenoise | BOOLEAN | false | — |
| causal_window_fix | BOOLEAN | true | — |
| cond_retain_index_list | STRING | 0 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |