Extensions/WanVideoLooper
ComfyUI Extension

WanVideoLooper

This is a set of custom nodes for ComfyUI designed for generating sequential long video clips based on the Wan 2.2 model architecture, handling continuity between…

By SquirrelRat·Created 10 months ago·Updated 7 months ago· 9
SquirrelRat/WanVideoLooper
Nodes3
On cloudLocal install
CategoryWanVideoLooper
Stars9
Updated7 months ago
Readme

WanVideoLooper Nodes for ComfyUI

This is a set of custom nodes for ComfyUI designed for generating sequential long video clips, handling continuity between segments, and offering advanced control over the sampling process, including per-segment LoRA/model application.

This pack contains three nodes:

  1. WanVideo Looper: The main node that takes base models, a list of prompts, and various settings to generate a sequence of video clips, merging them seamlessly.
  2. WanVideo Looper Prompts: A new helper node for managing multiline positive prompts, a global negative prompt, prefixes/suffixes, and saving/loading prompt profiles.
  3. WanVideo Looper Lora Sequencer: A helper node designed to feed pre-patched Model and CLIP objects into the WanVideo Looper for specific segments, enabling per-segment LoRA application.
<img width="353" height="347" alt="image" src="https://github.com/user-attachments/assets/69054332-b01e-4c54-a75b-7dc5cd683930" />

Watch the Tutorial Video (Original): (Note: This video may be for an older version but can still be helpful for understanding the core concepts.)

<a href="https://www.youtube.com/watch?v=jztckgdkCHc">   <img src="https://img.youtube.com/vi/jztckgdkCHc/maxresdefault.jpg"         alt="Watch the tutorial video"         width="480" height="270" border="0" /> </a>

How to Install

  1. Navigate to your ComfyUI installation directory.
  2. Go into the ComfyUI/custom_nodes/ folder.
  3. Create a new folder inside custom_nodes named WanVideoLooper.
  4. Place all the .py files inside the new WanVideoLooper folder:
    • __init__.py
    • wan_looper_node.py
    • wan_lora_sequencer.py
    • wan_prompts_node.py
  5. Create a js subfolder inside your new folder: ComfyUI/custom_nodes/WanVideoLooper/js.
  6. Place all the .js files inside that js folder:
    • wan_lora_sequencer.js
    • wan_prompts_node.js
  7. (Required for Color Match) Open a terminal or command prompt, activate your ComfyUI virtual environment (if you use one), and run:
    pip install color-matcher
    
  8. Restart your ComfyUI server.

The nodes will be available by right-clicking the canvas and selecting Add Node > WanVideoLooper.


1. WanVideo Looper

This is the core node for generating video sequences segment by segment. It intelligently handles continuity and uses an advanced MoE-style sampling approach.

<img width="268" height="608" alt="image" src="https://github.com/user-attachments/assets/0fdb8552-ec6d-4e7c-b0fa-ee2b5a455dc9" />

Features

  • Prompt List Input: Takes a prompt_list and negative_prompt directly from the WanVideo Looper Prompts node.
  • Seamless Continuity: Uses frame merging (frame_merge) to ensure smooth transitions between segments.
  • MoE-Style Sampling: Integrates Mixture of Experts logic with a single steps input and automatic calculation of the split point (model_switch_point).
  • Internal Color Matching: Can apply MKL color matching between segments (color_match) or match the entire video to the very last frame (color_match_lastframe) to fix color drift. Requires pip install color-matcher.
  • Per-Segment Models/LoRAs: Supports an optional input from the WanVideo Lora Sequencer to use different, pre-patched models for specific segments.
  • Dry Run Mode: Includes an enable_dry_run toggle to quickly check setup and logs without performing sampling/decoding.

