Audit SEO complet basé sur des experts GPT-4, utilisant Analytics, Search Console et PageSpeed
Ceci est unMarket Research, AI Summarizationworkflow d'automatisation du domainecontenant 38 nœuds.Utilise principalement des nœuds comme Set, Code, Merge, HttpRequest, GoogleSheets. Audit SEO complet basé sur un expert GPT-4, utilisant Analytics, Search Console et PageSpeed
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Informations d'identification Google Sheets API
- •Clé API OpenAI
Nœuds utilisés (38)
Catégorie
{
"meta": {
"instanceId": "8599d7845a778242eb2b590f9276e0b22e25a242e7728a8fa6887cb7c35c668a",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "934d8441-bf80-4dec-9423-8adc877d55d7",
"name": "Déclencheur programmé",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-4680,
-580
],
"parameters": {
"rule": {
"interval": [
{
"field": "months",
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.2
},
{
"id": "122563ce-0d90-4adc-bcc0-8e806c19e114",
"name": "Modèle de chat OpenAI",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-2860,
-1120
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-nano",
"cachedResultName": "gpt-4.1-nano"
},
"options": {
"temperature": 0.3
}
},
"credentials": {
"openAiApi": {
"id": "QrtszTAQelTLppHh",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "2f9345a9-c5f1-4564-8ef3-836d75281fe1",
"name": "Ajouter une ligne",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-2620,
-1120
],
"parameters": {
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1OiqXcLWhxBewkm88MN2etNutPA2IgiyRwMmyNeLAyz4",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1OiqXcLWhxBewkm88MN2etNutPA2IgiyRwMmyNeLAyz4/edit?usp=drivesdk",
"cachedResultName": "Rapport GA"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "lmJOtRvKMOD3WkGJ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "57e0c737-c007-4a9e-9258-df083a3bfd50",
"name": "Modèle de chat OpenAI1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-2860,
-320
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-nano",
"cachedResultName": "gpt-4.1-nano"
},
"options": {
"temperature": 0.3
}
},
"credentials": {
"openAiApi": {
"id": "QrtszTAQelTLppHh",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "50dd07fa-a710-4d03-8a81-95098a6454e5",
"name": "Modèle de chat OpenAI2",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-2860,
-720
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-nano",
"cachedResultName": "gpt-4.1-nano"
},
"options": {
"temperature": 0.3
}
},
"credentials": {
"openAiApi": {
"id": "QrtszTAQelTLppHh",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "fdb3b364-b3a0-4a45-8f71-c27fd8a91c8b",
"name": "Modèle de chat OpenAI3",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-2860,
180
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-nano",
"cachedResultName": "gpt-4.1-nano"
},
"options": {
"temperature": 0.3
}
},
"credentials": {
"openAiApi": {
"id": "QrtszTAQelTLppHh",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "8deb28d8-858d-42df-8802-3c339c83494f",
"name": "Modèle de chat OpenAI4",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1780,
-420
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-nano",
"cachedResultName": "gpt-4.1-nano"
},
"options": {
"temperature": 0.3
}
},
"credentials": {
"openAiApi": {
"id": "QrtszTAQelTLppHh",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "4ef711bd-bcaa-4b61-8dfd-f4cc36f8a0a1",
"name": "Obtenir ligne(s)4",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-1600,
-420
],
"parameters": {
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "lmJOtRvKMOD3WkGJ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "a0760c4c-5455-42e5-88c2-fcaa0f3141b0",
"name": "Fusionner",
"type": "n8n-nodes-base.merge",
"position": [
-2200,
-660
],
"parameters": {
"numberInputs": 4
},
"typeVersion": 3.2
},
{
"id": "8376066b-cb77-4b60-93d1-c883eaafbb39",
"name": "Search Console",
"type": "n8n-nodes-base.httpRequest",
"position": [
-3300,
-440
],
"parameters": {
"url": "=https://www.googleapis.com/webmasters/v3/sites/{{ encodeURIComponent($('Set Target Website').item.json.domain) }}/searchAnalytics/query",
"method": "POST",
"options": {},
"jsonBody": "{\n \"startDate\": \"{{ $now.minus({months: 1}).toFormat('yyyy-MM-dd') }}\",\n \"endDate\": \"{{ $now.toFormat('yyyy-MM-dd') }}\",\n \"dimensions\": [\"query\"],\n \"rowLimit\": 10\n}\n",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"nodeCredentialType": "googleOAuth2Api"
},
"credentials": {
"googleOAuth2Api": {
"id": "EanrW0MuDv56q9BH",
"name": "search console"
}
},
"typeVersion": 4.2
},
{
"id": "d3676416-da4b-41ea-8b9b-b18ea5adbef8",
"name": "Définir le site cible",
"type": "n8n-nodes-base.set",
"position": [
-4380,
-580
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e3962683-6d91-4db2-af47-8ade2b8fb444",
"name": "domain",
"type": "string",
"value": "https://www.your-website.com"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "ef6218b1-dff2-41fc-9aad-6d7e7a3c809a",
"name": "Formater données GA",
"type": "n8n-nodes-base.code",
"position": [
-3080,
-1240
],
"parameters": {
"jsCode": "// n8n code to aggregate all Google Analytics data into a single block for the LangChain agent\n\n// Get all input data from the Google Analytics node\nconst inputData = $input.all();\n\n// Function to format numbers with thousand separators\nfunction formatNumber(num) {\n return parseInt(num).toLocaleString('en-US');\n}\n\n// Function to extract the domain from a URL\nfunction extractDomain(url) {\n if (!url) return 'unknown';\n try {\n const cleanUrl = url.replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n const domain = cleanUrl.split('/')[0];\n return domain;\n } catch (error) {\n return 'unknown';\n }\n}\n\n// Aggregate all data\nconst allData = inputData.map(item => item.json);\n\n// Calculate totals and global metrics\nconst aggregatedMetrics = {\n totalSessions: allData.reduce((sum, item) => sum + parseInt(item.sessions || 0), 0),\n totalUsers: allData.reduce((sum, item) => sum + parseInt(item.totalUsers || 0), 0),\n totalPageViews: allData.reduce((sum, item) => sum + parseInt(item.screenPageViews || 0), 0),\n countries: [...new Set(allData.map(item => item.country).filter(Boolean))],\n urls: [...new Set(allData.map(item => item.pageLocation).filter(Boolean))],\n dataCount: allData.length\n};\n\n// Calculate derived metrics\naggregatedMetrics.avgPageViewsPerSession = (aggregatedMetrics.totalPageViews / aggregatedMetrics.totalSessions).toFixed(2);\naggregatedMetrics.avgSessionsPerUser = (aggregatedMetrics.totalSessions / aggregatedMetrics.totalUsers).toFixed(2);\naggregatedMetrics.returnUserRate = ((aggregatedMetrics.totalSessions - aggregatedMetrics.totalUsers) / aggregatedMetrics.totalSessions * 100).toFixed(1);\n\n// Create the comprehensive text summary\nconst comprehensiveReport = `\n=== GOOGLE ANALYTICS REPORT - LAST 30 DAYS ===\n\n📊 GLOBAL METRICS:\n• Total sessions: ${formatNumber(aggregatedMetrics.totalSessions)}\n• Unique users: ${formatNumber(aggregatedMetrics.totalUsers)}\n• Total page views: ${formatNumber(aggregatedMetrics.totalPageViews)}\n• Page views per session: ${aggregatedMetrics.avgPageViewsPerSession}\n• Sessions per user: ${aggregatedMetrics.avgSessionsPerUser}\n• Returning user rate: ${aggregatedMetrics.returnUserRate}%\n\n🌍 GEOGRAPHICAL BREAKDOWN:\n• Number of countries: ${aggregatedMetrics.countries.length}\n• Main countries: ${aggregatedMetrics.countries.join(', ')}\n\n🔗 WEBSITES ANALYZED:\n• Number of URLs: ${aggregatedMetrics.urls.length}\n• Main URLs: ${aggregatedMetrics.urls.join(', ')}\n`.trim();\n\n// Simplified return with a single \"content\" field\nreturn [{\n json: {\n content: comprehensiveReport\n }\n}];\n"
},
"typeVersion": 2
},
{
"id": "ed1a7666-4808-44cf-a415-7ccc76f22d2a",
"name": "Agent spécialiste Analytics",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-2828,
-1340
],
"parameters": {
"text": "=Aujourd'hui nous sommes le {{ $now }}\n\nTu es un expert Google Analytics spécialisé dans l'analyse de sites web tech/IA. \n\nMISSION : Analyser les données GA4 pour nana-intelligence.fr et identifier les opportunités d'optimisation.\n\nDONNÉES D'ENTRÉE : {{ $json.content }}\n\nANALYSE REQUISE :\n📊 Métriques de performance globale\n- Sessions, utilisateurs, taux de rebond\n- Durée moyenne des sessions\n- Pages vues par session\n- Sources de trafic principales\n\n🎯 Analyse comportementale\n- Pages les plus performantes\n- Parcours utilisateur type\n- Points de friction identifiés\n- Taux de conversion par source\n\n📈 Tendances et évolution\n- Comparaison avec période précédente\n- Saisonnalité du trafic\n- Impact des publications de contenu\n- Croissance du trafic organique\n\nFOCUS SPÉCIAL NICHE IA :\n- Performance du contenu IA/tech\n- Engagement sur les articles techniques\n- Conversion des visiteurs intéressés par l'IA\n\nFORMAT DE SORTIE :\nRetourne un objet JSON structuré avec :\n{\n 'performance_globale': {...},\n 'comportement_utilisateurs': {...},\n 'tendances': {...},\n 'recommandations_analytics': [...]\n\n",
"options": {
"systemMessage": "={\n \"systemMessage\": \"Tu es un analyste web senior avec 10 ans d'expérience dans l'analyse de sites tech/IA. Ton ton est professionnel mais accessible. Tu détectes les patterns cachés dans les données et proposes des actions concrètes. Tu maîtrises parfaitement les spécificités du secteur de l'intelligence artificielle et du marketing digital.IMPORTANT: Termine TOUJOURS ta réponse par un JSON structuré avec les KPIs demandés, puis un paragraphe de synthèse executive claire pour le chef d'entreprise.\n\"\n}\n"
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "95e9373d-cbfd-42ae-aba4-fc3e351f0a0f",
"name": "Formater données Search Console",
"type": "n8n-nodes-base.code",
"position": [
-3080,
-440
],
"parameters": {
"jsCode": "// Formatting for Search Console with handling of empty data\nconst data = $input.first().json;\n\n// Check if we have actual data\nconst hasData = data.rows && data.rows.length > 0;\n\nif (!hasData) {\n // Case for a new/recent site - Constructive response\n const reportText = `\n=== GOOGLE SEARCH CONSOLE REPORT - TARGET WEBSITE ===\n📊 ANALYSIS DATE: ${new Date().toLocaleDateString('en-US')}\n\n🆕 STATUS: SITE IN SEO START-UP PHASE\n• No Search Console data available (this is normal for a new site).\n• API functional: ✅ Authentication successful.\n\n🚀 POSITIVE DIAGNOSIS:\n• Technical setup: Correct.\n• Google API access: Validated.\n• Indexing: In progress.\n\n🎯 RECOMMENDATIONS TO SPEED UP INDEXING:\n• Submit the XML sitemap to Google Search Console.\n• Create high-quality content regularly.\n• Obtain natural backlinks.\n• Optimize meta descriptions and titles.\n• Use Google Search Console to request manual indexing.\n\n⏳ EXPECTED TIMELINE:\n• First GSC data: 2-4 weeks after indexing.\n• Significant data: 2-3 months with regular content.\n• Mature SEO performance: 6-12 months.\n`;\n\n return [{\n json: {\n content: reportText,\n searchConsoleData: {\n status: \"new_site\",\n hasData: false,\n }\n }\n }];\n}\n\n// If we have data\nconst searchData = data.rows.map(row => ({\n query: row.keys[0] || 'Not specified',\n clicks: row.clicks || 0,\n impressions: row.impressions || 0,\n ctr: ((row.ctr || 0) * 100).toFixed(2),\n position: (row.position || 0).toFixed(1)\n}));\n\nconst totalClicks = searchData.reduce((sum, item) => sum + item.clicks, 0);\nconst totalImpressions = searchData.reduce((sum, item) => sum + item.impressions, 0);\n\nconst reportText = `\n=== GOOGLE SEARCH CONSOLE REPORT - DATA AVAILABLE ===\n📊 METRICS: ${totalClicks} clicks, ${totalImpressions} impressions.\n🔝 TOP QUERIES: ${searchData.slice(0, 5).map(item => item.query).join(', ')}\n`;\n\nreturn [{\n json: {\n content: reportText,\n searchConsoleData: {\n status: \"data_available\",\n hasData: true,\n totalClicks,\n totalImpressions,\n topQueries: searchData.slice(0, 5)\n }\n }\n}];\n"
},
"typeVersion": 2
},
{
"id": "d7d2dda7-896b-462c-b959-e782dac35e52",
"name": "Agent spécialiste SEO",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-2828,
-540
],
"parameters": {
"text": "=Tu es un consultant SEO senior spécialisé dans le lancement de sites tech/IA.\n\nMISSION : Analyser la situation Search Console et proposer une stratégie d'accélération SEO.\n\nDONNÉES REÇUES : {{ $json.content }}\nSTATUT TECHNIQUE : {{ $json.searchConsoleData }}\n\nCONTEXTE SPÉCIFIQUE :\n- Site spécialisé en intelligence artificielle \n- Phase de démarrage SEO (normal d'avoir peu/pas de données)\n- Besoin de stratégie d'accélération de la visibilité\n\nANALYSE REQUISE :\n\n🚀 Diagnostic Phase de Démarrage\n- Évaluation de la situation actuelle\n- Identification des leviers prioritaires\n- Timeline réaliste d'acquisition de trafic\n\n🎯 Stratégie Contenu IA/Tech \n- Mots-clés prioritaires secteur IA\n- Sujets de contenu à forte valeur ajoutée\n- Optimisation technique pour Google\n\n📈 Plan d'Accélération SEO\n- Actions week 1-4 (indexation rapide)\n- Actions mois 2-3 (construction autorité) \n- Actions mois 3-6 (scaling traffic organique)\n\n💰 ROI et Objectifs Chiffrés\n- Objectifs de trafic réalistes par trimestre\n- KPIs à tracker prioritairement\n- Budget/ressources recommandées\n\nFORMAT RÉPONSE :\n- Synthèse situationnelle (2-3 phrases)\n- Top 3 actions immédiates (cette semaine)\n- Stratégie contenu IA 30-60-90 jours\n- Objectifs chiffrés à 6 mois\n\nSois encourageant, précis et axé ROI. Utilise des émojis pour structurer.\n",
"options": {
"systemMessage": "You must respond only in English. Be precise, actionable, and results-oriented. Use quantified data whenever possible.\n"
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "40f48efd-4c90-4e05-82c8-8eee42838955",
"name": "Récupérer données PageSpeed",
"type": "n8n-nodes-base.httpRequest",
"position": [
-3300,
-840
],
"parameters": {
"url": "=https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url={{ $json.domain }}&category=performance&category=accessibility&category=best-practices&category=seo",
"options": {},
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth"
},
"credentials": {
"httpQueryAuth": {
"id": "RF8SXqKZv6zCD2Q4",
"name": "pagespeed_insight"
}
},
"typeVersion": 4.2
},
{
"id": "186246bb-53c6-4f42-94db-657253bcff70",
"name": "Formater données PageSpeed",
"type": "n8n-nodes-base.code",
"position": [
-3080,
-840
],
"parameters": {
"jsCode": "// Advanced formatting of Page Speed Insights data\nconst data = $input.first().json;\n\n// Verify that the data is valid\nif (!data.lighthouseResult) {\n return [{\n json: {\n error: \"Invalid Page Speed Insights data\",\n content: \"Error while fetching performance metrics\"\n }\n }];\n}\n\nconst lighthouse = data.lighthouseResult;\n\n// Generate the text report for the AI agent\nconst reportText = `\n=== PAGE SPEED INSIGHTS REPORT - TARGET WEBSITE ===\n📊 ANALYSIS DATE: ${new Date().toLocaleDateString('en-US')} - Strategy: ${lighthouse.configSettings.emulatedFormFactor}\n\n🎯 LIGHTHOUSE SCORES:\n• Performance: ${Math.round(lighthouse.categories.performance.score * 100)}/100\n• Accessibility: ${Math.round(lighthouse.categories.accessibility.score * 100)}/100\n• Best Practices: ${Math.round(lighthouse.categories['best-practices'].score * 100)}/100\n• SEO: ${Math.round(lighthouse.categories.seo.score * 100)}/100\n\n⚡ CORE WEB VITALS:\n• First Contentful Paint: ${lighthouse.audits['first-contentful-paint'].displayValue}\n• Largest Contentful Paint: ${lighthouse.audits['largest-contentful-paint'].displayValue}\n• Cumulative Layout Shift: ${lighthouse.audits['cumulative-layout-shift'].displayValue}\n• Speed Index: ${lighthouse.audits['speed-index'].displayValue}\n`;\n\nreturn [{\n json: {\n content: reportText\n }\n}];\n"
},
"typeVersion": 2
},
{
"id": "589300cb-913e-4dfe-b987-cb9077c3049a",
"name": "Agent spécialiste Performance",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-2820,
-940
],
"parameters": {
"text": "=Aujourd'hui nous sommes le {{ $now }}\n\nTu es un expert en performance web et Core Web Vitals, spécialisé dans l'optimisation de sites tech/IA.\n\nMISSION : Analyser les métriques PageSpeed Insights de nana-intelligence.fr et proposer des optimisations concrètes.\n\nDONNÉES REÇUES : {{ $json.content }}\nMÉTRIQUES STRUCTURÉES : {{ $json.pagespeed_data }}\n\nANALYSE REQUISE :\n\n⚡ Core Web Vitals\n- Évaluation LCP, FID, CLS vs seuils Google\n- Impact sur l'expérience utilisateur\n- Priorisation des corrections\n\n📱 Performance Mobile vs Desktop\n- Identification des goulots d'étranglement\n- Optimisations spécifiques par device\n\n🔧 Optimisations Techniques Prioritaires\n- Resources bloquantes critiques\n- Optimisation images et médias\n- Minification CSS/JS\n- Stratégies de cache\n\n🎯 Impact SEO & Business\n- Corrélation performance/classements Google\n- ROI estimé des optimisations\n- Objectifs chiffrés à 30 jours\n\nCONTEXTE : Site IA/tech avec contenu riche nécessitant performance optimale.\n\nFORMAT RÉPONSE :\n- Synthèse performance actuelle (2-3 phrases)\n- Top 3 optimisations prioritaires avec impact estimé\n- Plan d'action technique avec timeline\n- Objectifs de performance à atteindre\n\nUtilise des émojis pour structurer ta réponse et sois concret dans tes recommandations.",
"options": {
"systemMessage": "You must respond only in English. Be precise, actionable, and results-oriented. Use quantified data whenever possible.\n"
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "bb516f2c-aa34-48dc-9201-19fcace4e1f6",
"name": "Crawler page d'accueil",
"type": "n8n-nodes-base.httpRequest",
"position": [
-3520,
-40
],
"parameters": {
"url": "={{ $json.domain }}",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (compatible; n8n-seo-audit/1.0)"
},
{
"name": "Accept",
"value": "text/html,application/xhtml+xml"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "3d69a9e4-a206-491f-80d0-6b28da693fab",
"name": "Extraire données SEO on-page",
"type": "n8n-nodes-base.code",
"position": [
-3300,
-40
],
"parameters": {
"jsCode": "// Complete extraction of SEO data from HTML\nconst html = $input.first().json.body || $input.first().json.data || '';\n\nif (!html) {\n return [{\n json: {\n error: \"No HTML content retrieved\",\n content: \"Error while scraping the site\"\n }\n }];\n}\n\nfunction cleanText(text) {\n return text ? text.replace(/<[^>]*>/g, '').trim() : '';\n}\n\nconst seoExtraction = {\n title: cleanText(html.match(/<title[^>]*>(.*?)<\\/title>/i)?.[1]) || 'Not found',\n metaDescription: html.match(/<meta[^>]*name=[\"']description[\"'][^>]*content=[\"']([^\"']*)[\"'][^>]*>/i)?.[1] || 'Not found',\n h1Tags: (html.match(/<h1[^>]*>(.*?)<\\/h1>/gi) || []).map(h1 => cleanText(h1)),\n totalImages: (html.match(/<img[^>]*>/gi) || []).length,\n imagesWithAlt: (html.match(/<img[^>]*alt=[\"'][^\"']*[\"'][^>]*>/gi) || []).length,\n};\n\nseoExtraction.imagesWithoutAlt = seoExtraction.totalImages - seoExtraction.imagesWithAlt;\n\nreturn [{\n json: seoExtraction\n}];\n"
},
"typeVersion": 2
},
{
"id": "c8b99b81-c718-4477-b59d-7bbbb0779ac5",
"name": "Évaluer SEO on-page",
"type": "n8n-nodes-base.code",
"position": [
-3080,
-40
],
"parameters": {
"jsCode": "// Complete analysis and scoring of extracted SEO data\nconst seoData = $input.first().json;\n\nif (!seoData || !seoData.title) {\n return [{\n json: {\n error: \"Missing SEO data\",\n content: \"Unable to proceed with the audit\"\n }\n }];\n}\n\n// SEO scoring system (out of 100 points)\nconst scoring = {\n technical: 0,\n onPage: 0,\n};\n\n// TECHNICAL SCORE\nif (seoData.title && seoData.title !== 'Not found') scoring.technical += 10;\nif (seoData.metaDescription && seoData.metaDescription !== 'Not found') scoring.technical += 10;\n\n// ON-PAGE SCORE\nif (seoData.h1Tags.length === 1) scoring.onPage += 10;\nif (seoData.imagesWithoutAlt === 0 && seoData.totalImages > 0) scoring.onPage += 10;\n\nconst totalScore = scoring.technical + scoring.onPage;\nlet scoreStatus = '';\nif (totalScore >= 80) scoreStatus = 'EXCELLENT';\nelse if (totalScore >= 60) scoreStatus = 'GOOD';\nelse if (totalScore >= 40) scoreStatus = 'AVERAGE';\nelse scoreStatus = 'POOR';\n\nconst criticalIssues = [];\nif (!seoData.title || seoData.title === 'Not found') criticalIssues.push('❌ CRITICAL: Missing title');\nif (!seoData.metaDescription || seoData.metaDescription === 'Not found') criticalIssues.push('❌ CRITICAL: Missing meta description');\nif (seoData.h1Tags.length === 0) criticalIssues.push('❌ CRITICAL: No H1 tag detected');\nelse if (seoData.h1Tags.length > 1) criticalIssues.push('⚠️ IMPORTANT: Multiple H1 tags detected');\n\nconst recommendations = [];\nif (seoData.imagesWithoutAlt > 0) recommendations.push(`🖼️ Add alt text to ${seoData.imagesWithoutAlt} images`);\n\n// Complete audit report\nconst auditReport = `\n=== COMPLETE TECHNICAL SEO AUDIT - TARGET WEBSITE ===\n📊 ANALYSIS DATE: ${new Date().toLocaleDateString('en-US')}\n\n★ GLOBAL SEO SCORE: ${totalScore}/100 (${scoreStatus})\n\n📋 ON-PAGE ANALYSIS:\n• Title: ${seoData.title !== 'Not found' ? '✅ ' + seoData.title.substring(0, 80) : '❌ Missing'}\n• Meta description: ${seoData.metaDescription !== 'Not found' ? '✅ ' + seoData.metaDescription.substring(0, 100) : '❌ Missing'}\n• H1: ${seoData.h1Tags.length} found(s) ${seoData.h1Tags.length === 1 ? '✅' : '⚠️'}\n• Images with alt text: ${seoData.imagesWithAlt}/${seoData.totalImages} ${seoData.imagesWithoutAlt === 0 ? '✅' : '❌'}\n\n${criticalIssues.length > 0 ? '🚨 CRITICAL ISSUES:\\n' + criticalIssues.join('\\n') : ''}\n${recommendations.length > 0 ? '💡 PRIORITY RECOMMENDATIONS:\\n' + recommendations.map(rec => '• ' + rec).join('\\n') : ''}\n`;\n\nreturn [{\n json: {\n content: auditReport,\n auditData: {\n totalScore,\n scoreStatus,\n scoring,\n criticalIssues,\n recommendations,\n }\n }\n}];\n"
},
"typeVersion": 2
},
{
"id": "4901342b-1f93-4083-9cc1-1ae4d28d011d",
"name": "Agent audit technique",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-2820,
-40
],
"parameters": {
"text": "=You are a senior technical SEO expert, specializing in auditing and optimizing AI/tech websites.\n\nMISSION: Analyze the complete technical audit and create a prioritized action plan.\n\nAUDIT DATA: {{ $json.content }}\nDETAILED METRICS: {{ $json.auditData }}\n\n### In-Depth Analysis Required:\n\n🔍 **Expert Diagnosis**\n- Evaluate the overall score and position against competitors.\n- Identify quick wins versus long-term optimizations.\n- Prioritize based on SEO impact vs. required effort.\n\n⚡ **Immediate Action Plan (7 days)**\n- Critical fixes to implement first.\n- Quick on-page optimizations.\n- Essential technical improvements.\n\n📈 **Technical Roadmap (30-90 days)**\n- Phase 1 (0-30d): Solid SEO foundations.\n- Phase 2 (30-60d): Advanced optimizations.\n- Phase 3 (60-90d): Performance and monitoring.\n\n💰 **ROI and Estimated Impact**\n- Potential traffic gain per improvement.\n- Required resources vs. benefits.\n- Realistic timeline to see results.\n\n### TOOL USAGE INSTRUCTIONS (VERY IMPORTANT)\nOnce your analysis is complete, before formulating your final response, you MUST use the `Append or update row in sheet in Google Sheets` tool to save a summary.\nTo do this, you must provide data in a perfect JSON format matching the spreadsheet columns:\n\n{\n \"Date\": \"{{ $now.toISODate() }}\", // Use current date in YYYY-MM-DD format\n \"Source\": \"Technical SEO Audit\",\n \"Rapport\": \"Insert a concise summary of your audit here (2-3 paragraphs max).\",\n \"Recommandations\": \"List the top 3 most critical recommendations here as a bulleted list.\"\n}\n\nAfter successfully calling this tool, you can then formulate your full response for the end-user.\n\n### RESPONSE FORMAT:\nStructure your final response with emojis, clear sections, and highly concrete recommendations. Conclude with a dashboard of 5 main KPIs to track.\n",
"options": {
"systemMessage": "You must respond only in English. Be precise, actionable, and results-oriented. Use quantified data whenever possible.\n"
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "8b01b20c-c10c-43a9-8fe7-34d3d703933c",
"name": "Agréger tous les rapports",
"type": "n8n-nodes-base.code",
"position": [
-1980,
-640
],
"parameters": {
"jsCode": "// Simple aggregator - post-merge\nconst allInputs = $input.all();\n\n// Extract contents\nconst reports = allInputs.map((input, index) => ({\n index: index + 1,\n content: input.json.output || input.json.content || JSON.stringify(input.json),\n}));\n\n// Create the consolidated text\nconst consolidatedText = `\n=== CONSOLIDATED DATA FOR MASTER ANALYST ===\n📊 Reports received: ${reports.length}/4\n\n📄 REPORT 1 (ANALYTICS):\n${reports[0]?.content.substring(0, 1000)}...\n\n📄 REPORT 2 (PAGESPEED):\n${reports[1]?.content.substring(0, 1000)}...\n\n📄 REPORT 3 (SEARCH CONSOLE):\n${reports[2]?.content.substring(0, 1000)}...\n\n📄 REPORT 4 (TECHNICAL AUDIT):\n${reports[3]?.content.substring(0, 1000)}...\n\n🎯 MASTER ANALYST INSTRUCTIONS:\nAnalyze these 4 reports and create a comprehensive SEO summary with a prioritized action plan.\n`;\n\nreturn [{\n json: {\n textSummary: consolidatedText\n }\n}];\n"
},
"typeVersion": 2
},
{
"id": "4d826fd3-118b-4316-bb10-0ac18bf8d694",
"name": "Agent analyste principal",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-1760,
-640
],
"parameters": {
"text": "=You are the MASTER SEO ANALYST, an expert in strategic synthesis and actionable recommendations.\n\nCONSOLIDATED DATA RECEIVED: {{ $json.textSummary }}\nMETADATA: {{ $json.reportMetadata }}\n\nMISSION: Create a 360° SEO analysis and a prioritized action plan for nana-intelligence.fr.\n\nSPECIFIC CONTEXT:\n- Site specializing in artificial intelligence\n- Growth and SEO optimization phase\n- Need for concrete and prioritized recommendations\n\nCOMPLETE ANALYSIS REQUIRED:\n\n🎯 EXECUTIVE SUMMARY\n- Estimated overall SEO score (/100)\n- 3 main strengths identified\n- 3 critical weaknesses to correct\n- Estimated competitive positioning\n\n📊 CROSS-FUNCTIONAL ANALYSIS\n- Consistency between Analytics, Performance, SEO, and Technical aspects\n- Identification of important correlations\n- Friction points in the user experience\n- Cross-channel improvement opportunities\n\n🚀 PRIORITIZED ACTION PLAN (90 DAYS)\n- WEEK 1-2: Critical actions (immediate impact)\n- MONTH 1: Fundamental optimizations\n- MONTHS 2-3: Development and growth\n\n💰 ROI AND MEASURABLE GOALS\n- 30/60/90-day traffic goals\n- Priority KPIs to track\n- Estimated resources/budget required\n- Expected business impact\n\n🔍 MONITORING AND ALERTS\n- Metrics to monitor monthly\n- Alert thresholds to configure\n- Corrective actions in case of degradation\n\nRESPONSE FORMAT:\nStructure your response with emojis, clear sections, and highly actionable recommendations. Conclude with a tracking dashboard featuring 5 main KPIs.\n\nIMPORTANT: Be precise, actionable, and tailor your recommendations to the AI/tech sector.\n",
"options": {
"systemMessage": "Tu réponds uniquement en français. Sois précis, actionnable et orienté résultats. Utilise des données chiffrées quand possible."
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "734dd3f2-b839-45b8-816e-55537d49fa46",
"name": "Obtenir historique GA",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-2740,
-1120
],
"parameters": {
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "lmJOtRvKMOD3WkGJ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "c2fc9adc-ea41-4487-b3a9-8aa8c9958363",
"name": "Obtenir historique Search Console",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-2740,
-320
],
"parameters": {
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "lmJOtRvKMOD3WkGJ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "f3d33302-cd1d-40f0-9582-f0af420ad4dd",
"name": "Obtenir historique PageSpeed",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-2740,
-720
],
"parameters": {
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "lmJOtRvKMOD3WkGJ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "fd76ab3f-ed79-46b9-9ff6-d5ba1d00d71b",
"name": "Obtenir historique audit technique",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-2740,
180
],
"parameters": {
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "lmJOtRvKMOD3WkGJ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "aca46735-6331-49e9-b4e7-5a8aff96b23d",
"name": "Sauvegarder rapport final dans Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
-1180,
-640
],
"parameters": {
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "lmJOtRvKMOD3WkGJ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "0571f8a4-b8da-4025-98f5-82586847d996",
"name": "Obtenir un rapport",
"type": "n8n-nodes-base.googleAnalytics",
"position": [
-3340,
-1240
],
"parameters": {
"metricsGA4": {
"metricValues": [
{}
]
},
"propertyId": {
"__rl": true,
"mode": "list",
"value": ""
},
"dimensionsGA4": {
"dimensionValues": [
{}
]
},
"additionalFields": {}
},
"credentials": {
"googleAnalyticsOAuth2": {
"id": "IdJyLR8hvyqvt2XQ",
"name": "Google Analytics account"
}
},
"typeVersion": 2
},
{
"id": "3e1cf038-fe51-4938-a963-b44e476c8b9b",
"name": "Obtenir ligne(s) dans Google Sheets",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-2620,
-720
],
"parameters": {
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "lmJOtRvKMOD3WkGJ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "7e0f155e-47d4-42bc-b5d9-ccd8af2fc320",
"name": "Obtenir ligne(s) dans Google Sheets1",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-2620,
-320
],
"parameters": {
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "lmJOtRvKMOD3WkGJ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "f075de2e-af7a-49c7-8fca-4b61d2147b44",
"name": "Obtenir ligne(s) dans Google Sheets2",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-2620,
180
],
"parameters": {
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "lmJOtRvKMOD3WkGJ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "dec783ed-8df6-440a-87b2-a114db375be0",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-4840,
-1220
],
"parameters": {
"color": 5,
"width": 1180,
"height": 920,
"content": "# 🚀 Automated SEO Audit: Setup & Overview\n\nThis workflow performs a fully automated monthly SEO audit using a team of specialized AI agents. It gathers data from Google Analytics, Search Console, PageSpeed, and a live website crawl to generate a comprehensive report.\n\n### ⚠️ CRITICAL SETUP REQUIRED\n\nBefore you can run this workflow, you MUST configure the following:\n\n1. **Set Target Domain**: In the `Set Target Website` node, replace the default URL with your own website's URL.\n2. **Configure Trigger**: Click the `Schedule Trigger` to set the day and time for your monthly report.\n3. **Connect Credentials**:\n * **OpenAI**: Add your API key to all `OpenAI Chat Model` nodes.\n * **Google**: Connect your Google account to all `Google Sheets`, `Google Analytics` (Get a report), and `Search Console` (HTTP Request) nodes.\n * **PageSpeed**: Create a \"Generic Credential\" for your Google API key and select it in the `Fetch PageSpeed Data` node.\n4. **Update Google Sheet ID**: In **ALL** `Google Sheets` nodes, replace the default \"Document ID\" with the ID of your own Google Sheet.\n"
},
"typeVersion": 1
},
{
"id": "f6e8b2f2-a7eb-478f-b435-f7d3d718c420",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3640,
-1740
],
"parameters": {
"color": 4,
"width": 700,
"height": 1940,
"content": "# 1. Data Collection Phase\n\nThis is the starting point of the audit. The workflow runs four branches in parallel to gather raw data from key sources.\n\n- **Google Analytics**: Fetches overall traffic and user behavior data.\n- **Google Search Console**: Retrieves organic search performance metrics.\n- **PageSpeed Insights**: Gathers technical performance and Core Web Vitals scores.\n- **Live Website Crawl**: Scrapes the homepage for on-page SEO elements (titles, headings, etc.).\n"
},
"typeVersion": 1
},
{
"id": "1ee5c1d8-deb5-453c-96fa-1861e70f6960",
"name": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2920,
-1740
],
"parameters": {
"width": 580,
"height": 2100,
"content": "# 2. Specialist AI Analysis\n\nThis is the core intelligence of the workflow. Each data stream is processed by a dedicated AI agent with a specific area of expertise.\n\n- **Analytics Specialist**: Interprets GA4 data to find trends.\n- **Performance Specialist**: Analyzes PageSpeed scores and recommends technical fixes.\n- **SEO Specialist**: Evaluates Search Console data for organic growth opportunities.\n- **Technical Audit Agent**: Scores the on-page SEO elements from the live crawl.\n"
},
"typeVersion": 1
},
{
"id": "c2525899-4b56-4c73-8ae6-6814cce13820",
"name": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2320,
-1000
],
"parameters": {
"color": 3,
"width": 1020,
"height": 780,
"content": "# 3. Aggregation & Master Synthesis\n\nIn this phase, all four specialist reports are collected and merged.\n\nA final **Master Analyst Agent** then receives this consolidated data package. Its mission is to synthesize all the information into a single, high-level strategic summary with a prioritized, actionable roadmap for the business.\n"
},
"typeVersion": 1
},
{
"id": "b1a0957f-fe63-499d-8764-57638a26309d",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1280,
-880
],
"parameters": {
"width": 440,
"height": 500,
"content": "# 4. Final Output & Storage\n\nThis is the final step. All individual reports, as well as the final comprehensive report from the Master Analyst, are automatically saved to your designated Google Sheet.\n\nThis creates a historical archive of your monthly SEO performance, allowing you to track progress over time.\n"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"a0760c4c-5455-42e5-88c2-fcaa0f3141b0": {
"main": [
[
{
"node": "8b01b20c-c10c-43a9-8fe7-34d3d703933c",
"type": "main",
"index": 0
}
]
]
},
"2f9345a9-c5f1-4564-8ef3-836d75281fe1": {
"ai_tool": [
[
{
"node": "ed1a7666-4808-44cf-a415-7ccc76f22d2a",
"type": "ai_tool",
"index": 0
}
]
]
},
"4ef711bd-bcaa-4b61-8dfd-f4cc36f8a0a1": {
"ai_tool": [
[
{
"node": "4d826fd3-118b-4316-bb10-0ac18bf8d694",
"type": "ai_tool",
"index": 0
}
]
]
},
"0571f8a4-b8da-4025-98f5-82586847d996": {
"main": [
[
{
"node": "ef6218b1-dff2-41fc-9aad-6d7e7a3c809a",
"type": "main",
"index": 0
}
]
]
},
"ef6218b1-dff2-41fc-9aad-6d7e7a3c809a": {
"main": [
[
{
"node": "ed1a7666-4808-44cf-a415-7ccc76f22d2a",
"type": "main",
"index": 0
}
]
]
},
"734dd3f2-b839-45b8-816e-55537d49fa46": {
"ai_tool": [
[
{
"node": "ed1a7666-4808-44cf-a415-7ccc76f22d2a",
"type": "ai_tool",
"index": 0
}
]
]
},
"8376066b-cb77-4b60-93d1-c883eaafbb39": {
"main": [
[
{
"node": "95e9373d-cbfd-42ae-aba4-fc3e351f0a0f",
"type": "main",
"index": 0
}
]
]
},
"934d8441-bf80-4dec-9423-8adc877d55d7": {
"main": [
[
{
"node": "d3676416-da4b-41ea-8b9b-b18ea5adbef8",
"type": "main",
"index": 0
}
]
]
},
"122563ce-0d90-4adc-bcc0-8e806c19e114": {
"ai_languageModel": [
[
{
"node": "ed1a7666-4808-44cf-a415-7ccc76f22d2a",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"c8b99b81-c718-4477-b59d-7bbbb0779ac5": {
"main": [
[
{
"node": "4901342b-1f93-4083-9cc1-1ae4d28d011d",
"type": "main",
"index": 0
}
]
]
},
"57e0c737-c007-4a9e-9258-df083a3bfd50": {
"ai_languageModel": [
[
{
"node": "d7d2dda7-896b-462c-b959-e782dac35e52",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"50dd07fa-a710-4d03-8a81-95098a6454e5": {
"ai_languageModel": [
[
{
"node": "589300cb-913e-4dfe-b987-cb9077c3049a",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"fdb3b364-b3a0-4a45-8f71-c27fd8a91c8b": {
"ai_languageModel": [
[
{
"node": "4901342b-1f93-4083-9cc1-1ae4d28d011d",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"8deb28d8-858d-42df-8802-3c339c83494f": {
"ai_languageModel": [
[
{
"node": "4d826fd3-118b-4316-bb10-0ac18bf8d694",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"d3676416-da4b-41ea-8b9b-b18ea5adbef8": {
"main": [
[
{
"node": "0571f8a4-b8da-4025-98f5-82586847d996",
"type": "main",
"index": 0
},
{
"node": "40f48efd-4c90-4e05-82c8-8eee42838955",
"type": "main",
"index": 0
},
{
"node": "8376066b-cb77-4b60-93d1-c883eaafbb39",
"type": "main",
"index": 0
},
{
"node": "bb516f2c-aa34-48dc-9201-19fcace4e1f6",
"type": "main",
"index": 0
}
]
]
},
"40f48efd-4c90-4e05-82c8-8eee42838955": {
"main": [
[
{
"node": "186246bb-53c6-4f42-94db-657253bcff70",
"type": "main",
"index": 0
}
]
]
},
"4d826fd3-118b-4316-bb10-0ac18bf8d694": {
"main": [
[
{
"node": "aca46735-6331-49e9-b4e7-5a8aff96b23d",
"type": "main",
"index": 0
}
]
]
},
"d7d2dda7-896b-462c-b959-e782dac35e52": {
"main": [
[
{
"node": "a0760c4c-5455-42e5-88c2-fcaa0f3141b0",
"type": "main",
"index": 2
}
]
]
},
"8b01b20c-c10c-43a9-8fe7-34d3d703933c": {
"main": [
[
{
"node": "4d826fd3-118b-4316-bb10-0ac18bf8d694",
"type": "main",
"index": 0
}
]
]
},
"186246bb-53c6-4f42-94db-657253bcff70": {
"main": [
[
{
"node": "589300cb-913e-4dfe-b987-cb9077c3049a",
"type": "main",
"index": 0
}
]
]
},
"f3d33302-cd1d-40f0-9582-f0af420ad4dd": {
"ai_tool": [
[
{
"node": "589300cb-913e-4dfe-b987-cb9077c3049a",
"type": "ai_tool",
"index": 0
}
]
]
},
"4901342b-1f93-4083-9cc1-1ae4d28d011d": {
"main": [
[
{
"node": "a0760c4c-5455-42e5-88c2-fcaa0f3141b0",
"type": "main",
"index": 3
}
]
]
},
"bb516f2c-aa34-48dc-9201-19fcace4e1f6": {
"main": [
[
{
"node": "3d69a9e4-a206-491f-80d0-6b28da693fab",
"type": "main",
"index": 0
}
]
]
},
"3d69a9e4-a206-491f-80d0-6b28da693fab": {
"main": [
[
{
"node": "c8b99b81-c718-4477-b59d-7bbbb0779ac5",
"type": "main",
"index": 0
}
]
]
},
"ed1a7666-4808-44cf-a415-7ccc76f22d2a": {
"main": [
[
{
"node": "a0760c4c-5455-42e5-88c2-fcaa0f3141b0",
"type": "main",
"index": 0
}
]
]
},
"95e9373d-cbfd-42ae-aba4-fc3e351f0a0f": {
"main": [
[
{
"node": "d7d2dda7-896b-462c-b959-e782dac35e52",
"type": "main",
"index": 0
}
]
]
},
"c2fc9adc-ea41-4487-b3a9-8aa8c9958363": {
"ai_tool": [
[
{
"node": "d7d2dda7-896b-462c-b959-e782dac35e52",
"type": "ai_tool",
"index": 0
}
]
]
},
"fd76ab3f-ed79-46b9-9ff6-d5ba1d00d71b": {
"ai_tool": [
[
{
"node": "4901342b-1f93-4083-9cc1-1ae4d28d011d",
"type": "ai_tool",
"index": 0
}
]
]
},
"589300cb-913e-4dfe-b987-cb9077c3049a": {
"main": [
[
{
"node": "a0760c4c-5455-42e5-88c2-fcaa0f3141b0",
"type": "main",
"index": 1
}
]
]
},
"3e1cf038-fe51-4938-a963-b44e476c8b9b": {
"ai_tool": [
[
{
"node": "589300cb-913e-4dfe-b987-cb9077c3049a",
"type": "ai_tool",
"index": 0
}
]
]
},
"7e0f155e-47d4-42bc-b5d9-ccd8af2fc320": {
"ai_tool": [
[
{
"node": "d7d2dda7-896b-462c-b959-e782dac35e52",
"type": "ai_tool",
"index": 0
}
]
]
},
"f075de2e-af7a-49c7-8fca-4b61d2147b44": {
"ai_tool": [
[
{
"node": "4901342b-1f93-4083-9cc1-1ae4d28d011d",
"type": "ai_tool",
"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é - Étude de marché, Résumé IA
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
Jimmy Gay
@jimmyjoePartager ce workflow