Wan 3.0 Prime · Video Extend
Bolt another thirty seconds onto the end
- video_url
- last_image_url
- video
- task id
Extension is the rung of the video ladder people forget exists. You already have a clip that started well and ran out. Locally, that's either a Wan 2.2 extension pass with a different node graph and a seam you'll fight, or a loop hack that morphs back to the first frame. Here it's a socket: feed the clip into video_url, describe what happens next, get your clip back with a new segment joined on.
The detail that makes it pleasant rather than merely possible: the source clip isn't billed. You pay for the new segment only, from 9.18 credits ($0.0918) per second. So extending a 20-second piece by another 10 costs the same as generating 10 seconds from scratch, and you stop thinking about extension as an expensive afterthought.
How it works
Your input video goes in as a ComfyUI VIDEO (a VHS or core video loader's output works fine). The pack remuxes MP4 sources without re-encoding and uploads them, with a 90 MiB ceiling per file. Limit on the source is 60 seconds, MP4, MOV or WebM.
The new segment opens on the last frame of your clip, which is why the quality of that final frame matters so much, and the result comes back as a single VIDEO containing the original plus the addition. You don't assemble anything afterwards.
The inputs that matter
video_url is the clip. prompt is technically optional here - the tooltip says so - and it describes what happens next: the action that follows, the camera move, and the sound. Optional is not the same as unnecessary; an empty prompt gets you a plausible drift, and a written one gets you a shot.
resolution is the resolution of the new segment, and matching it to your source is the whole game for seams. The tooltip puts it in the author's own words: match your source to avoid a visible step in sharpness at the seam. Output at 1080p off a 720p source and you'll see a difference at the join even if the motion is perfect.
duration_seconds - 2 to 30, or -1 to let the model pick the length. generate_audio generates sound for the new segment; the source keeps its own sound either way, so if your original is silent and the extension isn't, that's a decision you just made.
last_image_url is the optional target end frame: the new segment closes exactly on an image you supply. Combined with a source clip, that gives you start frame from the video, end frame from a still, model fills the middle.
enable_thinking is off by default and helps with complicated briefs; enable_prompt_expansion rewrites your prompt before generation. seed behaves like everywhere else in the pack - fixed by default, so re-queueing doesn't silently re-bill you.
Outputs: video and task id.
Installing it
Manager > Custom Nodes Manager > search PopNow > Install > restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Then a key at popnow.ai/api/console/keys into Settings > PopNow, or POPNOW_API_KEY in the environment for a server, and one more restart so the node list rebuilds from your account. Nothing else installs - no model files, no ffmpeg dance, no GPU. Delete custom_nodes/popnow_api.py if you're upgrading from the single-file node.
Where people get burned
The seam, for two reasons. Resolution mismatch is the obvious one. The other is prompting: extension prompts that restate the whole scene instead of describing the next beat tend to produce a cut rather than a continuation, because the model takes the description as a reset. Write forwards, not sideways.
Rotation also accumulates oddities. Extend three or four times and small issues compound; it's usually cleaner to generate a fresh segment with last_image_url matching the previous ending than to chain extension forever.
Failures: 40201 is credits, 40004 is an unsupported combination with the field named, 400 is a value the model won't accept, content_rejected is a refusal and gets refunded. Uploads over 90 MiB will stop you before that - trim the source rather than argue with it. And interrupting only stops your node waiting; the job finishes server-side and is charged if it succeeds.
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. |