Nodes/ComfyUI-SCAIL2-Easy/SCAIL-2 Simple Video
ComfyUI Node

SCAIL-2 Simple Video

One node does the fiddly 90%

By nkxx188·Created 3 months ago·Updated 3 months ago· 77
SCAIL-2 Simple Video
  • model
  • positive
  • negative
  • vae
  • sampler
  • sigmas
  • reference_image
  • pose_video
  • clip_vision
  • driving_track_data
  • reference_track_data
  • frames
  • summary
seed1
cfg1.0
modereplacement
advancedfalse
long_video_modechunk
max_frames0
chunk_frames81
overlap_frames5
color_correctionfalse
context_frames81
context_overlap_frames20

If you've ever stared at the stock SCAIL-2 workflow and thought "why is this eleven nodes," this is the node that fixes it. SCAIL2SimpleVideo is the workhorse of the SCAIL2-Easy pack: it wraps ComfyUI's native SCAIL-2 support and hides the parts people consistently wire wrong - colored masks, CLIP vision encoding, chunk arithmetic. It doesn't reimplement the model and it doesn't call any API. It just turns a wall of conditioning plumbing into one node you can actually read.

Worth a sentence on what SCAIL-2 is, because it changes what you expect here. It's Z.ai's Apache 2.0 motion-transfer model built on a Wan 2.1 base, and it dropped the stick-figure skeleton entirely - that's what unlocked cross-identity character replacement and multi-character video. So "reference image + driving video + masks" is the whole interface. This node feeds exactly that.

What it does

You hand it a model, conditioning, a reference image, and a driving video. Internally it runs the CLIP vision encode, builds the colored masks SCAIL-2 wants, sets the ref_mask_flag conditioning the mode expects, and decodes the result back to frames. The sampler and sigmas you still wire yourself, same as any Wan graph.

The two modes are the thing to understand first:

  • replacement - swap the person in the driving video for your reference character. Uses SAM3 track data and follows the driving video's position and proportions.
  • animation - keep your reference's body, clothes, and style, and make them do the driving video's motion.

Switching is one dropdown on this node. No rewiring, which is exactly the part the stock graph made you rebuild every time.

The inputs that matter

  • reference_image - an IMAGE or a SCAIL2_REFERENCE_PACK from this pack's Reference Pack node. Both land in the same socket.
  • pose_video - the driving video as an IMAGE batch. Typically comes out of SCAIL-2 Fit Video after resizing.
  • seed and cfg - cfg defaults to 1.0, which is normal for this model family. If faces wander, the community fix is raising steps and CFG a bit before you blame the node.
  • mode - replacement / animation.
  • advanced - a boolean that unhides everything below. The pack's frontend hides long_video_mode, max_frames, chunk_frames, overlap_frames, color_correction, and the context pair until you flip it.

Long-video logic lives behind advanced. Default chunk mode splits the clip into chunk_frames (81) with overlap_frames (5) of context between segments, then stitches. max_frames = 0 means "no extra limit." The context_sampling mode is the other long-video path: it samples the whole clip with a context window you set via context_frames (81) and context_overlap_frames (20), which is a different tradeoff - more continuity, more compute. color_correction tries to match each chunk's colors to the previous chunk's overlap so joins don't flash.

Two optional inputs, driving_track_data and reference_track_data, both SAM3_TRACK_DATA from SAM3_VideoTrack. They're not optional in practice: replacement mode with a single image needs both, and any multi-subject pack needs driving track data. Skip them and the node raises a clear error telling you to raise SAM3_VideoTrack.max_objects - the single most common way people get stuck.

Outputs

  • frames - the generated video as an IMAGE batch. Straight into VHS_VideoCombine.
  • summary - a JSON string with width, height, length, seed, cfg, and what the context/reference/pose stages did. Handy for debugging, ignorable in production.

Installing it

Same story as every node in this pack. ComfyUI Manager → search "ComfyUI-SCAIL2-Easy", or:

cd ComfyUI/custom_nodes
git clone https://github.com/jieg9341-lab/ComfyUI-SCAIL2-Easy

then restart. You need a recent ComfyUI with native SCAIL-2 support (the "Add model support for SCAIL-2" commit), plus the model files: the wan2.1_14B_SCAIL_2_fp8_scaled diffusion model, the UMT5 text encoder, a CLIP vision ViT-H, the Wan 2.1 VAE, and optionally the LightX2V speed LoRA. The pack's own dependencies are light (decord, imageio-ffmpeg, pillow, safetensors, easydict), but the bundled workflows also expect VideoHelperSuite, KJNodes, SAM3, and DiffusionModelLoaderKJ / WanChunkFeedForward.

Where people get burned

The compute wall is real - SCAIL-2 is minutes per clip, not seconds, and this node can't fix that. Face identity drifts on long clips and across chunk boundaries; that's the model, not the node. And remember chunk_frames is stepped by 4 for a reason: Wan latents want that 4n+1 shape, so don't hand-type a random number like 100 and expect it to behave. Start with the bundled 1. SCAIL2_simple.json workflow, cap the video at 81 frames for a first test, and only then reach for the long-video modes.

CategorySCAIL-2/Simple

Inputs (22)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
samplerSAMPLER
sigmasSIGMAS
reference_imageIMAGE,SCAIL2_REFERENCE_PACK
pose_videoIMAGE
clip_visionCLIP_VISION
seedINT10–18446744073709550000
cfgFLOAT1.00–20
modeCOMBOreplacement2 options: replacement, animation
advancedBOOLEANfalse
long_video_modeCOMBOchunk2 options: chunk, context_sampling
max_framesINT00–100000
chunk_framesINT8117–321
overlap_framesINT50–33
color_correctionBOOLEANfalse
context_framesINT8117–321
context_overlap_framesINT200–320
driving_track_dataoptSAM3_TRACK_DATA
reference_track_dataoptSAM3_TRACK_DATA

Outputs (2)

NameTypeDescription
framesIMAGE
summarySTRING