Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato
 # Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato ## Who is this for? This workflow is designed for **content creators, marketers, and entrepreneurs** who want to automate their video production and social media publishing process. If you regularly post promotional or viral-style content on platforms like TikTok, YouTube Shorts, Instagram Reels, LinkedIn, and more, this template will save you hours of manual work. --- ## What problem is this workflow solving? / Use case Creating **viral short-form videos** is often time-consuming: - You need to generate visuals, write scripts, edit videos, and then manually upload them to multiple platforms. - Staying consistent across **TikTok, YouTube Shorts, Instagram Reels, LinkedIn, Twitter/X, and others** requires constant effort. This workflow solves the problem by **automating the entire pipeline** from idea → video creation → multi-platform publishing. --- ## What this workflow does 1. **Collects an idea and image** from Telegram. 2. **Enhances visuals with NanoBanana** for user-generated content style. 3. **Generates a complete video script with AI** (OpenAI + structured prompts). 4. **Creates the final video with VEO3** using your custom prompt and visuals. 5. **Rewrites captions with GPT** to be short, catchy, and optimized for social platforms. 6. **Saves metadata in Google Sheets** for tracking and management. 7. **Auto-uploads the video to all major platforms via Blotato** (TikTok, YouTube, Instagram, LinkedIn, Threads, Pinterest, X/Twitter, Bluesky, Facebook). 8. **Notifies you on Telegram** with a preview link once publishing is complete. --- ## Setup 1. **Connect your accounts**: - Google Sheets (for video tracking) - Telegram (to receive and send media) - Blotato (for multi-platform publishing) - OpenAI API (for captions, prompts, and image analysis)
