Nodes/PopNow/Vidu Q3 · Image to Video
ComfyUI Node

Vidu Q3 · Image to Video

Vidu Q3 will make your still image act — 16 seconds at a time

By popnow-ai·Created 24 days ago·Updated about 20 hours ago· 0
Vidu Q3 · Image to Video
  • image_url
  • video
  • task id
◄prompt►
◄duration_seconds5►
◄resolution720p►
◄movement_amplitudeauto►
◄generate_audiotrue►
◄bgmtrue►
◄seed0►

Vidu's reputation, in the one place it's actually discussed, is faces. The loudest thread about Q3 in 2026 was someone animating a sci-fi series whose two characters "came out better than anything I'd managed before" - subtle eye and ear movement that Wan and LTX didn't reach. Vidu Q3 has no open weights, so "how do I run this locally" has no answer. The answer is a node that calls it.

Why this node, in a graph

The whole reason to keep a cloud model inside ComfyUI rather than in a browser tab is plumbing. You've already generated the frame - a character, a product shot, an establishing plate - through your own local pipeline, with your own LoRA and your own control image. Handing that exact tensor to an image-to-video model without a save-upload-download round trip is the whole game. This node takes an IMAGE on image_url (named like a URL; it's a socket), uploads it for you, and returns a VIDEO you can pipe into Save Video or another node.

Worth saying plainly because it shapes what you're buying: on the corpus evidence, Vidu Q3 is a finishing model for shots where performance matters, not a volume model. One person's 15-minute-ish episode, with 4K upscaling, ran them $200–250. Plan shots accordingly.

How it works

The pack generates this node from Vidu's published input schema at startup - one node per model, built from the live catalog - so the fields are exactly what the endpoint accepts. Your wired-in image is uploaded once (keyed by a hash of its content, reused for 12 hours), and unwired optional fields stay out of the request entirely so the model applies its own defaults. The clip comes back as a decoded MP4 wrapped in ComfyUI's VIDEO type.

The inputs worth touching

image_url is the opening frame and the clip's first frame. The prompt describes what happens after it - action, camera, mood. Don't re-describe the picture; the model can see it. Tell it where it goes.

duration_seconds is a slider from 1 to 16 rather than a fixed menu, and it's billed per second, so the length is the main cost lever. Sixteen is a long time for a single generated shot - it will drift.

resolution is 540p, 720p or 1080p, and the pricing table has a genuinely useful quirk: 720p costs roughly double 540p, while 1080p is only a few percent over 720p. So the rational choice is 540p for drafts and 1080p for finals. Nobody should be rendering 720p here.

generate_audio and bgm are two different things and the tooltips are honest about it: the first is the sound of the scene - footsteps, dialogue, wind - synchronised with the picture. The second is a music bed on top. Music under a sound-effects track is often mush; most people turn bgm off and score it themselves.

movement_amplitude (auto, small, medium, large) is the underrated one. auto lets the model read the opening frame, which is usually right. But on a portrait or a product shot, small is how you stop the whole frame from sliding around like it's on a boat.

seed defaults to fixed: queue the same graph twice and you get the cached first result, not a second bill.

Outputs are video and task id - keep the id, it's what PopNow's console and support use to find the job.

Install

Manager > Custom Nodes Manager, search PopNow, install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui

No models to download, no dependency stack - it's a thin client over api.popnow.ai. You need a key from popnow.ai/api/console/keys, set as POPNOW_API_KEY or pasted into Settings > PopNow, and you should restart once more after adding it so the node list rebuilds from your account.

Where it goes wrong

If you're on the old single-file custom_nodes/popnow_api.py from popnow.ai's docs, remove it - two versions of the same node type is a confusing afternoon.

PopNow 40201 is the out-of-credits error, and it usually shows up mid-experiment after a few 16-second 1080p takes. Set Max credits per run before you start, and remember failed runs are refunded while finished ones aren't.

PopNow 40004 means that combination of settings isn't servable - check the field the message names rather than re-queueing.

Last one, and it catches people: cancelling stops the wait, not the job. The generation continues server-side, gets charged if it succeeds, and the file sits in the API console instead of your output folder. If a long take is going badly, let it finish or accept the loss.

CategoryPopNow/Video/Vidu

Inputs (8)

NameTypeDefaultDescription
image_urlIMAGEOpening frame. The clip starts from this image.
promptSTRINGDescribe what happens after the opening frame: the action, the camera, and the mood.
duration_secondsINT51–16Requested output length in seconds.
resolutionCOMBO720pOutput resolution.
movement_amplitudeCOMBOautoHow much the subject and scene move. Leave it on auto to let the model read the opening frame.
generate_audioBOOLEANtrueRequest synchronised output audio.
bgmBOOLEANtrueAdd background music to the clip. Separate from generate_audio, which covers the sound of the scene itself.
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.

Outputs (2)

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