Nodes/ComfyUI/WanDancerVideo
ComfyUI Node Runs on cloud

WanDancerVideo

Wan-Dancer's conditioning node

By Comfy-Org·Created 4 years ago·Updated about 14 hours ago· 130,663
WanDancerVideo
  • positive
  • negative
  • vae
  • clip_vision_output
  • clip_vision_output_ref
  • start_image
  • mask
  • audio_encoder_output
  • positive
  • negative
  • latent
width480
height832
length149

Where WanDancerEncodeAudio turns your song into features, WanDancerVideo turns those features plus a picture of your dancer into a ready-to-sample video generation. This is the main event of the Wan-Dancer workflow: it builds the empty latent, anchors the character from your start image, attaches the audio, and hands the KSampler everything it needs to produce a character dancing to your track.

The mechanism is a Wan-family conditioning stack. It allocates an empty 16-channel latent at 8x spatial compression, sized from width/height/length - defaults 480×832 (portrait, the dance-video aspect) and 149 frames, which the tooltip flatly says should stay at 149 for Wan-Dancer. If you feed start_image, the node pads it to fill the clip, VAE-encodes it, and sets a concat_mask with 0 over the anchored frames - and if you also give it a mask, that mask controls local generation: white pixels stay, black pixels get regenerated, which is how you dance a character into an existing background. Two CLIP vision inputs can be wired in: clip_vision_output for the first frame and clip_vision_output_ref for the reference image of the character. And the star of the show, audio_encoder_output from WanDancerEncodeAudio, injects the audio features plus the fps and audio_inject_scale into both positive and negative conditioning. Outputs: positive, negative, and latent.

Inputs to care about: positive/negative (Wan text encode), vae, the three geometry ints (keep length at 149), start_image, the optional mask, the two optional CLIP vision outputs, and audio_encoder_output. That's a lot of optional wires, and the honest truth is the workflow only feels like Wan-Dancer when they're connected - start image + both CLIP vision encodes + the audio output is the full setup; skimp and you get a generic (and mediocre) I2V.

It's core (comfy_extras/nodes_wandancer.py), recent, no install. Load the Wan-Dancer-14B checkpoint with its VAE, and get audio in via WanDancerEncodeAudio.

The community signal is thin because Wan-Dancer only shipped in July 2026 - this is the early-adopter phase. What the source already tells you: the mask semantics are inverted from what most ComfyUI nodes do (white kept / black generated, and here it's explicitly for "local generations"), so if you're used to inpainting masks, double-check which side you're drawing on. And the 149-frame rule is a hard constraint, not a suggestion - the audio features and fps are computed against it. Deviate, and the choreography drifts off the beat you fed it.

Categorymodel/conditioning/wan/dancer

Inputs (11)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
widthINT48016–16384
heightINT83216–16384
lengthINT1491–16384The number of frames in the generated video. Should stay 149 for WanDancer.
clip_vision_outputoptCLIP_VISION_OUTPUTThe CLIP vision embeds for the first frame.
clip_vision_output_refoptCLIP_VISION_OUTPUTThe CLIP vision embeds for the reference image.
start_imageoptIMAGEThe initial image(s) to be encoded, can be any number of frames.
maskoptMASKImage conditioning mask for the start image(s). White is kept, black is generated. Used for the local generations.
audio_encoder_outputoptAUDIO_ENCODER_OUTPUT

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENTEmpty latent.