XB-BOX - 🆕 Wan 无限接力点 (New)
Relay_count turns N nodes into one
- wan_bus
- start_image
- prev_video
- 📦 WAN_BUS (Pass to next)
- 🖼️ Current End Image (Connect to next Start Image)
- 🎞️ Accumulated Video Stream
The original XB_Wan_InfiniteRelayNode does one segment per node, which means a 20-second clip is four copies of the same node in a row - cleaner than hand-chaining, but still repetitive. XB_Wan_InfiniteRelayNode_New ("XB-BOX - 🆕 Wan 无限接力点 (New)") is the quality-of-life update: it adds a relay_count dial so one node loops N segments internally. Set it to 3 and you get three chained relays out of a single node, each one re-seeding the next with its end image.
That's the whole pitch, and it's a good one. For a fixed-length scene you no longer add or delete nodes when the runtime changes - you just bump a number. The node's tooltip says it plainly: "本节点自动循环 N 次 = 串联 N 个接力点" (this node auto-loops N times = chaining N relay points).
What's new versus the original
The internals are the same trusted pipeline - encode prompt, build the segment latent via XB_WanImageToVideo, two-pass high/low noise sampling with the model_high/model_low split, decode, trim, progressive color correction, accumulate. The differences are the inputs it exposes directly on the node instead of burying in the bus:
trim_head_frames(default 1) - the overlap-dedupe count, now set per relay instead of inherited from the bus.relay_count(default 1) - how many segments this node runs. The loop feeds each segment'slast_frameback in as the nextcurrent_image, then accumulates everything into one stream.total_frames_display- a read-only field the node fills in with its estimate of total frames ((length − trim) × relay_count), so you can sanity-check duration without doing arithmetic.
Everything else flows from the bus: resolution, length, sampler, cfg, seed, chunking, concat_mode. Outputs are unchanged - WAN_BUS to pass on, the final end image, and the accumulated video.
When it's the right tool
Use the New node when your scene is one continuous shot of a known length - a 16-second pan is relay_count: 2 at 81-frame segments, done. Use the original chain of separate relays when you want per-segment control: a different prompt per scene beat, a start_image change, or the ability to eyeball segment 2 before committing to segment 3. The loop version runs all N segments in one queue shot, so if segment 2 is bad you've already paid for 3.
Install & caveats
Same pack, same ritual: ComfyUI Manager → XB_ToolBox, or git clone https://github.com/wjluoxiao/XB_ToolBox.git into custom_nodes and restart. Declared pip deps: opencv-python, easyocr. No weights bundled.
One honest note: relay_count multiplies runtime directly - four relays is four full 81-frame generations, and on a 12GB card that's a half-hour-plus coffee break. And because every segment shares one positive_prompt here, this node is for motion continuity, not storytelling. If your segments need different action descriptions, that's the older node's job.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| wan_bus | WAN_BUS | — | |
| start_image | IMAGE | — | |
| positive_prompt | STRING | Describe the specific action for this segment... | — |
| trim_head_frames | INT | 11–8192 | 接力重叠帧数(去重) |
| relay_count | INT | 11–999 | 接力数量设定:本节点自动循环 N 次 = 串联 N 个接力点 |
| total_frames_display | STRING | 总计生成帧数(自动计算) | |
| prev_videoopt | IMAGE | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| 📦 WAN_BUS (Pass to next) | WAN_BUS | — |
| 🖼️ Current End Image (Connect to next Start Image) | IMAGE | — |
| 🎞️ Accumulated Video Stream | IMAGE | — |