Veo3.1 Text To Video
Veo 3.1 text-to-video with native audio, in your graph
- video_paths
Veo 3.1 is the model that made people stop pretending open-source video was close: it generates audio natively, in sync with the picture - a capability with no real open-source equivalent yet. This node puts that whole package into ComfyUI as a text-to-video generator. You describe the shot, it returns a clip with sound, and you can chain the result into the rest of your workflow. It's the flagship generator of this pack, and the node most people here will actually want.
How it works
Prompt goes to the Veo 3.1 API on Vertex AI; the model generates the video - with its generate_audio flag deciding whether you get the synchronized soundtrack - and the node polls the long-running operation, downloads the result to temp, and hands you video_paths (VEO_VIDEO). You get the modern controls the Veo 2 nodes lack: a model dropdown, an explicit resolution picker, and 4/6/8-second durations. The output is a path list, not a tensor, so playback and frame extraction are the jobs of the pack's two utility nodes.
Inputs that matter
- prompt - the shot description. Be specific about camera moves, subject, and lighting; it pays off more here than with most models.
- model -
VEO_3_1(default),VEO_3_1_FAST, orVEO_3_1_LITE. The lite and fast tiers are cheaper and quicker - genuinely useful when you're iterating on a prompt before committing to the full model. - output_resolution -
720pdefault, plus1080pand4k. The default is the recurring complaint in the community: people pay for Veo and get 720p. Set this before an expensive run. - duration_seconds - 4, 6, or 8 only.
- generate_audio - on by default. Veo 3.1's native audio is the feature; leave it on unless you're scoring separately.
- sample_count - up to 4 clips per run, billed per video.
- aspect_ratio -
16:9or9:16. - compression_quality -
losslessrequires output_gcs_uri, or the node errors asking for a bucket.
Optional: negative_prompt, seed, output_gcs_uri, gcp_project_id, gcp_region.
Gotchas
The seed situation is the same across all Veo 3.1 nodes: the tooltip says seed works with enhance-prompt disabled, but you can't disable prompt enhancement on Veo 3.1 - treat seed as decorative. And the lossless bucket requirement is worth prepping for if you work with compression_quality: lossless; the API won't return huge lossless files inline, so you must supply output_gcs_uri.
Installing and wiring it
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/GoogleCloudPlatform/comfyui-google-genmedia-custom-nodes
pip install -r comfyui-google-genmedia-custom-nodes/requirements.txt
Or ComfyUI Manager → search comfyui-google-genmedia-custom-nodes. Restart, find it under Google AI/Veo3.1. Set gcp_project_id and gcp_region on the node (or use GKE workload identity), authenticate with gcloud auth application-default login, and every video bills to Vertex AI. Run the output into VeoVideoSaveAndPreview to watch it in-canvas, or VeoVideoToVHSNode to pull frames for upscaling and img2img. This is the node that makes a pure-prompt pipeline actually feel complete.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | VEO_3_1 | 3 options: VEO_3_1, VEO_3_1_FAST, VEO_3_1_LITE |
| prompt | STRING | — | |
| aspect_ratio | COMBO | 16:9 | 2 options: 16:9, 9:16 |
| output_resolution | COMBO | 720p | 3 options: 720p, 1080p, 4k |
| compression_quality | COMBO | optimized | 2 options: optimized, lossless |
| person_generation | COMBO | allow_adult | 2 options: dont_allow, allow_adult |
| duration_seconds | INT | 84–8 | — |
| generate_audio | BOOLEAN | true | — |
| sample_count | INT | 11–4 | — |
| output_gcs_uriopt | STRING | — | |
| negative_promptopt | STRING | — | |
| seedopt | INT | 00–4294967295 | 0 seed let's Veo API handle randomness. Seed works with enhance_prompt disabled |
| gcp_project_idopt | STRING | GCP project id where Vertex AI API will query Veo | |
| gcp_regionopt | STRING | GCP region for Vertex AI API |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_paths | VEO_VIDEO | — |