This workflow corresponds to n8n.io template #17837 — we link there as the canonical source.
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 →
{
"id": "SibpJMv1aBA254cD",
"meta": {
"builderVariant": "mcp",
"aiBuilderAssisted": true
},
"name": "Analyze competitor Facebook ads with Apify and OpenAI",
"tags": [],
"nodes": [
{
"id": "f0f4e77e-bc73-4660-9907-cff63be218af",
"name": "Start Manually",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1600,
0
],
"parameters": {},
"typeVersion": 1
},
{
"id": "55dc63eb-754d-4165-a9d9-1cb04e3a9475",
"name": "Configuration",
"type": "n8n-nodes-base.set",
"position": [
-1360,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "cfg-1",
"name": "search_keywords",
"type": "string",
"value": "ai automation agency"
},
{
"id": "cfg-2",
"name": "facebook_country",
"type": "string",
"value": "US"
},
{
"id": "cfg-3",
"name": "ad_active_status",
"type": "string",
"value": "active"
},
{
"id": "cfg-4",
"name": "min_page_likes",
"type": "number",
"value": 1000
},
{
"id": "cfg-5",
"name": "max_ads_to_scrape",
"type": "number",
"value": 100
},
{
"id": "cfg-6",
"name": "openai_vision_model",
"type": "string",
"value": "gpt-4o"
},
{
"id": "cfg-7",
"name": "openai_text_model",
"type": "string",
"value": "gpt-4.1"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "ed248f0a-adb4-42a0-bb44-6e4e842d5b61",
"name": "Scrape Facebook Ad Library with Apify",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1120,
0
],
"parameters": {
"url": "https://api.apify.com/v2/acts/XtaWFhbtfxyzqrFmd/run-sync-get-dataset-items",
"method": "POST",
"options": {},
"jsonBody": "={\n \"count\": {{ $('Configuration').item.json.max_ads_to_scrape }},\n \"period\": \"last30d\",\n \"scrapeAdDetails\": true,\n \"scrapePageAds.activeStatus\": \"{{ $('Configuration').item.json.ad_active_status }}\",\n \"urls\": [\n {\n \"url\": \"https://www.facebook.com/ads/library/?active_status={{ $('Configuration').item.json.ad_active_status }}&ad_type=all&country={{ $('Configuration').item.json.facebook_country }}&is_targeted_country=false&media_type=all&q={{ encodeURIComponent($('Configuration').item.json.search_keywords) }}&search_type=keyword_exact_phrase\",\n \"method\": \"GET\"\n }\n ]\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.4
},
{
"id": "3c2180f4-86bb-4ea3-b3ef-e11e9ed93f5d",
"name": "Filter High-Engagement Advertisers",
"type": "n8n-nodes-base.filter",
"position": [
-880,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.advertiser.ad_library_page_info.page_info.likes }}",
"rightValue": "={{ $('Configuration').item.json.min_page_likes }}"
}
]
}
},
"typeVersion": 2.3
},
{
"id": "ebcdc3ec-8eb9-4c02-9648-8bfaf9712da9",
"name": "Route by Ad Content Type",
"type": "n8n-nodes-base.switch",
"position": [
-640,
96
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Video",
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.snapshot.videos[0].video_sd_url }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "Image",
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.snapshot.images[0].original_image_url }}",
"rightValue": ""
}
]
},
"renameOutput": true
}
]
},
"options": {
"fallbackOutput": "extra",
"renameFallbackOutput": "Text"
}
},
"typeVersion": 3.4
},
{
"id": "d1dca6ce-32b6-44c0-a3f7-8197cb29b865",
"name": "Analyze Video Preview Image (GPT Vision)",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-128,
-400
],
"parameters": {
"text": "Describe this Facebook video ad's cover image in detail: visual style, on-screen text, product or offer shown, and the emotional hook. Note this description is based on the video's preview frame only, not the full video.",
"images": {
"values": [
{}
]
},
"modelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Configuration').item.json.openai_vision_model }}"
},
"options": {
"detail": "auto",
"maxTokens": 500
},
"resource": "image",
"imageUrls": "={{ $json.snapshot.videos[0].video_preview_image_url }}",
"operation": "analyze"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "e59bfc0e-a6c7-409c-a33e-5707500d40a1",
"name": "Generate Video Ad Intelligence",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
144,
-400
],
"parameters": {
"text": "=Raw scraped ad data:\n{{ $('Loop Over Video Ads').item.json.toJsonString() }}\n\nVisual description of the video's cover frame:\n{{ $json.content }}",
"options": {
"systemMessage": "You are a senior paid-social strategist who reverse-engineers competitor Facebook ads for a marketing agency. Analyze the offer, hook, target audience and persuasion techniques used. Then write an inspired, non-plagiarized rewritten version of the ad copy that captures the same strategic angle in fresh wording. Be concise, analytical and specific, no filler, no hedging."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "e0f88c4f-0f65-45e4-841b-1aac5abec702",
"name": "Video Analysis Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
144,
-192
],
"parameters": {
"model": {
"__rl": true,
"mode": "id",
"value": "={{ $('Configuration').item.json.openai_text_model }}"
},
"options": {},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "3fbb890a-0278-4e9d-8114-0f8310698684",
"name": "Video Analysis Output Format",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
304,
-208
],
"parameters": {
"jsonSchemaExample": "{ \"summary\": \"Detailed strategic analysis of the ad\", \"rewrittenAdCopy\": \"An inspired, non-plagiarized rewritten version of the ad copy\" }"
},
"typeVersion": 1.3
},
{
"id": "e757faac-ecd5-44a0-9627-fd7b60aee465",
"name": "Save Video Ad Analysis",
"type": "n8n-nodes-base.googleSheets",
"position": [
496,
-400
],
"parameters": {
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultName": "Ads"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultName": "Facebook Ad Intelligence"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "70d92ddc-fd93-42e2-923b-5faf35820d82",
"name": "Loop Over Video Ads",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-352,
-368
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "34c5565e-283c-4414-b8e3-473227ed78c6",
"name": "Analyze Image Ad (GPT Vision)",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-80,
112
],
"parameters": {
"text": "Describe this Facebook image ad in detail: visual style, on-screen text, product or offer shown, and the emotional hook.",
"images": {
"values": [
{}
]
},
"modelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Configuration').item.json.openai_vision_model }}"
},
"options": {
"detail": "auto",
"maxTokens": 500
},
"resource": "image",
"imageUrls": "={{ $json.snapshot.images[0].original_image_url }}",
"operation": "analyze"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "f4dcef54-c2ff-4d1b-b319-dbc953e9d2dd",
"name": "Generate Image Ad Intelligence",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
144,
112
],
"parameters": {
"text": "=Raw scraped ad data:\n{{ $('Loop Over Image Ads').item.json.toJsonString() }}\n\nVisual description of the image creative:\n{{ $json.content }}",
"options": {
"systemMessage": "You are a senior paid-social strategist who reverse-engineers competitor Facebook ads for a marketing agency. Analyze the offer, hook, target audience and persuasion techniques used. Then write an inspired, non-plagiarized rewritten version of the ad copy that captures the same strategic angle in fresh wording. Be concise, analytical and specific, no filler, no hedging."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "404013d2-1166-4ecd-8b20-3c1e597d8bf1",
"name": "Image Analysis Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
128,
304
],
"parameters": {
"model": {
"__rl": true,
"mode": "id",
"value": "={{ $('Configuration').item.json.openai_text_model }}"
},
"options": {},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "b03aa23f-5dab-4507-a9ea-86e3d9f47e0c",
"name": "Image Analysis Output Format",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
288,
304
],
"parameters": {
"jsonSchemaExample": "{ \"summary\": \"Detailed strategic analysis of the ad\", \"rewrittenAdCopy\": \"An inspired, non-plagiarized rewritten version of the ad copy\" }"
},
"typeVersion": 1.3
},
{
"id": "1189e996-a96e-4932-8a37-4d5bdbc5dcf8",
"name": "Save Image Ad Analysis",
"type": "n8n-nodes-base.googleSheets",
"position": [
480,
160
],
"parameters": {
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultName": "Ads"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultName": "Facebook Ad Intelligence"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "d6a77cb5-83d4-4d6f-a0e3-648ecb8040a6",
"name": "Loop Over Image Ads",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-304,
96
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "1e781dcc-f95c-4e59-bd10-65019c53948c",
"name": "Generate Text Ad Intelligence",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-144,
656
],
"parameters": {
"text": "=Raw scraped ad data (text-only ad, no image or video creative):\n{{ $json.toJsonString() }}",
"options": {
"systemMessage": "You are a senior paid-social strategist who reverse-engineers competitor Facebook ads for a marketing agency. Analyze the offer, hook, target audience and persuasion techniques used. Then write an inspired, non-plagiarized rewritten version of the ad copy that captures the same strategic angle in fresh wording. Be concise, analytical and specific, no filler, no hedging."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "3f132f38-5b5d-4f0c-8661-c28a35dbd0a2",
"name": "Text Analysis Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-144,
896
],
"parameters": {
"model": {
"__rl": true,
"mode": "id",
"value": "={{ $('Configuration').item.json.openai_text_model }}"
},
"options": {},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "fee8b69d-ad12-4e27-a62c-053adda3b682",
"name": "Text Analysis Output Format",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
64,
880
],
"parameters": {
"jsonSchemaExample": "{ \"summary\": \"Detailed strategic analysis of the ad\", \"rewrittenAdCopy\": \"An inspired, non-plagiarized rewritten version of the ad copy\" }"
},
"typeVersion": 1.3
},
{
"id": "5147cc40-a609-4396-89f8-7838ae4d95b2",
"name": "Save Text Ad Analysis",
"type": "n8n-nodes-base.googleSheets",
"position": [
208,
640
],
"parameters": {
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultName": "Ads"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultName": "Facebook Ad Intelligence"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "0bd95486-9b6e-4347-9e37-a7af36cfc4b7",
"name": "Loop Over Text Ads",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-368,
640
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "6f66942b-1b32-4d3a-8e97-033d97295075",
"name": "Sticky Note 83d50ce3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2368,
-608
],
"parameters": {
"color": 4,
"width": 620,
"height": 1732,
"content": "# Analyze competitor Facebook ads with Apify and OpenAI\n# \ud83d\udce5 [Open full documentation on Notion](https://automatisation.notion.site/Course-Analyze-competitor-Facebook-ads-with-Apify-and-OpenAI-3a03d6550fd9810ca5d5f5a8d6f07431)\n\n## How it works\nThis workflow scrapes active Facebook ads from a competitor or niche using Apify's Ad Library Scraper, filters out low-engagement advertisers, then routes each ad to a dedicated OpenAI analysis pipeline based on its format (video, image, or text-only). For video and image ads, GPT-4 Vision describes the creative, then an AI Agent produces a strategic summary and an inspired (non-plagiarized) rewritten version of the ad copy. Every result is logged to Google Sheets for easy review and reporting.\n\n## Setup\n1. Open the Configuration node and set your search keywords, target country, and minimum page likes.\n2. Connect your Apify API credential (httpHeaderAuth) on the \"Scrape Facebook Ad Library with Apify\" node.\n3. Connect your OpenAI account credential on every OpenAI / AI Agent node.\n4. Pick your Google Sheet and tab on the three \"Save ... Ad Analysis\" nodes.\n5. Run the workflow manually to test, then swap in a Schedule Trigger if you want recurring monitoring.\n\n## Requirements\n- An Apify account with access to a Facebook Ad Library scraper actor.\n- An OpenAI account with GPT-4 Vision / GPT-4.1 access.\n- A Google account with Sheets access.\n\n## Customization\n- Adjust min_page_likes in the Configuration node to target bigger or smaller advertisers.\n- Swap the vision prompt in the \"Analyze ... (GPT Vision)\" nodes to focus on specific creative elements.\n- Add a Schedule Trigger for ongoing competitor monitoring instead of running manually.\n- Extend the Google Sheets schema with extra columns (e.g. estimated spend) if your Apify actor returns them.\n\n---\nNeed help customizing?\nContact me for consulting and support : [Linkedin](https://www.linkedin.com/in/doctor-firass/)\n\n# MY NEW YOUTUBE CHANNEL\n\ud83d\udc49 [Subscribe to my new YouTube channel](https://www.youtube.com/@DrFiras_AI). Here I'll share videos and Shorts with practical tutorials and FREE templates for n8n.\n\n[](https://www.youtube.com/@DrFiras_AI)"
},
"typeVersion": 1
},
{
"id": "d8cf40a3-a608-4515-a0be-7925171b0c6d",
"name": "Sticky Note d340eff7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1456,
-576
],
"parameters": {
"color": 7,
"width": 1020,
"height": 200,
"content": "## \ud83d\udd0d Step 1 \u2014 Scrape & filter\nConfiguration centralizes every setting. The Apify actor pulls active Facebook ads, then the Filter node keeps only high-engagement advertisers, and the Switch routes each ad by format."
},
"typeVersion": 1
},
{
"id": "610d8620-830e-4633-ad45-76bf32f3256a",
"name": "Sticky Note 03a4c83a",
"type": "n8n-nodes-base.stickyNote",
"position": [
-432,
-576
],
"parameters": {
"color": 7,
"width": 1080,
"height": 400,
"content": "## \ud83c\udfac Video ads\nGPT-4 Vision analyzes the video's cover frame (no video upload or Gemini needed), then an AI Agent produces the strategic summary + rewritten copy."
},
"typeVersion": 1
},
{
"id": "7c0ec8c8-1f4e-4e33-8cd7-3bc9e66989cd",
"name": "Sticky Note 1d491d8b",
"type": "n8n-nodes-base.stickyNote",
"position": [
-432,
-48
],
"parameters": {
"color": 7,
"width": 1080,
"height": 380,
"content": "## \ud83d\uddbc\ufe0f Image ads\nGPT-4 Vision analyzes the full image creative, then an AI Agent produces the strategic summary + rewritten copy."
},
"typeVersion": 1
},
{
"id": "cf7a724d-1328-48be-9406-75b0f2cc1e29",
"name": "Sticky Note 93c1c989",
"type": "n8n-nodes-base.stickyNote",
"position": [
-432,
480
],
"parameters": {
"color": 7,
"width": 820,
"height": 380,
"content": "## \ud83d\udcdd Text ads\nText-only ads skip the vision step and go straight to the AI Agent for strategic analysis and copy rewriting."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"availableInMCP": true,
"executionOrder": "v1"
},
"versionId": "98e95af8-1057-4011-a2ae-b59700a7a581",
"nodeGroups": [],
"connections": {
"Configuration": {
"main": [
[
{
"node": "Scrape Facebook Ad Library with Apify",
"type": "main",
"index": 0
}
]
]
},
"Start Manually": {
"main": [
[
{
"node": "Configuration",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Text Ads": {
"main": [
[],
[
{
"node": "Generate Text Ad Intelligence",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Image Ads": {
"main": [
[],
[
{
"node": "Analyze Image Ad (GPT Vision)",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Video Ads": {
"main": [
[],
[
{
"node": "Analyze Video Preview Image (GPT Vision)",
"type": "main",
"index": 0
}
]
]
},
"Text Analysis Model": {
"ai_languageModel": [
[
{
"node": "Generate Text Ad Intelligence",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Image Analysis Model": {
"ai_languageModel": [
[
{
"node": "Generate Image Ad Intelligence",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Video Analysis Model": {
"ai_languageModel": [
[
{
"node": "Generate Video Ad Intelligence",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Save Text Ad Analysis": {
"main": [
[
{
"node": "Loop Over Text Ads",
"type": "main",
"index": 0
}
]
]
},
"Save Image Ad Analysis": {
"main": [
[
{
"node": "Loop Over Image Ads",
"type": "main",
"index": 0
}
]
]
},
"Save Video Ad Analysis": {
"main": [
[
{
"node": "Loop Over Video Ads",
"type": "main",
"index": 0
}
]
]
},
"Route by Ad Content Type": {
"main": [
[
{
"node": "Loop Over Video Ads",
"type": "main",
"index": 0
}
],
[
{
"node": "Loop Over Image Ads",
"type": "main",
"index": 0
}
],
[
{
"node": "Loop Over Text Ads",
"type": "main",
"index": 0
}
]
]
},
"Text Analysis Output Format": {
"ai_outputParser": [
[
{
"node": "Generate Text Ad Intelligence",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Image Analysis Output Format": {
"ai_outputParser": [
[
{
"node": "Generate Image Ad Intelligence",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Video Analysis Output Format": {
"ai_outputParser": [
[
{
"node": "Generate Video Ad Intelligence",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Analyze Image Ad (GPT Vision)": {
"main": [
[
{
"node": "Generate Image Ad Intelligence",
"type": "main",
"index": 0
}
]
]
},
"Generate Text Ad Intelligence": {
"main": [
[
{
"node": "Save Text Ad Analysis",
"type": "main",
"index": 0
}
]
]
},
"Generate Image Ad Intelligence": {
"main": [
[
{
"node": "Save Image Ad Analysis",
"type": "main",
"index": 0
}
]
]
},
"Generate Video Ad Intelligence": {
"main": [
[
{
"node": "Save Video Ad Analysis",
"type": "main",
"index": 0
}
]
]
},
"Filter High-Engagement Advertisers": {
"main": [
[
{
"node": "Route by Ad Content Type",
"type": "main",
"index": 0
}
]
]
},
"Scrape Facebook Ad Library with Apify": {
"main": [
[
{
"node": "Filter High-Engagement Advertisers",
"type": "main",
"index": 0
}
]
]
},
"Analyze Video Preview Image (GPT Vision)": {
"main": [
[
{
"node": "Generate Video Ad Intelligence",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
googleSheetsOAuth2ApihttpHeaderAuthopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow manually scrapes Facebook Ad Library results via apify, filters for high-like advertisers, analyzes video/image/text ads with OpenAI (vision + text), and appends a strategic summary plus rewritten ad copy for each ad to Google Sheets. Starts when you run the…
Source: https://n8n.io/workflows/17837/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.
Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.
This template is designed for marketers, content creators, and e-commerce brands who want to automate the creation of professional ad videos at scale. It’s ideal for teams looking to generate consiste
💥 Automate video ads with NanoBanana, Seedream 4, ChatGPT Image and Veo 3 - VIDE. Uses telegram, telegramTrigger, googleDrive, agent. Event-driven trigger; 63 nodes.
💥 Automate video ads with NanoBanana, Seedream 4, ChatGPT Image and Veo 3 - VIDE. Uses telegram, telegramTrigger, googleDrive, agent. Event-driven trigger; 63 nodes.