Wan 2.2 I2V Fast (Replicate)
Turn a still image into a Wan 2.2 video without a GPU or a 27GB download
- image
- last_image
- video_path
Wan 2.2 is the last open Wan, and it's still the best quality you can run locally - but "locally" is doing a lot of work. The 14B I2V model wants a serious card and minutes per clip, and the speed-LoRA shortcuts that make it usable are a whole fiddly sub-hobby of their own. This node skips all of it. You feed it an image and a prompt, it calls wan-video/wan-2.2-i2v-fast on Replicate, and a finished MP4 lands in your output folder. Your GPU sits there doing nothing, and so does your patience.
The name is the important part: this isn't the stock Wan 2.2 I2V, it's the Pruna Lightning step-distilled "Fast" variant. Where the full model takes ~50 denoising steps, the distilled one does its thing in about 8 - which is why Replicate can sell it by the call instead of the hour. Quality takes a small hit versus the unhurried local run, but for iterating on an idea or for animating a single reference image it's a completely reasonable trade.
How it works
Under the hood this node is a thin API client, not a sampler. It converts your IMAGE tensor to a PNG, uploads it (small images go as an inline data URI, anything over ~200KB via Replicate's Files API), fires replicate.run() with your prompt and settings, then downloads the resulting video and writes it to ComfyUI/output/video/ as replicate_wan-video_wan-2.2-i2v-fast_<timestamp>.mp4. That's the whole mechanism. No model files, no VRAM, no weights - just a pay-per-call bill.
It's one of 20 curated models in the Replicate Select pack, which is built Runware-style: a nodes.json catalog drives a code generator, and every node follows the same pattern. Auth is a REPLICATE_API_TOKEN environment variable; there's no key field in the node, which is honestly a good sign for a wrapper pack in a corner of the ecosystem where credential-sniffing malware already happened once.
The inputs that matter
Most of the schema is optional and you'll rarely touch it. The ones a beginner actually sets:
- image (required) - the first frame. Whatever you feed in gets animated forward. Feed a good image; Wan inherits its flaws.
- prompt (required) - what happens after the first frame. The model is better with motion verbs than with static descriptions.
- last_image - optional conditioning for the final frame, which makes transitions smoother if you're stitching clips.
- num_frames - 81 default, up to 121. The tooltip is blunt: 81 gives the best results.
- resolution - 480p or 720p. At 16:9 that's 832x480 or 1280x720. Start at 480p; that's where the price is kind to you.
- interpolate_output - set it and the node frame-interpolates to 30fps with ffmpeg on the way out.
Two things worth knowing because they're easy to trip over. First, pricing is pegged to duration at 16fps - bump frames_per_second and you're not really buying smoothness, you're buying a longer clip at the same frame count. Second, the lora_weights_transformer fields take raw .safetensors URLs from the internet. That's Wan 2.2's two-expert MoE showing up in the API: the high-noise transformer and the low-noise transformer_2 can be LoRA'd independently, matching how the local community applies speed LoRAs to only the low-noise pass.
Installing it
Install once for the whole pack. ComfyUI Manager → search "Replicate Select" → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Pharma-Lobby/ComfyUI-Replicate-Select
Restart ComfyUI. The only real dependency is replicate>=1.0.7, which Manager installs for you. There are no model downloads - that's the entire point. Then set your token:
export REPLICATE_API_TOKEN=r8_...
and restart so ComfyUI picks it up. If the node complains about a missing token, that's this exact step.
Where people get burned
The output is a file path (STRING), not video frames. Wire it into a VHS Load Video or just open output/video/ - you can't chain more image nodes straight off it. Also: your reference image and prompt leave your machine and go to Replicate, subject to their logging and their safety checker (you can disable it with disable_safety_checker, but the model's own limits remain). And remember the local-first reflex you see everywhere in this community cuts both ways: this node exists to not run locally, so check the per-call price before you iterate 40 times on one clip.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Prompt for video generation | |
| image | IMAGE | Input image to generate video from. | |
| last_imageopt | IMAGE | Optional last image to condition the video generation. If provided, creates smoother transitions between frames. | |
| num_framesopt | INT | 8181–121 | Number of video frames. 81 frames give the best results |
| resolutionopt | COMBO | 480p | Resolution of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px |
| frames_per_secondopt | INT | 165–30 | Frames per second. Note that the pricing of this model is based on the video duration at 16 fps |
| interpolate_outputopt | BOOLEAN | false | Interpolate the generated video to 30 FPS using ffmpeg |
| go_fastopt | BOOLEAN | true | Go fast |
| sample_shiftopt | FLOAT | 12.001–20 | Sample shift factor |
| seedopt | INT | 0-2147483648–2147483647 | Random seed. Leave blank for random |
| disable_safety_checkeropt | BOOLEAN | false | Disable safety checker for generated video. |
| lora_weights_transformeropt | STRING | Load LoRA weights for the HIGH transformer. Supports arbitrary .safetensors URLs from the Internet (for example, 'https://huggingface.co/TheRaf7/instagirl-v2/resolve/main/Instagirlv2.0_hinoise.safeten | |
| lora_scale_transformeropt | FLOAT | 1.00-1000000000–1000000000 | Determines how strongly the transformer LoRA should be applied. |
| lora_weights_transformer_2opt | STRING | Load LoRA weights for the LOW transformer_2. Supports arbitrary .safetensors URLs from the Internet. Can be different from transformer LoRA. (for example, 'https://huggingface.co/TheRaf7/instagirl-v2/ | |
| lora_scale_transformer_2opt | FLOAT | 1.00-1000000000–1000000000 | Determines how strongly the transformer_2 LoRA should be applied. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_path | STRING | — |