Generación automática de prospectos desde Google Search y Maps a Google Sheets

Avanzado

Este es unautomatización que contiene 40 nodos.Utiliza principalmente nodos como If, Set, Code, Wait, Merge. Generación automática de prospectos desde Google Búsqueda y Mapas a Google Sheets

Requisitos previos
  • Pueden requerirse credenciales de autenticación para la API de destino
  • Credenciales de API de Google Sheets

Categoría

-
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "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": "Cuando se recibe mensaje en chat",
      "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": "Si",
      "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": "Agregar fila en hoja",
      "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": "Eliminar duplicados",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        1056,
        1136
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "ff0491b3-1695-48be-863d-d7e8bd6529cd",
      "name": "Iterar sobre elementos",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1312,
        1104
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "d441d472-e687-44d7-9ddb-fb1f8baa7c45",
      "name": "Extraer 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": "Scrapear 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": "Filtrar URLs de Google",
      "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": "Esperar2",
      "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": "Obtener fila(s) en hoja",
      "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": "Obtener fila(s) en hoja1",
      "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": "Eliminar duplicados3",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        1296,
        1728
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "13770160-49fe-4a3e-b60d-81a9ff86368a",
      "name": "Agregar fila en hoja2",
      "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": "Iterar sobre elementos1",
      "type": "n8n-nodes-base.splitInBatches",
      "onError": "continueRegularOutput",
      "position": [
        608,
        368
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "d16c9b61-e5fc-414e-ad4d-6f4b62a3822c",
      "name": "Configurar paginación",
      "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": "Bucle para búsqueda multipágina",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        400,
        -368
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "b05aecbc-243e-418f-ab55-cb20e12f5116",
      "name": "Búsqueda personalizada Google 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": "Aplanar elementos de salida",
      "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": "Extracción de información",
      "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": "Eliminar duplicados de búsquedas",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        1680,
        -352
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {},
        "fieldsToCompare": "=URL"
      },
      "typeVersion": 2
    },
    {
      "id": "5e59a9c6-6b03-4361-8505-974a74fea15f",
      "name": "Scrapear sitio2",
      "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": "Si sitio scrapeado",
      "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": "Extraer campos requeridos",
      "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": "Establecer todos los campos",
      "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": "Establecer URL para validación",
      "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": "Resultados de búsqueda no duplicados",
      "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": "Si sitio existe",
      "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": "Excluir artículos y 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": "Eliminar duplicados para hojas",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        1616,
        608
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "96c4b66d-f5f4-4026-8ec6-429ab727a10f",
      "name": "Agregar resultados de búsqueda en hojas",
      "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": "Preparar consulta para mapas",
      "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": "Scrapear sitios de mapas",
      "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": "Extraer información",
      "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": "Establecer validación de URL",
      "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": "Validando resultados únicos",
      "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": "Si sitio existe",
      "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": "Nota adhesiva",
      "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": "Nota adhesiva1",
      "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": "Nota adhesiva2",
      "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": "Nota adhesiva3",
      "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": "a1d0ac38-853a-40f1-8268-201e17d3d82e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ed333dd0-1e0d-4c97-8b63-7535427f8a8d": {
      "main": [
        [
          {
            "node": "274a3ed6-18fe-47f9-9571-ddd57bdc31c8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d441d472-e687-44d7-9ddb-fb1f8baa7c45": {
      "main": [
        [
          {
            "node": "bdba745f-cec0-4df6-8f95-cff4eb9ea1ff",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5e59a9c6-6b03-4361-8505-974a74fea15f": {
      "main": [
        [
          {
            "node": "5cc43a8c-9ae5-49e6-8c55-d5e9839424c7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3e6771bb-fdf6-48ce-a3c5-5e4b49f042fa": {
      "main": [
        [
          {
            "node": "cb140551-a551-47ae-97b7-d64048c43be6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "66f68935-9577-4b95-a235-f8a720aa7dc1": {
      "main": [
        [
          {
            "node": "a1d0ac38-853a-40f1-8268-201e17d3d82e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ff0491b3-1695-48be-863d-d7e8bd6529cd": {
      "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": "a1d0ac38-853a-40f1-8268-201e17d3d82e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a1d0ac38-853a-40f1-8268-201e17d3d82e": {
      "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": "ed333dd0-1e0d-4c97-8b63-7535427f8a8d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "82cf4f94-509f-4698-9982-af48caa035de": {
      "main": [
        [
          {
            "node": "ff0491b3-1695-48be-863d-d7e8bd6529cd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bdba745f-cec0-4df6-8f95-cff4eb9ea1ff": {
      "main": [
        [
          {
            "node": "82cf4f94-509f-4698-9982-af48caa035de",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cb140551-a551-47ae-97b7-d64048c43be6": {
      "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
          }
        ]
      ]
    },
    "1575bc32-cf8f-4409-99ee-268f51feba52": {
      "main": [
        [
          {
            "node": "387ef4ed-617a-4421-900f-05c6e84ff7b1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "d16c9b61-e5fc-414e-ad4d-6f4b62a3822c": {
      "main": [
        [
          {
            "node": "37cdc904-b273-49f9-b0f1-e00ec4fe2895",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "274a3ed6-18fe-47f9-9571-ddd57bdc31c8": {
      "main": [
        [
          {
            "node": "ff0491b3-1695-48be-863d-d7e8bd6529cd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "34b415fd-db46-4914-b005-236b5aaee205": {
      "main": [
        [
          {
            "node": "27f9e051-ccde-42a0-974d-806de632135a",
            "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": "1575bc32-cf8f-4409-99ee-268f51feba52",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2c3e8958-595e-4e11-9d01-158657691667": {
      "main": [
        [
          {
            "node": "e0d64378-c004-44b3-a9d9-cee43a157989",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6fccec45-a3b6-420c-b627-33b15b02cbb4": {
      "main": [
        [
          {
            "node": "30354b5f-e671-42fb-be46-38dcd63a6b10",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "27f9e051-ccde-42a0-974d-806de632135a": {
      "main": [
        [
          {
            "node": "72008dea-4b9c-4b0a-8df0-befb25c64220",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "81d1f254-b195-4ba3-bf85-f14ad3422a1f": {
      "main": [
        [
          {
            "node": "66f68935-9577-4b95-a235-f8a720aa7dc1",
            "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": "310820f4-5ebe-436d-9069-ead7678c29fd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9f1247da-3797-481a-b835-a5c780b050d4": {
      "main": [
        [
          {
            "node": "d16c9b61-e5fc-414e-ad4d-6f4b62a3822c",
            "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": "3e6771bb-fdf6-48ce-a3c5-5e4b49f042fa",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "310820f4-5ebe-436d-9069-ead7678c29fd": {
      "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
          }
        ]
      ]
    },
    "e0d64378-c004-44b3-a9d9-cee43a157989": {
      "main": [
        [
          {
            "node": "37cdc904-b273-49f9-b0f1-e00ec4fe2895",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Avanzado

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos40
Categoría-
Tipos de nodos12
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Autor
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

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34