Nodes/PopNow/Wan 3.0 Prime · Video Extend
ComfyUI Node

Wan 3.0 Prime · Video Extend

Bolt another thirty seconds onto the end

By popnow-ai·Created 24 days ago·Updated about 20 hours ago· 0
Wan 3.0 Prime · Video Extend
  • video_url
  • last_image_url
  • video
  • task id
◄prompt►
◄enable_thinkingfalse►
◄resolution720p►
◄duration_seconds5►
◄generate_audiotrue►
◄enable_prompt_expansionfalse►
◄seed0►

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.

CategoryPopNow/Video/Alibaba

Inputs (9)

NameTypeDefaultDescription
promptSTRINGOptional. Describe what happens next: the action that follows, the camera move and the sound.
video_urlVIDEOThe 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_thinkingBOOLEANfalseLet 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.
resolutionCOMBO720pResolution the new segment is generated at. Match your source to avoid a visible step in sharpness at the seam.
duration_secondsCOMBO5Length 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_audioBOOLEANtrueGenerate sound for the new segment. The source keeps its own sound either way.
enable_prompt_expansionBOOLEANfalseAllow the service to expand the submitted creative brief before generation.
seedINT00–2147483647Same 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_urloptIMAGEOptional target end frame: the new segment finishes on exactly this image.

Outputs (2)

NameTypeDescription
videoVIDEO—
task idSTRINGThe PopNow task id, for the API console logs or support.