AI Facebook 광고 스파이 도구
고급
이것은Market Research, Multimodal AI분야의자동화 워크플로우로, 29개의 노드를 포함합니다.주로 Wait, Filter, Switch, GoogleDrive, HttpRequest 등의 노드를 사용하며. Apify, OpenAI, Gemini 및 Google Sheets를 기반으로 한 AI Facebook 광고 스파이 도구
사전 요구사항
- •Google Drive API 인증 정보
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
- •OpenAI API Key
사용된 노드 (29)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "FrfJDXvSHBhQrcon",
"meta": {
"instanceId": "d7661a849ead114a9aa6d9ceaf4160465aeb79532a35bde62160c840ffba9fc8",
"templateCredsSetupCompleted": true
},
"name": "AI Facebook Ad Spy Tool",
"tags": [],
"nodes": [
{
"id": "sticky-note-1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1200,
-400
],
"parameters": {
"width": 380,
"height": 200,
"content": "## 🕵️ STEP 1: Facebook Ad Library Scraping\n\nThis workflow extracts competitor ads from Facebook's public ad library:\n\n1. **Run Ad Library Scraper**: Uses Apify to scrape active Facebook ads based on search terms\n2. **Filter For Likes**: Filters out low-quality advertisers (less than 1000 page likes)\n3. **Switch**: Routes ads to different processing paths based on content type\n\n**Setup**: Replace <your-apify-api-key-here> with actual Apify API key and customize search terms"
},
"typeVersion": 1,
"name": "노드-0"
},
{
"id": "sticky-note-2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-200,
-800
],
"parameters": {
"width": 420,
"height": 240,
"content": "## 📹 STEP 2: Video Ad Processing Pipeline\n\nFor video ads, this complex pipeline analyzes content:\n\n1. **Download Video**: Gets video file from Facebook\n2. **Upload to Drive**: Stores video for Gemini processing\n3. **Begin Gemini Session**: Initiates video upload to Gemini AI\n4. **Upload to Gemini**: Transfers video for analysis\n5. **Analyze Video**: Uses Gemini's video understanding to describe content\n6. **Generate Summary**: Creates competitor analysis and rewritten ad copy\n\n**Note**: Video processing requires Gemini API for multi-modal analysis"
},
"typeVersion": 1,
"name": "노드-1"
},
{
"id": "sticky-note-3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-200,
-100
],
"parameters": {
"width": 400,
"height": 220,
"content": "## 🖼️ STEP 3: Image & Text Ad Processing\n\n**Image Route:**\n• **Analyze Image**: Uses GPT-4 Vision to describe image content\n• **Output Summary**: Generates competitor analysis with image insights\n• **Add as Type = Image**: Stores results with image prompt for recreation\n\n**Text Route:**\n• **Output Text Summary**: Analyzes text-only ads for strategy and messaging\n• **Add as Type = Text**: Stores analysis and rewritten copy\n\n**Result**: Comprehensive competitor intelligence database with recreation prompts"
},
"typeVersion": 1,
"name": "노드-2"
},
{
"id": "sticky-note-4",
"type": "n8n-nodes-base.stickyNote",
"position": [
600,
-400
],
"parameters": {
"width": 400,
"height": 220,
"content": "## 💰 BUSINESS VALUE & APPLICATIONS\n\n**Competitive Intelligence:**\n• Analyze competitor ad strategies across text, image, and video formats\n• Track messaging evolution and creative approaches\n• Identify high-performing advertisers (filtered by page likes)\n\n**Revenue Opportunities:**\n• Sell as spy tool service for $2,000+ to marketing agencies\n• Offer competitor analysis reports to PPC clients\n• Use insights for your own ad campaign optimization\n\n**Scalable System**: Process hundreds of ads automatically with detailed analysis"
},
"typeVersion": 1,
"name": "노드-3"
},
{
"id": "18536cf3-1626-44ee-95d5-6eb28baa712b",
"name": "워크플로 실행 클릭 시",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1300,
-140
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e201ba62-cc45-45e6-b50c-08f913a27c87",
"name": "스위치",
"type": "n8n-nodes-base.switch",
"position": [
-640,
-140
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Video",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9dbbe6e7-fd80-44ab-88f0-ab438cfd997e",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.snapshot.videos[0].video_sd_url }}",
"rightValue": "=https://video-"
}
]
},
"renameOutput": true
},
{
"outputKey": "Image",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "0b7cee75-ca57-4946-971e-1f526b49324f",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.snapshot.images[0].original_image_url }}",
"rightValue": "https://scontent-ho"
}
]
},
"renameOutput": true
}
]
},
"options": {
"fallbackOutput": "extra",
"renameFallbackOutput": "Text"
}
},
"typeVersion": 3.2
},
{
"id": "ca9ee8b5-c562-4339-b6ad-6c7e8d31e4ef",
"name": "좋아요 필터링",
"type": "n8n-nodes-base.filter",
"position": [
-860,
-140
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c1d74591-13e8-4c79-9a34-117cc6816dfb",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.advertiser.ad_library_page_info.page_info.likes }}",
"rightValue": 1000
}
]
}
},
"typeVersion": 2.2
},
{
"id": "abdf6521-2599-4741-9dab-f6ce60775ec7",
"name": "대기",
"type": "n8n-nodes-base.wait",
"position": [
380,
160
],
"webhookId": "1cda7407-6321-4d8d-b532-19f42514eb63",
"parameters": {
"amount": 1
},
"typeVersion": 1.1
},
{
"id": "56c2f9ea-5427-4cd1-a7ce-0f3b918960d2",
"name": "대기1",
"type": "n8n-nodes-base.wait",
"position": [
640,
-140
],
"webhookId": "1cda7407-6321-4d8d-b532-19f42514eb63",
"parameters": {
"amount": 1
},
"typeVersion": 1.1
},
{
"id": "1b41ce15-b4b1-4189-940e-f4d38062619e",
"name": "비디오 다운로드",
"type": "n8n-nodes-base.httpRequest",
"position": [
-120,
-520
],
"parameters": {
"url": "={{ $json.snapshot.videos[0].video_sd_url }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "9a1730f8-c73c-4771-a718-a6729f68374c",
"name": "비디오를 Drive에 업로드",
"type": "n8n-nodes-base.googleDrive",
"position": [
100,
-520
],
"parameters": {
"name": "Example File",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "root",
"cachedResultName": "/ (Root folder)"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "8R2NiLt8owCA0E2O",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "decfca56-689f-4332-9813-00edf6ec00b5",
"name": "대기2",
"type": "n8n-nodes-base.wait",
"position": [
2100,
-440
],
"webhookId": "1cda7407-6321-4d8d-b532-19f42514eb63",
"parameters": {
"amount": 1
},
"typeVersion": 1.1
},
{
"id": "6adbf90c-a132-4ef1-88f7-9ab798c955a3",
"name": "광고 라이브러리 스크래퍼 실행",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1080,
-140
],
"parameters": {
"url": "https://api.apify.com/v2/acts/XtaWFhbtfxyzqrFmd/run-sync-get-dataset-items",
"method": "POST",
"options": {},
"jsonBody": "{\n \"count\": 200,\n \"period\": \"last7d\",\n \"scrapeAdDetails\": true,\n \"scrapePageAds.activeStatus\": \"active\",\n \"urls\": [\n {\n \"url\": \"https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&is_targeted_country=false&media_type=all&q=%22ai%20automation%22&search_type=keyword_exact_phrase&start_date[min]=2025-06-12&start_date[max]\",\n \"method\": \"GET\"\n }\n ]\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer <yourApiKey>"
},
{
"name": "Accept",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "1380cc04-7732-4070-8306-7c986c513ce7",
"name": "이미지 광고 반복",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-420,
-140
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "dafb1f75-ba45-4c08-8581-5e6554de9089",
"name": "텍스트 광고 반복",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-420,
160
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "66fc9090-11f2-4da1-bdec-9a24be1f5669",
"name": "비디오 광고 반복",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-420,
-445
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "2a753af7-acfd-4813-9fc7-1feeae3e38ec",
"name": "Gemini 업로드 세션 시작",
"type": "n8n-nodes-base.httpRequest",
"position": [
300,
-520
],
"parameters": {
"url": "https://generativelanguage.googleapis.com/upload/v1beta/files",
"method": "POST",
"options": {
"response": {
"response": {
"fullResponse": true
}
}
},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "key",
"value": "<yourApiKey>"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "X-Goog-Upload-Protocol",
"value": "resumable"
},
{
"name": "X-Goog-Upload-Command",
"value": "start"
},
{
"name": "X-Goog-Upload-Header-Content-Length",
"value": "={{ $json.size }}"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "fed903ba-79f3-466f-b1e3-6cc72f05f341",
"name": "비디오 재다운로드",
"type": "n8n-nodes-base.googleDrive",
"position": [
520,
-520
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Upload Video to Drive').item.json.id }}"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "8R2NiLt8owCA0E2O",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "bf9a84ef-a025-4d08-bc70-0627c1e5f553",
"name": "비디오를 Gemini에 업로드",
"type": "n8n-nodes-base.httpRequest",
"position": [
740,
-520
],
"parameters": {
"url": "={{ $json.headers['x-goog-upload-url'] }}",
"method": "POST",
"options": {},
"sendBody": true,
"sendQuery": true,
"contentType": "binaryData",
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "key",
"value": "<yourApiKey>"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Content-Length",
"value": "={{ $('Upload Video to Drive').item.json.size }}"
},
{
"name": "X-Goog-Upload-Offset",
"value": "0"
},
{
"name": "X-Goog-Upload-Command",
"value": "upload, finalize"
}
]
},
"inputDataFieldName": "=data"
},
"typeVersion": 4.2
},
{
"id": "9f389a74-0097-4e4f-847f-c80494d9b8a8",
"name": "Gemini로 비디오 분석",
"type": "n8n-nodes-base.httpRequest",
"position": [
1220,
-520
],
"parameters": {
"url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent",
"method": "POST",
"options": {},
"jsonBody": "={\n \"contents\": [\n {\n \"parts\": [\n {\n \"text\": \"Describe this video in excruciating detail. Do not output anything but the description of the video.\"\n },\n {\n \"file_data\": {\n \"mime_type\": \"{{ $json.file.mimeType }}\",\n \"file_uri\": \"{{ $json.file.uri }}\"\n }\n }\n ]\n }\n ]\n}",
"sendBody": true,
"sendQuery": true,
"specifyBody": "json",
"queryParameters": {
"parameters": [
{
"name": "key",
"value": "<yourApiKey>"
}
]
}
},
"retryOnFail": true,
"typeVersion": 4.2,
"waitBetweenTries": 15
},
{
"id": "1528dc3d-fff4-452c-ad42-2d2e9bdf1f4e",
"name": "비디오 요약 출력",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1500,
-520
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "GPT-4.1"
},
"options": {
"temperature": 0.7
},
"messages": {
"values": [
{
"role": "system",
"content": "You're a helpful, intelligent advertisement analysis bot. You analyze advertisements."
},
{
"content": "Your task is to take as input a scraped javascript object from an advertisement in the FB ad library, and then summarize it + spin (repurpose, rewrite) the ad copy. \n\nYou're doing this for strategic intelligence. We run an advertising agency and we're always looking at what our competitor advertisers are doing.\n\nOutput your results in this JSON format:\n\n{\"summary\":\"\",\"rewrittenAdCopy\":\"\"}\n\nRules:\n- The intended style and attitude is generally analytical, inquisitive, and precise, despite exploring complex topics, in the “classic style” of Western writing.\nthe level of formality should be inverse to the topic’s novelty: the weirder something is, the more formal. For ‘safer’ topics, one should cut loose with the humor, epigraphs, typographical stunts and experiments, etc.\n- Avoid hedging and qualifying, even at the risk of making overly-strong claims. It is a slippery slope.\n- Use casual abbreviations (like San Francisco -> SF, thanks -> thx, question -> q ), casual contractions (like \"I've\"), shortened forms of common nouns (like \"info\", \"vid\", \"app\") as this signals more human written speech. Do not use em dashes (eliminate — from your vocabulary completely!\n- No rhetorical questions.\n- Make your summary extremely comprehensive and analytical."
},
{
"content": "=JSON scrape:\n\n{{ $('Loop Over Video Ads').item.json.toJsonString() }}\n\nVideo description:\n\n{{ $json.candidates[0].content.parts[0].text }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "oLLACDYfGm4C4ouV",
"name": "YouTube "
}
},
"typeVersion": 1.8
},
{
"id": "e3fc12fa-d845-435c-95e7-1fc121f0bb48",
"name": "유형 = 비디오로 추가",
"type": "n8n-nodes-base.googleSheets",
"position": [
1860,
-520
],
"parameters": {
"columns": {
"value": {
"type": "video",
"page_id": "={{ $('Loop Over Video Ads').item.json.page_id }}",
"summary": "={{ $json.message.content.summary }}",
"page_url": "={{ $('Loop Over Video Ads').item.json.snapshot.page_profile_uri }}",
"page_name": "={{ $('Loop Over Video Ads').item.json.snapshot.page_name }}",
"date_added": "={{ $now }}",
"image_prompt": "=",
"video_prompt": "={{ $('Analyze Video with Gemini').item.json.candidates[0].content.parts[0].text }}",
"ad_archive_id": "={{ $('Loop Over Video Ads').item.json.ad_archive_id }}",
"rewritten_ad_copy": "={{ $json.message.content.rewrittenAdCopy }}"
},
"schema": [
{
"id": "ad_archive_id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "ad_archive_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "page_id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "page_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "type",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "date_added",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "date_added",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "page_name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "page_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "page_url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "page_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "summary",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "rewritten_ad_copy",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "rewritten_ad_copy",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "image_prompt",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "image_prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "video_prompt",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "video_prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Cgm0DfKQxgtsjdw6h2LFVBtZnLAioTntzdXgfJCJIqo/edit#gid=0",
"cachedResultName": "Ads"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1Cgm0DfKQxgtsjdw6h2LFVBtZnLAioTntzdXgfJCJIqo",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Cgm0DfKQxgtsjdw6h2LFVBtZnLAioTntzdXgfJCJIqo/edit?usp=drivesdk",
"cachedResultName": "Facebook Ad Library Analyzer DB"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "EOibXIc4U8wcXyRR",
"name": "YouTube"
}
},
"typeVersion": 4.6
},
{
"id": "47291e4b-ae46-4bff-8134-8cf330cfb7aa",
"name": "이미지 분석",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-120,
-220
],
"parameters": {
"text": "What's in this image? Be extremely comprehensive.",
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "GPT-4O"
},
"options": {},
"resource": "image",
"imageUrls": "={{ $json.snapshot.images[0].original_image_url }}",
"operation": "analyze"
},
"credentials": {
"openAiApi": {
"id": "oLLACDYfGm4C4ouV",
"name": "YouTube "
}
},
"typeVersion": 1.8
},
{
"id": "34ee9e0e-4be8-41f2-b3fc-1868ec912fb8",
"name": "이미지 요약 출력",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
80,
-220
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "GPT-4.1"
},
"options": {
"temperature": 0.7
},
"messages": {
"values": [
{
"role": "system",
"content": "You're a helpful, intelligent advertisement analysis bot. You analyze advertisements."
},
{
"content": "Your task is to take as input a scraped javascript object from an advertisement in the FB ad library, and then summarize it + spin (repurpose, rewrite) the ad copy. \n\nYou're doing this for strategic intelligence. We run an advertising agency and we're always looking at what our competitor advertisers are doing.\n\nOutput your results in this JSON format:\n\n{\"summary\":\"\",\"rewrittenAdCopy\":\"\"}\n\nRules:\n- The intended style and attitude is generally analytical, inquisitive, and precise, despite exploring complex topics, in the “classic style” of Western writing.\nthe level of formality should be inverse to the topic’s novelty: the weirder something is, the more formal. For ‘safer’ topics, one should cut loose with the humor, epigraphs, typographical stunts and experiments, etc.\n- Avoid hedging and qualifying, even at the risk of making overly-strong claims. It is a slippery slope.\n- Use casual abbreviations (like San Francisco -> SF, thanks -> thx, question -> q ), casual contractions (like \"I've\"), shortened forms of common nouns (like \"info\", \"vid\", \"app\") as this signals more human written speech. Do not use em dashes (eliminate — from your vocabulary completely!\n- No rhetorical questions.\n- Make your summary extremely comprehensive and analytical."
},
{
"content": "=JSON scrape:\n\n{{ $('Loop Over Image Ads').item.json.toJsonString() }}\n\nImage description:\n\n{{ $json.content }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "oLLACDYfGm4C4ouV",
"name": "YouTube "
}
},
"typeVersion": 1.8
},
{
"id": "522169ec-669f-441a-9d20-3679426d0b9d",
"name": "유형 = 이미지로 추가",
"type": "n8n-nodes-base.googleSheets",
"position": [
440,
-220
],
"parameters": {
"columns": {
"value": {
"type": "image",
"page_id": "={{ $('Loop Over Image Ads').item.json.page_id }}",
"summary": "={{ $json.message.content.summary }}",
"page_url": "={{ $('Loop Over Image Ads').item.json.snapshot.page_profile_uri }}",
"page_name": "={{ $('Loop Over Image Ads').item.json.snapshot.page_name }}",
"date_added": "={{ $now }}",
"image_prompt": "={{ $('Analyze Image').item.json.content }}",
"ad_archive_id": "={{ $('Loop Over Image Ads').item.json.ad_archive_id }}",
"rewritten_ad_copy": "={{ $json.message.content.rewrittenAdCopy }}"
},
"schema": [
{
"id": "ad_archive_id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "ad_archive_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "page_id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "page_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "type",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "date_added",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "date_added",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "page_name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "page_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "page_url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "page_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "summary",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "rewritten_ad_copy",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "rewritten_ad_copy",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "image_prompt",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "image_prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "video_prompt",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "video_prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Cgm0DfKQxgtsjdw6h2LFVBtZnLAioTntzdXgfJCJIqo/edit#gid=0",
"cachedResultName": "Ads"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1Cgm0DfKQxgtsjdw6h2LFVBtZnLAioTntzdXgfJCJIqo",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Cgm0DfKQxgtsjdw6h2LFVBtZnLAioTntzdXgfJCJIqo/edit?usp=drivesdk",
"cachedResultName": "Facebook Ad Library Analyzer DB"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "EOibXIc4U8wcXyRR",
"name": "YouTube"
}
},
"typeVersion": 4.6
},
{
"id": "f43bb15e-9c7d-4a97-9a10-7c9ce835f1f6",
"name": "텍스트 요약 출력",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-200,
80
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "GPT-4.1"
},
"options": {
"temperature": 0.7
},
"messages": {
"values": [
{
"role": "system",
"content": "You're a helpful, intelligent advertisement analysis bot. You analyze advertisements."
},
{
"content": "Your task is to take as input a scraped javascript object from an advertisement in the FB ad library, and then summarize it + spin (repurpose, rewrite) the ad copy. \n\nYou're doing this for strategic intelligence. We run an advertising agency and we're always looking at what our competitor advertisers are doing.\n\nOutput your results in this JSON format:\n\n{\"summary\":\"\",\"rewrittenAdCopy\":\"\"}\n\nRules:\n- The intended style and attitude is generally analytical, inquisitive, and precise, despite exploring complex topics, in the “classic style” of Western writing.\nthe level of formality should be inverse to the topic’s novelty: the weirder something is, the more formal. For ‘safer’ topics, one should cut loose with the humor, epigraphs, typographical stunts and experiments, etc.\n- Avoid hedging and qualifying, even at the risk of making overly-strong claims. It is a slippery slope.\n- Use casual abbreviations (like San Francisco -> SF, thanks -> thx, question -> q ), casual contractions (like \"I've\"), shortened forms of common nouns (like \"info\", \"vid\", \"app\") as this signals more human written speech. Do not use em dashes (eliminate — from your vocabulary completely!\n- No rhetorical questions.\n- Make your summary extremely comprehensive and analytical."
},
{
"content": "={{ $json.toJsonString() }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "oLLACDYfGm4C4ouV",
"name": "YouTube "
}
},
"typeVersion": 1.8
},
{
"id": "62aec040-3729-447b-864d-00685857d721",
"name": "유형 = 텍스트로 추가",
"type": "n8n-nodes-base.googleSheets",
"position": [
160,
80
],
"parameters": {
"columns": {
"value": {
"type": "text",
"page_id": "={{ $('Loop Over Text Ads').item.json.page_id }}",
"summary": "={{ $json.message.content.summary }}",
"page_url": "={{ $('Loop Over Text Ads').item.json.snapshot.page_profile_uri }}",
"page_name": "={{ $('Loop Over Text Ads').item.json.snapshot.page_name }}",
"date_added": "={{ $now }}",
"ad_archive_id": "={{ $('Loop Over Text Ads').item.json.ad_archive_id }}",
"rewritten_ad_copy": "={{ $json.message.content.rewrittenAdCopy }}"
},
"schema": [
{
"id": "ad_archive_id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "ad_archive_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "page_id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "page_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "type",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "date_added",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "date_added",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "page_name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "page_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "page_url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "page_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "summary",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "rewritten_ad_copy",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "rewritten_ad_copy",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "image_prompt",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "image_prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "video_prompt",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "video_prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Cgm0DfKQxgtsjdw6h2LFVBtZnLAioTntzdXgfJCJIqo/edit#gid=0",
"cachedResultName": "Ads"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1Cgm0DfKQxgtsjdw6h2LFVBtZnLAioTntzdXgfJCJIqo",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Cgm0DfKQxgtsjdw6h2LFVBtZnLAioTntzdXgfJCJIqo/edit?usp=drivesdk",
"cachedResultName": "Facebook Ad Library Analyzer DB"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "EOibXIc4U8wcXyRR",
"name": "YouTube"
}
},
"typeVersion": 4.6
},
{
"id": "7079dc10-2ce5-4df9-889a-0e861f1025a5",
"name": "스티커 메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1320,
-560
],
"parameters": {
"width": 700,
"height": 260,
"content": "## AI Facebook Ad Spy Tool\n\nSteps:\n1. Add API key to \"Run Ad Library Scraper\" node\n2. Add filtering threshold in \"Filter For Likes\" node\n3. Add Gemini API key to \"Begin Gemini Upload Session\", \"Upload Video to Gemini\", and \"Analyze Video with Gemini\" nodes\n4. Adjust prompts to AI as needed and swap in your Google Sheet in the Google Sheets nodes.\n\n\n### Happy building!"
},
"typeVersion": 1
},
{
"id": "33c52cea-4169-43b1-91e9-f8c6c35f06e1",
"name": "대기3",
"type": "n8n-nodes-base.wait",
"position": [
960,
-520
],
"webhookId": "ac11c85a-5b73-4a29-9667-615e811a5ad8",
"parameters": {
"amount": 15
},
"typeVersion": 1.1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "b72f86e7-7d73-495b-935c-f99008fcd705",
"connections": {
"abdf6521-2599-4741-9dab-f6ce60775ec7": {
"main": [
[
{
"node": "dafb1f75-ba45-4c08-8581-5e6554de9089",
"type": "main",
"index": 0
}
]
]
},
"56c2f9ea-5427-4cd1-a7ce-0f3b918960d2": {
"main": [
[
{
"node": "1380cc04-7732-4070-8306-7c986c513ce7",
"type": "main",
"index": 0
}
]
]
},
"decfca56-689f-4332-9813-00edf6ec00b5": {
"main": [
[
{
"node": "66fc9090-11f2-4da1-bdec-9a24be1f5669",
"type": "main",
"index": 0
}
]
]
},
"33c52cea-4169-43b1-91e9-f8c6c35f06e1": {
"main": [
[
{
"node": "9f389a74-0097-4e4f-847f-c80494d9b8a8",
"type": "main",
"index": 0
}
]
]
},
"e201ba62-cc45-45e6-b50c-08f913a27c87": {
"main": [
[
{
"node": "66fc9090-11f2-4da1-bdec-9a24be1f5669",
"type": "main",
"index": 0
}
],
[
{
"node": "1380cc04-7732-4070-8306-7c986c513ce7",
"type": "main",
"index": 0
}
],
[
{
"node": "dafb1f75-ba45-4c08-8581-5e6554de9089",
"type": "main",
"index": 0
}
]
]
},
"47291e4b-ae46-4bff-8134-8cf330cfb7aa": {
"main": [
[
{
"node": "34ee9e0e-4be8-41f2-b3fc-1868ec912fb8",
"type": "main",
"index": 0
}
]
]
},
"1b41ce15-b4b1-4189-940e-f4d38062619e": {
"main": [
[
{
"node": "9a1730f8-c73c-4771-a718-a6729f68374c",
"type": "main",
"index": 0
}
]
]
},
"ca9ee8b5-c562-4339-b6ad-6c7e8d31e4ef": {
"main": [
[
{
"node": "e201ba62-cc45-45e6-b50c-08f913a27c87",
"type": "main",
"index": 0
}
]
]
},
"fed903ba-79f3-466f-b1e3-6cc72f05f341": {
"main": [
[
{
"node": "bf9a84ef-a025-4d08-bc70-0627c1e5f553",
"type": "main",
"index": 0
}
]
]
},
"62aec040-3729-447b-864d-00685857d721": {
"main": [
[
{
"node": "abdf6521-2599-4741-9dab-f6ce60775ec7",
"type": "main",
"index": 0
}
]
]
},
"dafb1f75-ba45-4c08-8581-5e6554de9089": {
"main": [
[],
[
{
"node": "f43bb15e-9c7d-4a97-9a10-7c9ce835f1f6",
"type": "main",
"index": 0
}
]
]
},
"522169ec-669f-441a-9d20-3679426d0b9d": {
"main": [
[
{
"node": "56c2f9ea-5427-4cd1-a7ce-0f3b918960d2",
"type": "main",
"index": 0
}
]
]
},
"e3fc12fa-d845-435c-95e7-1fc121f0bb48": {
"main": [
[
{
"node": "decfca56-689f-4332-9813-00edf6ec00b5",
"type": "main",
"index": 0
}
]
]
},
"1380cc04-7732-4070-8306-7c986c513ce7": {
"main": [
[],
[
{
"node": "47291e4b-ae46-4bff-8134-8cf330cfb7aa",
"type": "main",
"index": 0
}
]
]
},
"66fc9090-11f2-4da1-bdec-9a24be1f5669": {
"main": [
[],
[
{
"node": "1b41ce15-b4b1-4189-940e-f4d38062619e",
"type": "main",
"index": 0
}
]
]
},
"f43bb15e-9c7d-4a97-9a10-7c9ce835f1f6": {
"main": [
[
{
"node": "62aec040-3729-447b-864d-00685857d721",
"type": "main",
"index": 0
}
]
]
},
"34ee9e0e-4be8-41f2-b3fc-1868ec912fb8": {
"main": [
[
{
"node": "522169ec-669f-441a-9d20-3679426d0b9d",
"type": "main",
"index": 0
}
]
]
},
"1528dc3d-fff4-452c-ad42-2d2e9bdf1f4e": {
"main": [
[
{
"node": "e3fc12fa-d845-435c-95e7-1fc121f0bb48",
"type": "main",
"index": 0
}
]
]
},
"9a1730f8-c73c-4771-a718-a6729f68374c": {
"main": [
[
{
"node": "2a753af7-acfd-4813-9fc7-1feeae3e38ec",
"type": "main",
"index": 0
}
]
]
},
"6adbf90c-a132-4ef1-88f7-9ab798c955a3": {
"main": [
[
{
"node": "ca9ee8b5-c562-4339-b6ad-6c7e8d31e4ef",
"type": "main",
"index": 0
}
]
]
},
"bf9a84ef-a025-4d08-bc70-0627c1e5f553": {
"main": [
[
{
"node": "33c52cea-4169-43b1-91e9-f8c6c35f06e1",
"type": "main",
"index": 0
}
]
]
},
"9f389a74-0097-4e4f-847f-c80494d9b8a8": {
"main": [
[
{
"node": "1528dc3d-fff4-452c-ad42-2d2e9bdf1f4e",
"type": "main",
"index": 0
}
]
]
},
"2a753af7-acfd-4813-9fc7-1feeae3e38ec": {
"main": [
[
{
"node": "fed903ba-79f3-466f-b1e3-6cc72f05f341",
"type": "main",
"index": 0
}
]
]
},
"18536cf3-1626-44ee-95d5-6eb28baa712b": {
"main": [
[
{
"node": "6adbf90c-a132-4ef1-88f7-9ab798c955a3",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 시장 조사, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
광고 모니터링 도구 (AI 모델 이름 포함: GPT-4, Gemini)
广告监测工具(含AI模型名称:GPT-4、Gemini)
Wait
Filter
Switch
+
Wait
Filter
Switch
29 노드Electrabot
시장 조사
제 작업 흐름
Apify, GPT-4o, Facebook 광고 라이브러리를 사용하여 경쟁 광고 연구 및 이미지 생성을 수행합니다.
Set
Wait
Limit
+
Set
Wait
Limit
32 노드Nick Saraev
콘텐츠 제작
LinkedIn 및 X 바이럴 콘텐츠 자동 엔진
사용AI생성및게시자동생성LinkedIn및X의病毒콘텐츠
If
Set
Wait
+
If
Set
Wait
156 노드Diptamoy Barman
콘텐츠 제작
Barbacoaexpert1 AI 헤어 생성기
Apify, GPT-4, Google Drive를 사용하여 경쟁자에서 AI Facebook 광고 변이 생성
Set
Wait
Limit
+
Set
Wait
Limit
29 노드Electrabot
콘텐츠 제작
Gemini_NanoBanana_템플릿
Fal.ai 모델(nano-banana, WAN2.2, Veo3)을 사용하여 Google Sheets에서 UGC 광고 생성
If
Set
Code
+
If
Set
Code
36 노드Jaruphat J.
콘텐츠 제작
WordPress 블로그 자동화 프로페셔널 에디션(심층 연구) v2.1 마켓
GPT-4o, Perplexity AI 및 다국어 지원을 사용한 SEO 최적화 블로그 생성 자동화
If
Set
Xml
+
If
Set
Xml
125 노드Daniel Ng
콘텐츠 제작
워크플로우 정보
난이도
고급
노드 수29
카테고리2
노드 유형10
저자
Nick Saraev
@nicksaraevHi 👋 I'm Nick. I make money with automation & teach others how they can too. If you have any questions about my templates or about my n8n builds, feel free to ask and I'll happily respond in the comments. Thanks for reading!
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유