Nodes/ComfyUI_Adforge/Vertex Veo Text to Video
ComfyUI Node

Vertex Veo Text to Video

Google's best video model, sitting in your ComfyUI graph (bring a credit card)

By Creditas-labs·Created 10 months ago·Updated 9 months ago· 1
Vertex Veo Text to Video
    • videos
    • video_path_list
    prompt
    negative_prompt
    output_gcs_uriNone/videos/text-to-video-20260720-202149.mp4
    modelveo-3.1-generate-preview
    aspect_ratio16:9
    duration_seconds8
    resolution1080p
    fps24
    seed0
    number_of_videos1
    enhance_prompttrue
    generate_audiofalse
    person_generationallow_adult

    Vertex Veo Text to Video is the flagship node of Adforge, a Google Vertex AI toolkit built by the Brazilian fintech Creditas for generating ad creative. Give it a sentence, and it returns a video - up to 8 seconds, up to 1080p, with native audio - generated by Veo 3.1 in Google's cloud. No GPU, no local checkpoint, no VRAM math. It's the most literal "type prompt, get video" experience you can bolt onto ComfyUI.

    The honest framing: Veo is the current king of closed video generation, and its native audio is the one capability no open model matches yet - that's a genuine gap, not marketing. But this is a paid API, billed per second of generated video, and every generation round-trips through a GCS bucket. If you're iterating on a cheap idea, local Wan 2.2 or LTX is where you do that. This node is for the take where quality actually matters: a product spot, a hero clip, the version you show a client. One light aside: it's also a great demo of how weird it feels to watch a node in your graph block for a minute while a datacenter somewhere else renders your pixels.

    How it works

    Under the hood it uses Google's Gen AI SDK in Vertex AI mode. The node calls models.generate_videos() with your prompt plus a pile of config, which kicks off a long-running operation - the node polls it every five seconds until it's done. Veo writes the finished clip to GCS (output_gcs_uri), and then the node downloads it back into your ComfyUI output folder. Two outputs come out: videos, a VIDEO-type list you can feed preview or save nodes, and video_path_list, a list of local file paths. Both are lists because you can ask for up to four variations per run.

    The inputs that matter

    • prompt - required, and with enhance_prompt (on by default) Gemini rewrites it before Veo sees it. Leave it on; Veo rewards detailed prompts, and Gemini is decent at expanding a sentence into a shot list.
    • duration_seconds - 2 to 8. Veo 3 tops out at 8; that's a model limit, not a node one.
    • resolution - 1080p or 720p, and it only applies to Veo 3+ models. Pick 2.0 and it's ignored.
    • generate_audio - defaults to off here. Veo 3.1's native sound is genuinely good; flip it on when the clip needs ambience or dialogue.
    • seed and number_of_videos - seed for deterministic reruns, variations to gamble on a range of takes in one paid call.
    • model, aspect_ratio, person_generation (whether people/faces are allowed), negative_prompt, fps - the usual dropdowns; the defaults are sane.

    Installing and authenticating

    cd ComfyUI/custom_nodes
    git clone https://github.com/Creditas-labs/ComfyUI-Adforge
    cd ComfyUI-Adforge
    pip install -r requirements.txt   # or: uv sync
    

    Restart ComfyUI, or just search adforge in ComfyUI Manager. Python 3.12+ required. Then the auth dance: copy .env.example to custom_nodes/comfyui_adforge/.env and set GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_STORAGE_BUCKET, GOOGLE_CLOUD_LOCATION, and API_KEY - or export them as env vars. A bucket is non-negotiable: Veo writes its output to GCS and this node downloads it back. A service-account JSON via GOOGLE_APPLICATION_CREDENTIALS works too.

    Common issues

    • "Why is my 1080p request coming back 720p?" Known Veo 3.1 complaint - the API's effective output resolution can be lower than what you ask for. Annoying, but it's the model side, not the node.
    • Auth errors. If a .env in the custom_nodes folder isn't being picked up (it's found relative to where ComfyUI is launched), export the variables in the shell that starts ComfyUI. That always works.
    • Cost. Per-second pricing on a model that generates 8 seconds at a time adds up fast, especially with number_of_videos turned up. Watch a couple of test runs in your billing console before you build a workflow around it.
    CategoryAdForge/Video Generation

    Inputs (13)

    NameTypeDefaultDescription
    promptSTRINGThe text prompt used to guide video generation.
    negative_promptoptSTRINGOptional. A text string that describes anything you want to discourage the model from generating.
    output_gcs_urioptSTRINGNone/videos/text-to-video-20260720-202149.mp4GCS URI where the generated videos will be stored, in the format 'gs://BUCKET_NAME/SUBDIRECTORY'.
    modeloptCOMBOveo-3.1-generate-previewThe Veo model to use for video generation.
    aspect_ratiooptCOMBO16:9Optional. Specifies the aspect ratio of generated videos.
    duration_secondsoptINT82–8Required. The length in seconds of video files that you want to generate.
    resolutionoptCOMBO1080pOptional. Veo 3 models only. The resolution of the generated video.
    fpsoptINT241–60Optional. Frames per second for the generated video.
    seedoptINT00–294967295Optional. A number to request to make generated videos deterministic. Adding a seed number with your request without changing other parameters will cause the model to produce the same videos.
    number_of_videosoptINT11–4Optional. Number of video variations to generate.
    enhance_promptoptBOOLEANtrueOptional. Use Gemini to enhance your prompts.
    generate_audiooptBOOLEANfalseGenerate audio for the video.
    person_generationoptCOMBOallow_adultOptional. The safety setting that controls whether people or face generation is allowed.

    Outputs (2)

    NameTypeDescription
    videosVIDEOA list of generated videos (VIDEO type).
    video_path_listSTRINGA list of local paths to the generated videos (when output_format=local_file)