XB-BOX - 🏃♀️ Animate 无限接力点
Chaining motion transfer past the 81-frame wall — the Animate relay node
- wan_animate_bus
- prev_video
- 📦 WAN_ANIMATE_BUS (传给下段)
- 🎞️ 累加视频流
Wan Animate's native context is roughly 81 frames. Your driving video is almost certainly longer. XB_WanAnimate_RelayNode is the pack's answer to that gap: you chain relay nodes, each one generating one segment of the motion transfer, feeding the previous segment's tail into the next as continue_motion, and stitching everything into a single accumulated video stream. Chain a few and you've got an arbitrarily long animated take. The display name - "Animate 无限接力点" (infinite relay point) - is aspirational about the length and accurate about the mechanism.
How a relay works
Every relay reads the shared config off the incoming wan_animate_bus, figures out where it is in the source video (the bus carries a current_offset), picks a segment length, and calls the pack's XB_WanAnimateToVideo engine to build conditioning. Then it samples with the bus's KSampler settings, trims the overlap frames (both in latent and pixel space), and appends the result to the accumulated stream. If the driving video is exhausted, the relay prints a message and passes through the previous video untouched - which is how a chain with too many relays doesn't crash, it just stops growing.
Two inputs decide most of the behavior:
- segment_length (default 81) - frames per relay. The 1+8N-safe default is right; drop it to 49 if you're VRAM-constrained.
- use_local_ref_image - "继承总线全局图" (inherit the bus's global reference) or "独立参考图" (a separate per-segment reference from
ref_image_file). Independent reference disables motion-continuity overlap, because re-encoding a different face would fight the CLIP features.
Plus positive_prompt (the per-segment scene description) and optional prev_video to seed the very first segment from outside.
Outputs: 📦 WAN_ANIMATE_BUS (传给下段) - the bus, offset advanced - and 🎞️ 累加视频流 (the accumulated IMAGE stream). Wire the bus into the next relay, and the video into a VideoCombine at the end.
The honest takes
This is where long-form Animate actually lives, and it mostly works - but it's a pipeline node, so it can fail in ways that aren't obvious. The most common beginner confusion is the positive/negative split: the positive_prompt lives on each relay, while the negative prompt lives on the bus. Change the negative on one relay and nothing happens - it's read from the bus. The other thing to expect is identity drift: continuity frames reduce the jump between segments but don't eliminate it, and the pack's own node type carries the same limitation every chunked Wan pipeline has. Finally, note this is the original relay; the pack also ships XB_WanAnimate_RelayNode_New with a relay_count that auto-chains segments inside one node - if you're building a new workflow, that one is usually the better starting point.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/WJLUOXIAO/XB_ToolBox.git
then restart, or install via ComfyUI Manager ("XB_ToolBox"). Needs the Animate model stack wired through the bus, plus a clip_vision model if you use an independent reference.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| wan_animate_bus | WAN_ANIMATE_BUS | — | |
| segment_length | INT | 811–8192 | — |
| positive_prompt | STRING | Describe the scene... | — |
| use_local_ref_image | COMBO | 继承总线全局图 | 2 options: 继承总线全局图, 独立参考图 |
| ref_image_file | COMBO | 2 options: example.png, vrgdg_placeholder_i2i.png | |
| prev_videoopt | IMAGE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| 📦 WAN_ANIMATE_BUS (传给下段) | WAN_ANIMATE_BUS | — |
| 🎞️ 累加视频流 | IMAGE | — |