Nodes/Protoface/Protoface Veo 3.1 · Extend Video
ComfyUI Node

Protoface Veo 3.1 · Extend Video

Turn an 8-second shot into a scene

By protoface-ai·Created 22 days ago·Updated 13 days ago· 0
Protoface Veo 3.1 · Extend Video
    • video
    • files
    • run id
    ◄prompt►
    ◄video▾►
    ◄resolution1080p►
    ◄negative_prompt▾►
    ◄seed▾►
    ◄generation_id0►
    ◄request_scope►

    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.

    CategoryProtoface/Video/google

    Inputs (7)

    NameTypeDefaultDescription
    promptSTRINGThe positive prompt for the generation.
    videoCOMBOA public URL, a data URI, or an asset id.
    resolutionCOMBO1080pVideo resolution.
    negative_promptCOMBOThe negative prompt for the generation.
    seedCOMBOThe random seed to use for the generation.
    generation_idINT00–9007199254740991Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed.
    request_scopeSTRINGAutomatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret.

    Outputs (3)

    NameTypeDescription
    videoVIDEO—
    filesPROTOFACE_FILE—
    run idSTRING—