Génération automatisée de rapports SEO avec RapidAPI SEO Analyzer et Google Docs
Ceci est unAI Summarization, Multimodal AIworkflow d'automatisation du domainecontenant 9 nœuds.Utilise principalement des nœuds comme Code, GoogleDocs, FormTrigger, HttpRequest. Utiliser l'analyseur SEO de RapidAPI et Google Docs pour générer un rapport SEO automatisé
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
Nœuds utilisés (9)
Catégorie
{
"meta": {
"instanceId": "60c025075753afcab9f803964b4caaca9402f435deb4efafbb8e3b93b54d8752"
},
"nodes": [
{
"id": "0cd19fc6-3a7e-4398-b180-eeb96eb7be32",
"name": "À la soumission du formulaire",
"type": "n8n-nodes-base.formTrigger",
"position": [
0,
0
],
"webhookId": "e347d7e6-09ed-4011-9181-bcb27efade84",
"parameters": {
"options": {},
"formTitle": "Website Audit ",
"formFields": {
"values": [
{
"fieldLabel": "url",
"requiredField": true
}
]
},
"formDescription": "Website Audit "
},
"typeVersion": 2.2
},
{
"id": "1683a3a1-1680-496f-a184-0c4148753abc",
"name": "Audit de site web",
"type": "n8n-nodes-base.httpRequest",
"position": [
240,
0
],
"parameters": {
"url": "https://website-seo-analyzer-and-audit-ai.p.rapidapi.com/seo.php",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "url",
"value": "={{ $json.url }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "website-seo-analyzer-and-audit-ai.p.rapidapi.com"
},
{
"name": "x-rapidapi-key",
"value": "your key "
}
]
}
},
"typeVersion": 4.2
},
{
"id": "0c5903dd-af19-4223-bd64-33df65747bba",
"name": "Reformater",
"type": "n8n-nodes-base.code",
"position": [
540,
0
],
"parameters": {
"jsCode": "const data = $input.first().json.data.apiData.results;\n\n// Basic metadata\nconst basic = data.basic;\nconst adv = data.advanced;\nconst perf = data.performance;\nconst sec = data.security;\n\nconst formatStatus = (status) => status === 'passed' ? '✅ Passed' : '❌ Failed';\n\n// Format keyword counts\nconst keywordStats = Object.entries(basic.keywords || {})\n .map(([word, count]) => `- **${word}**: ${count}`)\n .join('\\n');\n\nconst keywordsInTD = basic.keywordsInTitleDescription?.value || {};\nconst titleKeywords = Object.entries(keywordsInTD.title || {}).map(([k, v]) => `${k} (${v})`).join(', ');\nconst descKeywords = Object.entries(keywordsInTD.description || {}).map(([k, v]) => `${k} (${v})`).join(', ');\n\n// Format no alt images\nconst missingAltImgs = basic.noImgAltAtts?.value?.length || 0;\n\n// Format H1/H2 Tags\nconst h1Tags = basic.h1Tags?.value || [];\nconst h2Tags = basic.h2Tags?.value || [];\n\nconst formatted = `\n# 🔍 SEO Site Audit Summary\n\n## 📝 Page Metadata\n- **Title:** ${basic.title?.value || 'N/A'} (${basic.title?.length || 0} chars) — ${formatStatus(basic.title?.status)}\n- **Description:** ${basic.description?.value || 'N/A'} (${basic.description?.length || 0} chars) — ${formatStatus(basic.description?.status)}\n- **Title Keywords:** ${titleKeywords || 'None'}\n- **Description Keywords:** ${descKeywords || 'None'}\n\n## 🏷️ Keyword Density\n${keywordStats || 'No keywords found.'}\n\n## 🧱 Headers\n- **H1 Tags:** ${h1Tags.length > 0 ? h1Tags.join('; ') : '❌ None Found'}\n- **H2 Tags:** ${h2Tags.length > 0 ? h2Tags.join('; ') : '❌ None Found'}\n\n## 🖼️ Image Optimization\n- Missing \\`alt\\` tags: ${missingAltImgs} ${missingAltImgs > 0 ? '❌ Needs improvement' : '✅ All good'}\n\n## 🔗 Links Summary\n- Internal Links: ${basic.linksRatio?.value?.internal || 0}\n- External Links: ${basic.linksRatio?.value?.external || 0} — ${formatStatus(basic.linksRatio?.status)}\n\n## 📱 Search Preview\n${adv.searchPreview || 'N/A'}\n\n## 📦 Performance\n- JS Unminified: ${perf.unminifiedJs?.value?.length || 0} — ${formatStatus(perf.unminifiedJs?.status)}\n- CSS Unminified: ${perf.unminifiedCss?.value?.length || 0} — ${formatStatus(perf.unminifiedCss?.status)}\n- Total Page Objects: ${perf.pageObjects?.value?.total || 0} — ${formatStatus(perf.pageObjects?.status)}\n- Page Size: ${perf.pageSize?.value || 0} KB\n- Response Time: ${perf.responseTime?.value || 0} sec\n\n## 🛡️ Security\n- Secure Connection: ${formatStatus(sec.secureConnection?.status)}\n- Google Safe Browsing: ${formatStatus(sec.googleSafeBrowsing?.status)}\n- Directory Listing: ${formatStatus(sec.directoryListing?.status)}\n\n## 🧠 Structured Data\n- Open Graph Tags: ${adv.openGraph?.status === 'error' ? `❌ Missing: ${adv.openGraph?.value?.join(', ')}` : '✅ Present'}\n- Schema.org Markup: ${formatStatus(adv.schema?.status)}\n\n---\n`;\n\nreturn [\n {\n json: {\n docContent: formatted.trim()\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "17a12918-acce-46c2-9c54-05baa4a0f50d",
"name": "Ajouter des données dans Google Docs",
"type": "n8n-nodes-base.googleDocs",
"position": [
800,
0
],
"parameters": {
"actionsUi": {
"actionFields": [
{
"text": "={{ $json.docContent }}",
"action": "insert"
}
]
},
"operation": "update",
"documentURL": "",
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "Rt0RWApx8PL9t0RF",
"name": "Google Docs account"
}
},
"typeVersion": 2
},
{
"id": "21db8a8f-d651-4c2b-9884-dfdf29099cd7",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-700,
-380
],
"parameters": {
"width": 540,
"height": 720,
"content": "### 🧾 Automated Website SEO Audit and Google Docs Report\n\n### This n8n workflow performs an SEO audit of a submitted website URL using a RapidAPI service and generates a well-formatted SEO report in Google Docs.\n\n---\n\n### 1️⃣ **On form submission** (`formTrigger`)\n- Collects a website URL from a form input to initiate the audit process.\n\n---\n\n### 2️⃣ **Website Audit** (`httpRequest`)\n- Sends the submitted URL to the SEO Audit API via RapidAPI to fetch audit results.\n\n---\n\n### 3️⃣ **Reformat** (`code`)\n- Parses and reformats the raw audit JSON into a clean, readable Markdown report.\n\n---\n\n### 4️⃣ **Add Data In Google Docs** (`googleDocs`)\n- Inserts the generated SEO audit report into a specified Google Docs file.\n\n---\n"
},
"typeVersion": 1
},
{
"id": "f6e2c21f-1c6a-4e03-9f9d-838ccb417dbe",
"name": "Note adhésive 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-220
],
"parameters": {
"height": 340,
"content": "🟢 **On form submission**\n- **Type:** `formTrigger`\n- **Purpose:** Captures the website URL entered by the user in the form to initiate the audit process.\n"
},
"typeVersion": 1
},
{
"id": "6a153f89-ba90-4330-852f-1bfe023539c2",
"name": "Note adhésive 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
200,
-220
],
"parameters": {
"height": 340,
"content": "🌐 **Website Audit**\n- **Type:** `httpRequest`\n- **Purpose:** Sends a POST request with the submitted URL to the SEO Analyzer API via RapidAPI to retrieve audit data.\n"
},
"typeVersion": 1
},
{
"id": "ea5d183b-03cf-4f7b-9e88-bdecc6506084",
"name": "Note adhésive 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
460,
-220
],
"parameters": {
"height": 340,
"content": " 🧠 **Reformat**\n- **Type:** `code`\n- **Purpose:** Extracts and formats the raw SEO data into a structured, readable Markdown report summarizing performance, metadata, security, and more.\n"
},
"typeVersion": 1
},
{
"id": "d306ad26-fe30-4c40-bf9a-bb4403366b91",
"name": "Note adhésive 5",
"type": "n8n-nodes-base.stickyNote",
"position": [
720,
-220
],
"parameters": {
"height": 340,
"content": "📄 **Add Data In Google Docs**\n- **Type:** `googleDocs`\n- **Purpose:** Appends the formatted SEO report into a specified Google Docs document using the connected Google account.\n"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"0c5903dd-af19-4223-bd64-33df65747bba": {
"main": [
[
{
"node": "17a12918-acce-46c2-9c54-05baa4a0f50d",
"type": "main",
"index": 0
}
]
]
},
"1683a3a1-1680-496f-a184-0c4148753abc": {
"main": [
[
{
"node": "0c5903dd-af19-4223-bd64-33df65747bba",
"type": "main",
"index": 0
}
]
]
},
"0cd19fc6-3a7e-4398-b180-eeb96eb7be32": {
"main": [
[
{
"node": "1683a3a1-1680-496f-a184-0c4148753abc",
"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 - Résumé IA, 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
Evoort Solutions
@evoortsolutionsPartager ce workflow