Automatischer Export von Google Search Console Daten nach Airtable

Experte

Dies ist ein Market Research, Multimodal AI-Bereich Automatisierungsworkflow mit 21 Nodes. Hauptsächlich werden Set, Airtable, SplitOut, HttpRequest, ScheduleTrigger und andere Nodes verwendet. Automatischer Export von Google Search Console-Daten nach Airtable

Voraussetzungen
  • Airtable API Key
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "AJCFkuIkFN45QXA4",
  "meta": {
    "instanceId": "18b0d04ad5030054be4ab49562e84ea4a079ab4cb036003697394140227c7e76",
    "templateId": "2613",
    "templateCredsSetupCompleted": true
  },
  "name": "Export Google Search Console Data to Airtable Automatically",
  "tags": [],
  "nodes": [
    {
      "id": "8e3f167d-cbeb-4f7f-a867-c356d2dca9d0",
      "name": "Aufteilen",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1968,
        416
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "rows"
      },
      "typeVersion": 1
    },
    {
      "id": "19370d12-f6de-44a1-91a6-da097abdf7de",
      "name": "Felder bearbeiten",
      "type": "n8n-nodes-base.set",
      "position": [
        2192,
        416
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "7343c80f-37f3-4bb5-84d8-9f21f8a350cd",
              "name": "Keyword",
              "type": "string",
              "value": "={{ $json.keys[0] }}"
            },
            {
              "id": "436e7c8b-2df2-40a9-97af-597dc00cf143",
              "name": "clicks",
              "type": "number",
              "value": "={{ $json.clicks }}"
            },
            {
              "id": "5b4aaffe-391a-4c9d-8249-f447397a3f5d",
              "name": "impressions",
              "type": "number",
              "value": "={{ $json.impressions }}"
            },
            {
              "id": "33677237-57fe-48f4-aff8-72ae81b5f5a2",
              "name": "ctr",
              "type": "number",
              "value": "={{ $json.ctr }}"
            },
            {
              "id": "f961deee-d222-4df7-a7ff-b7286405e4a7",
              "name": "position",
              "type": "number",
              "value": "={{ $json.position }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "9eae4908-5266-439c-a66b-5679036234de",
      "name": "Aufteilen1",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1968,
        544
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "rows"
      },
      "typeVersion": 1
    },
    {
      "id": "b05926b1-507f-4531-a05c-a15e835ee82e",
      "name": "Felder bearbeiten1",
      "type": "n8n-nodes-base.set",
      "position": [
        2192,
        544
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "7343c80f-37f3-4bb5-84d8-9f21f8a350cd",
              "name": "page",
              "type": "string",
              "value": "={{ $json.keys[0] }}"
            },
            {
              "id": "436e7c8b-2df2-40a9-97af-597dc00cf143",
              "name": "clicks",
              "type": "number",
              "value": "={{ $json.clicks }}"
            },
            {
              "id": "5b4aaffe-391a-4c9d-8249-f447397a3f5d",
              "name": "impressions",
              "type": "number",
              "value": "={{ $json.impressions }}"
            },
            {
              "id": "33677237-57fe-48f4-aff8-72ae81b5f5a2",
              "name": "ctr",
              "type": "number",
              "value": "={{ $json.ctr }}"
            },
            {
              "id": "f961deee-d222-4df7-a7ff-b7286405e4a7",
              "name": "position",
              "type": "number",
              "value": "={{ $json.position }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "42321587-2565-4a0a-9d9d-25cbfdeb9f49",
      "name": "Aufteilen2",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1968,
        672
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "rows"
      },
      "typeVersion": 1
    },
    {
      "id": "9e25eef9-daa4-47dd-b2cf-03cfebadb5c6",
      "name": "Felder bearbeiten2",
      "type": "n8n-nodes-base.set",
      "position": [
        2192,
        672
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "7343c80f-37f3-4bb5-84d8-9f21f8a350cd",
              "name": "date",
              "type": "string",
              "value": "={{ $json.keys[0] }}"
            },
            {
              "id": "436e7c8b-2df2-40a9-97af-597dc00cf143",
              "name": "clicks",
              "type": "number",
              "value": "={{ $json.clicks }}"
            },
            {
              "id": "5b4aaffe-391a-4c9d-8249-f447397a3f5d",
              "name": "impressions",
              "type": "number",
              "value": "={{ $json.impressions }}"
            },
            {
              "id": "33677237-57fe-48f4-aff8-72ae81b5f5a2",
              "name": "ctr",
              "type": "number",
              "value": "={{ $json.ctr }}"
            },
            {
              "id": "f961deee-d222-4df7-a7ff-b7286405e4a7",
              "name": "position",
              "type": "number",
              "value": "={{ $json.position }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "e8f1ab65-9594-45e7-ba9e-7873bd53a107",
      "name": "Datum",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1744,
        672
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/webmasters/v3/sites/sc-domain:{{$json.domain}}/searchAnalytics/query",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"startDate\": \"{{ $now.format('yyyy-MM-dd') }}\",\n  \"endDate\": \"{{ $now.minus($json.days, 'days').format('yyyy-MM-dd') }}\",\n  \"dimensions\": [\"date\"]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "googleOAuth2Api"
      },
      "credentials": {
        "googleOAuth2Api": {
          "id": "rgqJrGcq1fg3mqLm",
          "name": "Google account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "d3bbf719-9524-4269-8c26-0eb7599add55",
      "name": "Zeitplan-Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        1072,
        608
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "092645b2-9e75-4ff0-8d33-4a3acadac789",
      "name": "Ihre Domain festlegen",
      "type": "n8n-nodes-base.set",
      "position": [
        1360,
        608
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "6f74dee0-3789-433e-b60e-ed2a05202675",
              "name": "domain",
              "type": "string",
              "value": "funautomations.io"
            },
            {
              "id": "8c73135e-9d39-4f66-821d-7decb3c64085",
              "name": "days",
              "type": "number",
              "value": 30
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "0b04b552-e484-417b-9a7e-a90d477dd45a",
      "name": "Abfragebericht abrufen",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1744,
        416
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/webmasters/v3/sites/sc-domain:{{$json.domain}}/searchAnalytics/query",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"startDate\": \"{{ $now.format('yyyy-MM-dd') }}\",\n  \"endDate\": \"{{ $now.minus($json.days, 'days').format('yyyy-MM-dd') }}\",\n  \"dimensions\": [\"query\"]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "googleOAuth2Api"
      },
      "credentials": {
        "googleOAuth2Api": {
          "id": "rgqJrGcq1fg3mqLm",
          "name": "Google account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "9f9f2be7-1301-4c91-8da1-86eab5725683",
      "name": "Seitenbericht abrufen",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1744,
        544
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/webmasters/v3/sites/sc-domain:{{$json.domain}}/searchAnalytics/query",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"startDate\": \"{{ $now.format('yyyy-MM-dd') }}\",\n  \"endDate\": \"{{ $now.minus($json.days, 'days').format('yyyy-MM-dd') }}\",\n  \"dimensions\": [\"page\"]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "googleOAuth2Api"
      },
      "credentials": {
        "googleOAuth2Api": {
          "id": "rgqJrGcq1fg3mqLm",
          "name": "Google account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "d2b91103-2fb1-429c-9d90-50f92f3d6a42",
      "name": "Datensatz erstellen",
      "type": "n8n-nodes-base.airtable",
      "position": [
        2512,
        416
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appzCPTyUrpA1fXpf",
          "cachedResultUrl": "https://airtable.com/appzCPTyUrpA1fXpf",
          "cachedResultName": "Search Console Reports"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblK0ZkihGpOc7ADu",
          "cachedResultUrl": "https://airtable.com/appzCPTyUrpA1fXpf/tblK0ZkihGpOc7ADu",
          "cachedResultName": "Queries"
        },
        "columns": {
          "value": {
            "ctr": "={{ $json.ctr }}",
            "clicks": "={{ $json.clicks }}",
            "Keyword": "={{ $json.Keyword }}",
            "position": "={{ $json.position }}",
            "impressions": "={{ $json.impressions }}"
          },
          "schema": [
            {
              "id": "Keyword",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Keyword",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "clicks",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "clicks",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "impressions",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "impressions",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ctr",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "ctr",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "position",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "position",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "vKZ5Wl43rmNFe0My",
          "name": "Airtable Personal Access Token account 3"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "7ea7d226-ba6c-4f08-b6f6-fda31185cbbb",
      "name": "Datensatz erstellen1",
      "type": "n8n-nodes-base.airtable",
      "position": [
        2512,
        544
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appzCPTyUrpA1fXpf",
          "cachedResultUrl": "https://airtable.com/appzCPTyUrpA1fXpf",
          "cachedResultName": "Search Console Reports"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblA6tGocjen8W0iN",
          "cachedResultUrl": "https://airtable.com/appzCPTyUrpA1fXpf/tblA6tGocjen8W0iN",
          "cachedResultName": "Pages"
        },
        "columns": {
          "value": {
            "ctr": "={{ $json.ctr }}",
            "page": "={{ $json.keys[0] }}",
            "clicks": "={{ $json.clicks }}",
            "position": "={{ $json.position }}",
            "impressions": "={{ $json.impressions }}"
          },
          "schema": [
            {
              "id": "page",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "page",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "clicks",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "clicks",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "impressions",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "impressions",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ctr",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "ctr",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "position",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "position",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "vKZ5Wl43rmNFe0My",
          "name": "Airtable Personal Access Token account 3"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "fe31cb29-ae45-4fb0-a39e-c8fe337b4984",
      "name": "Datensatz erstellen2",
      "type": "n8n-nodes-base.airtable",
      "position": [
        2512,
        672
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appzCPTyUrpA1fXpf",
          "cachedResultUrl": "https://airtable.com/appzCPTyUrpA1fXpf",
          "cachedResultName": "Search Console Reports"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblSJx4WuIm3feGGw",
          "cachedResultUrl": "https://airtable.com/appzCPTyUrpA1fXpf/tblSJx4WuIm3feGGw",
          "cachedResultName": "Dates"
        },
        "columns": {
          "value": {
            "ctr": "={{ $json.ctr }}",
            "date": "={{ $json.keys[0] }}",
            "clicks": "={{ $json.clicks }}",
            "position": "={{ $json.position }}",
            "impressions": "={{ $json.impressions }}"
          },
          "schema": [
            {
              "id": "date",
              "type": "dateTime",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "clicks",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "clicks",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "impressions",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "impressions",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ctr",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "ctr",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "position",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "position",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "vKZ5Wl43rmNFe0My",
          "name": "Airtable Personal Access Token account 3"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "e86d0696-7d10-4a76-8ba7-953862d65b1d",
      "name": "Notiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        -432
      ],
      "parameters": {
        "width": 544,
        "height": 1216,
        "content": "# Export Google Search Console Data to Airtable Automatically  \n\n![automatiserdonneessearchconsoleairtable.png](1)\n\n*If you’ve ever downloaded CSV files from Google Search Console, opened them in Excel, cleaned the weird formatting, and pasted them into a sheet just to get a simple report… this workflow is made for you.*  \n\n\n\n## Who Is This Workflow For?  \n\nThis automation is perfect for:  \n- **SEO freelancers and consultants** → who want to track client performance without wasting time on manual exports.  \n- **Marketing teams** → who need fresh daily/weekly reports to check what keywords and pages are performing.  \n- **Website owners** → who just want a clean way to see how their site is doing without logging into Google Search Console every day.  \n\nBasically, if you care about SEO but don’t want to babysit CSV files, this workflow is your new best friend.  \n\n## What Does It Do?  \n\nHere’s the big picture:  \n1. It runs on a schedule (every day, or whenever you want).  \n2. It fetches data directly from the **Google Search Console API**.  \n3. It pulls 3 types of reports:  \n   - By **Query** (keywords people used).  \n   - By **Page** (URLs that ranked).  \n   - By **Date** (daily performance).  \n4. It splits and cleans the data so it’s human-friendly.  \n5. It saves everything into **Airtable**, organized in three tables.  \n\nEnd result: every time you open Airtable, you have a neat SEO database with clicks, impressions, CTR, and average position — no manual work required.  \n\n\n## Prerequisites  \n\nYou’ll need a few things to get started:  \n- Access to [Google Search Console](https://search.google.com/search-console).  \n- A [Google Cloud project](https://console.cloud.google.com/) with the Search Console API enabled.  \n- An [Airtable](https://airtable.com) account to store the data.  \n- An automation tool that can connect APIs (like the one we’re using here).  \n\nThat’s it!  "
      },
      "typeVersion": 1
    },
    {
      "id": "4eb3576c-7590-4d30-857b-da1632fcd074",
      "name": "Notiz1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1024,
        96
      ],
      "parameters": {
        "height": 688,
        "content": "## Step 1: Schedule the Workflow  \n\nThe very first node in the workflow is the **Schedule Trigger**.  \n\n- **Why?** → So you don’t have to press “Run” every day.  \n- **What it does** → It starts the whole workflow at fixed times.  \n\nIn the JSON, you can configure things like:  \n- Run every day at a specific hour (e.g., 8 AM).  \n- Or run every X hours/minutes if you want more frequent updates.  \n\nThis is the alarm clock of your automation ⏰.  \n\n---"
      },
      "typeVersion": 1
    },
    {
      "id": "38400f18-ed3e-4f39-8424-77a631437b89",
      "name": "Notiz2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1264,
        96
      ],
      "parameters": {
        "height": 688,
        "content": "## Step 2: Set Your Domain and Time Range  \n\nNext, we define the site and the time window for the report.  \n\nIn the JSON, there’s a **Set node** with two important parameters:  \n- `domain` → your website (example: `https://www.0vni.fr/`).  \n- `days` → how many days back you want the data (default: 30).  \n\n👉 Changing these two values updates the whole workflow. Super handy if you want 7-day reports instead of 30.  "
      },
      "typeVersion": 1
    },
    {
      "id": "0f72bcf5-f4c3-4617-9835-07163ebc381b",
      "name": "Notiz3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1504,
        -272
      ],
      "parameters": {
        "width": 400,
        "height": 1056,
        "content": "## Step 3: Fetch Data from Google Search Console  \n\nThis is where the workflow talks to the API.  \nThere are **3 HTTP Request nodes**:  \n\n1. **Get Query Report**  \n   - Pulls data grouped by search queries (keywords).  \n   - Parameters in the JSON:  \n     - `startDate` = today - 30 days  \n     - `endDate` = today  \n     - `dimensions` = `\"query\"`  \n     - `rowLimit` = `25000` (maximum rows the API can return)  \n\n2. **Get Page Report**  \n   - Same idea, but grouped by page URLs.  \n   - Parameters:  \n     - `dimensions` = `\"page\"`  \n     - Same dates and row limit.  \n\n3. **Get Date Report**  \n   - This one groups performance by date.  \n   - Parameters:  \n     - `dimensions` = `\"date\"`  \n     - You get a day-by-day performance view.  \n\nEach request returns rows like this:  \n\n\n{\n  \"keys\": [\"example keyword\"],\n  \"clicks\": 42,\n  \"impressions\": 1000,\n  \"ctr\": 0.042,\n  \"position\": 8.5\n}"
      },
      "typeVersion": 1
    },
    {
      "id": "3b260edd-5a2f-4818-9ab9-40db86ad3e96",
      "name": "Notiz4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1904,
        -272
      ],
      "parameters": {
        "width": 208,
        "height": 1056,
        "content": "## Step 4: Split the Data  \n\n\n\nThe API sends results in a big array (`rows`). That’s not very usable directly.  \n\nSo we add a **Split Out node** for each report.  \n\n**What it does**: breaks the array into single items → 1 item per keyword, per page, or per date.  \n\nThis way, each line can be saved individually into Airtable.  \n\n👉 Think of it like opening a bag of candy and laying each one neatly on the table 🍬.  \n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f4834663-b817-41b0-82fe-9a1624908979",
      "name": "Notiz5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2112,
        -272
      ],
      "parameters": {
        "width": 208,
        "height": 1056,
        "content": "## Step 5: Clean and Rename Fields  \n\nAfter splitting, we use **Edit Fields nodes** to make the data human-friendly.  \n\nFor example:  \n- In the **Query report** → rename `keys[0]` into `Keyword`.  \n- In the **Page report** → rename `keys[0]` into `page`.  \n- In the **Date report** → rename `keys[0]` into `date`.  \n\nThis is also where we keep only the useful fields:  \n- `Keyword` / `page` / `date`  \n- `clicks`  \n- `impressions`  \n- `ctr`  \n- `position`  "
      },
      "typeVersion": 1
    },
    {
      "id": "1c81b533-fecf-485f-9269-73fe2975f25d",
      "name": "Notiz6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2320,
        -704
      ],
      "parameters": {
        "width": 464,
        "height": 1488,
        "content": "## Step 6: Save Everything into Airtable  \n\nFinally, the polished data is sent into Airtable.  \n\nIn the JSON, there are 3 Airtable nodes:  \n- **Queries table** → stores all the keywords.  \n- **Pages table** → stores all the URLs.  \n- **Dates table** → stores day-by-day metrics.  \n\nEach node is set to:  \n- **Operation** = `Create` → adds a new record.  \n- **Base** = `Search Console Reports`.  \n- **Table** = `Queries`, `Pages`, or `Dates`.  \n\n### Field Mapping  \n\nFor **Queries**:  \n- `Keyword` → `{{ $json.Keyword }}`  \n- `clicks` → `{{ $json.clicks }}`  \n- `impressions` → `{{ $json.impressions }}`  \n- `ctr` → `{{ $json.ctr }}`  \n- `position` → `{{ $json.position }}`  \n\n👉 Same logic for **Pages** and **Dates**, just replace `Keyword` with `page` or `date`.  \n\n---\n\n## Expected Output  \n\n\n\nEvery time this workflow runs:  \n- **Queries table** fills with fresh keyword performance data.  \n- **Pages table** shows how your URLs performed.  \n- **Dates table** tracks the evolution day by day.  \n\nIn Airtable, you now have a complete **SEO database** with no manual exports.  \n\n---\n\n## Why This Is Awesome  \n\n- 🚫 No more messy CSV exports.  \n- 📈 Data is always up-to-date.  \n- 🎛 You can build Airtable dashboards, filters, and interfaces.  \n- ⚙️ Easy to adapt → just change `domain` or `days` to customize.  \n\nAnd the best part? You can spend the time you saved on actual **SEO improvements** instead of spreadsheet gymnastics 💃.  \n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {},
  "versionId": "3f8ec591-388b-45a3-afab-829b086b8fe2",
  "connections": {
    "e8f1ab65-9594-45e7-ba9e-7873bd53a107": {
      "main": [
        [
          {
            "node": "42321587-2565-4a0a-9d9d-25cbfdeb9f49",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8e3f167d-cbeb-4f7f-a867-c356d2dca9d0": {
      "main": [
        [
          {
            "node": "19370d12-f6de-44a1-91a6-da097abdf7de",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9eae4908-5266-439c-a66b-5679036234de": {
      "main": [
        [
          {
            "node": "b05926b1-507f-4531-a05c-a15e835ee82e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "42321587-2565-4a0a-9d9d-25cbfdeb9f49": {
      "main": [
        [
          {
            "node": "9e25eef9-daa4-47dd-b2cf-03cfebadb5c6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "19370d12-f6de-44a1-91a6-da097abdf7de": {
      "main": [
        [
          {
            "node": "d2b91103-2fb1-429c-9d90-50f92f3d6a42",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b05926b1-507f-4531-a05c-a15e835ee82e": {
      "main": [
        [
          {
            "node": "7ea7d226-ba6c-4f08-b6f6-fda31185cbbb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9e25eef9-daa4-47dd-b2cf-03cfebadb5c6": {
      "main": [
        [
          {
            "node": "fe31cb29-ae45-4fb0-a39e-c8fe337b4984",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9f9f2be7-1301-4c91-8da1-86eab5725683": {
      "main": [
        [
          {
            "node": "9eae4908-5266-439c-a66b-5679036234de",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "092645b2-9e75-4ff0-8d33-4a3acadac789": {
      "main": [
        [
          {
            "node": "0b04b552-e484-417b-9a7e-a90d477dd45a",
            "type": "main",
            "index": 0
          },
          {
            "node": "9f9f2be7-1301-4c91-8da1-86eab5725683",
            "type": "main",
            "index": 0
          },
          {
            "node": "e8f1ab65-9594-45e7-ba9e-7873bd53a107",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0b04b552-e484-417b-9a7e-a90d477dd45a": {
      "main": [
        [
          {
            "node": "8e3f167d-cbeb-4f7f-a867-c356d2dca9d0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d3bbf719-9524-4269-8c26-0eb7599add55": {
      "main": [
        [
          {
            "node": "092645b2-9e75-4ff0-8d33-4a3acadac789",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Marktforschung, Multimodales KI

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes21
Kategorie2
Node-Typen6
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Autor
Baptiste Fort

Baptiste Fort

@baptistefort

Baptiste.fort.pro@gmail.com

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34