Génération de texte d'ancre SEO à partir de Google Sheets
Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 19 nœuds.Utilise principalement des nœuds comme Code, Filter, GoogleSheets, SplitInBatches, Agent. Utiliser Claude 4 Sonnet pour générer du texte d'ancre SEO depuis Google Sheets
- •Informations d'identification Google Sheets API
- •Clé API Anthropic
Catégorie
{
"meta": {
"instanceId": "393ca9e36a1f81b0f643c72792946a5fe5e49eb4864181ba4032e5a408278263"
},
"nodes": [
{
"id": "8c2cca9f-cd91-4afc-8c2a-dbfb79b64b56",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-1792,
208
],
"webhookId": "181a1719-6394-4157-98ed-3a7a48b23a0a",
"parameters": {
"mode": "webhook",
"public": true,
"options": {
"responseMode": "responseNode"
}
},
"typeVersion": 1.3
},
{
"id": "6d70bc94-52aa-4ac6-b94e-aca33559f7d0",
"name": "Filter",
"type": "n8n-nodes-base.filter",
"position": [
-944,
208
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "4aa3c2d2-9383-4b0c-a8ee-8a691dcd8744",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.URL }}",
"rightValue": ""
},
{
"id": "81017b55-ffb5-497c-8b05-5d2643e3fecd",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $json.Anchors }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "3b41fbd6-fdf0-43e7-b2ac-db6f49869370",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-400,
208
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "26244ced-732e-4e26-93d8-d6dbdf15e3a5",
"name": "Générateur d'ancres",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
96,
224
],
"parameters": {
"text": "=# Context\nYou are an SEO expert specialized in internal linking optimization. Your mission is to create optimized link anchors for natural referencing with all their linguistic variations.\n# Task\nBased on the provided information about a web page, generate 10 different SEO anchors with all linguistic variations that can be used to create internal links to this page from other pages of the site.\n# Input Data\n\nPage URL: {{ $json.URL }}\nPage Name/Title: {{ $json['Niv 0'] }}{{ $json['Niv 1'] }}{{ $json['Niv 2'] }}{{ $json['Niv 3'] }}\nContent Description: {{ $json['Description de la page'] }}\n\n# Instructions for Anchor Generation\n## SEO Criteria to Follow:\n\nSemantic relevance: The anchor must faithfully reflect the content of the target page\nStrategic keywords: Integrate the main keywords of the target page\nNaturalness: The anchor must integrate naturally into text\nDiversity: Vary formulations to avoid over-optimization\nOptimal length: Between 2 and 6 words for maximum efficiency\n\n## Types of Anchors to Create:\n\nExact anchors: Use the exact main keyword (2 variants)\nBrand/name anchors: Use the page or section name (2 variants)\nLong-tail anchors: Longer expressions including secondary keywords (3 variants)\nContextual anchors: Natural formulations for insertion in a paragraph (2 variants)\nCall-to-action anchors: Encourage action while describing content (1 variant)\n\n## Linguistic Variations to Generate for Each Anchor:\nFor each main anchor, systematically generate:\n\nSingular/plural variation (if applicable)\nGender variation: masculine/feminine (if applicable)\nTemporal variation: present/past/future (if applicable)\nFormal/informal variation: formal/casual register\nSynonymous variation: use of main synonyms\nStructural variation: word order inversion, addition/removal of articles\nPrepositional variation: with/without prepositions (to, of, for, on, etc.)\n\n# Desired Output Format\nmain anchor 1\nvariation 1\nvariation 2\nvariation 3\nvariation 4\nmain anchor 2\nvariation 1\nvariation 2\nvariation 3\nvariation 4\nmain anchor 3\nvariation 1\nvariation 2\nvariation 3\nvariation 4\nmain anchor 4\nvariation 1\nvariation 2\nvariation 3\nvariation 4\nmain anchor 5\nvariation 1\nvariation 2\nvariation 3\nvariation 4\nmain anchor 6\nvariation 1\nvariation 2\nvariation 3\nvariation 4\nmain anchor 7\nvariation 1\nvariation 2\nvariation 3\nvariation 4\nmain anchor 8\nvariation 1\nvariation 2\nvariation 3\nvariation 4\nmain anchor 9\nvariation 1\nvariation 2\nvariation 3\nvariation 4\nmain anchor 10\nvariation 1\nvariation 2\nvariation 3\nvariation 4\n# Additional Constraints\n\nAvoid generic anchors (\"click here\", \"learn more\", \"read more\")\nDon't repeat exactly the same formulation between main anchors and their variations\nAdapt the language register to the website's tone\nPrioritize added value for the user\nEnsure balanced distribution between different types of anchors\nGenerate 3-5 relevant variations per anchor (not necessarily 4 if certain variations don't apply)\nPrioritize quality of variations over quantity\n\nDon't make an introduction or conclusion to your response, simply return the list of anchors with their variations.\nGenerate now 10 optimized SEO anchors with all their linguistic variations for the described page.",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "a498c4b3-1a95-41cf-ac41-c9f5d6f37c61",
"name": "Anthropic Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
80,
400
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-20250514",
"cachedResultName": "Claude 4 Sonnet"
},
"options": {}
},
"credentials": {
"anthropicApi": {
"id": "WXQf5QsxCs3AyxlW",
"name": "Anthropic account"
}
},
"typeVersion": 1.3
},
{
"id": "4296eb85-78a4-4c38-ad7d-a080d3b8b07a",
"name": "Update sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
1312,
224
],
"parameters": {
"columns": {
"value": {},
"schema": [],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Anchor"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "={{ $('When chat message received').item.json.chatInput }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "wBRLUCktxqXE6DVJ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.5
},
{
"id": "a8c0d205-ff46-4cd9-89c2-11be32cd90f0",
"name": "Import Sheets",
"type": "n8n-nodes-base.code",
"position": [
912,
224
],
"parameters": {
"jsCode": "// Code avec conservation de toutes les colonnes existantes\nconst items = [];\n\n// Récupérer les données de vos différents nodes \nconst loopItem = $('Loop Over Items').item.json;\nconst aiAgentOutput = $input.first().json.output;\n\n// Créer l'objet avec toutes les colonnes et le mapping des nouvelles valeurs\nconst transformedItem = {\n // Copier toutes les propriétés existantes\n ...loopItem,\n \n // Écraser/ajouter les nouvelles valeurs\n 'Ancre': aiAgentOutput\n};\n\n// Retourner l'item transformé\nitems.push(transformedItem);\nreturn items;"
},
"typeVersion": 2
},
{
"id": "eba6bb70-cd87-485b-8f91-dad6ef78c8dc",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1824,
112
],
"parameters": {
"color": 4,
"width": 608,
"height": 288,
"content": "# Phase 1: Workflow Initialization"
},
"typeVersion": 1
},
{
"id": "7a2d141f-442b-475f-af20-69edd9111637",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-64,
112
],
"parameters": {
"color": 3,
"width": 688,
"height": 432,
"content": "# Phase 4: AI-Powered Anchor Generation"
},
"typeVersion": 1
},
{
"id": "c088d3ac-bef8-4191-be23-a5084171ba55",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
656,
112
],
"parameters": {
"width": 896,
"height": 304,
"content": "# Phase 5: Data Integration and Google Sheets Update"
},
"typeVersion": 1
},
{
"id": "3fd478d7-3082-4e37-9ef7-6b492d29b53a",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1824,
448
],
"parameters": {
"color": 4,
"width": 608,
"height": 592,
"content": "###What you do:\n\nDuplicate this template: https://docs.google.com/spreadsheets/d/1VNl8xLYgRrNcKrmN9hCdfov1dMnwD44tAALJZAlagCo\nFill in your page information in the \"Anchor\" sheet with:\n\nPage: Name/title of your page\nURL: Complete URL of the page\nPage description: Brief description of the page content to help AI generate relevant anchors\n\n\nSend a chat message with your duplicated Google Sheets URL to trigger the workflow\n\n### What the system does:\n\nReceives the chat trigger and extracts the Google Sheets URL from your message\nConnects to Google Sheets using OAuth2 authentication\nRetrieves all data from the \"Anchor\" sheet of your specified document\nLoads your page information including names, URLs, and descriptions for anchor generation\n\n### Result:\n\n✅ Workflow activated and ready to process your SEO data\n✅ Secure connection established to your Google Sheets document\n✅ All page information loaded and available for AI processing\n✅ Foundation set for automated anchor generation based on your specific pages"
},
"typeVersion": 1
},
{
"id": "95720cff-a480-48e8-aa19-d1250c199b8f",
"name": "Ge sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
-1440,
208
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Anchor"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "={{ $('When chat message received').item.json.chatInput }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "wBRLUCktxqXE6DVJ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.7
},
{
"id": "e5d907dc-e34c-431a-8f30-f8d95ada7daf",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1184,
112
],
"parameters": {
"width": 528,
"height": 288,
"content": "# Phase 2: Data Filtering and Validation"
},
"typeVersion": 1
},
{
"id": "0f5cec09-d540-4c79-8946-ac486a4d9e71",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1184,
448
],
"parameters": {
"width": 528,
"height": 304,
"content": "### What the system does:\n\nFilters the retrieved data to identify pages that need anchor text generation\nApplies specific criteria: pages must have a URL but no existing anchor text\nValidates data quality by checking for empty anchor fields\nPrepares clean dataset for the AI processing pipeline\n\n### Result:\n\n✅ Only relevant pages selected for anchor generation\n✅ Existing anchor texts preserved and protected\n✅ Clean, validated data ready for AI processing\n✅ Efficient workflow execution by avoiding unnecessary processing\n"
},
"typeVersion": 1
},
{
"id": "f16841d6-b2ba-4dab-b057-608030855427",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
112
],
"parameters": {
"color": 7,
"width": 528,
"height": 288,
"content": "# Phase 3: Batch Processing Setup"
},
"typeVersion": 1
},
{
"id": "02cd635e-9b37-48e7-ac4e-5942745a1885",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
448
],
"parameters": {
"color": 7,
"width": 528,
"height": 288,
"content": "### What the system does:\n\nOrganizes filtered data into manageable processing batches\nInitializes the loop mechanism to handle multiple pages sequentially\nPrepares each page item with all necessary context information\nSets up iterative processing to ensure all pages are handled individually\n\n### Result:\n\n✅ Systematic processing of all qualifying pages\n✅ Memory-efficient batch handling for large datasets\n✅ Individual attention to each page's unique characteristics\n✅ Reliable processing loop that handles interruptions gracefully"
},
"typeVersion": 1
},
{
"id": "b47f1ce3-a4bf-4da7-b0a4-10cde82ab188",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-64,
576
],
"parameters": {
"color": 3,
"width": 688,
"height": 400,
"content": "## What the system does:\n\nProcesses each page individually using Claude 4 Sonnet AI model\nAnalyzes page context including URL, title hierarchy (Niv 0-3), and content description\nGenerates 10 unique SEO anchors with 3-5 linguistic variations each (40-50 total variations)\nApplies advanced SEO criteria: semantic relevance, keyword optimization, natural language flow\nCreates diverse anchor types: exact match, brand anchors, long-tail, contextual, and call-to-action variants\nEnsures linguistic diversity with singular/plural, formal/informal, and synonym variations\n\n## Result:\n\n✅ Professional-quality anchor texts optimized for internal linking\n✅ Diverse anchor variations to avoid over-optimization penalties\n✅ SEO-compliant anchors that improve search engine rankings\n✅ Natural language anchors that enhance user experience\n✅ Comprehensive anchor library for flexible content integration\n"
},
"typeVersion": 1
},
{
"id": "7939bb48-faf1-4f4c-830e-84142302b900",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
656,
448
],
"parameters": {
"width": 896,
"height": 416,
"content": "## What the system does:\n\nCombines AI-generated anchors with existing page data while preserving all original information\nTransforms data structure to match Google Sheets format requirements\nUpdates the original Google Sheets document with generated anchor texts in the \"Ancre\" column\nUses keyword matching to ensure accurate row updates without data corruption\nCompletes the processing loop and moves to the next page in the batch\nContinues iterative processing until all filtered pages have anchor texts generated\nMaintains real-time synchronization between the workflow and your spreadsheet\n\n## Result:\n\n✅ Generated anchors seamlessly integrated with existing data\n✅ Your Google Sheets document automatically updated with new anchor texts\n✅ Complete SEO anchor library available for immediate use in content\n✅ Batch processing completed efficiently for all qualifying pages\n✅ Ready-to-use internal linking strategy with professional anchor variations\n✅ Time saved compared to manual anchor text creation and researchRéessayer"
},
"typeVersion": 1
},
{
"id": "e1c3fd04-0438-4956-86d3-7a9810b06510",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2816,
112
],
"parameters": {
"width": 816,
"height": 336,
"content": "## Need more advanced automation solutions? Contact us for custom enterprise workflows!\n\n# Growth-AI.fr\n\n## https://www.linkedin.com/in/allanvaccarizi/\n## https://www.linkedin.com/in/hugo-marinier-%F0%9F%A7%B2-6537b633/"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"6d70bc94-52aa-4ac6-b94e-aca33559f7d0": {
"main": [
[
{
"node": "3b41fbd6-fdf0-43e7-b2ac-db6f49869370",
"type": "main",
"index": 0
}
]
]
},
"95720cff-a480-48e8-aa19-d1250c199b8f": {
"main": [
[
{
"node": "6d70bc94-52aa-4ac6-b94e-aca33559f7d0",
"type": "main",
"index": 0
}
]
]
},
"a8c0d205-ff46-4cd9-89c2-11be32cd90f0": {
"main": [
[
{
"node": "4296eb85-78a4-4c38-ad7d-a080d3b8b07a",
"type": "main",
"index": 0
}
]
]
},
"4296eb85-78a4-4c38-ad7d-a080d3b8b07a": {
"main": [
[
{
"node": "3b41fbd6-fdf0-43e7-b2ac-db6f49869370",
"type": "main",
"index": 0
}
]
]
},
"3b41fbd6-fdf0-43e7-b2ac-db6f49869370": {
"main": [
[],
[
{
"node": "26244ced-732e-4e26-93d8-d6dbdf15e3a5",
"type": "main",
"index": 0
}
]
]
},
"a498c4b3-1a95-41cf-ac41-c9f5d6f37c61": {
"ai_languageModel": [
[
{
"node": "26244ced-732e-4e26-93d8-d6dbdf15e3a5",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"26244ced-732e-4e26-93d8-d6dbdf15e3a5": {
"main": [
[
{
"node": "a8c0d205-ff46-4cd9-89c2-11be32cd90f0",
"type": "main",
"index": 0
}
]
]
},
"8c2cca9f-cd91-4afc-8c2a-dbfb79b64b56": {
"main": [
[
{
"node": "95720cff-a480-48e8-aa19-d1250c199b8f",
"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é ?
Avancé - Création de contenu, IA Multimodale
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
Growth AI
@growthaiPartager ce workflow