Workflow n8n

Automatisation SerpBear avec n8n : analyse de données SEO

Ce workflow n8n a pour objectif d'automatiser l'analyse des données SEO à partir de SerpBear, un outil de suivi des performances de recherche. Dans un contexte où les entreprises cherchent à optimiser leur visibilité en ligne, ce workflow permet de récupérer des données précieuses sur les SERP et de les analyser efficacement. Les cas d'usage incluent la surveillance des positions de mots-clés, l'évaluation des performances des concurrents et l'optimisation des stratégies de contenu. Le processus commence avec un déclencheur planifié qui active le workflow à intervalles réguliers. Ensuite, le nœud 'Get data from SerpBear' effectue une requête HTTP pour récupérer les données pertinentes. Ces données sont ensuite traitées par le nœud 'Parse data from SerpBear', qui utilise un code JavaScript pour les structurer. Après cela, les informations sont envoyées à une API d'analyse via un autre nœud HTTP. Enfin, les résultats sont stockés dans Baserow pour une gestion et une visualisation faciles. Les bénéfices de ce workflow incluent une réduction significative du temps consacré à la collecte et à l'analyse des données, permettant aux équipes marketing de se concentrer sur des actions stratégiques. En automatisant ce processus, les entreprises peuvent améliorer leur réactivité face aux fluctuations du marché et optimiser leurs efforts SEO de manière continue. Tags clés : SEO, automatisation, n8n.

Catégorie: Scheduled · Tags: SEO, automatisation, n8n, SerpBear, analyse de données0

