Génération automatique de prospects à partir de Google Search et Maps vers Google Sheets

Avancé

Ceci est uncontenant 40 nœuds.Utilise principalement des nœuds comme If, Set, Code, Wait, Merge. Génération automatisée de prospects à partir de Google Search et Maps vers Google Sheets

Prérequis
  • Peut nécessiter les informations d'identification d'authentification de l'API cible
  • Informations d'identification Google Sheets API

Catégorie

-
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "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": "À la réception d'un message 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": "Ajouter une ligne dans la feuille",
      "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": "Supprimer les doublons",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        1056,
        1136
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "ff0491b3-1695-48be-863d-d7e8bd6529cd",
      "name": "Boucler sur les éléments",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1312,
        1104
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "d441d472-e687-44d7-9ddb-fb1f8baa7c45",
      "name": "Extraire les 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": "Scraper 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": "Filtrer les URLs 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": "Attendre 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": "Obtenir la/les ligne(s) dans la feuille",
      "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": "Obtenir la/les ligne(s) dans la feuille1",
      "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": "Supprimer les doublons3",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        1296,
        1728
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "13770160-49fe-4a3e-b60d-81a9ff86368a",
      "name": "Ajouter une ligne dans la feuille2",
      "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": "Boucler sur les éléments1",
      "type": "n8n-nodes-base.splitInBatches",
      "onError": "continueRegularOutput",
      "position": [
        608,
        368
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "d16c9b61-e5fc-414e-ad4d-6f4b62a3822c",
      "name": "Paramétrer la 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": "Boucle pour recherche multi-pages",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        400,
        -368
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "b05aecbc-243e-418f-ab55-cb20e12f5116",
      "name": "Recherche personnalisée 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": "Aplatir les éléments de sortie",
      "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": "Extraction d'informations",
      "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": "Supprimer les doublons des recherches",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        1680,
        -352
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {},
        "fieldsToCompare": "=URL"
      },
      "typeVersion": 2
    },
    {
      "id": "5e59a9c6-6b03-4361-8505-974a74fea15f",
      "name": "Scraper le 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": "Si site scrapé",
      "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": "Extraire les champs requis",
      "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": "Définir tous les champs",
      "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": "Définir l'URL pour 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": "Résultats de recherche non dupliqués",
      "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 le site 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": "Exclure articles et 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": "Supprimer les doublons pour les feuilles",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        1616,
        608
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "96c4b66d-f5f4-4026-8ec6-429ab727a10f",
      "name": "Ajouter les résultats de recherche dans les feuilles",
      "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": "Préparer la requête pour 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": "Scraper les sites Maps",
      "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": "Extraire les informations",
      "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": "Définir la validation d'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": "Validation des résultats uniques",
      "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 le site 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": "Note adhésive",
      "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": "Note adhésive1",
      "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": "Note adhésive2",
      "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": "Note adhésive3",
      "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
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds40
Catégorie-
Types de nœuds12
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
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

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34