Workflow JSON
{"id":"z8nPpsFFe7kDBQUm","meta":{"instanceId":"a2b23892dd6989fda7c1209b381f5850373a7d2b85609624d7c2b7a092671d44","templateCredsSetupCompleted":true},"name":"💥 Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato - vide","tags":[],"nodes":[{"id":"101bdee1-4de4-4b5e-9170-4d490d4e8128","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[960,-304],"parameters":{"color":4,"width":1344,"height":832,"content":"# 📑 STEP 5 — Auto-Post to All Platforms\n\n"},"typeVersion":1},{"id":"db2db976-7988-4939-a931-b6b2b98570aa","name":"Upload Video to BLOTATO","type":"@blotato/n8n-nodes-blotato.blotato","position":[1024,320],"parameters":{"mediaUrl":"={{ $('Download Video from VEO3').item.json.data.response.resultUrls[0] }}","resource":"media"},"credentials":{"blotatoApi":{"id":"credential-id","name":"blotatoApi Credential"}},"typeVersion":2},{"id":"6866a654-e6a7-4543-b98a-8288f9d04b47","name":"Youtube","type":"@blotato/n8n-nodes-blotato.blotato","position":[1648,112],"parameters":{"options":{},"platform":"youtube","accountId":{"__rl":true,"mode":"list","value":"8047","cachedResultUrl":"https://backend.blotato.com/v2/accounts/8047","cachedResultName":"DR FIRASS (Dr. Firas)"},"postContentText":"={{ $('Save Caption Video to Google Sheets').item.json['CAPTION VIDEO'] }}","postContentMediaUrls":"={{ $json.url }}","postCreateYoutubeOptionTitle":"={{ $('Save Caption Video to Google Sheets').item.json['TITRE VIDEO'] }}","postCreateYoutubeOptionPrivacyStatus":"private","postCreateYoutubeOptionShouldNotifySubscribers":false},"credentials":{"blotatoApi":{"id":"credential-id","name":"blotatoApi Credential"}},"typeVersion":2},{"id":"a1b51932-2e2c-4e32-a37a-7ce94620cdd9","name":"Tiktok","type":"@blotato/n8n-nodes-blotato.blotato","position":[1280,-64],"parameters":{"options":{},"platform":"tiktok","accountId":{"__rl":true,"mode":"list","value":"9332","cachedResultUrl":"https://backend.blotato.com/v2/accounts/9332","cachedResultName":"docteur.firas"},"postContentText":"={{ $('Save Caption Video to Google Sheets').item.json['CAPTION VIDEO'] }}","postContentMediaUrls":"={{ $json.url }}"},"credentials":{"blotatoApi":{"id":"credential-id","name":"blotatoApi Credential"}},"typeVersion":2},{"id":"2c6cb6a6-e4b2-470d-8afb-b2c03b72e97b","name":"Merge","type":"n8n-nodes-base.merge","position":[1936,16],"parameters":{"mode":"chooseBranch","numberInputs":9},"typeVersion":3.2},{"id":"bee496d6-fc2d-4f1c-812f-9d6be08154a7","name":"Update Status to \"DONE\"","type":"n8n-nodes-base.googleSheets","position":[2112,128],"parameters":{"columns":{"value":{"STATUS":"Published","IMAGE NAME":"={{ $('Telegram Trigger: Receive Video Idea').item.json.message.photo[2].file_unique_id }}"},"schema":[{"id":"IMAGE NAME","type":"string","display":true,"removed":false,"required":false,"displayName":"IMAGE NAME","defaultMatch":false,"canBeUsedToMatch":true},{"id":"IMAGE URL","type":"string","display":true,"removed":true,"required":false,"displayName":"IMAGE URL","defaultMatch":false,"canBeUsedToMatch":true},{"id":"IMAGE DESCRIPTION","type":"string","display":true,"removed":true,"required":false,"displayName":"IMAGE DESCRIPTION","defaultMatch":false,"canBeUsedToMatch":true},{"id":"CAPTION","type":"string","display":true,"removed":true,"required":false,"displayName":"CAPTION","defaultMatch":false,"canBeUsedToMatch":true},{"id":"URL VIDEO FINAL","type":"string","display":true,"removed":true,"required":false,"displayName":"URL VIDEO FINAL","defaultMatch":false,"canBeUsedToMatch":true},{"id":"TITRE VIDEO","type":"string","display":true,"removed":true,"required":false,"displayName":"TITRE VIDEO","defaultMatch":false,"canBeUsedToMatch":true},{"id":"CAPTION VIDEO","type":"string","display":true,"removed":true,"required":false,"displayName":"CAPTION VIDEO","defaultMatch":false,"canBeUsedToMatch":true},{"id":"STATUS","type":"string","display":true,"removed":false,"required":false,"displayName":"STATUS","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["IMAGE NAME"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"googleSheetsOAuth2Api Credential"}},"typeVersion":4.5},{"id":"5f7344d8-a277-457b-a33f-c48e2ced1e49","name":"Linkedin","type":"@blotato/n8n-nodes-blotato.blotato","position":[1472,-64],"parameters":{"options":{},"platform":"linkedin","accountId":{"__rl":true,"mode":"list","value":"1446","cachedResultUrl":"https://backend.blotato.com/v2/accounts/1446","cachedResultName":"Samuel Amalric"},"postContentText":"={{ $('Save Caption Video to Google Sheets').item.json['CAPTION VIDEO'] }}","postContentMediaUrls":"={{ $json.url }}"},"credentials":{"blotatoApi":{"id":"credential-id","name":"blotatoApi Credential"}},"typeVersion":2},{"id":"31bc2347-2457-4fad-8436-09282df89609","name":"Facebook","type":"@blotato/n8n-nodes-blotato.blotato","position":[1648,-64],"parameters":{"options":{},"platform":"facebook","accountId":{"__rl":true,"mode":"list","value":"1759","cachedResultUrl":"https://backend.blotato.com/v2/accounts/1759","cachedResultName":"Firass Ben"},"facebookPageId":{"__rl":true,"mode":"list","value":"101603614680195","cachedResultUrl":"https://backend.blotato.com/v2/accounts/1759/subaccounts/101603614680195","cachedResultName":"Dr. Firas"},"postContentText":"={{ $('Save Caption Video to Google Sheets').item.json['CAPTION VIDEO'] }}","postContentMediaUrls":"={{ $json.url }}"},"credentials":{"blotatoApi":{"id":"credential-id","name":"blotatoApi Credential"}},"typeVersion":2},{"id":"06e29e46-c3ce-4c9e-825d-39df924a607d","name":"Instagram","type":"@blotato/n8n-nodes-blotato.blotato","position":[1280,112],"parameters":{"options":{},"accountId":{"__rl":true,"mode":"list","value":"11892","cachedResultUrl":"https://backend.blotato.com/v2/accounts/11892","cachedResultName":"doc.firass"},"postContentText":"={{ $('Save Caption Video to Google Sheets').item.json['CAPTION VIDEO'] }}","postContentMediaUrls":"={{ $json.url }}"},"credentials":{"blotatoApi":{"id":"credential-id","name":"blotatoApi Credential"}},"typeVersion":2},{"id":"3f7560c8-3e4a-4d62-bf62-e8d543df8026","name":"Threads","type":"@blotato/n8n-nodes-blotato.blotato","position":[1280,320],"parameters":{"options":{},"platform":"threads","accountId":{"__rl":true,"mode":"list","value":"2280","cachedResultUrl":"https://backend.blotato.com/v2/accounts/2280","cachedResultName":"doc.firass"},"postContentText":"={{ $('Save Caption Video to Google Sheets').item.json['CAPTION VIDEO'] }}","postContentMediaUrls":"={{ $json.url }}"},"credentials":{"blotatoApi":{"id":"credential-id","name":"blotatoApi Credential"}},"typeVersion":2},{"id":"3e4b6251-7c56-40ca-8fb6-4b77c910a2e6","name":"Bluesky","type":"@blotato/n8n-nodes-blotato.blotato","position":[1472,320],"parameters":{"options":{},"platform":"bluesky","accountId":{"__rl":true,"mode":"list","value":"6012","cachedResultUrl":"https://backend.blotato.com/v2/accounts/6012","cachedResultName":"formationinternet.bsky.social"},"postContentText":"={{ $('Save Caption Video to Google Sheets').item.json['CAPTION VIDEO'] }}","postContentMediaUrls":"={{ $json.url }}"},"credentials":{"blotatoApi":{"id":"credential-id","name":"blotatoApi Credential"}},"typeVersion":2},{"id":"61f5f513-b7ec-40ca-a4a1-1b897f092a04","name":"Pinterest","type":"@blotato/n8n-nodes-blotato.blotato","position":[1648,320],"parameters":{"options":{},"platform":"pinterest","accountId":{"__rl":true,"mode":"list","value":"363","cachedResultUrl":"https://backend.blotato.com/v2/accounts/363","cachedResultName":"formationinternet2022"},"postContentText":"={{ $('Save Caption Video to Google Sheets').item.json['CAPTION VIDEO'] }}","pinterestBoardId":{"__rl":true,"mode":"id","value":"1146658823815436667"},"postContentMediaUrls":"={{ $json.url }}"},"credentials":{"blotatoApi":{"id":"credential-id","name":"blotatoApi Credential"}},"typeVersion":2},{"id":"4fb185bf-f237-4b71-8557-178f15f0caec","name":"Twitter (X)","type":"@blotato/n8n-nodes-blotato.blotato","position":[1472,112],"parameters":{"options":{},"platform":"twitter","accountId":{"__rl":true,"mode":"list","value":"1289","cachedResultUrl":"https://backend.blotato.com/v2/accounts/1289","cachedResultName":"Docteur_Firas"},"postContentText":"={{ $('Save Caption Video to Google Sheets').item.json['CAPTION VIDEO'] }}","postContentMediaUrls":"={{ $json.url }}"},"credentials":{"blotatoApi":{"id":"credential-id","name":"blotatoApi Credential"}},"typeVersion":2},{"id":"cb9939c6-1c5c-448b-ab3a-a66d90767cf2","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[480,32],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{}},"credentials":{"openAiApi":{"id":"credential-id","name":"openAiApi Credential"}},"typeVersion":1.2},{"id":"2c244851-7835-4f4a-8fe9-10a26acf6365","name":"Think","type":"@n8n/n8n-nodes-langchain.toolThink","position":[624,32],"parameters":{},"typeVersion":1},{"id":"0695e935-93ac-48da-a893-1615ce22a6e7","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[768,32],"parameters":{"jsonSchemaExample":"{\n \"title\": \"string\",\n \"final_prompt\": \"string\"\n}\n"},"typeVersion":1.3},{"id":"ff995af1-503e-4356-8e67-6392b4629496","name":"Send Video URL via Telegram","type":"n8n-nodes-base.telegram","position":[1008,-176],"webhookId":"ea6e5974-1930-4b67-a51b-16249a9ed8bd","parameters":{"text":"=Url VIDEO : {{ $('Download Video from VEO3').item.json.data.response.resultUrls[0] }}","chatId":"={{ $('Telegram Trigger: Receive Video Idea').item.json.message.chat.id }}","additionalFields":{}},"credentials":{"telegramApi":{"id":"credential-id","name":"telegramApi Credential"}},"typeVersion":1.2},{"id":"257eedc1-30c1-4e40-913b-24ceb018df28","name":"Send Final Video Preview","type":"n8n-nodes-base.telegram","position":[1024,64],"webhookId":"443fd41d-a051-45bf-ad68-173197dba26b","parameters":{"file":"={{ $('Save Caption Video to Google Sheets').item.json['URL VIDEO FINAL'] }}","chatId":"={{ $json.result.chat.id }}","operation":"sendVideo","additionalFields":{}},"credentials":{"telegramApi":{"id":"credential-id","name":"telegramApi Credential"}},"typeVersion":1.2},{"id":"11f4ee14-912b-4a77-8696-7d36f7fc8a21","name":"Telegram Trigger: Receive Video Idea","type":"n8n-nodes-base.telegramTrigger","position":[-208,-752],"webhookId":"26dbe6f5-5197-4b2b-9e32-8060f2119686","parameters":{"updates":["message"],"additionalFields":{}},"credentials":{"telegramApi":{"id":"credential-id","name":"telegramApi Credential"}},"typeVersion":1.2},{"id":"45e0b8ee-b830-48bc-8a9a-a426a7afcd43","name":"Set Master Prompt","type":"n8n-nodes-base.set","position":[240,-192],"parameters":{"options":{},"assignments":{"assignments":[{"id":"cc2e0500-57b1-4615-82cb-1c950e5f2ec4","name":"json_master","type":"string","value":"={\n \"description\": \"Brief narrative description of the scene, focusing on key visual storytelling and product transformation.\",\n \"style\": \"cinematic | photorealistic | stylized | gritty | elegant\",\n \"camera\": {\n \"type\": \"fixed | dolly | Steadicam | crane combo\",\n \"movement\": \"describe any camera moves like slow push-in, pan, orbit\",\n \"lens\": \"optional lens type or focal length for cinematic effect\"\n },\n \"lighting\": {\n \"type\": \"natural | dramatic | high-contrast\",\n \"sources\": \"key lighting sources (sunset, halogen, ambient glow...)\",\n \"FX\": \"optional VFX elements like fog, reflections, flares\"\n },\n \"environment\": {\n \"location\": \"describe location or room (kitchen, desert, basketball court...)\",\n \"set_pieces\": [\n \"list of key background or prop elements\",\n \"e.g. hardwood floors, chain-link fence, velvet surface\"\n ],\n \"mood\": \"describe the ambient atmosphere (moody, clean, epic...)\"\n },\n \"elements\": [\n \"main physical items involved (product box, accessories, vehicles...)\",\n \"include brand visibility (logos, packaging, texture...)\"\n ],\n \"subject\": {\n \"character\": {\n \"description\": \"optional – physical description, outfit\",\n \"pose\": \"optional – position or gesture\",\n \"lip_sync_line\": \"optional – spoken line if there’s a voiceover\"\n },\n \"product\": {\n \"brand\": \"Brand name\",\n \"model\": \"Product model or name\",\n \"action\": \"description of product transformation or assembly\"\n }\n },\n \"motion\": {\n \"type\": \"e.g. transformation, explosion, vortex\",\n \"details\": \"step-by-step visual flow of how elements move or evolve\"\n },\n \"VFX\": {\n \"transformation\": \"optional – describe style (neon trails, motion blur...)\",\n \"impact\": \"optional – e.g. shockwave, glow, distortion\",\n \"particles\": \"optional – embers, sparks, thread strands...\",\n \"environment\": \"optional – VFX affecting the scene (ripples, wind...)\"\n },\n \"audio\": {\n \"music\": \"optional – cinematic score, trap beat, ambient tone\",\n \"sfx\": [\n \"list of sound effects (zip, pop, woosh...)\"\n ],\n \"ambience\": \"optional – background soundscape (traffic, wind...)\",\n \"voiceover\": {\n \"delivery\": \"tone and style (confident, whisper, deep...)\",\n \"line\": \"text spoken if applicable\"\n }\n },\n \"ending\": \"Final shot description – what is seen or felt at the end (freeze frame, logo pulse, glow...)\",\n \"text\": \"none | overlay | tagline | logo pulse at end only\",\n \"format\": \"16:9 | 4k | vertical\",\n \"keywords\": [\n \"brand\",\n \"scene style\",\n \"motion type\",\n \"camera style\",\n \"sound mood\",\n \"target theme\"\n ]\n}\n"}]}},"typeVersion":3.4},{"id":"a27e8e28-cb43-4b3f-a96e-e986a25209fb","name":"AI Agent: Generate Video Script","type":"@n8n/n8n-nodes-langchain.agent","position":[560,-192],"parameters":{"text":"=Create a UGC-style video prompt using both the reference image and the user description. \n\n**Inputs** \n- User description (optional): \n `{{ $('Telegram Trigger: Receive Video Idea').item.json.message.caption }}` \n- Reference image analysis (stay strictly faithful to what’s visible): \n `{{ $('Google Sheets: Update Image Description').item.json['IMAGE DESCRIPTION'] }}` \n\n**Rules** \n- Keep the style casual, authentic, and realistic. Avoid studio-like or cinematic language. \n- Default model: `veo3_fast` (unless otherwise specified). \n- Output only **one JSON object** with the key: `video_prompt`. \n","options":{"systemMessage":"=system_prompt:\n ## SYSTEM PROMPT: Structured Video Ad Prompt Generator\n A - Ask:\n Generate a structured video ad prompt for cinematic generation, strictly based on the master schema provided in: {{ $json.json_master }}.\n The final result must be a JSON object with exactly two top-level keys: `title` and `final_prompt`.\n\n G - Guidance:\n role: Creative Director\n output_count: 1\n character_limit: None\n constraints:\n - The output must be valid JSON.\n - The `title` field should contain a short, descriptive and unique title (max 15 words).\n - The `final_prompt` field must contain a **single-line JSON string** that follows the exact structure of {{ $json.json_master }} with all fields preserved.\n - Do not include any explanations, markdown, or extra text — only the JSON object.\n - Escape all inner quotes in the `final_prompt` string so it is valid as a stringified JSON inside another JSON.\n tool_usage:\n - Ensure consistent alignment across all fields (camera, lighting, motion, etc.).\n - Maintain full structure even for optional fields (use \"none\", \"\", or [] as needed).\n\n N - Notation:\n format: JSON\n expected_output:\n {\n \"title\": \"A unique short title for the scene\",\n \"final_prompt\": \"{...stringified JSON of the full prompt...}\"\n }\n\n"},"promptType":"define","hasOutputParser":true},"typeVersion":2},{"id":"16902ea9-197e-4cac-936e-83c1fc226854","name":"Generate Video with VEO3","type":"n8n-nodes-base.httpRequest","position":[-160,320],"parameters":{"url":"https://api.kie.ai/api/v1/veo/generate","body":"={\n \"prompt\": {{ $json.prompt }},\n \"model\": \"{{ $('Google Sheets: Read Video Parameters (CONFIG)').item.json.model }}\",\n \"aspectRatio\": \"{{ $json.aspectRatio }}\",\n \"imageUrls\": [\n \"{{ $('Download Edited Image').item.json.images[0].url }}\"\n ]\n}","method":"POST","options":{},"sendBody":true,"contentType":"raw","authentication":"genericCredentialType","rawContentType":"application/json","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"httpHeaderAuth Credential"}},"typeVersion":4.2},{"id":"a7fffb23-dba4-4d1e-a42e-191a1414ec60","name":"Wait for VEO3 Rendering","type":"n8n-nodes-base.wait","position":[48,320],"webhookId":"f6d814f3-4eb8-4629-a920-134cfa4ea03b","parameters":{"amount":20},"typeVersion":1.1},{"id":"67889216-2c0f-4ed8-ae54-8e7e7fdbac90","name":"Download Video from VEO3","type":"n8n-nodes-base.httpRequest","position":[256,320],"parameters":{"url":"https://api.kie.ai/api/v1/veo/record-info","options":{},"sendQuery":true,"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth","queryParameters":{"parameters":[{"name":"taskId","value":"={{ $('Generate Video with VEO3').item.json.data.taskId }}"}]}},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"httpHeaderAuth Credential"}},"typeVersion":4.2},{"id":"f6dda272-6129-4c04-b4c2-1e6bf5d156d8","name":"Rewrite Caption with GPT-4o","type":"@n8n/n8n-nodes-langchain.openAi","position":[416,320],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4o","cachedResultName":"GPT-4O"},"options":{},"messages":{"values":[{"content":"=You are rewriting a TikTok video script, caption, and overlay —\nnot inventing a new one. You must follow this format and obey\nthese rules strictly.\n---\n### CONTEXT:\nHere is the content idea to use:{{ $('Telegram Trigger: Receive Video Idea').item.json.message.caption }}\n\nand the Title is : {{ $('AI Agent: Generate Video Script').item.json.output.title }}\n\n\nWrite the caption text using the topic.\n\n---\n- MUST be under 200 characters (yes \"Characters\" not wordcount)\nthis is an absolute MUST, no more than 200 characters!!! \n\n### FINAL OUTPUT FORMAT (no markdown formatting):\n\nDO NOT return any explanations. Only return the Caption Text\n"}]}},"credentials":{"openAiApi":{"id":"credential-id","name":"openAiApi Credential"}},"typeVersion":1.8},{"id":"8b4c6b55-a0d7-4a19-b85c-1927ccb5eaa2","name":"Save Caption Video to Google Sheets","type":"n8n-nodes-base.googleSheets","position":[720,320],"parameters":{"columns":{"value":{"STATUS":"CREATE","IMAGE NAME":"={{ $('Telegram Trigger: Receive Video Idea').item.json.message.photo[2].file_unique_id }}","TITRE VIDEO":"={{ $('AI Agent: Generate Video Script').item.json.output.title }}","CAPTION VIDEO":"={{ $json.message.content }}","URL VIDEO FINAL":"={{ $('Download Video from VEO3').item.json.data.response.resultUrls[0] }}"},"schema":[{"id":"IMAGE NAME","type":"string","display":true,"removed":false,"required":false,"displayName":"IMAGE NAME","defaultMatch":false,"canBeUsedToMatch":true},{"id":"IMAGE URL","type":"string","display":true,"removed":true,"required":false,"displayName":"IMAGE URL","defaultMatch":false,"canBeUsedToMatch":true},{"id":"IMAGE DESCRIPTION","type":"string","display":true,"removed":true,"required":false,"displayName":"IMAGE DESCRIPTION","defaultMatch":false,"canBeUsedToMatch":true},{"id":"CAPTION","type":"string","display":true,"removed":true,"required":false,"displayName":"CAPTION","defaultMatch":false,"canBeUsedToMatch":true},{"id":"URL VIDEO FINAL","type":"string","display":true,"required":false,"displayName":"URL VIDEO FINAL","defaultMatch":false,"canBeUsedToMatch":true},{"id":"TITRE VIDEO","type":"string","display":true,"required":false,"displayName":"TITRE VIDEO","defaultMatch":false,"canBeUsedToMatch":true},{"id":"CAPTION VIDEO","type":"string","display":true,"removed":false,"required":false,"displayName":"CAPTION VIDEO","defaultMatch":false,"canBeUsedToMatch":true},{"id":"STATUS","type":"string","display":true,"required":false,"displayName":"STATUS","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["IMAGE NAME"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"googleSheetsOAuth2Api Credential"}},"typeVersion":4.6},{"id":"30c415e0-58e0-48b9-b7e9-11dc5d979ac8","name":"Format Prompt","type":"n8n-nodes-base.code","position":[-160,16],"parameters":{"jsCode":"const structuredPrompt = $input.first().json.output.final_prompt;\nreturn {\n json: {\n prompt: JSON.stringify(structuredPrompt), // this escapes it correctly!\n model: \"veo3_fast\",\n aspectRatio: \"16:9\"\n }\n};\n"},"typeVersion":2},{"id":"61ce4a03-4104-4beb-bb16-0b2d2dde142d","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-272,-304],"parameters":{"width":1180,"height":460,"content":"# 📑 STEP 3 — Generate Video Ad Script"},"typeVersion":1},{"id":"9f91c353-3ad6-498c-ba14-907bb91e208c","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-272,208],"parameters":{"width":1180,"height":320,"content":"# 📑 STEP 4 — Generate Video with VEO3"},"typeVersion":1},{"id":"3051b833-571a-4f0c-993a-ca8ffd03e476","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-272,-944],"parameters":{"width":1184,"height":592,"content":"# 📑 STEP 1 — Collect Idea & Image"},"typeVersion":1},{"id":"785aa7c8-8921-4b6b-8db3-8d55e2a42564","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[960,-944],"parameters":{"width":1328,"height":592,"content":"# 📑 STEP 2 — Create Image with NanoBanana\n"},"typeVersion":1},{"id":"fa25f6bf-d05b-4b8d-8a8a-b8684c601510","name":"Telegram: Get Image File","type":"n8n-nodes-base.telegram","position":[224,-880],"webhookId":"06ceb31d-dcd9-4a9a-bbbe-a7bf7ae0ad4a","parameters":{"fileId":"={{ $json.message.photo[2].file_id }}","resource":"file","additionalFields":{}},"credentials":{"telegramApi":{"id":"credential-id","name":"telegramApi Credential"}},"typeVersion":1.2},{"id":"7a362123-c86c-45f9-b80c-a5660f92da46","name":"Google Drive: Upload Image","type":"n8n-nodes-base.googleDrive","position":[240,-688],"parameters":{"name":"={{ $('Telegram Trigger: Receive Video Idea').item.json.message.photo[2].file_unique_id }}","driveId":{"__rl":true,"mode":"id","value":"="},"options":{},"folderId":{"__rl":true,"mode":"id","value":"="}},"credentials":{"googleDriveOAuth2Api":{"id":"credential-id","name":"googleDriveOAuth2Api Credential"}},"typeVersion":3},{"id":"a9614733-44e3-4580-95f8-a955d9136be4","name":"Google Sheets: Log Image & Caption","type":"n8n-nodes-base.googleSheets","position":[240,-512],"parameters":{"columns":{"value":{"STATUS":"EN COURS","CAPTION":"={{ $('Telegram Trigger: Receive Video Idea').item.json.message.caption }}","IMAGE URL":"={{ $json.webContentLink }}","IMAGE NAME":"={{ $('Telegram Trigger: Receive Video Idea').item.json.message.photo[2].file_unique_id }}"},"schema":[{"id":"IMAGE NAME","type":"string","display":true,"removed":false,"required":false,"displayName":"IMAGE NAME","defaultMatch":false,"canBeUsedToMatch":true},{"id":"IMAGE URL","type":"string","display":true,"removed":false,"required":false,"displayName":"IMAGE URL","defaultMatch":false,"canBeUsedToMatch":true},{"id":"IMAGE DESCRIPTION","type":"string","display":true,"removed":true,"required":false,"displayName":"IMAGE DESCRIPTION","defaultMatch":false,"canBeUsedToMatch":true},{"id":"CAPTION","type":"string","display":true,"removed":false,"required":false,"displayName":"CAPTION","defaultMatch":false,"canBeUsedToMatch":true},{"id":"STATUS","type":"string","display":true,"removed":false,"required":false,"displayName":"STATUS","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["IMAGE NAME"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"googleSheetsOAuth2Api Credential"}},"typeVersion":4.7},{"id":"a8e85901-2451-4037-ba0c-aa2b229c9d0f","name":"Set: Bot Token (Placeholder)","type":"n8n-nodes-base.set","position":[480,-752],"parameters":{"options":{},"assignments":{"assignments":[{"id":"af62651a-3fc8-419d-908b-6514f6f4bcb3","name":"YOUR_BOT_TOKEN","type":"string","value":""}]}},"typeVersion":3.4},{"id":"ae9da8d7-f2c4-4ada-897c-651176cbfdb6","name":"Telegram API: Get File URL","type":"n8n-nodes-base.httpRequest","position":[672,-752],"parameters":{"url":"=https://api.telegram.org/bot{{ $json.YOUR_BOT_TOKEN }}/getFile?file_id={{ $('Telegram Trigger: Receive Video Idea').item.json.message.photo[3].file_id }}","options":{}},"typeVersion":4.2},{"id":"6527e03e-6417-45a5-95a8-2ef84b872df0","name":"OpenAI Vision: Analyze Reference Image","type":"@n8n/n8n-nodes-langchain.openAi","position":[1088,-752],"parameters":{"text":"=You are an image analysis assistant.\n\nYour task is to analyze the given image and output results **only in YAML format**. Do not add explanations, comments, or extra text outside YAML.\n\nRules:\n\n- If the image depicts a **product**, return:\n \n ```yaml\n brand_name: (brand if visible or inferable)\n color_scheme:\n - hex: (hex code of each prominent color)\n name: (descriptive name of the color)\n font_style: (serif/sans-serif, bold/thin, etc.)\n visual_description: (1–2 sentences summarizing what is seen, ignoring the background)\n \n ```\n \n- If the image depicts a **character**, return:\n \n ```yaml\n character_name: (name if visible or inferable, else \"unknown\")\n color_scheme:\n - hex: (hex code of each prominent color on the character)\n name: (descriptive name of the color)\n outfit_style: (clothing style, accessories, or notable features)\n visual_description: (1–2 sentences summarizing what the character looks like, ignoring the background)\n \n ```\n \n- If the image depicts **both**, return **both sections** in YAML.\n\nOnly output valid YAML. No explanations.","modelId":{"__rl":true,"mode":"list","value":"chatgpt-4o-latest","cachedResultName":"CHATGPT-4O-LATEST"},"options":{},"resource":"image","imageUrls":"=https://api.telegram.org/file/bot{{ $('Set: Bot Token (Placeholder)').item.json.YOUR_BOT_TOKEN }}/{{ $json.result.file_path }}","operation":"analyze"},"credentials":{"openAiApi":{"id":"credential-id","name":"openAiApi Credential"}},"typeVersion":1.8},{"id":"6d78c44a-9073-4a2c-9a17-102c870b2162","name":"Google Sheets: Update Image Description","type":"n8n-nodes-base.googleSheets","position":[1328,-752],"parameters":{"columns":{"value":{"IMAGE NAME":"={{ $('Telegram Trigger: Receive Video Idea').item.json.message.photo[2].file_unique_id }}","IMAGE DESCRIPTION":"={{ $json.content }}"},"schema":[{"id":"IMAGE NAME","type":"string","display":true,"removed":false,"required":false,"displayName":"IMAGE NAME","defaultMatch":false,"canBeUsedToMatch":true},{"id":"IMAGE URL","type":"string","display":true,"removed":true,"required":false,"displayName":"IMAGE URL","defaultMatch":false,"canBeUsedToMatch":true},{"id":"IMAGE DESCRIPTION","type":"string","display":true,"removed":false,"required":false,"displayName":"IMAGE DESCRIPTION","defaultMatch":false,"canBeUsedToMatch":true},{"id":"CAPTION","type":"string","display":true,"removed":true,"required":false,"displayName":"CAPTION","defaultMatch":false,"canBeUsedToMatch":true},{"id":"STATUS","type":"string","display":true,"removed":true,"required":false,"displayName":"STATUS","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["IMAGE NAME"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"googleSheetsOAuth2Api Credential"}},"typeVersion":4.7},{"id":"efd41bb8-ecef-49ea-9051-ead169d6766b","name":"LLM: Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1712,-512],"parameters":{"jsonSchemaExample":"{\n\t\"image_prompt\": \"string\"\n}"},"typeVersion":1.3},{"id":"96a49fe4-d013-42c8-9ae8-11eb713e132f","name":"LLM: OpenAI Chat","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1504,-512],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{}},"credentials":{"openAiApi":{"id":"credential-id","name":"openAiApi Credential"}},"typeVersion":1.2},{"id":"f6599d80-4301-4dd1-bc38-1c39e57e21cb","name":"Generate Image Prompt","type":"@n8n/n8n-nodes-langchain.agent","position":[1552,-752],"parameters":{"text":"=Your task is to create an image prompt following the system guidelines. \nEnsure that the reference image is represented as **accurately as possible**, including all text elements. \n\nUse the following inputs: \n\n- **User’s description:** \n{{ $json.CAPTION }}\n\n- **Reference image description:** \n{{ $json['IMAGE DESCRIPTION'] }}\n","options":{"systemMessage":"=ROLE: UGC Image Prompt Builder \n\nGOAL: \nGenerate one concise, natural, and realistic image prompt (≤120 words) from a given product or reference image. The prompt must simulate authentic UGC (user-generated content) photography. \n\nRULES: \n- Always output **one JSON object only** with the key: \n - `image_prompt`: (string with full description) \n- Do **not** add commentary, metadata, or extra keys. JSON only. \n\nSTYLE GUIDELINES: \n- Tone: casual, unstaged, lifelike, handheld snapshot. \n- Camera cues: include at least 2–3 (e.g., phone snapshot, handheld framing, off-center composition, natural indoor light, soft shadows, slight motion blur, auto exposure, unpolished look, mild grain). \n- Realism: embrace imperfections (wrinkles, stray hairs, skin texture, clutter, smudges). \n- Packaging/Text: preserve exactly as visible. Never invent claims, numbers, or badges. \n- Diversity: if people appear but are unspecified, vary gender/ethnicity naturally; default age range = 21–38. \n- Setting: default to real-world everyday spaces (home, street, store, gym, office). \n\nSAFETY: \n- No copyrighted character names. \n- No dialogue or scripts. Only describe scenes. \n\nOUTPUT CONTRACT: \n- JSON only, no prose outside. \n- Max 120 words in `image_prompt`. \n- Must cover: subject, action, mood, setting, style/camera, colors, and text accuracy. \n\nCHECKLIST BEFORE OUTPUT: \n- Natural handheld tone? \n- At least 2 camera cues included? \n- Product text preserved exactly? \n- Only JSON returned? \n\n--- \n\n### Example \n\nGood Example : \n```json\n{ \"image_prompt\": \"a young adult casually holding a skincare tube near a bathroom mirror; action: dabs small amount on the back of the hand; mood: easy morning; setting: small apartment bathroom with towel on rack and toothbrush cup; style/camera: phone snapshot, handheld framing, off-center composition, natural window light, slight motion blur, mild grain; colors: soft whites and mint label; text accuracy: keep every word on the tube exactly as visible, no added claims\" }\n"},"promptType":"define","hasOutputParser":true},"typeVersion":2.2},{"id":"80274aa5-bdf0-49bf-9980-0624d99d68ef","name":"NanoBanana: Create Image","type":"n8n-nodes-base.httpRequest","position":[1888,-752],"parameters":{"url":"https://queue.fal.run/fal-ai/nano-banana/edit","method":"POST","options":{},"jsonBody":"={\n\t\"prompt\": \"{{ $json.output.image_prompt.replace(/\\\"/g, '\\\\\\\"').replace(/\\n/g, '\\\\n') }}\",\n\"image_urls\": [\"{{ $('Google Drive: Upload Image').item.json.webContentLink }}\"]\n\n}\n\n","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"httpHeaderAuth Credential"}},"typeVersion":4.2},{"id":"e132487d-da8c-4850-9d3f-9e057e9bde64","name":"Wait for Image Edit","type":"n8n-nodes-base.wait","position":[2096,-752],"webhookId":"df52d997-45c4-431f-bdf6-89dd25027b5b","parameters":{"amount":20},"typeVersion":1.1},{"id":"2c7ffce1-8ace-418d-9738-c659f4554980","name":"Download Edited Image","type":"n8n-nodes-base.httpRequest","position":[2096,-528],"parameters":{"url":"={{ $json.response_url }}","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"httpHeaderAuth Credential"}},"typeVersion":4.2},{"id":"ec725aa0-fd30-4d98-b984-0228873db428","name":"Google Sheets: Read Video Parameters (CONFIG)","type":"n8n-nodes-base.googleSheets","position":[32,-192],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"googleSheetsOAuth2Api Credential"}},"typeVersion":4.6},{"id":"abafa8c6-55a0-488c-970e-d2a969ad7959","name":"Telegram: Send notification","type":"n8n-nodes-base.telegram","position":[2112,336],"webhookId":"2f4a4bc1-99de-4e93-8523-dd8c6499b893","parameters":{"text":"Published","chatId":"={{ $('Telegram Trigger: Receive Video Idea').item.json.message.chat.id }}","additionalFields":{}},"credentials":{"telegramApi":{"id":"credential-id","name":"telegramApi Credential"}},"typeVersion":1.2},{"id":"77030cb3-3246-41d5-bcbc-74f82bdd501b","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-992,-944],"parameters":{"color":6,"width":700,"height":1476,"content":"# 🎬 Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato (By Dr. Firas)\n\n\n# 🎥 Full Tutorial :\n[](https://youtu.be/nlwpbXQqNQ4)\n\n---\n\n# 📘 Documentation \nAccess detailed setup instructions, API config, platform connection guides, and workflow customization tips:\n\n📎 [Open the full documentation on Notion](https://automatisation.notion.site/NonoBanan-2643d6550fd98041aef5dcbe8ab0f7a1?source=copy_link)\n\n---\n\n# ⚙️ Requirements\n\n1. ✅ **Create a [Blotato](https://blotato.com/?ref=firas) account** (Pro plan required for API access) \n2. 🔑 **Generate your Blotato API Key** via: `Settings > API > Generate API Key` \n3. 📦 **Enable “Verified Community Nodes”** in the n8n admin settings \n4. 🧩 **Install the Blotato** verified community node in n8n \n5. 🛠 **Create a Blotato API credential** inside your n8n credentials tab \n6. 📄 **Duplicate this [Google Sheet template](https://docs.google.com/spreadsheets/d/1FutmZHblwnk36fp59fnePjONzuJBdndqZOCuRoGWSmY/edit?usp=sharing)** \n7. ☁️ **Make sure your Google Drive folder is PUBLIC** (anyone with the link can access) \n8. 📌 **Complete the 3 brown sticky note steps** inside the workflow editor\n\n"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"8577d027-1dbc-4c0d-97db-1cf6c6613ae6","connections":{"Merge":{"main":[[{"node":"Update Status to \"DONE\"","type":"main","index":0}]]},"Think":{"ai_tool":[[{"node":"AI Agent: Generate Video Script","type":"ai_tool","index":0}]]},"Tiktok":{"main":[[{"node":"Merge","type":"main","index":0}]]},"Bluesky":{"main":[[{"node":"Merge","type":"main","index":7}]]},"Threads":{"main":[[{"node":"Merge","type":"main","index":6}]]},"Youtube":{"main":[[{"node":"Merge","type":"main","index":5}]]},"Facebook":{"main":[[{"node":"Merge","type":"main","index":2}]]},"Linkedin":{"main":[[{"node":"Merge","type":"main","index":1}]]},"Instagram":{"main":[[{"node":"Merge","type":"main","index":3}]]},"Pinterest":{"main":[[{"node":"Merge","type":"main","index":8}]]},"Twitter (X)":{"main":[[{"node":"Merge","type":"main","index":4}]]},"Format Prompt":{"main":[[{"node":"Generate Video with VEO3","type":"main","index":0}]]},"LLM: OpenAI Chat":{"ai_languageModel":[[{"node":"Generate Image Prompt","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"AI Agent: Generate Video Script","type":"ai_languageModel","index":0}]]},"Set Master Prompt":{"main":[[{"node":"AI Agent: Generate Video Script","type":"main","index":0}]]},"Wait for Image Edit":{"main":[[{"node":"Download Edited Image","type":"main","index":0}]]},"Download Edited Image":{"main":[[{"node":"Google Sheets: Read Video Parameters (CONFIG)","type":"main","index":0}]]},"Generate Image Prompt":{"main":[[{"node":"NanoBanana: Create Image","type":"main","index":0}]]},"Update Status to \"DONE\"":{"main":[[{"node":"Telegram: Send notification","type":"main","index":0}]]},"Upload Video to BLOTATO":{"main":[[{"node":"Tiktok","type":"main","index":0},{"node":"Linkedin","type":"main","index":0},{"node":"Facebook","type":"main","index":0},{"node":"Instagram","type":"main","index":0},{"node":"Twitter (X)","type":"main","index":0},{"node":"Youtube","type":"main","index":0},{"node":"Threads","type":"main","index":0},{"node":"Bluesky","type":"main","index":0},{"node":"Pinterest","type":"main","index":0}]]},"Wait for VEO3 Rendering":{"main":[[{"node":"Download Video from VEO3","type":"main","index":0}]]},"Download Video from VEO3":{"main":[[{"node":"Rewrite Caption with GPT-4o","type":"main","index":0}]]},"Generate Video with VEO3":{"main":[[{"node":"Wait for VEO3 Rendering","type":"main","index":0}]]},"NanoBanana: Create Image":{"main":[[{"node":"Wait for Image Edit","type":"main","index":0}]]},"Send Final Video Preview":{"main":[[{"node":"Upload Video to BLOTATO","type":"main","index":0}]]},"Structured Output Parser":{"ai_outputParser":[[{"node":"AI Agent: Generate Video Script","type":"ai_outputParser","index":0}]]},"Telegram: Get Image File":{"main":[[{"node":"Google Drive: Upload Image","type":"main","index":0}]]},"Google Drive: Upload Image":{"main":[[{"node":"Google Sheets: Log Image & Caption","type":"main","index":0}]]},"Telegram API: Get File URL":{"main":[[{"node":"OpenAI Vision: Analyze Reference Image","type":"main","index":0}]]},"Rewrite Caption with GPT-4o":{"main":[[{"node":"Save Caption Video to Google Sheets","type":"main","index":0}]]},"Send Video URL via Telegram":{"main":[[{"node":"Send Final Video Preview","type":"main","index":0}]]},"Set: Bot Token (Placeholder)":{"main":[[{"node":"Telegram API: Get File URL","type":"main","index":0}]]},"LLM: Structured Output Parser":{"ai_outputParser":[[{"node":"Generate Image Prompt","type":"ai_outputParser","index":0}]]},"AI Agent: Generate Video Script":{"main":[[{"node":"Format Prompt","type":"main","index":0}]]},"Google Sheets: Log Image & Caption":{"main":[[{"node":"Set: Bot Token (Placeholder)","type":"main","index":0}]]},"Save Caption Video to Google Sheets":{"main":[[{"node":"Send Video URL via Telegram","type":"main","index":0}]]},"Telegram Trigger: Receive Video Idea":{"main":[[{"node":"Set: Bot Token (Placeholder)","type":"main","index":0},{"node":"Telegram: Get Image File","type":"main","index":0}]]},"OpenAI Vision: Analyze Reference Image":{"main":[[{"node":"Google Sheets: Update Image Description","type":"main","index":0}]]},"Google Sheets: Update Image Description":{"main":[[{"node":"Generate Image Prompt","type":"main","index":0}]]},"Google Sheets: Read Video Parameters (CONFIG)":{"main":[[{"node":"Set Master Prompt","type":"main","index":0}]]}}}How to Import This Workflow
- 1Copy the workflow JSON above using the Copy Workflow JSON button.
- 2Open your n8n instance and go to Workflows.
- 3Click Import from JSON and paste the copied workflow.
Don't have an n8n instance? Start your free trial at n8nautomation.cloud
Related Templates
Send personalized birthday and anniversary emails with Google Sheets, Gemini, and Gmail
# Birthday & Milestone Message Automation (n8n Google Sheets + Gemini AI + Gmail) This workflow automatically sends personalized birthday and anniversary emails to clients. It runs daily, checks a Google Sheet for matching dates, generates a warm AI message using Google Gemini and sends it via Gmail. It also includes a thoughtful investment idea tailored to the client’s age, risk profile and relationship type. ### Quick Implementation Steps 1. Connect **Google Sheets OAuth2** 2. Add your **Google Gemini API key** 3. Connect **Gmail OAuth2** 4. Update the **Google Sheet ID** 5. Ensure your sheet has required columns: - Client Name, Email, Advisor Name, Birthday, Anniversary, Relationship Type (Premium / Normal), Client Age, Risk Profile 6. Activate the workflow ## What It Does This workflow automates client relationship engagement for financial advisors by sending personalized messages on important milestones like birthdays and anniversaries. It eliminates the need for manual tracking and ensures that no important date is missed. Every day at a scheduled time, the workflow reads all client records from a Google Sheet and checks if any client has a birthday or anniversary on that day. If a match is found, it prepares detailed variables including client information, tone and occasion. The workflow then intelligently selects a suitable investment idea based on the client’s age group and risk profile. This context is passed to Google Gemini, which generates a warm, human-like message. Finally, the message is formatted and sent as a text email via Gmail. ## Who’s It For - Financial advisors - Wealth managers - Investment consultants - Relationship managers handling client portfolios - Firms managing high-value or premium clients ## Requirements To use this workflow, you need: - n8n instance (Cloud or Self-hosted) - Google Sheets account with client data - Google Gemini API key - Gmail account for sending emails - Proper OAuth2 credentials conf
AI Agent to chat with Airtable and analyze data
Ready-to-use n8n workflow template for productivity. This automation connects Airtable, OpenAI with 41 nodes. Import directly into your n8n instance and customize for your needs.
RAG Workflow For Company Documents stored in Google Drive
Ready-to-use n8n workflow template for productivity. This automation connects Google Drive, Pinecone with 18 nodes. Import directly into your n8n instance and customize for your needs.