Vidu Q3 Pro · Image to Video
A 540p node that costs less than Q3 and more than Turbo
- image_url
- video
- task id
"Pro" does not mean premium here, and it doesn't mean more pixels either. Vidu Q3 Pro runs at 8.1 credits per second, the plain Vidu Q3 node starts at 10.5, and the Pro node's resolution dropdown has exactly one entry in it: 540p. So it undercuts Q3 on price and loses to it on output - while the third node in the family, Q3 Turbo, undercuts it on both at 6.3 credits per second. This is the node in the middle, and whether it's a bargain or a trap depends entirely on what you were going to do with the clip.
Why that happens
vidu/q3-pro/image-to-video is a 540p service; there is no setting that gets you above it. So the honest reading is that the premium you're paying over Turbo - 8.1 against 6.3 credits per second, for the same 540p - is a bet on quality per pixel, not on size. If Pro is meaningfully better at the same resolution, that's a reasonable tax on a performance shot. If it isn't, you have bought a more expensive Turbo.
Which is what makes the node narrow but genuinely useful: it's the one you reach for when you need an expression - a reaction, a head turn, a held look - on a shot you'll upscale or intercut. For a 540p shot dropped whole into a 1080p timeline it's a losing proposition unless the cut is tight or you own a good upscaler.
What it does in the graph
The pack builds one node per model from PopNow's live catalog, using each model's published input schema. So the fields here are the schema's fields, no more. image_url is an IMAGE socket - wire in whatever produced the frame locally and the pack uploads it, hashing the file so an identical image isn't sent twice. Anything you leave at its default is omitted from the request and the model decides. The clip comes back as ComfyUI's VIDEO type, ready for Save Video.
The fields you'll set
prompt says what happens after the opening frame. The author's phrasing is worth copying as a habit: the action, the camera, the mood. The model already has the frame.
duration_seconds is 1 to 16, integer, billed per second. At this resolution a convincing two-second reaction is usually the better buy than a drifting twelve.
movement_amplitude gives you auto, small, medium, large. auto is a real setting, not a placeholder - it reads the opening frame and picks. Override it when you have an opinion, e.g. small for a headshot where you want the eyes to move and nothing else.
generate_audio adds synchronised scene audio; bgm adds a music bed. They're independent, and the bgm specifically is "a bed that fits the scene", so on a quiet, dialogue-ish shot it can smother the thing you liked. Turn it off and listen.
seed is fixed by default, so re-queueing the same graph doesn't re-bill - it returns the first result. That's a feature until you're trying to roll for a better take, at which point switch control-after-generate to randomize and watch the counter.
Outputs: video, and task id, the STRING that locates the run in PopNow's API console.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
or comfy node install popnow-comfyui, or Manager with a search for PopNow. Nothing else installs - no weights, no torch add-ons - because nothing runs locally. Grab a key at popnow.ai/api/console/keys and put it in Settings > PopNow or in POPNOW_API_KEY, then restart once more so the node list comes from your account. If you ever installed the standalone popnow_api.py file from the docs, delete it first; its PopNow Generate node is the same node type.
Where it goes wrong
The name is the trap. People search "Vidu Pro", land here, and assume they've found the premium option. It's the 540p one, and no amount of prompt work adds pixels. If you needed 1080p you wanted PopNow_vidu_q3_image_to_video; if you just wanted cheap 540p, Turbo is cheaper. Open the resolution dropdown before you commit a shot to it.
Aspect ratio isn't a field. The output shape comes from your opening frame, so a square source gives you a square clip. Crop or generate the frame at the shape you want before you hand it over.
Not enough credits (PopNow 40201) shows up faster than beginners expect because per-second billing multiplies everything: duration × rate × number of attempts. Set Settings > PopNow > Max credits per run to a hard ceiling while you're testing, and remember only failed runs get refunded - a finished clip you didn't like is money spent.
Cancelling the node doesn't cancel the job. Interrupting stops ComfyUI waiting; PopNow finishes the generation, charges it if it succeeds, and files the result in the API console instead of ComfyUI/output.
And if the node doesn't appear in the menu at all, restart ComfyUI - the catalog is fetched at startup, and a first launch right after adding the key can miss it.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| image_url | IMAGE | Opening frame. The clip starts from this image. | |
| prompt | STRING | Describe what happens after the opening frame: the action, the camera, and the mood. | |
| movement_amplitude | COMBO | auto | How much things in the frame move. |
| duration_seconds | INT | 51–16 | Requested output length in seconds. |
| resolution | COMBO | 540p | Output resolution. |
| generate_audio | BOOLEAN | true | Request synchronised output audio. |
| bgm | BOOLEAN | true | Add a background music bed that fits the scene. |
| 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. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The PopNow task id, for the API console logs or support. |