Inputs & Outputs

  • Required Inputs
    • model_high: The BASE high-noise model.
    • model_low: The BASE low-noise model.
    • clip: The BASE CLIP model.
    • vae: The VAE model used for decoding.
    • start_image: The seed image for the first loop.
    • positive_prompts: Connect the prompt_list output from the WanVideo Looper Prompts node.
    • negative_prompt: Connect the negative_prompt output from the WanVideo Looper Prompts node.
    • seed: The random seed.
    • steps: The total number of sampling steps for each loop.
    • enable_motion_cfg: Enable a separate CFG for the very first step.
    • cfg_motion_step: CFG for the first step ONLY.
    • cfg_high_noise: CFG for the high-noise model (structure/motion).
    • cfg_low_noise: CFG for the low-noise model (details).
    • sampler_name: The sampling algorithm.
    • scheduler: The noise scheduler.
    • model_switch_point: Timestep to switch from high-noise to low-noise model (e.g., 0.9).
    • sigma_shift: Applies sigma shift to both models (e.g., 8.0).
    • denoise: Denoise amount (1.0 = full new image).
    • width/height: The output video dimensions.
    • frame_merge: Number of frames to overlap/merge between loops.
    • duration_sec: Duration of each segment in seconds (5s recommended).
    • color_match: (New!) Enable segment-to-segment MKL color matching.
    • color_match_lastframe: (New!) Override color_match and instead match all frames to the very last frame of the sequence.
    • color_match_strength: (New!) Strength of the color match (0.0 to 1.0).
    • enable_dry_run: Skips sampling and decoding to quickly check setup.
  • Optional Inputs
    • clip_vision: (Optional) A CLIP Vision model for guiding the start image.
    • model_clip_sequence: (Optional) Connect the WanVideo Lora Sequencer output here.
    • color_match_ref: (New!) (Optional) A static reference image for color matching. If omitted, uses the last frame of the previous segment.
  • Outputs
    • images: The final, concatenated batch of all generated video frames.
    • last_frame: The single, very last frame of the entire sequence.

2. WanVideo Looper Prompts

A helper node to manage all your prompts, prefixes, and profiles in one place.

<img width="471" height="621" alt="image" src="https://github.com/user-attachments/assets/60b79704-47d7-4aea-8ed8-cb442d5167e1" />

Features

  • Multiline Prompts: Enter one positive prompt per line. Each line becomes a new video segment. Empty lines are ignored.
  • Global Negative Prompt: A single multiline text box for your negative prompt.
  • Prefix/Suffix: Automatically add text (like masterpiece,) before and after every single prompt (positive and negative) with a toggle to enable or disable.
  • Profile Management: Save your complex prompt setups (positive, negative, prefix, suffix) to named profiles in your browser's localStorage.
  • Save/Load/Delete: Easily save new profiles, load existing ones from a dropdown, and delete old profiles.

Inputs & Outputs

  • Inputs (Widgets)
    • prompts: Multiline text for positive prompts (one per line).
    • negative_prompt: Multiline text for the global negative prompt.
    • enable_prefix_suffix: A "true"/"false" toggle.
    • prefix: Text to add before each prompt.
    • suffix: Text to add after each prompt.
    • (Profile controls for saving/loading)
  • Outputs
    • prompt_list: A list of processed positive prompts, ready for the main looper node.
    • negative_prompt: The single, processed negative prompt string.

3. WanVideo Looper Lora Sequencer

This helper node allows you to specify different, pre-patched Model and CLIP objects for each segment of your video sequence. It's the key to applying different LoRAs to different parts of your video.

<img width="225" height="112" alt="image" src="https://github.com/user-attachments/assets/f50eaaf3-3282-4d95-ac54-ba3c034d53d7" />

Features

  • Segment Inputs: Provides 10 sets of optional inputs (model_high_X, model_low_X, clip_X) corresponding to the first 10 prompt segments.
  • Dynamic Inputs: The node's UI is dynamic. It only shows inputs for segments that are connected. Connect segment 1 to see segment 2, and so on.
  • Clean Workflow: You patch your models using standard ComfyUI nodes (Load LoRA, etc.) outside the sequencer. Connect the final patched MODEL and CLIP into the corresponding inputs on this node.
  • Bundles Inputs: The sequencer bundles these connected models/clips into a list for the main looper.
  • Fallback: If you leave the inputs for a specific segment unconnected, the WanVideo Looper will automatically fall back to using the clean base models for that segment.

Inputs & Outputs

  • Optional Inputs (30 total)
    • model_high_1 to model_high_10: The pre-patched HIGH model for each segment.
    • model_low_1 to model_low_10: The pre-patched LOW model for each segment.
    • clip_1 to clip_10: The pre-patched CLIP