IAMCCS SCAIL Extends
Run SCAIL-2 past 81 frames without hand-chaining samplers
- model
- positive
- negative
- vae
- sampler
- sigmas
- pose_video
- pose_video_mask
- reference_image
- reference_image_mask
- clip_vision_output
- images
- frame_count
- source_frames
- trimmed_frames
- chunk_plan
SCAIL-2 is the motion-transfer model that ditched the pose skeleton, and the community consensus is that it's unnervingly good - and expensive. Native SCAIL-2 tops out around 81 frames, and chaining longer clips by hand means babysitting sampler after sampler, feeding each chunk's output back as the next anchor. IAMCCS_ScailExtends is the pack's answer: one node that wraps the official WanSCAILToVideo, SamplerCustom and ColorTransfer nodes and splits your driving video into 81-frame chunks with a 5-frame SCAIL anchor automatically.
How it works
You hand it a model, positive/negative conditioning, a vae, a sampler and sigmas, plus the pose_video frames and the reference image for identity. It then runs SCAIL-2 chunk by chunk. Each chunk keeps the last overlap frames (default 5) as anchor into the next, so the motion continues instead of restarting. It's the same chunking you'd do manually - it just removes the manual.
The knobs that actually matter:
chunk_length(81) - max frames per chunk. SCAIL-2 was designed around 81; bigger works but artifacts creep in.overlap(5) - anchor frames carried from the previous chunk. This is your continuity dial.continuity_profile-external_1to1mimics the source plugin's behavior exactly;iamccs_boundary_rampgrades only the first seam frames with a fading color match;offskips it.color_method-reinhard_lab(default),mkl_lab, orhistogram. This drives the color transfer across chunk seams.width/height(512×896 default) - keep both divisible by 32; thedimension_policywarns (or errors) if you don't.
On the optional side: reference_image + reference_image_mask give SCAIL-2 the subject it's replacing, pose_video_mask confines the pose conditioning, replacement_mode toggles character replacement, and pose_strength (with pose_start/pose_end for temporal ramping) controls how hard the pose drives. empty_cache_each_chunk is there for VRAM relief on long runs.
Outputs are images (the assembled clip), frame_count, source_frames, trimmed_frames, and a chunk_plan string describing what was generated - the same plan format as the companion IAMCCS_ScailExtendPlan planner node.
Where people get burned
Two things, both grounded in how SCAIL-2 actually behaves. First, identity drift across chunk boundaries is the model's known weak spot - the KB's SCAIL-2 panel says faces wander, and the community fix is dropping the LightX2V speed LoRAs, raising steps and CFG, and accepting the rest. A boundary ramp helps the color seam, but it won't hold a face across a 200-frame clip. Second, runtime: this node hides the chunk chaining, not the cost. SCAIL-2 takes minutes per clip even on a 5090, and IAMCCS_ScailExtends will happily run eight chunks for you - give it a moment before you assume it hung.
Install
It ships in the IAMCCS-nodes pack (one install for the whole family):
- ComfyUI Manager → search "IAMCCS" → install → restart.
- Or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Then restart ComfyUI. The pack requires ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8. You'll also need SCAIL-2's own weights (the Comfy-Org scaled ones are the sane download - the raw Z.ai repo is ~65GB) and a SCAIL-2 workflow's model/conditioning already loaded; this node is the chunking engine, not the loader.
Inputs (29)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| sampler | SAMPLER | — | |
| sigmas | SIGMAS | — | |
| pose_video | IMAGE | — | |
| width | INT | 51232–8192 | — |
| height | INT | 89632–8192 | — |
| noise_seed | INT | 00–18446744073709550000 | — |
| cfg | FLOAT | 1.00–100 | — |
| chunk_length | INT | 819–1024 | Max frames per SCAIL chunk. SCAIL-2 was designed around 81. |
| overlap | INT | 51–81 | Anchor frames from the previous chunk. SCAIL-2 default is 5. |
| seed_mode | COMBO | increment | 2 options: increment, fixed |
| continuity_profile | COMBO | off | external_1to1 matches the source plugin behavior. boundary_ramp only grades the first seam frames. |
| color_method | COMBO | reinhard_lab | 3 options: reinhard_lab, mkl_lab, histogram |
| boundary_frames | INT | 121–76 | Only used by iamccs_boundary_ramp. |
| boundary_strength | FLOAT | 0.000–2 | Initial seam color correction strength for iamccs_boundary_ramp. |
| dimension_policy | COMBO | warn | SCAIL-2 pose/mask conditioning is safest when width and height are divisible by 32. |
| pose_video_maskopt | IMAGE | — | |
| reference_imageopt | IMAGE | — | |
| reference_image_maskopt | IMAGE | — | |
| clip_vision_outputopt | CLIP_VISION_OUTPUT | — | |
| replacement_modeopt | BOOLEAN | true | — |
| pose_strengthopt | FLOAT | 1.000–10 | — |
| pose_startopt | FLOAT | 0.000–1 | — |
| pose_endopt | FLOAT | 1.000–1 | — |
| add_noiseopt | BOOLEAN | true | — |
| empty_cache_each_chunkopt | BOOLEAN | false | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| frame_count | INT | — |
| source_frames | INT | — |
| trimmed_frames | INT | — |
| chunk_plan | STRING | — |