Protoface Veo 3.1 · Extend Video
Turn an 8-second shot into a scene
- video
- files
- run id
The short-clip problem, solved sideways
Every good video model has the same limitation: it makes a few seconds. Eight, ten, fifteen. Then you're sitting there with a gorgeous shot that's too short to use, and the options are (a) cut faster, (b) speed it up, or (c) generate a continuation and hope the lighting, wardrobe and camera direction survive the seam.
Extend is (c), done by the model rather than by you. You give Veo an existing clip and a prompt for what happens next, and it renders a continuation that matches. Chain two or three and the eight-second limitation becomes a 24-second scene.
This is the Extend Video task from Veo 3.1 in Protoface, the beta pack that puts hosted models on the ComfyUI canvas. Paid per extension, remote, no local weights.
The way most people actually use it: generate the opening shot with the text-to-video or image-to-video node, then feed the resulting clip into this one. Because Protoface's media inputs accept a reused result asset, that chain doesn't re-upload anything - the second job picks up the first job's asset directly.
How it works
Under the hood it's the same shared adapter as every node in the pack: schema-derived inputs → validated payload → submit → poll → download → native VIDEO. The clip goes up as an uploaded asset (or an existing Protoface asset id in References mode), the provider appends the new section, and what comes back is the longer result.
And once more, because it's the one field that costs people money: generation_id is the paid-request identity. Fixed means reuse or resume. Incremented means buy again.
The inputs that matter
The control list on this node is deliberately short, and that tells you what extend can and can't do.
video is the clip to continue. Media input with modes: native Video for wiring a ComfyUI video, or References for an asset id / reused result. This is the whole node, really.
prompt is the continuation, and it wants motion and change, not a mood board. "She walks out of frame right, camera pans to follow, rain starts" gives the model something to do. "Cinematic, beautiful" gives it nothing, and you'll get a slow drift.
resolution defaults to 1080p. Match the source clip's resolution unless you have a reason not to - extending a 540p clip at 1080p invites a visible quality step at the seam.
negative_prompt and seed are media-style controls: Default (omit), Set (supply), Null (explicit null, where supported). Default is fine to start.
Notice what's not here: no duration, no aspect_ratio, no generate_audio toggle. Duration follows the source; the ratio comes from the clip; audio is handled by the model. If you were expecting those sliders, you're thinking of the text-to-video node.
Outputs
video (native VIDEO, list), files (PROTOFACE_FILE list of originals), run id (string, for Protoface Resume Run). Save the run id when you're chaining - it's your only handle on a job if the tab dies mid-render, and extend chains are exactly the kind of graph where someone queues three jobs and walks away.
Install
Manager: search Protoface, install protoface-nodes, restart, reload the browser. Manual:
git clone --branch v0.1.0 --depth 1 https://github.com/protoface-ai/protoface-comfyui.git custom_nodes/protoface
python -m pip install -r custom_nodes/protoface/requirements.txt
ComfyUI 0.41.0+ and Python 3.10+, installed with ComfyUI's own interpreter. Then click Protoface in the lower-right corner and enter a key from your Protoface account. There's also a ready-made Resume Run template under Templates → the Protoface extension if you want to see the recovery flow before you need it.
Where people get burned
Chaining by incrementing everything. When you extend, keep each node's own generation_id fixed and only bump the one you genuinely want re-rendered. Changing a prompt downstream is already a new paid request; bumping the id on top of that just guarantees you can't recover the old one.
Expecting a seamless join. Extensions are good, not invisible. If the wardrobe or lighting shifts, try a more specific prompt naming what must stay constant, and keep the resolution matched.
Extending an extended clip forever. Quality drifts with each hop. Two extensions off a solid source clip is usually the practical ceiling before it starts looking like a different film.
Assuming a cancel refunds. The README says it plainly: interrupting requests cancellation, cancellation is best effort, no refund implied. Check the run in your account before you re-queue out of spite.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The positive prompt for the generation. | |
| video | COMBO | A public URL, a data URI, or an asset id. | |
| resolution | COMBO | 1080p | Video resolution. |
| negative_prompt | COMBO | The negative prompt for the generation. | |
| seed | COMBO | The random seed to use for the generation. | |
| generation_id | INT | 00–9007199254740991 | Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed. |
| request_scope | STRING | Automatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| files | PROTOFACE_FILE | — |
| run id | STRING | — |