SCAIL-2 Segment Planner
Dry-run your SCAIL-2 schedule before you burn GPU hours
- summary
SCAIL-2 clips cost minutes to generate. A 20-second run on a mid-range card is north of 40 minutes, and the whole failure mode of the model - identity drift at chunk boundaries - only shows up after you've paid for the run. The SCAIL-2 Segment Planner exists so you can see exactly how your plan will be chopped into chunks before the scheduler spends a single sampling step. Treat it as the preview button for this pack.
It's a pure math node. You feed it the same segment_plan text you'd give the scheduler, plus max_chunk_frames, overlap_frames, and optionally max_frames and pose_frame_count to cap or align against your actual driving video. It parses the plan, runs the exact same chunk-splitting logic the scheduler uses, and returns one output: summary, a JSON blob listing every segment and every chunk with its generate length, what gets discarded from the overlap, and which reference each chunk uses. There's nothing to wire downstream except your eyeballs (and the Chunk Keyframe Extractor, which can consume the summary directly if you want frames pulled at those exact boundaries).
The mechanics are worth internalizing because they're the same arithmetic that determines whether a long video comes out continuous or full of jump cuts. SCAIL-2's native window is 81 frames, and this node normalizes max_chunk_frames to the nearest 4n+1 value (so 80 becomes 81). The catch everyone hits first: max_chunk_frames is the full generation window including the overlap. With the recommended 81 + 5, each continued chunk keeps only 76 new frames before the next chunk starts, so a segment sized near the full window splits into a main chunk plus a tiny follow-up - the classic 81 -> 76 + 5 shape the README warns about. The planner shows you this happening in advance instead of you discovering it in the output.
It also catches a genuinely common mistake: if your segment plan totals fewer frames than pose_frame_count, the summary carries a warning that the leftover driving frames will simply never be generated. If you've been adding segments without checking the running total, this is the node that tells you before you render a video that ends early.
The segment_plan input is a plain STRING, so you can type it by hand, but the intended path is to generate it with the SCAIL-2 Segment Plan Builder and drag its segment_plan output in. The builder gives you the friendly per-segment form; this node is where you check the result of that form. One thing to know: the planner is a debug node - it does not generate anything and does not enforce your plan. The scheduler will happily run whatever plan you hand it, resolved or not, which is exactly why a 30-second check here saves you a 40-minute mistake.
Install is shared with the pack: ComfyUI Manager search for comfyui_scail2_multi_cond, or git clone https://github.com/TTPlanetPig/comfyui_scail2_multi_cond into ComfyUI/custom_nodes, restart, and hard-refresh if the dynamic UI buttons are missing. The package ships no models and depends only on core nodes - WanSCAILToVideo, SamplerCustom, VAEDecode, ColorTransfer - so if you can run SCAIL-2 at all, this runs.
Where people get burned: they trust the plan builder's totals without checking the chunk breakdown, then blame the model when a reference change lands mid-chunk and the face drifts. Run this node, read the chunk list, and if a boundary falls somewhere you don't like, nudge the segment's frames count or boundary_overlap until it doesn't. It's boring, it's free, and it's the difference between tuning a workflow and debugging a render.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| segment_plan | STRING | # frames | reference | prompt | negative | boundary_overlap 49 | 1 | first segment prompt | | 5 121 | 2 | second segment prompt | | 5 73 | 3 | third segment prompt | | 5 157 | 4 | fourth segment prompt | | 5 | — |
| max_frames | INT | 00–100000 | — |
| pose_frame_count | INT | 00–100000 | — |
| max_chunk_frames | INT | 8117–81 | — |
| overlap_frames | INT | 50–33 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| summary | STRING | — |