Wan Image-to-Video Generator
Animate any image into a 5-second video, from the cloud
- video_file_path
- video_url
Image-to-video is the mode the Wan community actually runs. Anchoring the first frame to a known image solves the consistency problems that plague pure text-to-video - you already know what the scene looks like, so the model just has to move it. WanI2VGenerator ("Wan Image-to-Video Generator") from ru4ls/ComfyUI_Wan is that workflow on Alibaba's DashScope API: give it a picture URL and a motion prompt, get back a ~5-second mp4.
The whole point of this pack is that you don't need a video-generation GPU to do this. Local Wan 2.2 I2V on a 4090 runs 15-40 minutes a clip at 720p; this node hands it to Alibaba's servers and bills you per job. Trade the VRAM anxiety for a credit card and a polling loop.
How it works
Classic async DashScope job: submit image_url plus your prompt to the video-synthesis endpoint with X-DashScope-Async: enable, get a task_id, poll every 10 seconds (up to 60 attempts - video takes a while), then download the finished mp4 to your local output_dir. Outputs are video_file_path and video_url; to actually see the clip in ComfyUI, feed the path into a "Load Video (Path)" node from ComfyUI-VideoHelperSuite. The README says this for every video node, and it's the step everyone forgets.
The inputs that matter
- model - three hosted variants:
wan2.5-i2v-preview,wan2.2-i2v-flash(default), andwan2.2-i2v-plus. Flash for speed, plus for quality, preview for the newest. If you're iterating on a prompt, flash is your friend; for the final render, switch to plus. - image_url - required, and it must be publicly accessible. Alibaba's servers fetch it, so a local file path will silently fail. Host your frame somewhere reachable first.
- prompt - write it like a motion director, not a caption. Wan I2V prompting wants "the character stands up and walks toward the camera," not "a beautiful woman." The KB's Wan essay calls this the George R. R. Martin style - describe the action, not the scene.
- negative_prompt - optional; handy for banning artifacts.
- resolution - 480P, 720P (default), 1080P. 1080P is where cloud cost and wait time climb.
- prompt_extend - on by default; Alibaba's prompt rewriter. Fine to leave on, but if your motion wording is getting mangled, switch it off.
- seed, watermark, output_dir - the usual. Seed 0 is random.
Install and setup
ComfyUI Manager, search ComfyUI_Wan, or:
cd ComfyUI/custom_nodes
git clone https://github.com/ru4ls/ComfyUI_Wan.git
pip install -r ComfyUI_Wan/requirements.txt
Restart, then copy config/.env.template to config/.env in the pack folder and set DASHSCOPE_API_KEY (plus DASHSCOPE_API_KEY_CHINA if you'll use the mainland China region). The dependencies are light - requests, Pillow, numpy, python-dotenv - because generation is remote. It's paid per job; the README flags it in bold.
Gotchas
- It's a 5-second ceiling, same as local Wan. If you need longer, that's what the pack's VACE Video Extension node is for - chain clips or extend.
- First-frame chaining works: take the last frame of one clip as
image_urlfor the next. That's the community's standard long-video trick, and it works here because the I2V anchor is doing the consistency work. - If a job errors with a task failure, re-check that your image URL is actually fetchable - a broken link up front is the most common reason a run dies mid-poll.
If you've got a 3090+ and want the free, open-weight version of this, local Wan 2.2 is still great. This node is for everyone who'd rather pay a few cents than babysit a 40-minute render.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | wan2.2-i2v-flash | 3 options: wan2.5-i2v-preview, wan2.2-i2v-flash, wan2.2-i2v-plus |
| image_url | STRING | https://example.com/your_image.png | — |
| prompt | STRING | A cat running on the grass | — |
| region | COMBO | international | 2 options: international, mainland_china |
| negative_promptopt | STRING | — | |
| resolutionopt | COMBO | 720P | 3 options: 480P, 720P, 1080P |
| prompt_extendopt | BOOLEAN | true | — |
| watermarkopt | BOOLEAN | false | — |
| seedopt | INT | 00–2147483647 | — |
| output_diropt | STRING | ./videos | Directory where the generated video will be saved. Browse to select a custom directory. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video_file_path | STRING | — |
| video_url | STRING | — |