Wan 3.0 · Video Extend
Match the resolution or the seam will show
- video_url
- last_image_url
- video
- task id
Extending a clip is the least glamorous thing in AI video and the one you'll do most. A 30-second ceiling per render, an idea that needs 45 seconds, and suddenly you're chaining segments and praying the joins hold. This node is the cheap-tier way to do that: continue a clip you've got, pay only for the new seconds, keep the source untouched.
Why the cheap tier matters here
Extend is inherently a loop. You extend, watch it, cut three seconds off the tail, extend again. Do that on the Pro tier at 21.6 credits a second and the loop gets expensive for what is mostly vetting. Wan 3.0's extend starts at 6.75 credits per second (1 credit = $0.001), so a five-second segment starts around 34 credits - three and a half cents to find out whether your next beat works.
It caps at 1080p, the ceiling for anything in the Wan 3.0 line. And these weights are API-only; there's no local Wan 3.0 install to fall back on, which is exactly why the per-second price is the whole argument.
What the node does with your clip
video_url is the clip to continue - MP4, MOV or WebM, up to 60 seconds. The last frame of that clip opens the new segment, and you get back one file: your source with the new segment joined on. Not two files, not a delta. The source clip is added on top of the render and isn't billed, which is why a 40-second extension of an existing 20-second clip doesn't cost 60 seconds of anything.
prompt is optional in spirit even though the field exists: describe what happens next, the camera move and the sound. On this node prompt expansion is off by default, so your wording goes to the model as written.
resolution is 480p, 720p or 1080p. Match your source. This is the single most common cause of a visibly bad seam - a 1080p source continued at 720p reads as a softness step at the join, and no amount of seed-rolling hides it. The tooltip says it directly: match your source to avoid a visible step in sharpness.
duration_seconds is the new segment's length, 2 to 30, or -1 to let the model choose. generate_audio covers the new segment only; the source keeps its own sound. enable_thinking is there for complicated continuations - extra latency, sometimes better reasoning about where the action should go.
last_image_url is the interesting optional one. Your opening frame comes from the clip; connect an image here and the new segment finishes on exactly that image. It's how you land on a target composition instead of ending wherever the model drifted.
Mechanically
Every node in this pack is a thin, honest wrapper: the inputs are generated from alibaba/wan-3.0/video-extend's published schema, your clip is encoded to MP4 and uploaded to a popnow:// file URI only your key can read, the job is quoted before credits are held, submitted under an idempotency key, polled, and the returned video is decoded into a ComfyUI VIDEO you can save or re-extract frames from. Outputs: video and task id. Keep the task ids when chaining - they're your ticket at support if segment four fails.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Or Manager, search PopNow, install, restart. No models, no Python dependencies, no GPU. Key from popnow.ai/api/console/keys, then Settings > PopNow or POPNOW_API_KEY, then restart again so the catalog is read fresh.
Where people get burned
Sources over 60 seconds are refused. A clip that ends mid-whip-pan gives the model a bad frame to open from, so trim to something steady first. If your workflow loads the clip from a file you just saved, remember ComfyUI writes it to output/ - point the loader at the file the previous node actually produced rather than a stale copy from last week's run.
Seeds start fixed so re-queueing is free; randomize when you mean it. And a cancelled run keeps going on PopNow and is charged if it succeeds, so cancel is a UI convenience, not a refund button.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Optional. Describe what happens next: the action that follows, the camera move and the sound. | |
| 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. | |
| enable_thinking | BOOLEAN | false | Let the model reason about the brief and the reference material before generating. Helps with complex references; slower. Switches on by itself when a reference file or link is given. |
| resolution | COMBO | 720p | Resolution the new segment is generated at. Match your source to avoid a visible step in sharpness at the seam. |
| 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 | false | Allow the service to expand the submitted creative brief 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 finishes on exactly this image. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The PopNow task id, for the API console logs or support. |