Veo 2 Video Extend
Keep the scene going, but bring your own bucket
- video
- video
Veo 2 Video Extend is the cousin of the Veo 2 node that takes a finished clip and extends it - four to seven more seconds of the same scene, continuing from where the video ended. It's the node for the moment your 8-second clip ends exactly one beat too early. It's also the node with the most unusual requirement in the whole Vertex AI pack: you have to give it a GCS bucket, because the input video has to be uploaded to Google Cloud before the API can extend it.
What it is
A VIDEO-in, VIDEO-out node. It runs the same veo-2.0-generate-001 model as the plain Veo 2 node, but instead of generating from a prompt alone, it takes your existing clip as the starting point. The prompt describes what should happen next - "the camera pulls back as the butterfly lands" - and Veo continues the motion, lighting, and subject from the tail of your input video.
How it works
Here's the part that trips everyone up. The Veo API needs your input video accessible by URI, so this node uploads it to a Google Cloud Storage bucket first. That's what temp_gcs_prefix_for_input_video is for: you give it something like gs://my-bucket/veo-temp, and the node uploads your clip there, calls the generation API, polls every 15 seconds until the extension is done, and downloads the result. Your input video must be in the VIDEO format - which in practice means the output of another Veo node in this pack, or anything else that produces a VideoFromFile.
Inputs that matter
- video - the clip to extend, required,
VIDEOtype. - temp_gcs_prefix_for_input_video - required GCS prefix. This is the gotcha: it's not optional. No bucket, no run. Make sure the bucket exists and you have write access before you hit execute.
- prompt - what happens in the extension.
- output_gcs_uri - optional, where to keep the result; leave blank to get it back through temp files.
- duration_seconds - 4 to 7 seconds of extension.
- aspect_ratio, enhance_prompt, person_generation, seed - same as the Veo 2 node.
Output is one video in VIDEO format.
Installing
Pack install as usual:
cd ComfyUI/custom_nodes
git clone https://github.com/khanhlvg/vertex-ai-comfyui-nodes.git
cd vertex-ai-comfyui-nodes
pip install -r requirements.txt
Plus the pack-wide auth - gcloud auth application-default login, GOOGLE_CLOUD_PROJECT / GOOGLE_CLOUD_LOCATION, billing enabled - and this time you also need a GCS bucket. The requirements file's google-cloud-storage dependency is doing real work here.
Where people get burned
- The bucket requirement. This is the #1 failure: people wire up the video, type a prompt, and hit "the bucket field is required" or get an upload auth error. Create the bucket first, or use an existing one.
- Extension quality is only as good as the input. If your source clip has weird motion or artifacts, Veo extends them. The extension also inherits the input's look - mismatched lighting between clip and continuation is the most common artifact.
- Upload + render + download time. You're paying for the API render and waiting on a GCS upload and download. Plan for minutes, and for the upload to fail occasionally on slow connections (it retries poorly).
- Cost - same per-second pricing as Veo 2, on top of the original clip's bill.
The honest use case: this node exists for the loop - generate a clip, decide it's too short, extend it in one more run. It's fiddly, it needs a bucket, and it's not cheap, but it beats re-generating the whole scene and hoping it matches.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| project_id | STRING | — | |
| location | STRING | us-central1 | — |
| model | COMBO | 1 options: veo-2.0-generate-001 | |
| prompt | STRING | a butterfly flies in and lands on the flower | — |
| video | VIDEO | — | |
| temp_gcs_prefix_for_input_video | STRING | — | |
| output_gcs_uri | STRING | — | |
| duration_secondsopt | INT | 74–7 | — |
| aspect_ratioopt | COMBO | 2 options: 16:9, 9:16 | |
| enhance_promptopt | BOOLEAN | true | — |
| person_generationopt | COMBO | 2 options: allow_adult, dont_allow | |
| seedopt | INT | 8915375920–4294967295 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |