Apify와 Firecrawl을 사용하여 Google Maps 상인 추출 및 연락처 추출
고급
이것은Sales, Marketing분야의자동화 워크플로우로, 18개의 노드를 포함합니다.주로 If, Code, Wait, Filter, HttpRequest 등의 노드를 사용하며. Apify와 Firecrawl을 사용한 Google Maps 상인 정보 및 연락처 추출
사전 요구사항
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "95RHN758KyIlB84T",
"meta": {
"instanceId": "8d41476c63702cd0f2be55363b48153c5d4820bb18197ca147e7be50ef236112",
"templateCredsSetupCompleted": true
},
"name": "Google Maps business scraper with contact extraction via Apify and Firecrawl",
"tags": [],
"nodes": [
{
"id": "17ab0386-4f7f-4f72-ab28-399febe4bf84",
"name": "스케줄 트리거",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
0,
-125
],
"parameters": {
"rule": {
"interval": [
{
"field": "minutes",
"minutesInterval": 30
}
]
}
},
"typeVersion": 1.1
},
{
"id": "2e7080b6-a5a4-4571-933f-3a33979037e8",
"name": "완료까지 반복",
"type": "n8n-nodes-base.if",
"position": [
1100,
-125
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "de704919-205a-470f-a417-b297fbbdbaf8",
"operator": {
"type": "string",
"operation": "notEquals"
},
"leftValue": "={{ $json.data.status }}",
"rightValue": "SUCCEEDED"
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "3e062954-93b9-48d7-b5dc-29ff579793af",
"name": "대기 중인 쿼리 읽기",
"type": "n8n-nodes-base.googleSheets",
"position": [
220,
-125
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "false",
"lookupColumn": "Status"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=0",
"cachedResultName": "Query"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk",
"cachedResultName": "Google Maps Scraper"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "V4NHfo08zBK4IW4e",
"name": "[Naveen]Google Sheets account"
}
},
"typeVersion": 4.2,
"alwaysOutputData": true
},
{
"id": "63d7b375-c4a6-42ae-b9ef-51f963edaa72",
"name": "Apify 스크래핑 작업 시작",
"type": "n8n-nodes-base.httpRequest",
"position": [
440,
-125
],
"parameters": {
"url": "https://api.apify.com/v2/acts/compass~crawler-google-places/runs",
"method": "POST",
"options": {},
"jsonBody": "={\n \"searchStringsArray\": [\n \"restaurant\"\n ],\n \"locationQuery\": \"New York, USA\",\n \"maxCrawledPlacesPerSearch\": 15,\n \"language\": \"en\",\n \"maximumLeadsEnrichmentRecords\": 0,\n \"maxImages\": 0\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
}
]
}
},
"credentials": {
"httpQueryAuth": {
"id": "Zg8dzYM9LryztYYp",
"name": "[Apify/Sean]Query Auth"
},
"httpHeaderAuth": {
"id": "wQYxWVdhRcoCOOit",
"name": "[Apify/Sean]Header Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "958eb9fc-14f5-41f1-9055-10e0f889c039",
"name": "작업 성공 대기",
"type": "n8n-nodes-base.wait",
"position": [
660,
-125
],
"webhookId": "97a65079-8ee5-45a2-9de0-afd263bbbe34",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "32fa03e3-a5ac-4ae3-b03a-2d99cb5d3079",
"name": "스크래핑 상태 확인",
"type": "n8n-nodes-base.httpRequest",
"position": [
880,
-200
],
"parameters": {
"url": "=https://api.apify.com/v2/actor-runs/{{ $json.data.id }}",
"options": {
"timeout": 10000
},
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
}
]
}
},
"credentials": {
"httpQueryAuth": {
"id": "Zg8dzYM9LryztYYp",
"name": "[Apify/Sean]Query Auth"
},
"httpHeaderAuth": {
"id": "wQYxWVdhRcoCOOit",
"name": "[Apify/Sean]Header Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "97c84abb-c21e-497c-a2eb-1bf4b01db0ca",
"name": "스크래핑 결과 가져오기",
"type": "n8n-nodes-base.httpRequest",
"position": [
1320,
-125
],
"parameters": {
"url": "=https://api.apify.com/v2/datasets/{{ $json.data.defaultDatasetId }}/items",
"options": {
"timeout": 10000
},
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
}
]
}
},
"credentials": {
"httpQueryAuth": {
"id": "Zg8dzYM9LryztYYp",
"name": "[Apify/Sean]Query Auth"
},
"httpHeaderAuth": {
"id": "wQYxWVdhRcoCOOit",
"name": "[Apify/Sean]Header Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "383d8508-54ba-4fbf-9d4b-f13487d1ff25",
"name": "비즈니스 데이터 저장",
"type": "n8n-nodes-base.googleSheets",
"position": [
1540,
-125
],
"parameters": {
"columns": {
"value": {
"phone": "={{ $json.phone }}",
"title": "={{ $json.title }}",
"status": "false",
"address": "={{ $json.address }}",
"website": "={{ $json.website }}",
"categoryName": "={{ $json.categoryName }}",
"searchString": "={{ $json.searchString }}"
},
"schema": [
{
"id": "searchString",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "searchString",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "title",
"type": "string",
"display": true,
"required": false,
"displayName": "title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "categoryName",
"type": "string",
"display": true,
"required": false,
"displayName": "categoryName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "address",
"type": "string",
"display": true,
"required": false,
"displayName": "address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "phone",
"type": "string",
"display": true,
"required": false,
"displayName": "phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "website",
"type": "string",
"display": true,
"required": false,
"displayName": "website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"searchString"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1948906848,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=1948906848",
"cachedResultName": "Data"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk",
"cachedResultName": "Google Maps Scraper"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "V4NHfo08zBK4IW4e",
"name": "[Naveen]Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "cd083a40-2270-44e2-8683-ae3b4d5b85a8",
"name": "웹사이트 보유 비즈니스 필터링",
"type": "n8n-nodes-base.filter",
"position": [
1760,
-125
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "2218f0be-2c48-4a1a-bd21-8bdb67c495a1",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.website }}",
"rightValue": ""
},
{
"id": "d0ef3194-ee94-45c5-b9c3-5db32f08d1b5",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "false"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "234a63b0-3741-43d2-8a8b-ac29d6137ddb",
"name": "배치 처리 로직",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1980,
-125
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "63e8e91a-6012-4073-b03d-2158672288ee",
"name": "웹사이트 콘텐츠 스크래핑",
"type": "n8n-nodes-base.httpRequest",
"position": [
2260,
-220
],
"parameters": {
"url": "https://api.firecrawl.dev/v1/scrape",
"method": "POST",
"options": {},
"jsonBody": "={\n \"url\": \"{{ $json.website }}\",\n \"formats\": [\n \"html\"\n ]\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "dIJc7Mqjejgs6m3x",
"name": "[Firecrawl/Naveen]Bearer Auth"
},
"httpHeaderAuth": {
"id": "wQYxWVdhRcoCOOit",
"name": "[Apify/Sean]Header Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "d9c1b4dc-c741-4dff-a9cd-0dd6527d514a",
"name": "연락처 정보 추출",
"type": "n8n-nodes-base.code",
"position": [
2480,
-220
],
"parameters": {
"jsCode": "// N8N Code Node - Extract emails, LinkedIn, Facebook, Instagram for single item\nconst item = $input.first();\n\n// Get the text content to search (adjust field names as needed)\nconst textContent = item.json.data.html;\n\n// Initialize result object\nconst result = {\n website: $('Batch Processing Logic').first().json.website,\n emails: \"None\",\n linkedin: \"None\", \n facebook: \"None\",\n instagram: \"None\",\n twitter: \"None\"\n};\n\n// Email extraction regex - matches common email patterns\nconst emailRegex = /\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b/gi;\nconst emails = textContent.match(emailRegex);\n\nif (emails && emails.length > 0) {\n // Remove duplicates and filter out common non-email matches\n const uniqueEmails = [...new Set(emails)].filter(email => {\n const lowerEmail = email.toLowerCase();\n return !lowerEmail.includes('example.com') && \n !lowerEmail.includes('test@') &&\n !lowerEmail.includes('noreply@') &&\n !lowerEmail.includes('no-reply@') &&\n lowerEmail.length > 5;\n });\n \n if (uniqueEmails.length > 0) {\n result.emails = uniqueEmails.length === 1 ? uniqueEmails[0] : uniqueEmails.join(', ');\n }\n}\n\n// LinkedIn extraction - improved pattern\nconst linkedinRegex = /(?:https?:\\/\\/)?(?:www\\.)?linkedin\\.com\\/(?:in\\/|company\\/|pub\\/)[a-zA-Z0-9\\-._]+\\/?/gi;\nconst linkedinMatches = textContent.match(linkedinRegex);\nif (linkedinMatches && linkedinMatches.length > 0) {\n const cleanLinkedin = linkedinMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n result.linkedin = cleanLinkedin;\n}\n\n// Facebook extraction - improved to match numeric IDs and usernames\nconst facebookRegex = /(?:https?:\\/\\/)?(?:www\\.|m\\.|mobile\\.)?facebook\\.com\\/(?:[^\\/\\s]+\\/)*[^\\/\\s?#]+/gi;\nconst facebookMatches = textContent.match(facebookRegex);\nif (facebookMatches && facebookMatches.length > 0) {\n const cleanFacebook = facebookMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n result.facebook = cleanFacebook;\n}\n\n// Instagram extraction - improved to match various URL formats\nconst instagramRegex = /(?:https?:\\/\\/)?(?:www\\.)?instagram\\.com\\/[a-zA-Z0-9\\-._]+\\/?/gi;\nconst instagramMatches = textContent.match(instagramRegex);\nif (instagramMatches && instagramMatches.length > 0) {\n const cleanInstagram = instagramMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n result.instagram = cleanInstagram;\n}\n\n// Twitter/X extraction - improved to match usernames properly\nconst twitterRegex = /(?:https?:\\/\\/)?(?:www\\.)?(?:twitter\\.com|x\\.com)\\/[a-zA-Z0-9_]+\\/?/gi;\nconst twitterMatches = textContent.match(twitterRegex);\nif (twitterMatches && twitterMatches.length > 0) {\n const cleanTwitter = twitterMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n result.twitter = cleanTwitter;\n}\n\n// Alternative extraction for social handles without full URLs\n// Look for @username patterns for Instagram and Twitter\nif (result.instagram === \"None\") {\n const igHandleRegex = /@([a-zA-Z0-9._]{1,30})/gi;\n const igHandles = textContent.match(igHandleRegex);\n if (igHandles && igHandles.length > 0) {\n const username = igHandles[0].replace('@', '');\n if (username.length > 0 && !username.includes(' ')) {\n result.instagram = `https://www.instagram.com/${username}`;\n }\n }\n}\n\n// Look for Twitter handles without full URLs\nif (result.twitter === \"None\") {\n const twitterHandleRegex = /@([a-zA-Z0-9_]{1,15})/gi;\n const twitterHandles = textContent.match(twitterHandleRegex);\n if (twitterHandles && twitterHandles.length > 0) {\n const username = twitterHandles[0].replace('@', '');\n if (username.length > 0 && !username.includes(' ')) {\n result.twitter = `https://www.x.com/${username}`;\n }\n }\n}\n\n// Clean up URLs - remove trailing slashes and parameters\n['linkedin', 'facebook', 'instagram', 'twitter'].forEach(platform => {\n if (result[platform] !== \"None\") {\n result[platform] = result[platform].split('?')[0].split('#')[0].replace(/\\/$/, '');\n }\n});\n\nreturn result;"
},
"typeVersion": 2
},
{
"id": "32ef5f5d-6457-4edc-9299-afea61af4784",
"name": "연락처 세부정보 저장",
"type": "n8n-nodes-base.googleSheets",
"position": [
2700,
-220
],
"parameters": {
"columns": {
"value": {
"emails": "={{ $json.emails }}",
"twitter": "={{ $json.twitter }}",
"website": "={{ $json.website }}",
"facebook": "={{ $json.facebook }}",
"linkedin": "={{ $json.linkedin }}",
"instagram": "={{ $json.instagram }}"
},
"schema": [
{
"id": "website",
"type": "string",
"display": true,
"required": false,
"displayName": "website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "emails",
"type": "string",
"display": true,
"required": false,
"displayName": "emails",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "linkedin",
"type": "string",
"display": true,
"required": false,
"displayName": "linkedin",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "facebook",
"type": "string",
"display": true,
"required": false,
"displayName": "facebook",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "instagram",
"type": "string",
"display": true,
"required": false,
"displayName": "instagram",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "twitter",
"type": "string",
"display": true,
"required": false,
"displayName": "twitter",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 2056137853,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=2056137853",
"cachedResultName": "Details"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk",
"cachedResultName": "Google Maps Scraper"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "V4NHfo08zBK4IW4e",
"name": "[Naveen]Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "374d7e2f-6e14-4dd1-a51a-f0cce37945d8",
"name": "처리 완료 표시",
"type": "n8n-nodes-base.googleSheets",
"position": [
2920,
-160
],
"parameters": {
"columns": {
"value": {
"status": "true",
"website": "={{ $json.website }}"
},
"schema": [
{
"id": "searchString",
"type": "string",
"display": true,
"required": false,
"displayName": "searchString",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "title",
"type": "string",
"display": true,
"required": false,
"displayName": "title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "categoryName",
"type": "string",
"display": true,
"required": false,
"displayName": "categoryName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "address",
"type": "string",
"display": true,
"required": false,
"displayName": "address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "phone",
"type": "string",
"display": true,
"required": false,
"displayName": "phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "website",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "hasWebsite",
"type": "string",
"display": true,
"required": false,
"displayName": "hasWebsite",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"website"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1948906848,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=1948906848",
"cachedResultName": "Data"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk",
"cachedResultName": "Google Maps Scraper"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "V4NHfo08zBK4IW4e",
"name": "[Naveen]Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "52c246a4-c483-4539-b22d-f4b046c16724",
"name": "스티커 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
20,
-360
],
"parameters": {
"color": 4,
"width": 640,
"height": 180,
"content": "## 🚀 INITIALIZATION PHASE\n- Triggers every 30 minutes\n- Reads unprocessed records from [Google Sheet](https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=sharing)\n- Starts Google Places scraper for restaurants\n- Waits for completion"
},
"typeVersion": 1
},
{
"id": "2983ac2d-5627-4ab1-9fbf-c09ed8886bf6",
"name": "스티커 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
940,
-420
],
"parameters": {
"width": 660,
"height": 180,
"content": "## 📊 DATA COLLECTION PHASE\n- Monitors scraper job status\n- Loops until job completes\n- Fetches scraped restaurant data\n- Saves to \"Data\" sheet in [Google Sheets](https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=sharing)"
},
"typeVersion": 1
},
{
"id": "dc13180b-cf28-44a1-b6e7-c4f0c00f57c2",
"name": "스티커 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1940,
-460
],
"parameters": {
"color": 6,
"width": 740,
"height": 200,
"content": "## 🌐 WEBSITE PROCESSING PHASE\n- Filters restaurants with valid websites\n- Loops through each website\n- Scrapes website content with Firecrawl\n- Extracts contact information (emails, social media)\n- Saves to \"Details\" sheet and marks as processed"
},
"typeVersion": 1
},
{
"id": "7a23b11a-22ce-4816-a336-6cd28a90aa49",
"name": "스티커 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
2260,
80
],
"parameters": {
"width": 580,
"height": 120,
"content": "## 🔄 LOOPS\n**Status Check Loop**: Continues until scraper job is complete\n**Website Processing Loop**: Processes each restaurant website individually"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "b94bf772-530d-4a3c-b024-795c2a7cfe4a",
"connections": {
"17ab0386-4f7f-4f72-ab28-399febe4bf84": {
"main": [
[
{
"node": "3e062954-93b9-48d7-b5dc-29ff579793af",
"type": "main",
"index": 0
}
]
]
},
"374d7e2f-6e14-4dd1-a51a-f0cce37945d8": {
"main": [
[
{
"node": "234a63b0-3741-43d2-8a8b-ac29d6137ddb",
"type": "main",
"index": 0
}
]
]
},
"383d8508-54ba-4fbf-9d4b-f13487d1ff25": {
"main": [
[
{
"node": "cd083a40-2270-44e2-8683-ae3b4d5b85a8",
"type": "main",
"index": 0
}
]
]
},
"2e7080b6-a5a4-4571-933f-3a33979037e8": {
"main": [
[
{
"node": "958eb9fc-14f5-41f1-9055-10e0f889c039",
"type": "main",
"index": 0
}
],
[
{
"node": "97c84abb-c21e-497c-a2eb-1bf4b01db0ca",
"type": "main",
"index": 0
}
]
]
},
"3e062954-93b9-48d7-b5dc-29ff579793af": {
"main": [
[
{
"node": "63d7b375-c4a6-42ae-b9ef-51f963edaa72",
"type": "main",
"index": 0
}
]
]
},
"32ef5f5d-6457-4edc-9299-afea61af4784": {
"main": [
[
{
"node": "374d7e2f-6e14-4dd1-a51a-f0cce37945d8",
"type": "main",
"index": 0
}
]
]
},
"958eb9fc-14f5-41f1-9055-10e0f889c039": {
"main": [
[
{
"node": "32fa03e3-a5ac-4ae3-b03a-2d99cb5d3079",
"type": "main",
"index": 0
}
]
]
},
"32fa03e3-a5ac-4ae3-b03a-2d99cb5d3079": {
"main": [
[
{
"node": "2e7080b6-a5a4-4571-933f-3a33979037e8",
"type": "main",
"index": 0
}
]
]
},
"97c84abb-c21e-497c-a2eb-1bf4b01db0ca": {
"main": [
[
{
"node": "383d8508-54ba-4fbf-9d4b-f13487d1ff25",
"type": "main",
"index": 0
}
]
]
},
"234a63b0-3741-43d2-8a8b-ac29d6137ddb": {
"main": [
[],
[
{
"node": "63e8e91a-6012-4073-b03d-2158672288ee",
"type": "main",
"index": 0
}
]
]
},
"63e8e91a-6012-4073-b03d-2158672288ee": {
"main": [
[
{
"node": "d9c1b4dc-c741-4dff-a9cd-0dd6527d514a",
"type": "main",
"index": 0
}
]
]
},
"63d7b375-c4a6-42ae-b9ef-51f963edaa72": {
"main": [
[
{
"node": "958eb9fc-14f5-41f1-9055-10e0f889c039",
"type": "main",
"index": 0
}
]
]
},
"d9c1b4dc-c741-4dff-a9cd-0dd6527d514a": {
"main": [
[
{
"node": "32ef5f5d-6457-4edc-9299-afea61af4784",
"type": "main",
"index": 0
}
]
]
},
"cd083a40-2270-44e2-8683-ae3b4d5b85a8": {
"main": [
[
{
"node": "234a63b0-3741-43d2-8a8b-ac29d6137ddb",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 영업, 마케팅
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Google Maps를 사용하여 잠재 고객 생성 - AlexK1919
Google Maps를 사용하여 잠재 고객 생성
If
Set
Code
+
If
Set
Code
42 노드Alex Kim
영업
YouTube RSS를 Slack 요약으로
Google Sheets, RapidAPI, GPT-4o-mini를 사용하여 새 YouTube 비디오 요약을 Slack으로 전송
If
Set
Xml
+
If
Set
Xml
40 노드Naveen Choudhary
인공지능
Overpass 잠재 고객 생성 시스템
OpenStreetMap 데이터를 사용하여 Google Sheets에 비즈니스 유치원 저장
If
Set
Code
+
If
Set
Code
27 노드Akram Kadri
영업
[템플릿] AI 반려동물 가게 v8
🐶 AI 펫 샵 어시스턴트 - GPT-4o, Google 캘린더 및 WhatsApp/Instagram/Facebook 통합
If
N8n
Set
+
If
N8n
Set
244 노드Amanda Benks
영업
AI个性化多제품이메일마케팅
基于SMTP轮换의AI个性化多제품이메일마케팅(GPT-4o/o3-mini)
If
Code
Wait
+
If
Code
Wait
41 노드Badr
영업
Bright Data와 LLMs로 대규모 초개인화 아웃리치 자동화
Bright Data 및 대규모 언어 모델을 통한 대규모 초개인화 아웃리치 자동화
If
Set
Wait
+
If
Set
Wait
21 노드Yaron Been
영업