Modèle de flux de travail pour analyse de domaine
Ceci est unMarket Researchworkflow d'automatisation du domainecontenant 12 nœuds.Utilise principalement des nœuds comme Code, McpClient, GoogleSheets, ManualTrigger, SplitInBatches. Automatisation de l'analyse SEO multi-domaines avec Ahrefs et Google Sheets
- •Informations d'identification Google Sheets API
Nœuds utilisés (12)
Catégorie
{
"id": "62lxnDVx4b47ql6P",
"meta": {
"instanceId": "3d4f6f82ad714311bb383a0cddf651da8753530e5575f46d078b9a29d27557e0"
},
"name": "Domain Analyzer Workflow Template",
"nodes": [
{
"id": "d4d19da7-a633-4090-8449-0d51556b6f36",
"name": "Lors du clic sur 'Exécuter le workflow'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1024,
144
],
"parameters": {},
"typeVersion": 1
},
{
"id": "6297f8b6-b592-48e0-80ea-799e7ba02e95",
"name": "Boucler sur les éléments",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-560,
144
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "8e2c22fa-bd52-4ef2-b998-f88b073eab71",
"name": "Analyser JSON",
"type": "n8n-nodes-base.code",
"position": [
-160,
-240
],
"parameters": {
"jsCode": "// Input: Stringified JSON with escaped characters like \\n, \\\", etc.\nconst inputString = $input.first().json.result.content[0].text\n\n// Parse the string into a real object\nconst parsedJson = JSON.parse(inputString);\n\nreturn [\n {\n json: parsedJson\n }\n];"
},
"typeVersion": 2
},
{
"id": "5c3fa80f-a116-4d1c-8b3f-872dab147dba",
"name": "Ajouter les données de trafic à la feuille",
"type": "n8n-nodes-base.googleSheets",
"position": [
16,
-240
],
"parameters": {
"columns": {
"value": {
"Domain": "={{ $('Get Domains in sheet').item.json.Domain }}",
"top_pages": "={{ $json.top_pages }}",
"top_keywords": "={{ $json.top_keywords }}",
"costMontlyAvg": "={{ $json.traffic.costMontlyAvg }}",
"top_countries": "={{ $json.top_countries }}",
"traffic_history": "={{ $json.traffic_history }}",
"trafficMonthlyAvg": "={{ $json.traffic.trafficMonthlyAvg }}"
},
"schema": [
{
"id": "Domain",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Domain",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "trafficMonthlyAvg",
"type": "string",
"display": true,
"required": false,
"displayName": "trafficMonthlyAvg",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "costMontlyAvg",
"type": "string",
"display": true,
"required": false,
"displayName": "costMontlyAvg",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "traffic_history",
"type": "string",
"display": true,
"required": false,
"displayName": "traffic_history",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "top_pages",
"type": "string",
"display": true,
"required": false,
"displayName": "top_pages",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "top_keywords",
"type": "string",
"display": true,
"required": false,
"displayName": "top_keywords",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "top_countries",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "top_countries",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "domainRating",
"type": "string",
"display": true,
"required": false,
"displayName": "domainRating",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "urlRating",
"type": "string",
"display": true,
"required": false,
"displayName": "urlRating",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "backlinksCount",
"type": "string",
"display": true,
"required": false,
"displayName": "backlinksCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "referringDomains",
"type": "string",
"display": true,
"required": false,
"displayName": "referringDomains",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "dofollowBacklinksPercentage",
"type": "string",
"display": true,
"required": false,
"displayName": "dofollowBacklinksPercentage",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "dofollowRefdomainsPercentage",
"type": "string",
"display": true,
"required": false,
"displayName": "dofollowRefdomainsPercentage",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Domain"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1hqDbgAfqxH7y79TO1Brt8lIXupGkQ7WSf1mnQiiw7Oo/edit#gid=0",
"cachedResultName": "Domains"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1oBQqboIT9ubDmMIvvZveAneUHpuNV60egXsIU3hyuy0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oBQqboIT9ubDmMIvvZveAneUHpuNV60egXsIU3hyuy0/edit?usp=drivesdk",
"cachedResultName": "Example: Domain Analyzer Workflow"
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "CEWCuoGMaP93jgCn",
"name": "GCP Service account"
}
},
"typeVersion": 4.6
},
{
"id": "67be72c9-3fb1-43a5-a720-5cdb42c87129",
"name": "Analyser JSON1",
"type": "n8n-nodes-base.code",
"position": [
-176,
416
],
"parameters": {
"jsCode": "// Input: Stringified JSON with escaped characters like \\n, \\\", etc.\nconst inputString = $input.first().json.result.content[0].text\n\n// Parse the string into a real object\nconst parsedJson = JSON.parse(inputString);\n\nreturn [\n {\n json: parsedJson\n }\n];"
},
"typeVersion": 2
},
{
"id": "ee24bf73-35c9-4f29-b577-6f2901ddf70d",
"name": "Ajouter les données SEO du domaine à la feuille",
"type": "n8n-nodes-base.googleSheets",
"position": [
0,
416
],
"parameters": {
"columns": {
"value": {
"Domain": "={{ $('Get Domains in sheet').item.json.Domain }}",
"urlRating": "={{ $json.overview.urlRating }}",
"domainRating": "={{ $json.overview.domainRating }}",
"backlinksCount": "={{ $json.overview.backlinks }}",
"referringDomains": "={{ $json.overview.refdomains }}",
"dofollowBacklinksPercentage": "={{ $json.overview.dofollowBacklinks }}",
"dofollowRefdomainsPercentage": "={{ $json.overview.dofollowRefdomains }}"
},
"schema": [
{
"id": "Domain",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Domain",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "trafficMonthlyAvg",
"type": "string",
"display": true,
"required": false,
"displayName": "trafficMonthlyAvg",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "costMontlyAvg",
"type": "string",
"display": true,
"required": false,
"displayName": "costMontlyAvg",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "traffic_history",
"type": "string",
"display": true,
"required": false,
"displayName": "traffic_history",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "top_pages",
"type": "string",
"display": true,
"required": false,
"displayName": "top_pages",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "top_keywords",
"type": "string",
"display": true,
"required": false,
"displayName": "top_keywords",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "top_countries",
"type": "string",
"display": true,
"required": false,
"displayName": "top_countries",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "domainRating",
"type": "string",
"display": true,
"required": false,
"displayName": "domainRating",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "urlRating",
"type": "string",
"display": true,
"required": false,
"displayName": "urlRating",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "backlinksCount",
"type": "string",
"display": true,
"required": false,
"displayName": "backlinksCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "referringDomains",
"type": "string",
"display": true,
"required": false,
"displayName": "referringDomains",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "dofollowBacklinksPercentage",
"type": "string",
"display": true,
"required": false,
"displayName": "dofollowBacklinksPercentage",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "dofollowRefdomainsPercentage",
"type": "string",
"display": true,
"required": false,
"displayName": "dofollowRefdomainsPercentage",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Domain"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1hqDbgAfqxH7y79TO1Brt8lIXupGkQ7WSf1mnQiiw7Oo/edit#gid=0",
"cachedResultName": "Domains"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1oBQqboIT9ubDmMIvvZveAneUHpuNV60egXsIU3hyuy0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oBQqboIT9ubDmMIvvZveAneUHpuNV60egXsIU3hyuy0/edit?usp=drivesdk",
"cachedResultName": "Example: Domain Analyzer Workflow"
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "CEWCuoGMaP93jgCn",
"name": "GCP Service account"
}
},
"typeVersion": 4.6
},
{
"id": "53a605a3-dbca-43f9-9dca-ab3e3aa46fd0",
"name": "Obtenir les domaines dans la feuille",
"type": "n8n-nodes-base.googleSheets",
"position": [
-800,
144
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oBQqboIT9ubDmMIvvZveAneUHpuNV60egXsIU3hyuy0/edit#gid=0",
"cachedResultName": "Domains"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1oBQqboIT9ubDmMIvvZveAneUHpuNV60egXsIU3hyuy0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oBQqboIT9ubDmMIvvZveAneUHpuNV60egXsIU3hyuy0/edit?usp=drivesdk",
"cachedResultName": "Example: Domain Analyzer Workflow"
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "CEWCuoGMaP93jgCn",
"name": "GCP Service account"
}
},
"typeVersion": 4.6
},
{
"id": "56dea17f-3c6d-4cd3-9aa8-87462ff28786",
"name": "Obtenir les statistiques SEO",
"type": "n8n-nodes-mcp.mcpClient",
"position": [
-352,
416
],
"parameters": {
"toolName": "get_backlinks_list",
"operation": "executeTool",
"toolParameters": "={\n \"domain\": \"{{ $json.Domain }}\"\n}"
},
"credentials": {
"mcpClientApi": {
"id": "IHt3R0V5d8rgP6MK",
"name": "SEO-MCP Client (STDIO)"
}
},
"typeVersion": 1
},
{
"id": "f160163e-c900-47d5-b60e-0bbe6029e28a",
"name": "Obtenir le trafic",
"type": "n8n-nodes-mcp.mcpClient",
"position": [
-336,
-240
],
"parameters": {
"toolName": "get_traffic",
"operation": "executeTool",
"toolParameters": "={\n \"domain_or_url\": \"{{ $json.Domain }}\"\n}"
},
"credentials": {
"mcpClientApi": {
"id": "IHt3R0V5d8rgP6MK",
"name": "SEO-MCP Client (STDIO)"
}
},
"typeVersion": 1
},
{
"id": "248f15ae-bbab-476c-9956-cafc2c0029e1",
"name": "Note adhésive6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-400,
-400
],
"parameters": {
"color": 7,
"width": 680,
"height": 460,
"content": "## 1. Get Domain Traffic information\n\nRetrieve traffic, top pages and keyword information from ahrefs.com for each domain"
},
"typeVersion": 1
},
{
"id": "223ef12a-7cb6-4c66-8cf0-88d8554b86f5",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-400,
288
],
"parameters": {
"color": 7,
"width": 680,
"height": 460,
"content": "## 2. Get Domain SEO information\n\nRetrieve ranking and backlink information from ahrefs.com for each domain"
},
"typeVersion": 1
},
{
"id": "1277a143-0010-4e82-8a0e-e34eacbe9424",
"name": "Note adhésive7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1584,
-112
],
"parameters": {
"width": 460,
"height": 752,
"content": "## Domain Analyzer Workflow\n### This n8n template fetches SEO and traffic information from ahref for a list of domains in a Google Sheet. This is great for marketing research and SEO workflow optimizations and saves tons of time.\n\n### How it works\n* We'll import domains from the Google sheet\n* We use an SEO MCP server to fetch data from ahref free tooling\n* The fetched data is stored in the Google sheet\n\n### How to use\n* Make a copy of [this](https://docs.google.com/spreadsheets/d/1oBQqboIT9ubDmMIvvZveAneUHpuNV60egXsIU3hyuy0/edit?gid=456214435#gid=456214435) Google Sheet and add it in all Google Sheet nodes\n* Make sure that n8n has read & write permissions for your Google sheet. For my self-hosted n8n instance I was using a [Google Service Account](https://docs.n8n.io/integrations/builtin/credentials/google/service-account/)\n* Add your list of domains in the first column in the Domain sheet\n* Add MCP credentials for [seo-mcp](https://github.com/cnych/seo-mcp). Make sure you set the environments correctly:\n```json\n\"command\": \"uvx\",\n\"args\": [\"--python\", \"3.10\", \"seo-mcp\"],\n\"env\": {\n \"CAPSOLVER_API_KEY\": \"CAP-xxxxxx\"\n}\n```\n* Execute workflow :)\n\n### Requirements\n* CapSolver account and API key ([register here](https://dashboard.capsolver.com/passport/register?inviteCode=p-4Y_DjQymvt)) to use [seo-mcp](https://github.com/cnych/seo-mcp)\n* Google Drive account"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "86b5106a-5d48-43f0-bf5b-b684b68d05a4",
"connections": {
"8e2c22fa-bd52-4ef2-b998-f88b073eab71": {
"main": [
[
{
"node": "5c3fa80f-a116-4d1c-8b3f-872dab147dba",
"type": "main",
"index": 0
}
]
]
},
"f160163e-c900-47d5-b60e-0bbe6029e28a": {
"main": [
[
{
"node": "8e2c22fa-bd52-4ef2-b998-f88b073eab71",
"type": "main",
"index": 0
}
]
]
},
"67be72c9-3fb1-43a5-a720-5cdb42c87129": {
"main": [
[
{
"node": "ee24bf73-35c9-4f29-b577-6f2901ddf70d",
"type": "main",
"index": 0
}
]
]
},
"56dea17f-3c6d-4cd3-9aa8-87462ff28786": {
"main": [
[
{
"node": "67be72c9-3fb1-43a5-a720-5cdb42c87129",
"type": "main",
"index": 0
}
]
]
},
"6297f8b6-b592-48e0-80ea-799e7ba02e95": {
"main": [
[],
[
{
"node": "56dea17f-3c6d-4cd3-9aa8-87462ff28786",
"type": "main",
"index": 0
},
{
"node": "f160163e-c900-47d5-b60e-0bbe6029e28a",
"type": "main",
"index": 0
}
]
]
},
"53a605a3-dbca-43f9-9dca-ab3e3aa46fd0": {
"main": [
[
{
"node": "6297f8b6-b592-48e0-80ea-799e7ba02e95",
"type": "main",
"index": 0
}
]
]
},
"5c3fa80f-a116-4d1c-8b3f-872dab147dba": {
"main": [
[
{
"node": "6297f8b6-b592-48e0-80ea-799e7ba02e95",
"type": "main",
"index": 0
}
]
]
},
"ee24bf73-35c9-4f29-b577-6f2901ddf70d": {
"main": [
[
{
"node": "6297f8b6-b592-48e0-80ea-799e7ba02e95",
"type": "main",
"index": 0
}
]
]
},
"d4d19da7-a633-4090-8449-0d51556b6f36": {
"main": [
[
{
"node": "53a605a3-dbca-43f9-9dca-ab3e3aa46fd0",
"type": "main",
"index": 0
}
]
]
}
}
}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é ?
Intermédiaire - Étude de marché
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.
Workflows recommandés
Michael Muenzer
@michaelmuenzerPartager ce workflow