Nodes/Comfyui-google-veo2-api/Google Veo2 Video Generation
ComfyUI Node

Google Veo2 Video Generation

This node doesn't run Veo 2 — it dials Google for you

By ainewsto·Created about a year ago·Updated about a year ago· 4
Google Veo2 Video Generation
  • image
  • video
  • video_url
  • response
prompt
api_key
aspect_ratio16:9
person_generationdont_allow
duration_seconds8
number_of_videos1
negative_prompt
seed0

ComfyuiGoogleVeo2 ("Google Veo2 Video Generation") is a one-node pack that turns Google's Veo 2 API into a ComfyUI node. There's no model to download, no GPU required, no 20GB of weights. You type a prompt, hand it an optional starting image, and Google's servers do the heavy lifting while your graphics card sits there wondering what it's for. It's the closest thing to "generate Veo in your graph" that doesn't involve leaving ComfyUI.

This is very much a niche pick, and worth being honest about why. Veo 2 is closed-source, top-tier commercial video - the KB's line is that the community keeps measuring the gap between it and open models like Wan, and it keeps being real. If you've got Google's API approval, this node gets you that quality inside ComfyUI's graph, which is convenient. If you don't, nothing else in this article matters.

How it works

Under the hood it's a thin wrapper around Google's official google-genai Python SDK (the only dependency in requirements.txt). On run it builds a client with your API key, calls client.models.generate_videos with the veo-2.0-generate-001 model, then enters a long-poll loop: check the operation, sleep 20 seconds, check again, until it's done. A Veo generation typically takes a minute or two, sometimes longer - the node just blocks until Google finishes.

When the video lands, it's saved straight into ComfyUI's output directory as veo2_<uuid>.mp4, and the node returns:

  • video - the path to that mp4 (a VIDEO output; wire it into a video preview node to see it).
  • video_url - always empty. Google returns the file, not a URL, so this output is effectively dead weight. Don't go hunting for it.
  • response - a JSON string with status, prompt, model, and timing, or an error message on failure.

The inputs that actually matter

There are eight, but you'll touch maybe four:

  • prompt - the whole ballgame. Veo is picky about prompt detail; describe motion, camera, lighting.
  • api_key - your aistudio.google.com key. On the first run you must paste it in; the node then persists it to a Comflyapi.json file inside the pack folder, so later runs fall back to it if you leave the field empty. Note that plaintext-in-a-JSON-file means anyone with disk access to your ComfyUI install has your key.
  • aspect_ratio - 16:9 or 9:16.
  • duration_seconds - 5 to 8 (Veo 2's API cap).

Then the ones to know about so you don't get burned: negative_prompt is accepted but never sent to Google - open the source and you'll see it's a function parameter that nothing reads. Dead input. seed does random.seed(seed), which would matter if anything in this file used Python's random module. Nothing does, so it's decorative. number_of_videos lets you ask for 1 or 2 candidates, but only the first is ever saved. And person_generation (dont_allow / allow_adult) is Google's people-control switch - the allow_adult option is your permission slip, not a guarantee Google's safety filters agree.

The optional image input turns it into image-to-video: feed it an IMAGE tensor (e.g. from a LoadImage) and Veo animates it. Text-only works if you leave it unconnected.

Installing it

ComfyUI Manager is the easy route - search "Google Veo2" or the pack name and hit install. Or do it by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/ainewsto/Comfyui-google-veo2-api
cd ComfyUI-google-veo2-api
pip install -r requirements.txt   # just google-genai

Then restart ComfyUI. The included workflow expects a couple of extra packs too (pysssss's ShowText and a Comfly_kling_videoPreview node from the author's other pack), so a fresh clone won't run it out of the box.

Common issues

  • "Google API key not found" - you haven't entered a key yet, or the saved config file got wiped. The error text comes back in the response output.
  • Access errors / 403s - this is the big one. The README warns in bold that you need Google's video-generation approval; not everyone with a key has it. If Google rejects you, that's the gate, not the node.
  • It looks frozen - the progress bar is fake. The source updates it with a made-up value derived from the wall clock, then sits in a 20-second sleep loop for minutes. Let it cook.
  • The video never shows in a preview - the VIDEO output is a path, not a clip. You need a video-preview node on the end of it.
  • macOS/Linux quirks - the author only tested Windows 11, so cross-platform behavior is untested territory.

It's a small, rough, very single-purpose node from a solo author (comfly.chat). If you have Veo access and want it inside ComfyUI, it works and costs nothing. Just don't expect the unshipped inputs to do anything.

CategoryComfyui-Google-veo2

Inputs (9)

NameTypeDefaultDescription
promptSTRING
api_keySTRING
aspect_ratioCOMBO16:92 options: 16:9, 9:16
person_generationCOMBOdont_allow2 options: dont_allow, allow_adult
duration_secondsINT85–8
number_of_videosINT11–2
negative_promptSTRING
seedINT00–18446744073709550000
imageoptIMAGE

Outputs (3)

NameTypeDescription
videoVIDEO
video_urlSTRING
responseSTRING