Wan 3.0 Pro · Video Extend
You only pay for the seconds you add
- video_url
- last_image_url
- video
- task id
Every video model has a length ceiling and every workflow eventually hits it. Wan 3.0 Pro caps a single render at 30 seconds. Extend is how you get past that: hand it the clip you already have, describe what happens next, and it returns your clip with a new segment joined onto the end. The source is added on top and isn't billed - you pay for the new seconds only.
That last detail is the whole reason this node is worth learning. Re-rendering a 20-second take to get 25 is possible in theory and ruinous in practice. Here the arithmetic stays honest.
What the source clip does
video_url takes the clip you're continuing - MP4, MOV or WebM, up to 60 seconds. Its last frame is what opens the new segment, so the join is a continuation of motion and light rather than a cut. The result comes back as one file: source plus extension, already spliced.
Keep that in mind when you reach for a different source. A clip with a hard cut or a fast whip-pan at the tail gives the model a bad frame to reason from, and you'll see it as a hitch at the seam. Trim the last handful of frames first if you can.
How the node runs it
This is one node class generated from the published schema of alibaba/wan-3.0-pro/video-extend, and the pack does the plumbing you'd otherwise write yourself: encode your clip to MP4, upload it, quote the job against your credit balance, submit with an idempotency key (so a retried request never becomes a second task), poll, download, and decode the result into a ComfyUI VIDEO. Wire it into Save Video, or into a frame extraction node if you plan to extend again.
The node also returns task id - the identifier to quote at support if a run dies. Keep it when you're chaining, because a five-segment chain has five of them.
The fields that matter
prompt is "describe what happens next: the action that follows and the camera move". That's the author's phrasing and it's the right mental model - you're writing the next beat, not re-describing the scene.
duration_seconds is the length of the new segment, 2 to 30, or -1 to let the model choose. resolution is 1080p, 2k or 4k, and it applies to the new segment only; as the tooltip says, the native render tops out at 1080p and the higher tiers are enlarged from it. Match your source resolution or you get a visible step in sharpness where the join lands.
generate_audio covers the new segment; the source keeps its own sound either way. enable_prompt_expansion defaults to on, which is fine for a short continuation prompt and less fine when you want tight control. seed starts fixed - same settings, same result, and no accidental double charge for queueing twice.
There's one optional input, last_image_url: a target end frame. Your opening frame comes from the clip; if you connect an image here, the new segment closes on exactly that. Useful for landing on a specific composition - say a logo, a prop, a character's eyeline - instead of letting the model improvise the exit.
Chaining, and what it costs
From 21.6 credits per second at the starting tier (1 credit = $0.001), so a 5-second extension starts near 108 credits, about eleven cents. Extending to two minutes is twelve of those segments plus the seams you'll re-roll, which is real money but still per-second rather than per-attempt-with-a-ruined-source.
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Or install PopNow from ComfyUI Manager and restart. Key goes in Settings > PopNow or in POPNOW_API_KEY; restart again afterwards so the node list refreshes from your account. Nothing else to install - no models, no extra Python packages, no GPU.
Where people get burned
Sources longer than 60 seconds get rejected, so a long clip needs trimming first. A resolution mismatch is the number-one cause of a seam that looks like a mistake. And note that these weights are API-only - Wan 3.0 was never released for download, so there's no local fallback to compare against; the reference is your own earlier segments, not a checkpoint on disk.
Set Max credits per run before you start chaining. Five nodes that each silently quote more than you expected is a bad way to learn what 40201 means.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe what happens next: the action that follows and the camera move. | |
| video_url | VIDEO | The clip to continue: MP4, MOV or WebM, up to 60 seconds. Its last frame opens the new segment, and the result is your clip with the new segment joined on. | |
| resolution | COMBO | 1080p | Resolution tier of the new segment. A native render tops out at 1080p, so the 2k and 4k tiers are enlarged from it. |
| duration_seconds | COMBO | 5 | Length of the new segment in seconds. Pass -1 to let the model pick the length. The source clip is added on top and is not billed. |
| generate_audio | BOOLEAN | true | Generate sound for the new segment. The source keeps its own sound either way. |
| enable_prompt_expansion | BOOLEAN | true | Expand the prompt before generation. |
| seed | INT | 00–2147483647 | Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed. |
| last_image_urlopt | IMAGE | Optional target end frame: the new segment closes on this image. The opening frame comes from your clip. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The PopNow task id, for the API console logs or support. |