ComfyUI Node

Veo Prompt Writer

Stop writing video prompts by hand

By khanhlvg·Created about a year ago·Updated about a year ago· 4
Veo Prompt Writer
    • prompt
    project_id
    locationus-central1
    subjecta detective
    actioninterrogating a rubber duck
    scenein a dark interview room
    camera_angle
    camera_movement
    lens_effects
    style
    temporal_elements
    sound_effects
    dialogue

    Veo Prompt Writer is the boring-but-essential node in the Vertex AI pack: it writes the prompt that the Veo video nodes actually use. You type what's happening in plain terms - subject, action, scene - pick from dropdowns for camera work, style, and sound, and it hands back a polished, cinematic prompt string that you feed straight into Veo 2 or Veo 3. Video prompting is its own skill, and this node is a cheat code for it.

    What it is

    A Gemini-powered prompt synthesizer. It uses gemini-2.5-flash to take your keywords and stitch them into one effective instruction for Veo, with the explicit rule that every keyword must be included and nothing new invented. It's not a freeform assistant - it's a structured prompt builder for people who know what they want but don't want to write the 200-word cinematic description by hand.

    How it works

    You fill in the three required fields - subject ("a detective"), action ("interrogating a rubber duck"), scene ("in a dark interview room") - and any optional picks. The node collects everything that isn't "None", builds a template instructing Gemini to synthesize a cohesive prompt, calls the Gemini API, and returns the text on a single STRING output. Wire that straight into the prompt input of the Veo 2 or Veo 3 node and you have a one-shot pipeline from idea to video.

    Inputs that matter

    • subject, action, scene - the three required pieces. These are the actual content; everything else is flavor.
    • camera_angle (18 choices) - from Eye-Level to POV and Worm's-Eye. This is where video prompting diverges from image prompting, and the dropdown makes it discoverable.
    • camera_movement (21 choices) - Pan, Tilt, Dolly, Zoom, Handheld, and more.
    • lens_effects (10), style (17), temporal_elements (7), sound_effects (8) - lighting, mood, timing, and audio cues. Remember Veo 3 can generate audio natively, so a sound_effects pick like "Waves crashing" isn't decoration.
    • dialogue - freeform text, appended when set.

    Everything defaults to None, so a bare-minimum run is just subject + action + scene. The output is prompt (STRING) - there's no preview node needed, it's just text.

    Installing

    Pack install:

    cd ComfyUI/custom_nodes
    git clone https://github.com/khanhlvg/vertex-ai-comfyui-nodes.git
    cd vertex-ai-comfyui-nodes
    pip install -r requirements.txt
    

    Then the pack-wide setup - gcloud auth application-default login, GOOGLE_CLOUD_PROJECT / GOOGLE_CLOUD_LOCATION. It calls the Gemini API, so your project needs Gemini access and billing like every other node here. Notably, it does not need any video model access; the prompt-writing and video-generation steps can live in different projects if you like.

    Where people get burned

    • It's a text call with a cost. Every run is a Gemini API call. It's cheap, but if you're tuning a workflow and re-running constantly, it adds up - and the "same input, same output" assumption doesn't fully hold.
    • It's a crutch, not a mind reader. Gemini assembles what you give it; it won't invent the brilliant camera move you forgot to pick. The dropdowns are the feature - use them.
    • No local option. If you want prompt building that never touches the network, you'd grab something local like KJNodes' prompt helpers instead. This node's whole identity is "already inside the Vertex AI pack."

    Honestly, this is the node that saves you from yourself. Veo rewards detailed prompts, and nobody wants to type "slow dolly in, golden hour, volumetric lighting, shallow depth of field" from memory on every clip. Click the dropdowns, wire it to Veo 2, and go.

    CategoryVertex AI

    Inputs (12)

    NameTypeDefaultDescription
    project_idSTRING
    locationSTRINGus-central1
    subjectSTRINGa detective
    actionSTRINGinterrogating a rubber duck
    sceneSTRINGin a dark interview room
    camera_angleoptCOMBO18 options: None, Eye-Level Shot, Low-Angle Shot, High-Angle Shot, Bird's-Eye View, Top-Down Shot, +12
    camera_movementoptCOMBO21 options: None, Static Shot (or fixed), Pan (left), Pan (right), Tilt (up), Tilt (down), +15
    lens_effectsoptCOMBO10 options: None, Wide-Angle Lens (e.g., 24mm), Telephoto Lens (e.g., 85mm), Shallow Depth of Field, Bokeh, Deep Depth of Field, +4
    styleoptCOMBO17 options: None, Photorealistic, Cinematic, Vintage, Japanese anime style, Claymation style, +11
    temporal_elementsoptCOMBO7 options: None, Slow-motion, Fast-paced action, Time-lapse, Hyperlapse, Pulsating light, +1
    sound_effectsoptCOMBO8 options: None, Sound of a phone ringing, Water splashing, Soft house sounds, Ticking clock, City traffic and sirens, +2
    dialogueoptSTRING

    Outputs (1)

    NameTypeDescription
    promptSTRING