Veo 3.1 - Vertex- Uncut
Google Veo 3.1 inside ComfyUI — via Vertex, with a token server you probably don't have
- start_image
- end_image
- ref_image_1
- ref_image_2
- ref_image_3
- video
- used_seed
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 andfastvariants (veo-3.1-generate-001vsveo-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 theused_seedoutput so you can reproduce a good take.mode- the image-conditioning switch:Start Image,Start+End Images, orReference Images, which feed thestart_image/end_image/ref_image_1..3inputs.
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_promptis ignored inReference Imagesmode. 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.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | 4 options: veo-3.1-generate-001, veo-3.1-fast-generate-001, veo-3.1-generate-preview, veo-3.1-fast-generate-preview | |
| mode | COMBO | 3 options: Start Image, Start+End Images, Reference Images | |
| audio_generation | COMBO | 2 options: Video Only, Video + Audio | |
| project_id | STRING | your-project-id | — |
| location | STRING | us-central1 | — |
| server_ip | STRING | — | |
| aspect_ratio | COMBO | 2 options: 16:9, 9:16 | |
| resolution | COMBO | 3 options: 720p, 1080p, 2160p (4k) | |
| duration | COMBO | 8 | 3 options: 4, 6, 8 |
| positive_prompt | STRING | — | |
| negative_prompt | STRING | — | |
| seed | INT | 00–4294967295 | — |
| start_imageopt | IMAGE | — | |
| end_imageopt | IMAGE | — | |
| ref_image_1opt | IMAGE | — | |
| ref_image_2opt | IMAGE | — | |
| ref_image_3opt | IMAGE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| used_seed | INT | — |