Vue d'ensemble du workflow n8n

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Détail des nœuds du workflow n8n

  • When clicking ‘Test workflow’

    Déclenche le workflow manuellement lorsque l'utilisateur clique sur 'Test workflow'.

  • Schedule Trigger

    Déclenche le workflow selon un calendrier défini par une règle.

  • Get data from SerpBear

    Récupère des données depuis SerpBear via une requête HTTP.

  • Parse data from SerpBear

    Analyse et traite les données récupérées de SerpBear à l'aide d'un code JavaScript.

  • Send data to A.I. for analysis

    Envoie les données à une intelligence artificielle pour analyse via une requête HTTP.

  • Save data to Baserow

    Enregistre les données dans Baserow en spécifiant la table et les champs.

  • Sticky Note

    Crée une note autocollante avec des paramètres de couleur, largeur, hauteur et contenu.

  • Sticky Note1

    Crée une note autocollante avec des paramètres de largeur, hauteur et contenu.

  • Sticky Note2

    Crée une note autocollante avec des paramètres de couleur, largeur, hauteur et contenu.

  • Sticky Note3

    Crée une note autocollante avec des paramètres de couleur, largeur, hauteur et contenu.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "id": "qmmXKcpJOCm9qaCk",
  "meta": {
    "instanceId": "558d88703fb65b2d0e44613bc35916258b0f0bf983c5d4730c00c424b77ca36a",
    "templateCredsSetupCompleted": true
  },
  "name": "SERPBear analytics template",
  "tags": [],
  "nodes": [
    {
      "id": "2ad0eb40-6628-4c6b-bc15-7081e7712f1a",
      "name": "When clicking ‘Test workflow’",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        260,
        380
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "5a3c9ad8-a562-4bb0-bb11-c325552d8101",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        260,
        160
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "weeks"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "bdfa7388-f9b3-4145-90de-2e58138e14bf",
      "name": "Get data from SerpBear",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        580,
        260
      ],
      "parameters": {
        "url": "https://myserpbearinstance.com/api/keyword?id=22",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "domain",
              "value": "rumjahn.com"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "3fshHb4fyI5XfLyq",
          "name": "Header Auth account 6"
        }
      },
      "executeOnce": false,
      "typeVersion": 4.2,
      "alwaysOutputData": false
    },
    {
      "id": "c169f4e3-ab60-4b46-9f49-cf27a13dd7c6",
      "name": "Parse data from SerpBear",
      "type": "n8n-nodes-base.code",
      "position": [
        820,
        260
      ],
      "parameters": {
        "jsCode": "const keywords = items[0].json.keywords;\nconst today = new Date().toISOString().split('T')[0];\n\n// Create summary for each keyword\nconst keywordSummaries = keywords.map(kw => {\n const position = kw.position || 0;\n const lastWeekPositions = Object.values(kw.history || {}).slice(-7);\n const avgPosition = lastWeekPositions.reduce((a, b) => a + b, 0) / lastWeekPositions.length;\n \n return {\n keyword: kw.keyword,\n currentPosition: position,\n averagePosition: Math.round(avgPosition * 10) / 10,\n trend: position < avgPosition ? 'improving' : position > avgPosition ? 'declining' : 'stable',\n url: kw.url || 'not ranking'\n };\n});\n\n// Create the prompt\nconst prompt = `Here's the SEO ranking data for rumjahn.com as of ${today}:\n\n${keywordSummaries.map(kw => `\nKeyword: \"${kw.keyword}\"\nCurrent Position: ${kw.currentPosition}\n7-Day Average: ${kw.averagePosition}\nTrend: ${kw.trend}\nRanking URL: ${kw.url}\n`).join('\\n')}\n\nPlease analyze this data and provide:\n1. Key observations about ranking performance\n2. Keywords showing the most improvement\n3. Keywords needing attention\n4. Suggested actions for improvement`;\n\nreturn {\n prompt\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "cc6e16a7-db46-42fe-837a-59ce635c906c",
      "name": "Send data to A.I. for analysis",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1060,
        260
      ],
      "parameters": {
        "url": "https://openrouter.ai/api/v1/chat/completions",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n \"model\": \"meta-llama/llama-3.1-70b-instruct:free\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"You are an SEO expert. This is keyword data for my site. Can you summarize the data into a table and then give me some suggestions:{{ encodeURIComponent($json.prompt)}}\" \n }\n ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "WY7UkF14ksPKq3S8",
          "name": "Header Auth account 2"
        }
      },
      "typeVersion": 4.2,
      "alwaysOutputData": false
    },
    {
      "id": "a623f06c-1dfe-4d04-a7fd-fed7049a7588",
      "name": "Save data to Baserow",
      "type": "n8n-nodes-base.baserow",
      "position": [
        1340,
        260
      ],
      "parameters": {
        "tableId": 644,
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": 6264,
              "fieldValue": "={{ DateTime.now().toFormat('yyyy-MM-dd') }}"
            },
            {
              "fieldId": 6265,
              "fieldValue": "={{ $json.choices[0].message.content }}"
            },
            {
              "fieldId": 6266,
              "fieldValue": "Rumjahn"
            }
          ]
        },
        "operation": "create",
        "databaseId": 121
      },
      "credentials": {
        "baserowApi": {
          "id": "8w0zXhycIfCAgja3",
          "name": "Baserow account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e8048faf-bbed-4e48-b273-d1a50a767e76",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        220,
        -360
      ],
      "parameters": {
        "color": 5,
        "width": 614.709677419355,
        "height": 208.51612903225802,
        "content": "## Send Matomo analytics to A.I. and save results to baserow\n\nThis workflow will check the Google keywords for your site and it's rank.\n\n[💡 You can read more about this workflow here](https://rumjahn.com/how-to-create-an-a-i-agent-to-analyze-serpbear-keyword-rankings-using-n8n-for-free-without-any-coding-skills-required/)"
      },
      "typeVersion": 1
    },
    {
      "id": "1a18e685-79db-423f-992a-5e0d4ddeb672",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        520,
        -80
      ],
      "parameters": {
        "width": 214.75050403225822,
        "height": 531.7318548387107,
        "content": "## Get SERPBear Data\n \n1. Enter your SerpBear API keys and URL. You need to find your website ID which is probably 1.\n2. Navigate to Administration > Personal > Security > Auth tokens within your Matomo dashboard. Click on Create new token and provide a purpose for reference."
      },
      "typeVersion": 1
    },
    {
      "id": "99895baf-75d0-4af2-87de-5b8951186e78",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        980,
        -60
      ],
      "parameters": {
        "color": 3,
        "width": 225.99936321742769,
        "height": 508.95792207792226,
        "content": "## Send data to A.I.\n\nFill in your Openrouter A.I. credentials. Use Header Auth.\n- Username: Authorization\n- Password: Bearer {insert your API key}\n\nRemember to add a space after bearer. Also, feel free to modify the prompt to A.1."
      },
      "typeVersion": 1
    },
    {
      "id": "07d03511-98b0-4f4a-8e68-96ca177fb246",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1240,
        -40
      ],
      "parameters": {
        "color": 6,
        "width": 331.32883116883124,
        "height": 474.88,
        "content": "## Send data to Baserow\n\nCreate a table first with the following columns:\n- Date\n- Note\n- Blog\n\nEnter the name of your website under \"Blog\" field."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "8b7e7da7-1965-4ca4-8e15-889eda819723",
  "connections": {
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get data from SerpBear",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get data from SerpBear": {
      "main": [
        [
          {
            "node": "Parse data from SerpBear",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse data from SerpBear": {
      "main": [
        [
          {
            "node": "Send data to A.I. for analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send data to A.I. for analysis": {
      "main": [
        [
          {
            "node": "Save data to Baserow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Test workflow’": {
      "main": [
        [
          {
            "node": "Get data from SerpBear",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Pour qui est ce workflow ?

Ce workflow s'adresse aux équipes marketing et SEO des entreprises de taille petite à moyenne qui souhaitent automatiser la collecte et l'analyse de données de performance. Un niveau technique intermédiaire est recommandé pour la personnalisation du workflow.

Problème résolu

Ce workflow résout le problème de la collecte manuelle des données SEO, qui est souvent chronophage et sujette à des erreurs. En automatisant ce processus, les utilisateurs peuvent éviter les frustrations liées à la gestion des données, réduire les risques d'erreurs humaines et obtenir des résultats concrets plus rapidement. Cela permet également d'améliorer la prise de décision basée sur des données fiables et à jour.

Étapes du workflow

Étape 1 : Le workflow est déclenché selon un calendrier prédéfini. Étape 2 : Il récupère les données de SerpBear via une requête HTTP. Étape 3 : Les données sont ensuite analysées et structurées à l'aide d'un code JavaScript. Étape 4 : Les résultats de l'analyse sont envoyés à une API pour une analyse plus approfondie. Étape 5 : Enfin, les données sont stockées dans Baserow pour une gestion facile et une visualisation des résultats.

Guide de personnalisation du workflow n8n

Pour personnaliser ce workflow, vous pouvez modifier l'URL de la requête HTTP pour l'adapter à vos besoins spécifiques. Assurez-vous également de configurer les paramètres d'authentification pour accéder à l'API de SerpBear. Si vous souhaitez intégrer d'autres outils, vous pouvez ajouter des nœuds supplémentaires pour envoyer les données vers d'autres plateformes. Pensez à ajuster les règles de planification selon la fréquence à laquelle vous souhaitez récupérer les données. Enfin, surveillez le workflow pour assurer son bon fonctionnement et sa sécurité.