Nodes/XB_ToolBox/XB-BOX - 🆕 SCAIL 总线 (New)
ComfyUI Node

XB-BOX - 🆕 SCAIL 总线 (New)

One control panel for a whole SCAIL relay chain

By wjluoxiao·Created 5 months ago·Updated 6 days ago· 302
XB-BOX - 🆕 SCAIL 总线 (New)
  • model
  • clip
  • vae
  • clip_vision
  • global_ref_image
  • reference_image_mask
  • pose_video
  • pose_video_mask
  • 📦 WAN_SCAIL_BUS
negative_prompt色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走
width512
height896
total_frames0
fps16
pose_strength1.00
pose_start0.00
pose_end1.00
replacement_modefalse
concat_mode自动
vae_encode_tile_size256
vae_decode_tile_size192
spatial_overlap32
temporal_chunk_size64
temporal_overlap8
steps20
cfg5.0
sampler_name
scheduler
seed123456789
cleanup双次缓存清理
scale_methodlanczos
crop_modecenter

SCAIL is Wan's pose-driven character animation - you feed it a character reference image and a pose/motion video, and it makes the character perform that motion. XB's SCAIL pipeline turns that into an infinite-length video by chaining relay segments, and this node ("🆕 SCAIL 总线 (New)") is the control panel for the whole thing. Everything the relay nodes need downstream - model, CLIP, VAE, pose video, reference image, all the sampling and VRAM knobs - gets bundled here into one WAN_SCAIL_BUS wire, so your downstream relay nodes only ask for a prompt and a segment length.

How it works

pack_bus() does two jobs. First it encodes your global_ref_image with the clip_vision model, scaled to the video's width/height - that's the identity conditioning that keeps the character looking like the reference across every segment. Then it bundles every input into a dict and stamps a current_offset of 0, which is where in the pose video the first segment starts. Downstream relay nodes read from the bus and advance that offset as they go.

The inputs that matter

There are a lot, but they fall into a few groups:

  • model / clip / vae / clip_vision - the whole generation stack, required. clip_vision is the one people forget; without it the reference identity is weak.
  • pose_video - the motion you're driving from. total_frames of 0 means "take the length from the pose video"; set it above 0 to force a cut. fps default 16, which is SCAIL's native rate.
  • pose_strength / pose_start / pose_end - how hard the pose drives the generation, and over which fraction of each segment (e.g. 0.3–0.8 applies it only in the middle). This is your dial for "follow the pose exactly" vs "interpret it loosely."
  • replacement_mode - off is "animation mode" (character performs the pose); on is "replacement mode," where the reference character replaces the subject, and you can isolate it with reference_image_mask so only that region is replaced.
  • concat_mode - where the accumulated video lives: auto switches to CPU when VRAM gets tight (over 30% used), or force GPU/CPU.
  • VAE tile / temporal knobs - vae_encode_tile_size, vae_decode_tile_size, spatial_overlap, temporal_chunk_size, temporal_overlap. These keep encode/decode from OOMing on long videos.
  • steps / cfg / sampler_name / scheduler / seed - the sampling config, applied to every segment.
  • cleanup - up to "卸载显存模型" (unload the GPU model) after the run.

Output: a single WAN_SCAIL_BUS socket.

Install

Standard XB_BOX install - ComfyUI Manager search XB_ToolBox, or clone into custom_nodes, restart. Then you need a SCAIL-capable Wan model (Wan 2.1 14B SCAIL; the fp8 scaled version from kijai's WanVideo_comfy_fp8_scaled repo is what most people run on 16GB cards), plus a pose/driving video and a character reference image.

Common issues

The default negative_prompt is a long Chinese quality-negative list - works fine, but you'll probably want your own. If identity drifts between segments, check clip_vision is wired and pose_strength isn't cranked so high the pose overrides the character. And if the chain stops early, your pose video ran out of frames before the relays finished.

CategoryXB_ToolBox/Pipeline

Inputs (31)

NameTypeDefaultDescription
modelMODEL
clipCLIP
vaeVAE
clip_visionCLIP_VISION
negative_promptSTRING色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走
widthINT51216–8192
heightINT89632–8192
total_framesINT00–9999990=自动从姿态视频取长度;>0=强制截断到此帧数
fpsFLOAT161–120
pose_strengthFLOAT1.000–10
pose_startFLOAT0.000–1
pose_endFLOAT1.000–1
replacement_modeBOOLEANfalse
concat_modeCOMBO自动视频累积拼接位置: 自动=显存>30%切CPU | 强制GPU=始终GPU | 强制CPU=始终CPU
vae_encode_tile_sizeINT25664–3840
vae_decode_tile_sizeINT19264–3840
spatial_overlapINT320–3840
temporal_chunk_sizeINT640–8192
temporal_overlapINT80–8192
stepsINT201–100
cfgFLOAT5.00–10
sampler_nameCOMBO41 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +35
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
seedINT123456789
cleanupCOMBO双次缓存清理4 options: 不做任何清理, 单次缓存清理, 双次缓存清理, 卸载显存模型
global_ref_imageoptIMAGE
reference_image_maskoptIMAGE参考图遮罩 (替换模式: 隔离角色区域)
pose_videooptIMAGE姿态/驱动视频
pose_video_maskoptIMAGESCAIL-2 彩色遮罩视频
scale_methodoptCOMBOlanczos5 options: bilinear, bicubic, lanczos, nearest-exact, area
crop_modeoptCOMBOcenter2 options: center, disabled

Outputs (1)

NameTypeDescription
📦 WAN_SCAIL_BUSWAN_SCAIL_BUS