AutomationFlowsAI & RAG › Automated Veo 3 Video Creation from AI Ideas

Automated Veo 3 Video Creation from AI Ideas

Original n8n title: Fal AI Veo3

fal_ai_veo3. Uses stickyNote, scheduleTrigger, agent, outputParserStructured. Scheduled trigger; 12 nodes.

Cron / scheduled trigger★★★★☆ complexityAI-powered12 nodesAgentOutput Parser StructuredGoogle SheetsHTTP RequestOpenAI ChatTool Think
AI & RAG Trigger: Cron / scheduled Nodes: 12 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Agent → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "fal_ai_veo3",
  "nodes": [
    {
      "parameters": {
        "content": "# \ud83d\udee0\ufe0f Veo 3 dans n8n\n\n## Comment configurer ce workflow pour votre propre espace\n\n**Auteur :** Thomas Berton de [azuro-ai.com](https://azuro-ai.com)\n\nCe guide vous montre comment mettre en place ce workflow dans votre propre environnement. J\u2019esp\u00e8re que cela vous sera utile !\n\n---\n\n## \u2699\ufe0f \u00c9tape 1 : Configurer OpenAI pour le scripting\n\n1. Rendez-vous sur la [plateforme API d\u2019OpenAI](https://platform.openai.com/api-keys)\n2. Cr\u00e9ez un compte (si vous n\u2019en avez pas encore un)\n3. G\u00e9n\u00e9rez une cl\u00e9 API\n4. Cr\u00e9ez une authentification avec cette cl\u00e9 via le n\u0153ud **OpenAI Chat Model**\n\n---\n\n## \ud83d\udcca \u00c9tape 2 : Configurer le journal Google Sheets\n\n1. Faites une copie de ce [mod\u00e8le Google Sheet](https://docs.google.com/spreadsheets/d/1TsNBdnvAsW415bkgNrb6_jO1zOwUu6psj2GpVXaA-zc/edit?usp=sharing)\n2. Utilisez-le pour consigner les id\u00e9es et r\u00e9sultats g\u00e9n\u00e9r\u00e9s dans votre workflow\n3. Connectez cette feuille dans n8n via le n\u0153ud **Google Sheets** et cr\u00e9ez une authentification si n\u00e9cessaire\n\n---\n\n## \ud83d\udd10 \u00c9tape 3 : Configurer Fal AI\n\n1. Allez sur [Fal AI](https://fal.ai) et connectez-vous\n2. G\u00e9n\u00e9rez votre cl\u00e9 API\n3. Dans n8n, cr\u00e9ez une nouvelle authentification HTTP avec **Header Auth**, en utilisant votre cl\u00e9 Fal AI\n4. Utilisez cette authentification dans les n\u0153uds **HTTP Request** concern\u00e9s\n\n---\n\n## \ud83e\udde0 \u00c9tape 4 : Personnaliser les prompts syst\u00e8me\n\n1. Choisissez une niche ou un th\u00e8me pour votre contenu\n2. Modifiez le prompt utilisateur dans l\u2019agent \u201cIdeas AI\u201d\n3. Vous pouvez aussi adapter l\u2019agent \u201cPrompts AI\u201d selon vos besoins sp\u00e9cifiques\n\n---\n\n### \ud83c\udf10 Envie d\u2019aller plus loin avec l\u2019IA ?\n\nJe suis **Thomas Berton**, fondateur de l\u2019agence [Azuro AI](https://azuro-ai.com).\nNous accompagnons les entreprises dans l\u2019automatisation intelligente et la cr\u00e9ation de workflows IA sur mesure.\n\ud83d\udc49 **D\u00e9couvrez nos services sur [azuro-ai.com](https://azuro-ai.com)**.\n",
        "height": 1420,
        "width": 580,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -300,
        140
      ],
      "id": "ed687043-63de-4ef6-94e0-3623bb1cf27e",
      "name": "Sticky Note12"
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        500,
        560
      ],
      "id": "e500bb31-5b5d-4928-a32f-e6efc9339526",
      "name": "\ud83d\udd53 D\u00e9clencheur de Planification"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "Une id\u00e9e sur [un vlogueur du XXIe si\u00e8cle coinc\u00e9 en 1789 qui parle \u00e0 sa cam\u00e9ra et filme la prise de la Bastille avec sa perche \u00e0 selfie, au milieu des r\u00e9volutionnaires].",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "=### \u2705 ACTION\n\nG\u00e9n\u00e8re une seule id\u00e9e immersive, r\u00e9aliste et surr\u00e9aliste li\u00e9e \u00e0 un sujet fourni par l\u2019utilisateur, sous forme de tableau JSON d\u2019une ligne, structur\u00e9 avec les champs suivants : `Caption`, `Idea`, `Environment`, `Status`.\n\n### \ud83d\udd01 \u00c9TAPES\n\n1. Re\u00e7ois un sujet principal de la part de l\u2019utilisateur (ex. : \u00ab street food au Vietnam \u00bb).\n2. Cr\u00e9e une id\u00e9e unique, courte et surr\u00e9aliste (moins de 13 mots), qui d\u00e9crit un \u00e9v\u00e9nement, moment ou action visuellement marquant impliquant un personnage.\n3. D\u00e9cris un environnement coh\u00e9rent avec l\u2019id\u00e9e (moins de 20 mots), pr\u00e9cisant :\n\n   * le lieu,\n   * les \u00e9l\u00e9ments visuels en arri\u00e8re-plan,\n   * les participants principaux,\n   * le style de la sc\u00e8ne.\n     (les univers fictifs sont autoris\u00e9s)\n4. R\u00e9dige une l\u00e9gende virale avec :\n\n   * une phrase courte et percutante,\n   * un emoji pertinent,\n   * exactement 12 hashtags en minuscules, dans cet ordre :\n\n     1. 4 hashtags li\u00e9s au sujet\n     2. 4 hashtags parmi les plus populaires\n     3. 4 hashtags parmi les tendances actuelles (en direct)\n5. Ajoute `\"Status\": \"for production\"`\n6. Structure le tout en un tableau JSON d\u2019une seule ligne.\n\n---\n\n### \ud83e\uddd1\u200d\ud83c\udfa8 PERSONA\n\nAgis comme un cr\u00e9atif digital expert en storytelling immersif, capable de concevoir des id\u00e9es visuelles virales, br\u00e8ves et inoubliables, en croisant imaginaire surr\u00e9aliste et r\u00e9alisme cin\u00e9matographique.\n\n---\n\n### \ud83d\udccc EXEMPLES\n\n(Sujet : \u00ab vol de drones dans les temples abandonn\u00e9s \u00bb)\n\n```json\n[\n  {\n    \"Caption\": \"Quand les drones r\u00e9veillent les esprits oubli\u00e9s \ud83d\ude31 #templeabandonne #drones #exploration #mystere #love #instagood #fun #life #ai #vr #future #wtf\",\n    \"Idea\": \"Un drone lib\u00e8re accidentellement une entit\u00e9 antique dans un temple effondr\u00e9\",\n    \"Environment\": \"Temple humide, statues fissur\u00e9es, drone flottant, brume dor\u00e9e, style cin\u00e9matographique mystique\",\n    \"Status\": \"for production\"\n  }\n]\n```\n\n---\n\n### \ud83e\udded CONTEXTE\n\nCe prompt est destin\u00e9 \u00e0 un mod\u00e8le de g\u00e9n\u00e9ration d\u2019id\u00e9es narratives, visuelles et virales pour des contenus immersifs courts. Il sera utilis\u00e9 dans des environnements cr\u00e9atifs (brainstorming, production visuelle, r\u00e9seaux sociaux, pitchs narratifs).\n\n---\n\n### \ud83d\udeab CONTRAINTES\n\n* Une seule id\u00e9e par g\u00e9n\u00e9ration.\n* Id\u00e9e : moins de 13 mots, surr\u00e9aliste, avec un personnage impliqu\u00e9.\n* Caption : percutante, avec un emoji, exactement 12 hashtags dans l\u2019ordre impos\u00e9, en minuscules.\n* Environment : moins de 20 mots, d\u00e9crit pr\u00e9cis\u00e9ment le cadre de l\u2019action, \u00e9l\u00e9ments visuels inclus.\n* Univers fictifs autoris\u00e9s.\n* Sortie en JSON compact sur une seule ligne.\n\n---\n\n### \ud83d\udcc4 MOD\u00c8LE (FORMAT DE SORTIE)\n\n[\n  {\n    \"Caption\": \"Phrase virale avec emoji #4hashtags_sujet #4hashtags_populaires #4hashtags_tendance\",\n    \"Idea\": \"Une action originale en moins de 13 mots\",\n    \"Environment\": \"Description visuelle en moins de 20 mots\",\n    \"Status\": \"for production\"\n  }\n]\n\n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        660,
        560
      ],
      "id": "5903585e-e865-4876-9b87-af18a5a7a502",
      "name": "\ud83e\udd16 Agent IA d'Id\u00e9es"
    },
    {
      "parameters": {
        "jsonSchemaExample": "[\n  {\n    \"Caption\": \"Diver Removes Nets Off Whale \ud83d\udc0b #whalerescue #marinelife #oceanrescue #seahelpers #love #nature #instagood #explore #viral #savenature #oceanguardians #cleanoceans\",\n    \"Idea\": \"Diver carefully cuts tangled net from distressed whale in open sea\",\n    \"Environment\": \"Open ocean, sunlight beams through water, diver and whale, cinematic realism\",\n    \"Status\": \"for production\"\n  }\n]\n"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.2,
      "position": [
        980,
        400
      ],
      "id": "0579d6a4-9558-4d6d-86a6-1fd14faa1498",
      "name": "\ud83e\uddfe Parseur JSON d'Id\u00e9e"
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "1gVsMRBf0gKS2cmQXKzuxwl5PDjrP0D3FiiH8Q0hmv_M",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sheet1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/16xf34Rc-TWs7rUCSFAsIS_1zaodLQsjN5dTaWMGlZOE/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "id": "=ROW()-1",
            "idea": "={{ $json.output[0].Idea }}",
            "caption": "={{ $json.output[0].Caption }}",
            "production": "={{ $json.output[0].Status }}",
            "environment_prompt": "={{ $json.output[0].Environment }}"
          },
          "matchingColumns": [
            "id"
          ],
          "schema": [
            {
              "id": "id",
              "displayName": "id",
              "required": false,
              "defaultMatch": true,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "idea",
              "displayName": "idea",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "caption",
              "displayName": "caption",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "production",
              "displayName": "production",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "environment_prompt",
              "displayName": "environment_prompt",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "final_output",
              "displayName": "final_output",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        980,
        560
      ],
      "id": "96f75e50-1625-4527-9350-62da44040b9b",
      "name": "\ud83d\udcdd Enregistrer l\u2019Id\u00e9e",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Donne-moi un prompt Veo3 pour cette id\u00e9e :\n{{ $json.idea }}\n\nVoici l\u2019environnement :\n{{ $json.environment_prompt }}\n\n",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "=PROMPT syst\u00e8me pour l\u2019agent de prompts Google VEO3\n\nTu es un agent IA charg\u00e9 d\u2019\u00e9crire des prompts vid\u00e9o hyper-r\u00e9alistes et cin\u00e9matographiques pour Google VEO3. Chaque prompt doit d\u00e9crire un court clip vid\u00e9o en style selfie, vivant et immersif, avec un personnage non nomm\u00e9 en train de parler ou d\u2019agir dans un moment sp\u00e9cifique. La vid\u00e9o finale doit ressembler \u00e0 une s\u00e9quence trouv\u00e9e ou un extrait de documentaire \u2014 ancr\u00e9e, r\u00e9aliste et captivante.\n\n---\n\nSTRUCTURE REQUISE (REMPLIR LES CHAMPS ENTRE CROCHETS) :\n\n\\[Paragraphe de description de la sc\u00e8ne]\n\nPersonnage principal : \\[description du personnage]\nIl/elle dit : \\[ins\u00e9rer une ligne de dialogue qui correspond \u00e0 l\u2019ambiance de la sc\u00e8ne]\nIl/elle : \\[d\u00e9crire une action physique ou un mouvement subtil de la cam\u00e9ra, ex. : fait un panoramique, se d\u00e9place, regarde autour de lui/elle]\nHeure de la journ\u00e9e : \\[jour / nuit / cr\u00e9puscule / etc.]\nObjectif : \\[description de l\u2019objectif utilis\u00e9]\nAudio (sugg\u00e9r\u00e9) : \\[sons ambiants, ex. : rugissements de lion, vent, circulation lointaine, chants d\u2019oiseaux]\nArri\u00e8re-plan : \\[br\u00e8ve description de ce qui est visible derri\u00e8re lui/elle]\n\n---\n\nR\u00c8GLES DE G\u00c9N\u00c9RATION DU PROMPT :\n\n* Un seul paragraphe, entre 750 et 1500 caract\u00e8res. Aucune ligne vide, aucun titre.\n* Un seul personnage humain. Ne jamais lui donner de nom.\n* Inclure une ligne de dialogue parl\u00e9e, avec une indication de ton ou mani\u00e8re de livraison.\n* Le personnage doit effectuer une action physique, m\u00eame subtile (ex. : un regard, un sourire, bouger la cam\u00e9ra).\n* Utiliser un cadrage de type selfie. Toujours d\u00e9crire l\u2019objectif, le type de film utilis\u00e9, et le comportement de la cam\u00e9ra.\n* La sc\u00e8ne doit para\u00eetre r\u00e9elle et cin\u00e9matographique, comme un extrait que quelqu\u2019un aurait film\u00e9 avec une cam\u00e9ra stylis\u00e9e.\n* Toujours inclure les cinq \u00e9l\u00e9ments techniques cl\u00e9s : Heure de la journ\u00e9e, Objectif, Type de film, Audio, Arri\u00e8re-plan.\n\n---\n\n\u00c0 NE PAS FAIRE :\n\n* Ne pas nommer le personnage.\n* Ne pas inclure plus d\u2019un personnage.\n* Ne pas d\u00e9crire de sous-titres ni de texte \u00e0 l\u2019\u00e9cran.\n* Ne pas sauter de lignes ou ajouter de mise en forme.\n* Ne pas \u00e9crire de sc\u00e8nes vagues ou abstraites \u2014 elles doivent \u00eatre ancr\u00e9es dans des d\u00e9tails concrets."
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        1140,
        560
      ],
      "id": "e15b4e2e-b050-4549-be0b-96df52441e18",
      "name": "\ud83e\udde0 Agent IA de Prompts Veo 3"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://queue.fal.run/fal-ai/veo3",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "contentType": "raw",
        "rawContentType": "application/json",
        "body": "={ \"prompt\": \"{{ $json.output }}\" }\n",
        "options": {
          "batching": {
            "batch": {
              "batchSize": 1,
              "batchInterval": 2000
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        700,
        820
      ],
      "id": "4f2597b9-0a30-4ec9-ac5c-0e67046f7d09",
      "name": "\ud83c\udfac Cr\u00e9er Vid\u00e9o",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "amount": 200
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        920,
        820
      ],
      "id": "64c8aba2-0b2c-4a07-b628-81b3d241069d",
      "name": "\u23f3 Attente VEO3"
    },
    {
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/veo3/requests/{{ $json.request_id }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1140,
        820
      ],
      "id": "8871995d-afda-4e3d-95dc-ec968962fe36",
      "name": "\ud83d\udce5 R\u00e9cup\u00e9rer Vid\u00e9o",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "16xf34Rc-TWs7rUCSFAsIS_1zaodLQsjN5dTaWMGlZOE"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sheet1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1FgwtfdRV3WqRo_nrGOYjmV2zqvb2MY_oAxCDi3HgeZA/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "idea": "={{ $('\ud83d\udcdd Enregistrer l\u2019Id\u00e9e').first().json.idea }}",
            "production": "done",
            "final_output": "={{ $json.video.url }}"
          },
          "matchingColumns": [
            "idea"
          ],
          "schema": [
            {
              "id": "id",
              "displayName": "id",
              "required": false,
              "defaultMatch": true,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "idea",
              "displayName": "idea",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "caption",
              "displayName": "caption",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "production",
              "displayName": "production",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "environment_prompt",
              "displayName": "environment_prompt",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "final_output",
              "displayName": "final_output",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "displayName": "row_number",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "readOnly": true,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        920,
        1080
      ],
      "id": "08c4f853-23e0-4dc6-bbb5-0dc7e15ecc68",
      "name": "\ud83d\udcc4 Enregistrer Vid\u00e9o Finale",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4.1",
          "mode": "list",
          "cachedResultName": "gpt-4.1"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        680,
        360
      ],
      "id": "f5fcd64e-9928-4206-a898-303923c84d5c",
      "name": "\ud83e\udde0\ud83d\udcac Mod\u00e8le Chat OpenAI",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {},
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "typeVersion": 1,
      "position": [
        1320,
        340
      ],
      "id": "1c232ec0-d91b-4247-a47a-81949da9200c",
      "name": "\ud83d\udcad Think"
    }
  ],
  "connections": {
    "\ud83d\udd53 D\u00e9clencheur de Planification": {
      "main": [
        [
          {
            "node": "\ud83e\udd16 Agent IA d'Id\u00e9es",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udd16 Agent IA d'Id\u00e9es": {
      "main": [
        [
          {
            "node": "\ud83d\udcdd Enregistrer l\u2019Id\u00e9e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\uddfe Parseur JSON d'Id\u00e9e": {
      "ai_outputParser": [
        [
          {
            "node": "\ud83e\udd16 Agent IA d'Id\u00e9es",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udcdd Enregistrer l\u2019Id\u00e9e": {
      "main": [
        [
          {
            "node": "\ud83e\udde0 Agent IA de Prompts Veo 3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udde0 Agent IA de Prompts Veo 3": {
      "main": [
        [
          {
            "node": "\ud83c\udfac Cr\u00e9er Vid\u00e9o",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83c\udfac Cr\u00e9er Vid\u00e9o": {
      "main": [
        [
          {
            "node": "\u23f3 Attente VEO3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u23f3 Attente VEO3": {
      "main": [
        [
          {
            "node": "\ud83d\udce5 R\u00e9cup\u00e9rer Vid\u00e9o",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udce5 R\u00e9cup\u00e9rer Vid\u00e9o": {
      "main": [
        [
          {
            "node": "\ud83d\udcc4 Enregistrer Vid\u00e9o Finale",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udde0\ud83d\udcac Mod\u00e8le Chat OpenAI": {
      "ai_languageModel": [
        [
          {
            "node": "\ud83e\udd16 Agent IA d'Id\u00e9es",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "\ud83e\udde0 Agent IA de Prompts Veo 3",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udcad Think": {
      "ai_tool": [
        [
          {
            "node": "\ud83e\udd16 Agent IA d'Id\u00e9es",
            "type": "ai_tool",
            "index": 0
          },
          {
            "node": "\ud83e\udde0 Agent IA de Prompts Veo 3",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "23f4d41b-90b7-4091-8736-302beb1a2a11",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "z1LoFsE707dFT372",
  "tags": []
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

How this works

This workflow automates the generation of creative video content using Fal AI's Veo3 model, saving you hours of manual ideation and production by turning simple concepts into polished videos on a schedule. It's ideal for content creators, marketers, or social media managers who need consistent, high-quality visuals without constant oversight. The key step involves an AI agent crafting tailored prompts from your ideas, which are then fed into the Veo3 API via an HTTP request to produce the video, with results logged in Google Sheets for easy tracking.

Use this workflow when you want to batch-generate videos for recurring campaigns, like weekly social posts, leveraging the cron trigger for hands-off operation. Avoid it for one-off videos requiring heavy customisation, as the structured AI agents work best with predefined themes. Common variations include swapping OpenAI for another LLM in the prompt agent or adding email notifications after the wait node for immediate alerts on video completion.

About this workflow

fal_ai_veo3. Uses stickyNote, scheduleTrigger, agent, outputParserStructured. Scheduled trigger; 12 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Generate creative ASMR cutting video concepts with GPT-5.1, create high-quality video clips using Sora v2, stitch them together with Cloudinary, and automatically post to Twitter/X—transforming ideas

OpenAI Chat, HTTP Request, Agent +3
AI & RAG

ASMR. Uses googleSheets, outputParserStructured, httpRequest, lmChatOpenAi. Scheduled trigger; 35 nodes.

Google Sheets, Output Parser Structured, HTTP Request +5
AI & RAG

//ASMR AI Workflow

HTTP Request, Tool Think, OpenAI Chat +6
AI & RAG

2-Generate___Auto_post_AI_Videos_to_Social_Media_with_Veo3_and_Blotato. Uses googleSheets, httpRequest, agent, toolThink. Scheduled trigger; 30 nodes.

Google Sheets, HTTP Request, Agent +3
AI & RAG

This template is ideal for content creators, social media managers, YouTubers, and digital marketers who want to generate high-quality videos daily using AI and distribute them effortlessly across mul

Google Sheets, HTTP Request, Agent +3