Google 검색 및 지도에서 Google Sheets로 잠재 리드 자동 생성
고급
이것은자동화 워크플로우로, 40개의 노드를 포함합니다.주로 If, Set, Code, Wait, Merge 등의 노드를 사용하며. Google 검색 및 지도에서 Google Sheets로의 잠재 고객 자동 생성
사전 요구사항
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
사용된 노드 (40)
카테고리
-
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "J3HFTy4HBCyARaO4",
"meta": {
"instanceId": "1a54c41d9050a8f1fa6f74ca858828ad9fb97b9fafa3e9760e576171c531a787"
},
"name": "Automate Lead Generation from Google Search & Maps to Google Sheets",
"tags": [
{
"id": "m1paRrANi4GrQXxX",
"name": "AI Internal",
"createdAt": "2025-09-18T04:05:25.667Z",
"updatedAt": "2025-09-18T04:05:25.667Z"
}
],
"nodes": [
{
"id": "9f1247da-3797-481a-b835-a5c780b050d4",
"name": "채팅 메시지 수신 시",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-1344,
496
],
"webhookId": "7058453f-20ea-4f70-b9b8-0e4063a52ad2",
"parameters": {
"options": {}
},
"typeVersion": 1.3
},
{
"id": "f8df5c5f-af30-4f62-9aab-e010dd9c9c91",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
256,
-96
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "79d732fc-8a88-4a84-8a18-8cc9b689b3c0",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json[\"Email ID\"] }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "a496c6f6-fa85-4a33-85f4-98e9b00f4af2",
"name": "Append row in sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
880,
-128
],
"parameters": {
"columns": {
"value": {
"URL": "={{ $json.URL }}",
"Type": "={{ $json.Type }}",
"Socials": "={{ $json.Socials }}",
"Description": "={{ $json.Description }}",
"Search Query": "={{ $('When chat message received').item.json.chatInput }}",
"Business Name": "={{ $json[\"Business Name\"] }}",
"Primary Email": "={{ $json[\"Email ID\"] }}",
"Contact Number": "={{ $json[\"Contact Number\"] }}"
},
"schema": [
{
"id": "Search Query",
"type": "string",
"display": true,
"required": false,
"displayName": "Search Query",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Business Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Business Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Primary Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Primary Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Rest Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Rest Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contact Number",
"type": "string",
"display": true,
"required": false,
"displayName": "Contact Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "URL",
"type": "string",
"display": true,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Description",
"type": "string",
"display": true,
"required": false,
"displayName": "Description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Type",
"type": "string",
"display": true,
"required": false,
"displayName": "Type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Socials",
"type": "string",
"display": true,
"required": false,
"displayName": "Socials",
"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/1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8/edit?usp=drivesdk",
"cachedResultName": "Leads Via Google Search"
}
},
"typeVersion": 4.7
},
{
"id": "82cf4f94-509f-4698-9982-af48caa035de",
"name": "중복 제거",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
1056,
1136
],
"parameters": {
"options": {}
},
"typeVersion": 2
},
{
"id": "ff0491b3-1695-48be-863d-d7e8bd6529cd",
"name": "항목 반복",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1312,
1104
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "d441d472-e687-44d7-9ddb-fb1f8baa7c45",
"name": "Extract URLs",
"type": "n8n-nodes-base.code",
"position": [
592,
1120
],
"parameters": {
"jsCode": "const input = $input.first().json.data\nconst regex = /https?:\\/\\/[^\\/\\s\"'>]+/g\nconst websites = input.match(regex)\nreturn websites.map(website => ({json:{website}}))"
},
"typeVersion": 2
},
{
"id": "30354b5f-e671-42fb-be46-38dcd63a6b10",
"name": "Scrape Google Maps",
"type": "n8n-nodes-base.httpRequest",
"position": [
368,
1136
],
"parameters": {
"url": "=https://www.google.com/maps/search/{{ $json.searchQuery }}",
"options": {
"response": {
"response": {
"fullResponse": true
}
},
"allowUnauthorizedCerts": true
}
},
"typeVersion": 4.2
},
{
"id": "bdba745f-cec0-4df6-8f95-cff4eb9ea1ff",
"name": "필터 Google URLs",
"type": "n8n-nodes-base.filter",
"position": [
832,
1136
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "bf0a5053-9660-457c-9581-964793bb6d7d",
"operator": {
"type": "string",
"operation": "notContains"
},
"leftValue": "={{ $json.website }}",
"rightValue": "schema"
},
{
"id": "9110b9e0-12aa-45cc-bde0-9eda8c10970e",
"operator": {
"type": "string",
"operation": "notContains"
},
"leftValue": "={{ $json.website }}",
"rightValue": "google"
},
{
"id": "fb9b6ed6-96a5-4560-ab10-b8a4b9a61a2b",
"operator": {
"type": "string",
"operation": "notContains"
},
"leftValue": "={{ $json.website }}",
"rightValue": "gg"
},
{
"id": "10500c0b-cdbd-4816-aba3-df60d69845dc",
"operator": {
"type": "string",
"operation": "notContains"
},
"leftValue": "={{ $json.website }}",
"rightValue": "gstatic"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "ed333dd0-1e0d-4c97-8b63-7535427f8a8d",
"name": "대기2",
"type": "n8n-nodes-base.wait",
"position": [
1696,
1120
],
"webhookId": "19cc6ed4-4fe7-485b-b879-c679e4b3374d",
"parameters": {
"amount": 1
},
"typeVersion": 1.1
},
{
"id": "34b415fd-db46-4914-b005-236b5aaee205",
"name": "Get row(s) in sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
112,
448
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8/edit?usp=drivesdk",
"cachedResultName": "Leads Via Google Search"
}
},
"typeVersion": 4.7
},
{
"id": "e631f027-7a37-4899-89d6-0b0c7f18c6fa",
"name": "Get row(s) in sheet1",
"type": "n8n-nodes-base.googleSheets",
"position": [
96,
1760
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8/edit?usp=drivesdk",
"cachedResultName": "Leads Via Google Search"
}
},
"typeVersion": 4.7
},
{
"id": "cb140551-a551-47ae-97b7-d64048c43be6",
"name": "중복 제거3",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
1296,
1728
],
"parameters": {
"options": {}
},
"typeVersion": 2
},
{
"id": "13770160-49fe-4a3e-b60d-81a9ff86368a",
"name": "Append row in sheet2",
"type": "n8n-nodes-base.googleSheets",
"position": [
1632,
1728
],
"parameters": {
"columns": {
"value": {
"URL": "={{ $json.URL }}",
"Type": "website",
"Socials": "={{ $json.socials }}",
"Rest Email": "={{ $json.email2 }}",
"Description": "={{ $json.description }}",
"Search Query": "={{ $('When chat message received').item.json.chatInput }}",
"Business Name": "={{ $json.businessName }}",
"Primary Email": "={{ $json.email1 }}",
"Contact Number": "={{ $json.phone }}"
},
"schema": [
{
"id": "Search Query",
"type": "string",
"display": true,
"required": false,
"displayName": "Search Query",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Business Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Business Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Primary Email",
"type": "string",
"display": true,
"required": false,
"displayName": "Primary Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Rest Email",
"type": "string",
"display": true,
"required": false,
"displayName": "Rest Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contact Number",
"type": "string",
"display": true,
"required": false,
"displayName": "Contact Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "URL",
"type": "string",
"display": true,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Description",
"type": "string",
"display": true,
"required": false,
"displayName": "Description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Type",
"type": "string",
"display": true,
"required": false,
"displayName": "Type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Socials",
"type": "string",
"display": true,
"required": false,
"displayName": "Socials",
"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/1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8/edit?usp=drivesdk",
"cachedResultName": "Leads Via Google Search"
}
},
"typeVersion": 4.7
},
{
"id": "a1d0ac38-853a-40f1-8268-201e17d3d82e",
"name": "항목 반복1",
"type": "n8n-nodes-base.splitInBatches",
"onError": "continueRegularOutput",
"position": [
608,
368
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "d16c9b61-e5fc-414e-ad4d-6f4b62a3822c",
"name": "설정ting Pagination",
"type": "n8n-nodes-base.code",
"position": [
160,
-368
],
"parameters": {
"jsCode": "// Array of start indices for pagination\nconst starts = [ 1, 11, 21, 31];\n\n// Create an array of items, one per start value\nreturn starts.map(s => ({ json: { start: s } }));\n"
},
"typeVersion": 2
},
{
"id": "37cdc904-b273-49f9-b0f1-e00ec4fe2895",
"name": "Loop for Multiple Page Search",
"type": "n8n-nodes-base.splitInBatches",
"position": [
400,
-368
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "b05aecbc-243e-418f-ab55-cb20e12f5116",
"name": "Custom Google Search API",
"type": "n8n-nodes-base.httpRequest",
"position": [
704,
-352
],
"parameters": {
"url": "https://www.googleapis.com/customsearch/v1",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "key",
"value": "AIzaSyBkZbXnx8Vs9YGdQxpIL133ikGEtefx6wI"
},
{
"name": "cx",
"value": "2788643fa0be84497"
},
{
"name": "q",
"value": "={{ $('When chat message received').item.json.chatInput }}"
},
{
"name": "cr",
"value": "countryUS"
},
{
"name": "gl",
"value": "us"
},
{
"name": "lr",
"value": "lang_en"
},
{
"name": "start",
"value": "={{ $json.start }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "79df0f3d-6211-4f5f-9b76-263da7db8edb",
"name": "Flatten Output Items",
"type": "n8n-nodes-base.code",
"position": [
944,
-352
],
"parameters": {
"jsCode": "// Each input item from HTTP Request node\nreturn $input.all().map(item => {\n // Extract only the 'items' array from the API response\n const results = item.json.items || [];\n\n // Return each search result as a separate item\n return results.map(r => ({\n json: r\n }));\n}).flat();\n"
},
"typeVersion": 2
},
{
"id": "2c3e8958-595e-4e11-9d01-158657691667",
"name": "Information Extraction",
"type": "n8n-nodes-base.code",
"position": [
1280,
-352
],
"parameters": {
"jsCode": "// For each input item (already a search result)\nreturn $input.all().map(item => {\n const r = item.json;\n const metatags = (r.pagemap && r.pagemap.metatags && r.pagemap.metatags[0]) || {};\n\n return {\n json: {\n \"Business Name\": r.title || null,\n \"Email ID\": metatags['og:email'] || null,\n \"Contact Number\": metatags['og:phone_number'] || null,\n \"URL\": r.link || null,\n \"Description\": r.snippet || metatags['og:description'] || null,\n \"Type\": metatags['og:type'] || null,\n \"Socials\": metatags['og:see_also'] || null\n }\n };\n});\n"
},
"typeVersion": 2
},
{
"id": "e0d64378-c004-44b3-a9d9-cee43a157989",
"name": "중복 제거 From Searches",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
1680,
-352
],
"parameters": {
"compare": "selectedFields",
"options": {},
"fieldsToCompare": "=URL"
},
"typeVersion": 2
},
{
"id": "5e59a9c6-6b03-4361-8505-974a74fea15f",
"name": "Scrape Site2",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
944,
352
],
"parameters": {
"url": "={{ $json.URL }}",
"options": {
"redirect": {
"redirect": {
"followRedirects": false
}
},
"response": {
"response": {
"responseFormat": "text"
}
},
"allowUnauthorizedCerts": true
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{}
]
}
},
"typeVersion": 4.2
},
{
"id": "5cc43a8c-9ae5-49e6-8c55-d5e9839424c7",
"name": "If Site scrapped",
"type": "n8n-nodes-base.if",
"onError": "continueRegularOutput",
"position": [
1248,
352
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8cade239-5400-45e5-923d-5bccb689e523",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.data }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "81d1f254-b195-4ba3-bf85-f14ad3422a1f",
"name": "Extract Required Fields",
"type": "n8n-nodes-base.code",
"onError": "continueRegularOutput",
"position": [
1488,
336
],
"parameters": {
"jsCode": "// Get current batch of items\nconst items = $input.all();\n\n// Regex patterns\nconst emailRegex = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-z]{2,}/g;\nconst phoneRegex = /(?:\\+?\\d{1,2}\\s?)?(?:\\(\\d{3}\\)|\\d{3})[-.\\s]?\\d{3}[-.\\s]?\\d{4}/g;\nconst socialRegex = /(https?:\\/\\/(?:www\\.)?(?:facebook|twitter|instagram|linkedin|youtube)\\.com\\/[^\\s\"'<>]+)/gi;\n\n// Helper to remove duplicates\nfunction uniqueArray(arr) {\n return arr ? [...new Set(arr)] : [];\n}\n\n// Function to extract data\nfunction extractFromHTML(html) {\n const emails = uniqueArray(html.match(emailRegex));\n const phones = uniqueArray(html.match(phoneRegex));\n const socials = uniqueArray(html.match(socialRegex));\n\n return {\n email1: emails.length > 0 ? emails[0] : null,\n email2: emails.length > 1 ? emails.slice(1).join(\", \") : null, // all remaining emails\n phone: phones.length > 0 ? phones.join(\", \") : null, // string instead of array\n socials: socials.length > 0 ? socials.join(\", \") : null // string instead of array\n };\n}\n\n// Process each item\nconst output = items.map(item => {\n const htmlData = item.json.data || \"\"; // assuming HTML content is in 'data'\n const extracted = extractFromHTML(htmlData);\n\n return { json: extracted };\n});\n\nreturn output;\n"
},
"typeVersion": 2,
"alwaysOutputData": false
},
{
"id": "66f68935-9577-4b95-a235-f8a720aa7dc1",
"name": "설정 All Fields",
"type": "n8n-nodes-base.set",
"position": [
1776,
336
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a4dec390-76fa-42b3-acaf-93b2449aaa3f",
"name": "Phone",
"type": "string",
"value": "={{ $json.phone }}"
},
{
"id": "78749360-6d15-42d1-8017-ec626eaeb24b",
"name": "Social",
"type": "string",
"value": "={{ $json.socials }}"
},
{
"id": "f90b4f19-bc8f-4638-96ba-458c0cafe7c5",
"name": "Email1",
"type": "string",
"value": "={{ $json.email1 }}"
},
{
"id": "507b5231-f31b-4587-82dd-eb4c03e44bcd",
"name": "Name",
"type": "string",
"value": "={{ $('Loop Over Items1').item.json[\"Business Name\"] }}"
},
{
"id": "722bf218-e8b5-4e69-8602-bf1b858abc44",
"name": "URL",
"type": "string",
"value": "={{ $('Loop Over Items1').item.json.URL }}"
},
{
"id": "c42325ba-b870-4296-af68-833df670497d",
"name": "Type",
"type": "string",
"value": "={{ $('Loop Over Items1').item.json.Type }}"
},
{
"id": "6b4ec29b-31da-429b-bd60-89a6c0705c48",
"name": "Description",
"type": "string",
"value": "={{ $('Loop Over Items1').item.json.Description }}"
},
{
"id": "265bd1d6-6a89-42ea-b7da-994715e3806d",
"name": "Email 2",
"type": "string",
"value": "={{ $json.email2 }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "27f9e051-ccde-42a0-974d-806de632135a",
"name": "설정 URL for Validation",
"type": "n8n-nodes-base.set",
"position": [
336,
448
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "f20a894e-3505-404b-a2f8-8648bbed8301",
"name": "URL",
"type": "string",
"value": "={{ $json.URL }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "72008dea-4b9c-4b0a-8df0-befb25c64220",
"name": "Not Duplicate Search Results",
"type": "n8n-nodes-base.merge",
"position": [
624,
624
],
"parameters": {
"mode": "combine",
"options": {
"fuzzyCompare": true
},
"joinMode": "keepNonMatches",
"outputDataFrom": "input1",
"fieldsToMatchString": "['URL']"
},
"typeVersion": 3.2
},
{
"id": "a9063fa4-00fa-4279-be72-df006d6a36ea",
"name": "If Site Exists",
"type": "n8n-nodes-base.if",
"position": [
928,
624
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "fc7625cf-225d-4d8e-8dd2-474bd65b6d8d",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.URL }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "64635b25-9b96-4473-b876-c058ef977593",
"name": "Exclude Articles and Blogs",
"type": "n8n-nodes-base.if",
"position": [
1280,
624
],
"parameters": {
"options": {
"ignoreCase": false
},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "ce6a31cc-e1ac-4786-8300-c3d7553598fe",
"operator": {
"type": "string",
"operation": "notEquals"
},
"leftValue": "={{ $json.Type }}",
"rightValue": "article"
},
{
"id": "89453f8b-f6b7-4c69-bac3-6f10e0a30046",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Type }}",
"rightValue": "blog"
},
{
"id": "e3d4cbe5-549a-4f17-b551-59e18adae86a",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "310820f4-5ebe-436d-9069-ead7678c29fd",
"name": "중복 제거 For Sheets",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
1616,
608
],
"parameters": {
"options": {}
},
"typeVersion": 2
},
{
"id": "96c4b66d-f5f4-4026-8ec6-429ab727a10f",
"name": "Add Search Results in Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
1888,
608
],
"parameters": {
"columns": {
"value": {
"URL": "={{ $json.URL }}",
"Type": "={{ $json.Type }}",
"Socials": "={{ $json.Social }}",
"Rest Email": "={{ $json[\"Email 2\"] }}",
"Description": "={{ $json.Description }}",
"Search Query": "={{ $('When chat message received').item.json.chatInput }}",
"Business Name": "={{ $json.Name }}",
"Primary Email": "={{ $json.Email1 }}",
"Contact Number": "={{ $json.Phone }}"
},
"schema": [
{
"id": "Search Query",
"type": "string",
"display": true,
"required": false,
"displayName": "Search Query",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Business Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Business Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Primary Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Primary Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Rest Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Rest Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contact Number",
"type": "string",
"display": true,
"required": false,
"displayName": "Contact Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "URL",
"type": "string",
"display": true,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Description",
"type": "string",
"display": true,
"required": false,
"displayName": "Description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Type",
"type": "string",
"display": true,
"required": false,
"displayName": "Type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Socials",
"type": "string",
"display": true,
"required": false,
"displayName": "Socials",
"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/1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JvDSWt5K1Cc9wCd36MADVbh4tu4KdPAzVlMUstv_ou8/edit?usp=drivesdk",
"cachedResultName": "Leads Via Google Search"
}
},
"typeVersion": 4.7
},
{
"id": "6fccec45-a3b6-420c-b627-33b15b02cbb4",
"name": "Prepare Query for Maps",
"type": "n8n-nodes-base.code",
"position": [
128,
1120
],
"parameters": {
"jsCode": "const item = items[0];\nconst chatInput = item.json.chatInput;\nconst formattedQuery = chatInput.replaceAll(' ', '+');\n\nreturn [{\n json: {\n \"searchQuery\": formattedQuery\n }\n}];"
},
"typeVersion": 2
},
{
"id": "b4c0a560-6368-47cc-a9b4-284a4072e2e0",
"name": "Scrape Map Sites",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
1504,
1120
],
"parameters": {
"url": "={{ $json.website }}",
"options": {
"redirect": {
"redirect": {
"followRedirects": false
}
}
}
},
"typeVersion": 4.2
},
{
"id": "274a3ed6-18fe-47f9-9571-ddd57bdc31c8",
"name": "Extract Information",
"type": "n8n-nodes-base.code",
"onError": "continueRegularOutput",
"position": [
1904,
1104
],
"parameters": {
"jsCode": "// --- Safety Check (Guard Clause) ---\nif (!items[0] || !items[0].json || !items[0].json.data) {\n return [{\n json: {\n error: \"Input data from the previous node is missing or in the wrong format.\",\n businessName: null,\n description: null,\n phone: null,\n socials: null,\n email1: null,\n email2: null,\n URL: null\n }\n }];\n}\n\nconst htmlString = items[0].json.data;\n\n// --- Business Name Extraction ---\nlet businessName = \"\";\nconst jsonLdRegex = /<script[^>]*type=[\"']?application\\/ld\\+json[\"']?[^>]*>([\\s\\S]*?)<\\/script>/gi;\nconst jsonLdMatches = [...htmlString.matchAll(jsonLdRegex)];\nfor (const match of jsonLdMatches) {\n try {\n const jsonContent = JSON.parse(match[1]);\n if (!businessName) {\n if (jsonContent.name && (jsonContent['@type'] === 'Dentist' || jsonContent['@type'] === 'Organization')) {\n businessName = jsonContent.name;\n } else if (Array.isArray(jsonContent['@graph'])) {\n for (const item of jsonContent['@graph']) {\n if (item.name && (item['@type'] === 'Dentist' || item['@type'] === 'WebSite')) {\n businessName = item.name.replace(/ New York New York$/, '').trim();\n break;\n }\n }\n }\n }\n } catch (e) { /* Ignore */ }\n}\nif (!businessName) {\n const ogTitleRegex = /<meta[^>]*property=[\"']?og:title[\"']?[^>]*content=[\"']?([^\"'>]*)[\"']?/i;\n const ogTitleMatch = htmlString.match(ogTitleRegex);\n if (ogTitleMatch && ogTitleMatch[1]) {\n businessName = ogTitleMatch[1].split(/[-|]/)[0].trim();\n }\n}\nif (!businessName) {\n const titleRegex = /<title>([\\s\\S]*?)<\\/title>/i;\n const titleMatch = htmlString.match(titleRegex);\n if (titleMatch && titleMatch[1]) {\n businessName = titleMatch[1].split(/[-|]/)[0].trim();\n }\n}\n\n// --- Other Data Extraction ---\nconst descriptionRegex = /<meta[^>]*name=[\"']?description[\"']?[^>]*content=[\"']?([^\"'>]*)[\"']?/i;\nconst descriptionMatch = htmlString.match(descriptionRegex);\nconst description = descriptionMatch ? descriptionMatch[1].trim() : \"\";\n\nconst phoneRegex = /(?:\\+?1[ -]?)?\\(?\\d{3}\\)?[-.\\s]?\\d{3}[-.\\s]?\\d{4}/g;\nconst foundPhones = htmlString.match(phoneRegex) || [];\nconst phoneNumbers = [...new Set(foundPhones)];\n\nfunction findSameAsLinks(obj, links = []) {\n if (obj === null || typeof obj !== 'object') return links;\n if (obj.sameAs && Array.isArray(obj.sameAs)) {\n links.push(...obj.sameAs.filter(item => typeof item === 'string'));\n }\n Object.values(obj).forEach(value => {\n if (typeof value === 'object') findSameAsLinks(value, links);\n });\n return links;\n}\nlet jsonLdLinks = [];\nfor (const match of jsonLdMatches) {\n try {\n const jsonContent = JSON.parse(match[1]);\n findSameAsLinks(jsonContent, jsonLdLinks);\n } catch(e) {/* Ignore */}\n}\nconst socialAnchorRegex = /href=[\"']?(https?:\\/\\/(?:www\\.)?(?:facebook|instagram|twitter|linkedin|yelp|pinterest|plus\\.google)\\.com\\/[^\"'\\s>]+)/gi;\nconst socialAnchorLinks = [...htmlString.matchAll(socialAnchorRegex)].map(match => match[1]);\nconst allSocials = [...jsonLdLinks, ...socialAnchorLinks];\nconst socials = [...new Set(allSocials)];\n\nconst plainTextEmailRegex = /\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}\\b/gi;\nconst plainTextEmails = htmlString.match(plainTextEmailRegex) || [];\nconst mailtoRegex = /href=[\"']?mailto:([^\"'\\?\\s>]+)/gi;\nconst mailtoEmails = [...htmlString.matchAll(mailtoRegex)].map(match => match[1]);\nconst allEmails = [...plainTextEmails, ...mailtoEmails];\nconst emails = [...new Set(allEmails)];\n\n// --- Final Output Formatting ---\nconst socialString = socials.join(', ');\nconst phoneString = phoneNumbers.join(', ');\n\nconst email1 = emails[0] || null;\nconst email2 = emails[1] || null;\n\n// **UPDATED:** Get the URL and add a trailing slash if needed.\nlet websiteUrl = $('Loop Over Items').first().json.website;\nif (websiteUrl && typeof websiteUrl === 'string' && !websiteUrl.endsWith('/')) {\n websiteUrl += '/';\n}\n\nreturn [{\n json: {\n businessName,\n description,\n phone: phoneString,\n socials: socialString,\n email1,\n email2,\n URL: websiteUrl,\n }\n}];"
},
"typeVersion": 2,
"alwaysOutputData": true
},
{
"id": "1575bc32-cf8f-4409-99ee-268f51feba52",
"name": "설정 URL Validaiton",
"type": "n8n-nodes-base.set",
"position": [
368,
1760
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "f20a894e-3505-404b-a2f8-8648bbed8301",
"name": "URL",
"type": "string",
"value": "={{ $json.URL }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "387ef4ed-617a-4421-900f-05c6e84ff7b1",
"name": "Validating Unique Results",
"type": "n8n-nodes-base.merge",
"position": [
672,
1744
],
"parameters": {
"mode": "combine",
"options": {
"fuzzyCompare": true
},
"joinMode": "keepNonMatches",
"outputDataFrom": "input1",
"fieldsToMatchString": "['URL']"
},
"typeVersion": 3.2
},
{
"id": "3e6771bb-fdf6-48ce-a3c5-5e4b49f042fa",
"name": "If Site exists",
"type": "n8n-nodes-base.if",
"position": [
976,
1744
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "fc7625cf-225d-4d8e-8dd2-474bd65b6d8d",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.URL }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "e07c2d9a-d9ce-4cc1-9e11-5e502325ac40",
"name": "메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
32,
-656
],
"parameters": {
"color": 3,
"width": 1824,
"height": 704,
"content": "## Phase 1: Google Custom Search Branch\n\n \n1. When chat message received: 💬 Chat Input: Captures the user's search query to start the lead generation process.\n2. Setting Pagination: 📄 Google Search Paginator: Creates a sequence (1, 11, 21) to search multiple pages of Google results.\n3. Loop for Multiple Page Search: 🔄 Page Loop: Processes each page number individually to perform a separate Google search for each.\n4. Custom Google Search API: 🔍 Google Search API Call: Executes the search using the user's query and current page number to get web results.\n5. Flatten Output Items: 📂 Flatten Search Results: Un-nests the API response, turning one block of 10 results into 10 individual items.\n6. Information Extraction: ✨ Initial Data Structuring: Extracts key details like business name, URL, and description from the raw search results.\n7. Remove Duplicates From Searches: 🚫 Deduplicate Search Results: Ensures each unique business URL from the Google search is processed only once."
},
"typeVersion": 1
},
{
"id": "e10066d0-7805-46e1-94fc-b1606477adbf",
"name": "메모1",
"type": "n8n-nodes-base.stickyNote",
"position": [
32,
96
],
"parameters": {
"width": 2032,
"height": 704,
"content": "## Phase 2: Google Maps Search Branch\n\n \n1.Prepare Query for Maps: 🗺️ Format Maps Query: Converts the chat input (e.g., \"dentists in New York\") into a URL-friendly format.\n2. Scrape Google Maps: 📍 Google Maps Scraper: Scrapes the Google Maps search results page to find local business websites.\n3. Extract URLs: 🔗 URL Extractor (Maps): Uses regex to pull all website links found on the Google Maps search results page.\n4. Filter Google URLs: 🗑️ Clean Maps URLs: Removes irrelevant links like google.com or schema.org from the scraped results.\n5. Remove Duplicates: 🚫 Deduplicate Maps Results: Ensures each unique business URL from the Maps scrape is processed only once.\n6. Loop Over Items: 🔄 Maps URL Loop: Processes each unique URL from the Maps scrape one by one for deeper analysis.\n7. Scrape Map Sites: 🌐 Website Scraper (Maps): Visits the business's website URL found via Maps to download its HTML content.\n8. Wait2: ⏳ Rate Limiter: Pauses for 1 second between scraping sites to avoid being blocked.\n9. Extract Information: 🕵️ Contact Extractor (Maps): Scans the website's HTML to find emails, phone numbers, and social media links."
},
"typeVersion": 1
},
{
"id": "60c0c125-0be0-4cb6-8a53-eb7c01ecd83a",
"name": "메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
32,
816
],
"parameters": {
"color": 5,
"width": 2032,
"height": 560,
"content": "## Phase 3: Data Enrichment & Saving\n\n \n1. If: 🤔 Email Checkpoint: Checks if an email was found; if not, it sends the URL for deeper website scraping.\n2. Loop Over Items1: 🔄 Website Scrape Loop: Processes each lead that needs more data by visiting its website individually.\n3. Scrape Site2: 🌐 Website Scraper (Search): Visits the business's website URL found via Google Search to download its HTML content.\n4. If Site scrapped: ✅ Scrape Success Check: Proceeds only if the website was successfully downloaded, skipping failed attempts.\n5. Extract Required Fields: 🕵️ Contact Extractor (Search): Scans the website's HTML to find emails, phone numbers, and social links.\n6. Set All Fields: 📋 Consolidate Data: Gathers all newly found contact details into a single, structured item."
},
"typeVersion": 1
},
{
"id": "e9b69fd8-053b-42e7-9b46-108e987b684c",
"name": "메모3",
"type": "n8n-nodes-base.stickyNote",
"position": [
16,
1440
],
"parameters": {
"color": 3,
"width": 1808,
"height": 480,
"content": "## Phase 4: Final Validation & Output\n\n1. Get row(s) in sheet / Get row(s) in sheet1: 📚 Load Existing Leads: Fetches all previously saved leads from the Google Sheet for deduplication.\n2. Set URL for Validation / Set URL Validaiton: 🔖 Prepare for Matching: Isolates the URL field from all leads to prepare for the duplication check.\n3. Not Duplicate Search Results / Validating Unique Results: 🛡️ Final Duplicate Check: Compares new leads against the existing Google Sheet to ensure only unique businesses are saved.\n4. If Site Exists / If Site exists: 🔗 URL Existence Check: Ensures the lead has a valid URL before proceeding.\n5. Exclude Articles and Blogs: 📰 Filter Content Sites: Removes results that are likely articles or blogs, focusing on business websites.\n6. Remove Duplicates For Sheets / Remove Duplicates3: 🚫 Final Deduplication: A final check to remove any possible duplicates before writing to the sheet.\n7. Append row in sheet / Append row in sheet2: ✍️ Save Lead to Sheet: Appends the final, enriched, and unique lead data as a new row in Google Sheets.\n "
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "d33f9984-9987-4df7-916f-14b1f42c3e39",
"connections": {
"f8df5c5f-af30-4f62-9aab-e010dd9c9c91": {
"main": [
[
{
"node": "a496c6f6-fa85-4a33-85f4-98e9b00f4af2",
"type": "main",
"index": 0
}
],
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
]
]
},
"Wait2": {
"main": [
[
{
"node": "274a3ed6-18fe-47f9-9571-ddd57bdc31c8",
"type": "main",
"index": 0
}
]
]
},
"d441d472-e687-44d7-9ddb-fb1f8baa7c45": {
"main": [
[
{
"node": "Filter Google URLs",
"type": "main",
"index": 0
}
]
]
},
"5e59a9c6-6b03-4361-8505-974a74fea15f": {
"main": [
[
{
"node": "5cc43a8c-9ae5-49e6-8c55-d5e9839424c7",
"type": "main",
"index": 0
}
]
]
},
"a9063fa4-00fa-4279-be72-df006d6a36ea": {
"main": [
[
{
"node": "64635b25-9b96-4473-b876-c058ef977593",
"type": "main",
"index": 0
}
]
]
},
"3e6771bb-fdf6-48ce-a3c5-5e4b49f042fa": {
"main": [
[
{
"node": "Remove Duplicates3",
"type": "main",
"index": 0
}
]
]
},
"Set All Fields": {
"main": [
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[
{
"node": "387ef4ed-617a-4421-900f-05c6e84ff7b1",
"type": "main",
"index": 0
}
],
[
{
"node": "b4c0a560-6368-47cc-a9b4-284a4072e2e0",
"type": "main",
"index": 0
}
]
]
},
"5cc43a8c-9ae5-49e6-8c55-d5e9839424c7": {
"main": [
[
{
"node": "81d1f254-b195-4ba3-bf85-f14ad3422a1f",
"type": "main",
"index": 0
}
],
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items1": {
"main": [
[
{
"node": "72008dea-4b9c-4b0a-8df0-befb25c64220",
"type": "main",
"index": 0
}
],
[
{
"node": "5e59a9c6-6b03-4361-8505-974a74fea15f",
"type": "main",
"index": 0
}
]
]
},
"b4c0a560-6368-47cc-a9b4-284a4072e2e0": {
"main": [
[
{
"node": "Wait2",
"type": "main",
"index": 0
}
]
]
},
"Remove Duplicates": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Filter Google URLs": {
"main": [
[
{
"node": "Remove Duplicates",
"type": "main",
"index": 0
}
]
]
},
"Remove Duplicates3": {
"main": [
[
{
"node": "13770160-49fe-4a3e-b60d-81a9ff86368a",
"type": "main",
"index": 0
}
]
]
},
"30354b5f-e671-42fb-be46-38dcd63a6b10": {
"main": [
[
{
"node": "d441d472-e687-44d7-9ddb-fb1f8baa7c45",
"type": "main",
"index": 0
}
]
]
},
"Set URL Validaiton": {
"main": [
[
{
"node": "387ef4ed-617a-4421-900f-05c6e84ff7b1",
"type": "main",
"index": 1
}
]
]
},
"Setting Pagination": {
"main": [
[
{
"node": "37cdc904-b273-49f9-b0f1-e00ec4fe2895",
"type": "main",
"index": 0
}
]
]
},
"274a3ed6-18fe-47f9-9571-ddd57bdc31c8": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"34b415fd-db46-4914-b005-236b5aaee205": {
"main": [
[
{
"node": "Set URL for Validation",
"type": "main",
"index": 0
}
]
]
},
"79df0f3d-6211-4f5f-9b76-263da7db8edb": {
"main": [
[
{
"node": "2c3e8958-595e-4e11-9d01-158657691667",
"type": "main",
"index": 0
}
]
]
},
"e631f027-7a37-4899-89d6-0b0c7f18c6fa": {
"main": [
[
{
"node": "Set URL Validaiton",
"type": "main",
"index": 0
}
]
]
},
"2c3e8958-595e-4e11-9d01-158657691667": {
"main": [
[
{
"node": "Remove Duplicates From Searches",
"type": "main",
"index": 0
}
]
]
},
"6fccec45-a3b6-420c-b627-33b15b02cbb4": {
"main": [
[
{
"node": "30354b5f-e671-42fb-be46-38dcd63a6b10",
"type": "main",
"index": 0
}
]
]
},
"Set URL for Validation": {
"main": [
[
{
"node": "72008dea-4b9c-4b0a-8df0-befb25c64220",
"type": "main",
"index": 1
}
]
]
},
"81d1f254-b195-4ba3-bf85-f14ad3422a1f": {
"main": [
[
{
"node": "Set All Fields",
"type": "main",
"index": 0
}
]
]
},
"b05aecbc-243e-418f-ab55-cb20e12f5116": {
"main": [
[
{
"node": "79df0f3d-6211-4f5f-9b76-263da7db8edb",
"type": "main",
"index": 0
}
]
]
},
"387ef4ed-617a-4421-900f-05c6e84ff7b1": {
"main": [
[
{
"node": "3e6771bb-fdf6-48ce-a3c5-5e4b49f042fa",
"type": "main",
"index": 0
}
]
]
},
"64635b25-9b96-4473-b876-c058ef977593": {
"main": [
[
{
"node": "Remove Duplicates For Sheets",
"type": "main",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "Setting Pagination",
"type": "main",
"index": 0
},
{
"node": "34b415fd-db46-4914-b005-236b5aaee205",
"type": "main",
"index": 0
},
{
"node": "6fccec45-a3b6-420c-b627-33b15b02cbb4",
"type": "main",
"index": 0
},
{
"node": "e631f027-7a37-4899-89d6-0b0c7f18c6fa",
"type": "main",
"index": 0
}
]
]
},
"72008dea-4b9c-4b0a-8df0-befb25c64220": {
"main": [
[
{
"node": "a9063fa4-00fa-4279-be72-df006d6a36ea",
"type": "main",
"index": 0
}
]
]
},
"Remove Duplicates For Sheets": {
"main": [
[
{
"node": "96c4b66d-f5f4-4026-8ec6-429ab727a10f",
"type": "main",
"index": 0
}
]
]
},
"37cdc904-b273-49f9-b0f1-e00ec4fe2895": {
"main": [
[
{
"node": "f8df5c5f-af30-4f62-9aab-e010dd9c9c91",
"type": "main",
"index": 0
}
],
[
{
"node": "b05aecbc-243e-418f-ab55-cb20e12f5116",
"type": "main",
"index": 0
}
]
]
},
"Remove Duplicates From Searches": {
"main": [
[
{
"node": "37cdc904-b273-49f9-b0f1-e00ec4fe2895",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
시각화 참조 라이브러리에서 n8n 노드를 탐색
可视化 참조 라이브러리에서 n8n 노드를 탐색
If
Ftp
Set
+
If
Ftp
Set
113 노드I versus AI
기타
실시간 - Gemini 및 Creatomate를 사용한 바이럴 AI 동영상 제작 및 게시 자동화
Gemini와 Creatomate를 사용한 AI 비디오 제작 및 다중 플랫폼 게시 자동화
Set
Code
Wait
+
Set
Code
Wait
47 노드Intuz
콘텐츠 제작
Apify, Apollo.io 및 Google Gemini를 사용한 LinkedIn 직무 AI 기반 잠재 리드 생성 자동화
LinkedIn 채용 공고 잠재 고객 생성 자동화: Apify, Apollo.io 및 Google Gemini
If
Code
Limit
+
If
Code
Limit
47 노드Intuz
리드 생성
LinkedIn 직업 신호, Apify, Apollo.io, Google Gemini를 사용하여 판매 확장 자동화
LinkedIn 직업 신호를 사용하여 Apify와 Google Gemini를 사용하여 개인화된 판매 확장 생성
If
Code
Limit
+
If
Code
Limit
47 노드Intuz
AI 기반 구글 지도 비즈니스 데이터 스크래핑 및 스프레드시트 내보내기
AI를 활용한 구글 지도 비즈니스 데이터 수집 워크플로우로, 데이터를 보강하여 스프레드시트로 내보낼 수 있습니다.
If
Code
Wait
+
If
Code
Wait
25 노드Msaid Mohamed el hadi
리드 생성
API 아키텍처 추출기
API 아키텍처 추출기
If
Set
Code
+
If
Set
Code
88 노드Polina Medvedieva
엔지니어링
워크플로우 정보
난이도
고급
노드 수40
카테고리-
노드 유형12
저자
Intuz
@intuzWorkflow automation can help automate your routine activities and help saves $$$, as well as hours of time. As a boutique tech consulting company, Intuz help businesses with custom AI/ML, AI Workflow Automations, and software development. Automate your business workflow for: Sales Marketing Accounting Finance Operations E-Commerce Customer Support Admin & Backoffice Logistics & Supply Chain
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유