ComfyUI Node

Veo 3.1 - Vertex- Uncut

Google Veo 3.1 inside ComfyUI — via Vertex, with a token server you probably don't have

By This-is-Uncut·Created 6 months ago·Updated 6 months ago· 0
Veo 3.1 - Vertex- Uncut
  • start_image
  • end_image
  • ref_image_1
  • ref_image_2
  • ref_image_3
  • video
  • used_seed
model
mode
audio_generation
project_idyour-project-id
locationus-central1
server_ip
aspect_ratio
resolution
duration8
positive_prompt
negative_prompt
seed0

The README for this pack is one line: "A node for Veo3 generation for internal Uncut use." That's refreshingly honest, and it tells you two things up front. First, this is a single node that calls Google's Veo 3.1 - the closed, cloud-only video model that produces video with native audio and, honestly, the one closed frontier the open-source video world still hasn't fully closed. Second, "internal Uncut use" means it was written for one studio's own pipeline, and it shows in a couple of places you need to know about before it'll work for you.

The good news: the core thing it does is genuinely useful. It drops a Veo 3.1 - Vertex- Uncut node into your graph, you type a prompt, it polls the Vertex AI API, and a rendered clip lands back in ComfyUI as a VIDEO you can wire into your VHS-style preview nodes, save, or post-process. No GPU, no model download, no local inference - this is the "when the model isn't on your machine" category of node, the same move ComfyUI's own Partner Nodes make.

How it works

Under the hood it's the official google-genai SDK pointed at Vertex AI (vertexai=True) with your project_id and location (default us-central1). It builds a GenerateVideosConfig, submits a long-running operation, polls every 10 seconds, then downloads the clip and hands it back as a VIDEO tensor via InputImpl.VideoFromFile. requirements.txt is a single line: google-genai. That's it.

The internal bit is server_ip. If you fill it in, the node hits http://<server_ip>:9191/get_vertex_token and uses the returned token as its credentials - Uncut runs a little auth proxy so nobody pastes service-account keys into a node. You almost certainly don't have that server. Leave server_ip empty and the node falls back to standard Google Cloud auth (application default credentials), which is what you want anyway. Set up a GCP project, enable the Vertex AI API and billing, then gcloud auth application-default login on the machine running ComfyUI.

The inputs that actually matter

Most fields are self-explanatory enums, so here's the short list:

  • model - pick between the standard and fast variants (veo-3.1-generate-001 vs veo-3.1-fast-generate-001). Fast is cheaper and rougher.
  • positive_prompt - this is 90% of the quality. Veo rewards detailed motion language.
  • resolution / duration - 720p, 1080p, or 4K; 4, 6, or 8 seconds.
  • seed - 0 means random, and the actual seed used comes back out of the used_seed output so you can reproduce a good take.
  • mode - the image-conditioning switch: Start Image, Start+End Images, or Reference Images, which feed the start_image / end_image / ref_image_1..3 inputs.

Outputs are video (the clip) and used_seed (the INT).

Where people get burned

A few traps are baked right into the source, and knowing them saves a wasted 8-second render:

  • The duration picker lies. The code forces 8 seconds whenever you pick 1080p/4K or either multi-image mode, because Veo requires 8s for those. Your "4" becomes an "8", and your bill with it.
  • negative_prompt is ignored in Reference Images mode. Veo's reference-image path doesn't take negatives, so the node quietly drops it. It also drops your start frame there - reference mode and start-frame mode are separate doors.
  • Adult content is hardcoded on. person_generation: "allow_adult" is baked into every call - hence the "Uncut" name. That doesn't mean anything goes: if Google's RAI safety filter trips, the node raises a plain "RAI Blocked" error and you get nothing, no matter how the studio configured things.
  • Vertex can return a GCS URI without inline bytes. You'll get a verbose error telling you to allow inline video bytes or handle buckets. Annoying, but it tells you exactly what's wrong.
  • This is metered money. Every second is billed, 4K especially, and multi-image + audio jobs rack up fast. It's the real price of a closed model; a local Wan render is free after electricity.

Installing it

ComfyUI Manager: search for the pack title, Custom-Node-ComfyUI-VEO3-Uncut-Vertex (display name "Veo 3.1 - Vertex- Uncut"). Or by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/This-is-Uncut/Custom-Node-ComfyUI-VEO3-Uncut-Vertex

Restart ComfyUI. The node saves your project_id, location, and server_ip to an uncut_vertex_config.json in its own folder, so once you've entered them they stick. There are no model files and no GPU requirement - the only real dependency is the Google Cloud project on the other end.

It's a rough, single-author, internal tool: 0 impressions on Google, one commit, no tests. But for dropping a Veo 3.1 render into a ComfyUI graph without Comfy's own metered Partner Node storefront, it does the job - once you have the GCP plumbing in place.

CategoryUncutNodes

Inputs (17)

NameTypeDefaultDescription
modelCOMBO4 options: veo-3.1-generate-001, veo-3.1-fast-generate-001, veo-3.1-generate-preview, veo-3.1-fast-generate-preview
modeCOMBO3 options: Start Image, Start+End Images, Reference Images
audio_generationCOMBO2 options: Video Only, Video + Audio
project_idSTRINGyour-project-id
locationSTRINGus-central1
server_ipSTRING
aspect_ratioCOMBO2 options: 16:9, 9:16
resolutionCOMBO3 options: 720p, 1080p, 2160p (4k)
durationCOMBO83 options: 4, 6, 8
positive_promptSTRING
negative_promptSTRING
seedINT00–4294967295
start_imageoptIMAGE
end_imageoptIMAGE
ref_image_1optIMAGE
ref_image_2optIMAGE
ref_image_3optIMAGE

Outputs (2)

NameTypeDescription
videoVIDEO
used_seedINT