SF WaveSpeed Wan 2.2 Animate
Put a character into someone else's video, no GPU farm required
- client
- video_url
Wan 2.2 Animate is Alibaba's character-animation model: a still of a character in, a driving video that provides the motion, and out comes your character performing that motion. Locally, that pipeline is genuinely heavy - the open Wan 2.2 path often needs a stick-figure or keypoint intermediate, and the 14B model wants a serious GPU even quantized. This node does the whole thing server-side via WaveSpeed: you give it a still image and a driving video, and it returns a new video where your subject moves like the driver.
That dual input is the whole identity of this node. Most image-to-video nodes take an image and a prompt. This one takes an image and a video, because "animate" here means "transfer the motion," not "imagine motion from a sentence." If you've got a character render you love and a dance clip or a gesture clip you want them to perform, this is the node.
How it works
It POSTs both the image URL and the video URL to /api/v3/wavespeed-ai/wan-2.2/animate with a resolution and an optional prompt for extra guidance, then returns the animated video as a hosted video_url (STRING). The motion comes from the driving video; the optional prompt is for nudging the animation ("keep the hand gesture subtle," that sort of thing) rather than describing the whole scene.
The pricing is right in the resolution tooltip, which is refreshingly honest: 480p costs $0.25 per 5 seconds, 720p costs $0.50 per 5 seconds. So an 8-second 720p clip is $0.80 a take. That's cheap enough to actually iterate on, which is the difference between this and the Sora 2 Pro tier of this pack.
The inputs that matter
- client - required, from the SF WaveSpeed Client node.
- image_url - the character/subject still. Connect from ComfyUI's Upload Image node (it's a URL string).
- video_url - the driving video whose motion gets transferred. Also a URL, from Upload Video. Both are required - this node does nothing with one missing.
- resolution - 480p or 720p. The cost difference is baked into the labels.
- prompt - optional guidance for the animation itself.
- seed - -1 for random; set it to reproduce a take.
- enable_sync_mode - defaults to on here, so the workflow waits for the clip before moving on.
Output: video_url (STRING) - a hosted link to the finished animation.
Install
The standard pack route. ComfyUI Manager → search "SF ComfyUI Nodes" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Stillfront/comfyui-sf-nodes.git
cd comfyui-sf-nodes
pip install -r requirements.txt
Then an SF WaveSpeed Client node with your key (widget, config.ini [API] api_key, or WAVESPEED_API_KEY). No model files to download - this whole pack is API calls, and Wan 2.2 Animate is one of the cheaper ones.
Gotchas
- Both inputs must be URLs WaveSpeed can reach. A local file path or a localhost URL fails; host them publicly first. This is the most common way people bounce off this node.
- The quality ceiling is your driving video. Garbage in, garbage out - the motion transfer only ever matches the driver's clarity. Feed a clean, stable driving clip.
- README config drift again: the README's config.ini example (
wavespeed_api_key) doesn't match theapi_keykey the code reads. Copyconfig.ini.tmp. - It's billed per 5 seconds of output, and the tooltip doesn't hide it. Plan takes, don't spam them.
Locally, this same job is a Wan 2.2 Animate workflow with a motion-transfer chain and a long render time. This node is the version where you paste two URLs and get a clip back. For character-animation tests it's arguably the best value in the whole WaveSpeed section of this pack.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| client | WAVESPEED_AI_API_CLIENT | — | |
| image_url | STRING | URL of input image for generating output (connect from Upload Image node) | |
| video_url | STRING | URL of input video for generating output (connect from Upload Video node) | |
| resolution | COMBO | 480p | Output video resolution. 480p costs $0.25 per 5 seconds, 720p costs $0.50 per 5 seconds |
| enable_sync_mode | BOOLEAN | true | Wait for generation to complete before returning |
| promptopt | STRING | Additional generation guidance for the animation | |
| seedopt | INT | -1-1–2147483647 | Random seed for reproducible results. -1 for random seed |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_url | STRING | — |