{
  "id": "wGQOrU5qak5K99FT",
  "name": "Google Sheets to Veo 3: Instantly Create Videos with n8n & Fal.AI",
  "tags": [
    {
      "id": "fElGhCk9TINqseuM",
      "name": "templates",
      "createdAt": "2025-06-11T19:44:28.283Z",
      "updatedAt": "2025-06-11T19:44:28.283Z"
    },
    {
      "id": "I8yfdg9mSqeqo4nX",
      "name": "creator",
      "createdAt": "2025-06-11T19:44:30.157Z",
      "updatedAt": "2025-06-11T19:44:30.157Z"
    }
  ],
  "nodes": [
    {
      "id": "7beb408f-128b-4e4c-8d03-e5625fbcb2eb",
      "name": "Wait 5s",
      "type": "n8n-nodes-base.wait",
      "position": [
        340,
        620
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "77d6a74f-b704-40f2-b054-fbf91c93726a",
      "name": "Check if video is ready",
      "type": "n8n-nodes-base.if",
      "position": [
        160,
        620
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "ac50759b-e2f3-4efd-a2af-f28b7d209b45",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "COMPLETED"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "cd94d480-3562-4ce3-aff0-9caf5dee9f72",
      "name": "Get video url",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        0,
        940
      ],
      "parameters": {
        "url": "={{ $json.response_url }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Key <YOUR_API_KEY>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "5267ac1d-36ad-449a-9f5f-cae01a090b33",
      "name": "Generate prompt for Veo 3 model",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        180,
        -20
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "chatgpt-4o-latest",
          "cachedResultName": "CHATGPT-4O-LATEST"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "assistant",
              "content": "=You are a creative prompt engineer for Google's Veo 3 video generation model. For any concept provided, craft a detailed, visually immersive prompt that specifies the subject, setting, lighting, mood, era or style, object details, composition, and background elements. Use evocative, sensory-rich language and guide the model to produce authentic, high-quality images. Match the style and depth of the following example:\n\nA casual street interview on a busy New York City sidewalk in the afternoon. The interviewer holds a plain, unbranded microphone and asks: Have you seen Google's new Veo3 model It is a super good model. Person replies: Yeah I saw it, it's already available on fal. It's crazy good.\n\nRespond only with the crafted prompt."
            },
            {
              "content": "=the input is: {{ $json.Idea }}"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "a5864945-030e-4d80-83cb-2f558399d8bf",
      "name": "Submit Request to generate video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        340,
        300
      ],
      "parameters": {
        "url": "https://queue.fal.run/fal-ai/veo3",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"prompt\": \"{{ $json.prompt }}\",\n  \"aspect_ratio\": \"{{ $json.ratio }}\",\n  \"enhance_prompt\": true,\n  \"generate_audio\": {{ $json.audio }}\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "authorization",
              "value": "Key <YOUR_API_KEY>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "00f339c8-f6e3-42b3-aa56-abe34268c68a",
      "name": "Set variables for Video generation",
      "type": "n8n-nodes-base.set",
      "position": [
        0,
        300
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "4807c116-ed98-4a0e-8dba-aab1dd2ee971",
              "name": "prompt",
              "type": "string",
              "value": "={{ $json.message.content }}"
            },
            {
              "id": "32437b05-fa7a-4f3b-bad0-fc7201cc7371",
              "name": "ratio",
              "type": "string",
              "value": "={{ $('Google Sheets Trigger').item.json.Ratio }}"
            },
            {
              "id": "4cf00dd2-9057-4868-93ac-7f9725750d77",
              "name": "audio",
              "type": "string",
              "value": "={{ $('Google Sheets Trigger').item.json.Audio }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "88429b78-fe9f-42ca-81e1-0b364703ab2a",
      "name": "Check video status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        0,
        620
      ],
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/veo3/requests/{{ $json.request_id }}/status",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Key <YOUR_API_KEY>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "26e74f30-575f-407a-99ee-f75daad9a2e4",
      "name": "Google Sheets Trigger",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        0,
        -20
      ],
      "parameters": {
        "event": "rowAdded",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/100ur8DnU_q2YIAx15ccMfEWC43Di_G7hj19csjxg73A/edit#gid=0",
          "cachedResultName": "Results"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "100ur8DnU_q2YIAx15ccMfEWC43Di_G7hj19csjxg73A",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/100ur8DnU_q2YIAx15ccMfEWC43Di_G7hj19csjxg73A/edit?usp=drivesdk",
          "cachedResultName": "Veo 3 template"
        }
      },
      "credentials": {
        "googleSheetsTriggerOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "57f0306d-3b12-4717-afc6-c548863c2f7f",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -780,
        -80
      ],
      "parameters": {
        "color": 5,
        "width": 700,
        "height": 1140,
        "content": "## Google Sheets\uc5d0\uc11c Veo 3\uc73c\ub85c: n8n & Fal.AI\ub85c \uc989\uc2dc \ube44\ub514\uc624 \uc0dd\uc131\n\nFal.AI\uc758 Veo 3 \ubaa8\ub378\uc744 \uc0ac\uc6a9\ud558\uc5ec \uac04\ub2e8\ud558\uac8c 8\ucd08 \ube44\ub514\uc624\ub97c \uc0dd\uc131\ud558\uc138\uc694. Google Sheet\uc5d0 \ud589\uc744 \ucd94\uac00\ud558\uc5ec \uc544\uc774\ub514\uc5b4, \ube44\ub514\uc624 \ube44\uc728, \uadf8\ub9ac\uace0 \uc624\ub514\uc624 \ud544\uc694 \uc5ec\ubd80(true/false)\ub97c \uc785\ub825\ud558\uc138\uc694.\n\nFal.AI\uc758 \uc694\uae08\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:\n\n1\ucd08 \ube44\ub514\uc624: $0.50\n\n1\ucd08 \ube44\ub514\uc624(\uc624\ub514\uc624 \ud3ec\ud568): $0.75\n\n8\ucd08 \ube44\ub514\uc624(\uae30\ubcf8): $4.00\n\n8\ucd08 \ube44\ub514\uc624(\uc624\ub514\uc624 \ud3ec\ud568): $6.00\n\n\uc2e4\ud589 \uc2dc\uac04\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:\n\n8\ucd08 \ube44\ub514\uc624(\uae30\ubcf8): 3\ubd84\n\n8\ucd08 \ube44\ub514\uc624(\uc624\ub514\uc624 \ud3ec\ud568): 15\ubd84\n\n**1\ub2e8\uacc4: Google Sheets \uc5f0\uacb0**\n\nGoogle \uc11c\ube44\uc2a4 \uacc4\uc815 \uc790\uaca9 \uc99d\uba85\uc744 \ucd94\uac00\ud558\uace0 Google Cloud \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c Google Sheets API\ub97c \ud65c\uc131\ud654\ud558\uc138\uc694.\n\n\uc124\uba85\uc5d0 \uacf5\uc720\ub41c \ud15c\ud50c\ub9bf \uc2dc\ud2b8\ub97c \ubcf5\uc0ac\ud558\uc138\uc694.\n\nn8n\uc758 Google Sheets \ub178\ub4dc\uac00 \uc62c\ubc14\ub978 \uc2a4\ud504\ub808\ub4dc\uc2dc\ud2b8\uc5d0 \uc5f0\uacb0\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uc138\uc694.\n\n**2\ub2e8\uacc4: OpenAI \uc5f0\uacb0**\n\nOpenAI API \ud0a4\ub97c \uac00\uc838\uc624\uc138\uc694.\n\nn8n\uc5d0\uc11c OpenAI \uc790\uaca9 \uc99d\uba85\uc744 \ucd94\uac00\ud558\uc138\uc694.\n\n**3\ub2e8\uacc4: Fal.ai \uc124\uc815**\n\nfal.ai\uc5d0\uc11c \uac00\uc785\ud558\uace0 \uacc4\uc815\uc744 \ucda9\uc804\ud558\uc138\uc694.\n\nFal.ai \ub300\uc2dc\ubcf4\ub4dc\uc5d0\uc11c API \ud0a4\ub97c \uac00\uc838\uc624\uc138\uc694.\n\nn8n\uc5d0\uc11c \"\ube44\ub514\uc624 \uc0dd\uc131 \uc694\uccad \uc81c\ucd9c\", \"\ube44\ub514\uc624 \uc0c1\ud0dc \ud655\uc778\", \"\ube44\ub514\uc624 URL \uac00\uc838\uc624\uae30\" \ub178\ub4dc\ub97c \uc5c5\ub370\uc774\ud2b8\ud558\uc138\uc694. \uc778\uc99d \ud5e4\ub354\ub97c 'Key <YOUR_API_KEY>'\ub85c \uad50\uccb4\ud558\uc138\uc694.\n\n**4\ub2e8\uacc4: \uc2dc\ud2b8\uc5d0\uc11c \uacb0\uacfc \ubcf4\uae30**\n\n\uc2dc\ud2b8\uac00 \uc5c5\ub370\uc774\ud2b8\ub418\uba74 \uc0ac\uc6a9\ub41c \ud504\ub86c\ud504\ud2b8\uc640 \ube44\ub514\uc624 URL\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\n**\ubb38\uc81c \ud574\uacb0**\n\u201cAudio\u201d \uc5f4\uc774 \ud14d\uc2a4\ud2b8\uac00 \uc544\ub2cc \ubd80\uc6b8\ub85c \ud45c\uc2dc\ub418\uc5b4 \ube44\ub514\uc624 \uc0dd\uc131 \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uba74 \uc2a4\ud504\ub808\ub4dc\uc2dc\ud2b8\uc5d0 '=\"true\"' \ub610\ub294 '=\"false\"'\ub85c \uc785\ub825\ud558\uc138\uc694.\n\n\uae30\ud0c0 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud558\uba74 max@nervoai.com\uc73c\ub85c \uc5f0\ub77d\ud558\uc138\uc694.\n\n\uc774\uac8c \uc804\ubd80\uc785\ub2c8\ub2e4! \uc774\uc81c Google Sheets\uc5d0\uc11c \ubc14\ub85c Veo 3 \ube44\ub514\uc624\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "9dc75bc3-25a7-4c3c-bb65-8372acb2703b",
      "name": "Update sheet with video url and prompt used in Veo3",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        340,
        940
      ],
      "parameters": {
        "columns": {
          "value": {
            "Idea": "={{ $('Google Sheets Trigger').item.json.Idea }}",
            "Video Generated": "={{ $json.video.url }}",
            "Prompt Generated": "={{ $('Generate prompt for Veo 3 model').item.json.message.content }}"
          },
          "schema": [
            {
              "id": "Idea",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Idea",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Ratio",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Ratio",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Audio",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Audio",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Prompt Generated",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Prompt Generated",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Video Generated",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Video Generated",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Idea"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/100ur8DnU_q2YIAx15ccMfEWC43Di_G7hj19csjxg73A/edit#gid=0",
          "cachedResultName": "Results"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "100ur8DnU_q2YIAx15ccMfEWC43Di_G7hj19csjxg73A",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/100ur8DnU_q2YIAx15ccMfEWC43Di_G7hj19csjxg73A/edit?usp=drivesdk",
          "cachedResultName": "Veo 3 template"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "774b9b76-4cd8-4d5a-8b8b-587ee1cae464",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        -140
      ],
      "parameters": {
        "color": 3,
        "width": 540,
        "height": 300,
        "content": "## 1\ub2e8\uacc4: \ud2b8\ub9ac\uac70 \ubc0f \ud504\ub86c\ud504\ud2b8 \uc0dd\uc131\nGoogle Sheets\uc5d0 \uc0c8 \ud589\uc774 \ucd94\uac00\ub418\uba74 \uc6cc\ud06c\ud50c\ub85c\ub97c \uc2dc\uc791\ud558\uace0, \uc6cc\ud06c\ud50c\ub85c\uac00 \uc2e4\ud589\ub420 \ub54c \uc2dc\ud2b8 \ub370\uc774\ud130\ub97c \uae30\ubc18\uc73c\ub85c Veo 3 \ube44\ub514\uc624 \ubaa8\ub378\uc758 \ud504\ub86c\ud504\ud2b8\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "169699a3-6208-4586-8c3c-a3df7f3cdaf2",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        180
      ],
      "parameters": {
        "color": 6,
        "width": 540,
        "height": 300,
        "content": "## 2\ub2e8\uacc4: \ube44\ub514\uc624 \uc694\uccad \uc900\ube44 \ubc0f \uc81c\ucd9c\n\ube44\ub514\uc624 \uc0dd\uc131\uc744 \uc704\ud55c \ubaa8\ub4e0 \ud544\uc694\ud55c \ubcc0\uc218\ub97c \uc124\uc815\ud558\uace0 Fal.AI\uc5d0\uac8c \ube44\ub514\uc624 \uc0dd\uc131 \uc694\uccad\uc744 \ubcf4\ub0c5\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "739cdf63-5e11-4364-b4f8-3b65e962ce3e",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        500
      ],
      "parameters": {
        "width": 540,
        "height": 300,
        "content": "## 3\ub2e8\uacc4: \ube44\ub514\uc624 \uc0c1\ud0dc \ubaa8\ub2c8\ud130\ub9c1\n\ube44\ub514\uc624 \uc0dd\uc131\uc758 \uc0c1\ud0dc\ub97c \ud655\uc778\ud569\ub2c8\ub2e4. \ub300\uae30\ud558\uace0 \ub9e4 5\ucd08\ub9c8\ub2e4 \ubc18\ubcf5\uc801\uc73c\ub85c \ud655\uc778\ud569\ub2c8\ub2e4. \ube44\ub514\uc624\uac00 \uc900\ube44\ub420 \ub54c\uae4c\uc9c0."
      },
      "typeVersion": 1
    },
    {
      "id": "49c27097-de0e-4516-8ee0-8936507d7455",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        820
      ],
      "parameters": {
        "color": 4,
        "width": 540,
        "height": 300,
        "content": "## 4\ub2e8\uacc4: \uacb0\uacfc \uac80\uc0c9 \ubc0f \uc5c5\ub370\uc774\ud2b8\n\n\ucd5c\uc885 \ube44\ub514\uc624 URL\uc744 \uac00\uc838\uc624\uace0 Google \uc2dc\ud2b8\uc5d0 \ube44\ub514\uc624 \ub9c1\ud06c\uc640 \uc0ac\uc6a9\ub41c \ud504\ub86c\ud504\ud2b8\ub97c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "9f0cad2c-2edc-4ab2-9a10-0ae019069b35",
  "connections": {
    "Wait 5s": {
      "main": [
        [
          {
            "node": "Check video status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get video url": {
      "main": [
        [
          {
            "node": "Update sheet with video url and prompt used in Veo3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check video status": {
      "main": [
        [
          {
            "node": "Check if video is ready",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets Trigger": {
      "main": [
        [
          {
            "node": "Generate prompt for Veo 3 model",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if video is ready": {
      "main": [
        [
          {
            "node": "Get video url",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 5s",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate prompt for Veo 3 model": {
      "main": [
        [
          {
            "node": "Set variables for Video generation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Submit Request to generate video": {
      "main": [
        [
          {
            "node": "Check video status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set variables for Video generation": {
      "main": [
        [
          {
            "node": "Submit Request to generate video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}