8
n8n 한국어amn8n.com

Google 검색 및 지도에서 Google Sheets로 잠재 리드 자동 생성

고급

이것은자동화 워크플로우로, 40개의 노드를 포함합니다.주로 If, Set, Code, Wait, Merge 등의 노드를 사용하며. Google 검색 및 지도에서 Google Sheets로의 잠재 고객 자동 생성

사전 요구사항
  • 대상 API의 인증 정보가 필요할 수 있음
  • Google Sheets API 인증 정보

카테고리

-
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 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)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
고급
노드 수40
카테고리-
노드 유형12
난이도 설명

고급 사용자를 위한 16+개 노드의 복잡한 워크플로우

저자
Intuz

Intuz

@intuz

Workflow 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에서 보기

이 워크플로우 공유

카테고리

카테고리: 34