ComfyUI Node

Veo 3 Text to Video

Veo 3 Text to Video is a phone call to Google

By cuban044·Created about a year ago·Updated about a year ago· 3
Veo 3 Text to Video
    • video_paths
    prompt
    aspect_ratio16:9
    person_generationdont_allow
    duration_seconds8
    api_key
    negative_prompt

    The name promises local generation, but the reality is more useful and more boring. Veo 3 Text to Video doesn't run any model on your machine - it's a thin wrapper that packages your prompt into a request for Google's Veo 3 API, waits a few minutes while Google renders the video, then hands you back a path to the .mp4 it just downloaded. No VRAM, no model files, no sampler settings. Just an API key and an internet connection. That's the entire pitch, and for someone who wants Veo-quality clips without renting a big-GPU box, it's the whole game.

    Worth being honest about the deal, though. This is a paid, remote, possibly-not-available-in-your-country service wrapped in a node. The README quotes roughly $0.35 per second, and since clips max out at 8 seconds, a single generation runs you about $2.80. Google's Veo API may not be offered in your region at all - the author put a red warning about exactly that at the top of the README. You're getting 720p at 24fps, 16:9 or 9:16, and every clip comes back watermarked with SynthID. "Experimental" is in the pack name for a reason; treat it like the unofficial wrapper it is.

    How it works

    Under the hood it's the official google-genai SDK (google-genai>=0.3.0). The node calls the veo-3.0-generate-001 model through generate_videos(), which kicks off a long-running operation, then sits in a polling loop - it checks every 20 seconds until the job finishes. That's why a "Running" node can look frozen for several minutes: it's not stuck, it's waiting on Google.

    There are two built-in politeness rules you should know about. The pack enforces a 60-second minimum gap between requests, and on quota errors (429 / RESOURCE_EXHAUSTED) it retries with a delay that starts at 120 seconds and grows each attempt. So don't queue up ten of these and expect speed. This thing is built for the occasional careful generation, not for batching.

    The inputs that matter

    Only a handful, and most have sane defaults:

    • prompt - your text-to-video prompt. This is the whole craft; Veo responds well to concrete subject, camera, and motion descriptions.
    • aspect_ratio - 16:9 (default) or 9:16 for portrait.
    • duration_seconds - 5 to 8, default 8. Longer isn't free; remember the $0.35/sec math.
    • person_generation - dont_allow (default) or allow_adult. Google's policy dial, not a creative one.
    • api_key - leave blank if you've set up the .env file (recommended); paste it here if you'd rather not.
    • negative_prompt - here's the trap: the field exists and accepts text, but the API call the node builds never sends it. Negative prompting doesn't work on this pipeline, so save yourself the time and ignore it.

    The output

    video_paths (VEO_VIDEO) - a path to the saved .mp4, dropped into ComfyUI's output directory with a timestamp name like veo3_1789..._0.mp4. Wire it into the pack's Veo 3 Video Saver to get a clean filename and an in-UI preview, or into Veo 3 to VHS if you want the frames as a batch of images for further processing. VEO_VIDEO is a custom type from this pack, so those two sibling nodes are the natural next stop.

    Installing

    Nothing to download model-wise - that's the point. The pack itself is one clone:

    cd ComfyUI/custom_nodes
    git clone https://github.com/cuban044/ComfyUI-Veo3-Experimental
    cd ComfyUI-Veo3-Experimental
    pip install -r requirements.txt
    

    ...or just search "Veo 3 Experimental" in ComfyUI Manager and hit install. The dependency list is small - google-genai, opencv-python, and friends; torch and numpy you already have. Then create a .env in the extension folder:

    GOOGLE_API_KEY=your_key_here
    

    Grab the key from Google AI Studio, restart ComfyUI, and you're done. One heads-up: the README's install section still points at a ShmuelRonen fork URL - that's stale, clone from the cuban044 address above.

    Troubleshooting

    • "Google API key is required" - the .env file isn't being read (wrong folder, or you restarted before creating it), or the key itself isn't enabled for Veo. You can also paste the key straight into the node's api_key field to bypass .env entirely.
    • Node runs for minutes then outputs nothing - that's a quota error being retried, or the API being blocked for your region. Watch the console; the pack logs every poll and retry attempt there.
    • Slow - the 60-second rate limit is by design, not a bug. Space out your generations.

    If you're not sure Veo is worth $0.35/sec to you at all, do one or two runs here before committing. The quality is real, but the local open-source alternatives (Wan and friends) have been closing the gap fast - and those run on hardware you already own.

    Categoryvideo/generation

    Inputs (6)

    NameTypeDefaultDescription
    promptSTRING
    aspect_ratioCOMBO16:92 options: 16:9, 9:16
    person_generationCOMBOdont_allow2 options: dont_allow, allow_adult
    duration_secondsINT85–8
    api_keySTRING
    negative_promptoptSTRING

    Outputs (1)

    NameTypeDescription
    video_pathsVEO_VIDEO