Exporter les données d'articles WordPress vers Google Sheets (basé sur l'API WP Rest)

Intermédiaire

Ceci est unMarket Researchworkflow d'automatisation du domainecontenant 15 nœuds.Utilise principalement des nœuds comme Set, Code, Form, Merge, FormTrigger. Exporter les articles WordPress (avec catégories et étiquettes) vers Google Sheets pour un audit SEO

Prérequis
  • Peut nécessiter les informations d'identification d'authentification de l'API cible
  • Informations d'identification Google Sheets API
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "XnO085uXrhMERPvb",
  "meta": {
    "instanceId": "2295c029f4cb86c8f849f9c87dade323734dc279619eb9e2704f8473c381e4d1",
    "templateCredsSetupCompleted": true
  },
  "name": "WordPress post data export to Google Sheets (based on WP Rest API)",
  "tags": [],
  "nodes": [
    {
      "id": "bfc25242-766f-4b7d-ab23-a0829de1fe83",
      "name": "À la soumission du formulaire",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -1120,
        -320
      ],
      "webhookId": "57b1b81e-feae-464e-9459-04b0e3efcaa1",
      "parameters": {
        "options": {},
        "formTitle": "WP SEO Audit",
        "formFields": {
          "values": [
            {
              "fieldLabel": "URL",
              "placeholder": "http://yourdomain.com",
              "requiredField": true
            },
            {
              "fieldType": "number",
              "fieldLabel": "Post limit",
              "placeholder": "Default =10"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "3a5f6f97-c79a-4fed-b32a-fe7695e569f1",
      "name": "Obtenir les articles",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        -400,
        -128
      ],
      "parameters": {
        "url": "={{ $json.URL }}/wp-json/wp/v2/posts?per_page={{ $json['Post limit'] }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "2201ba9e-40b8-4bcc-988c-e8dce2578dda",
      "name": "Obtenir les catégories",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        -400,
        -320
      ],
      "parameters": {
        "url": "={{ $('On form submission').item.json.URL }}/wp-json/wp/v2/categories?per_page={{ $json.per_page }}",
        "options": {},
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {}
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "f6c0f099-2c27-45df-91b3-0fd1ea15d165",
      "name": "Obtenir les étiquettes",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        -400,
        -512
      ],
      "parameters": {
        "url": "={{ $('On form submission').item.json.URL }}/wp-json/wp/v2/tags?per_page={{ $json.per_page }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "6a924b56-3613-4b7f-a7c8-819bbe38387b",
      "name": "Fusionner",
      "type": "n8n-nodes-base.merge",
      "position": [
        16,
        -352
      ],
      "parameters": {
        "numberInputs": 3
      },
      "notesInFlow": false,
      "typeVersion": 3.2
    },
    {
      "id": "bc6731ac-f1aa-4594-a1a6-98275d976ea3",
      "name": "Erreur WP API",
      "type": "n8n-nodes-base.form",
      "position": [
        -48,
        -928
      ],
      "webhookId": "ee9fe2bd-db09-469a-b3b1-cd335e4e6daf",
      "parameters": {
        "options": {},
        "operation": "completion",
        "completionTitle": "WordPress API Error",
        "completionMessage": "Please check if your WP-Api is enabled"
      },
      "typeVersion": 2.3
    },
    {
      "id": "46d785e4-fc5f-49ba-8aa6-ee6436621131",
      "name": "Assigner les noms d'étiquettes et catégories aux articles",
      "type": "n8n-nodes-base.code",
      "position": [
        224,
        -336
      ],
      "parameters": {
        "jsCode": "const tagItems = $items('Get Tags');         // [{ json: { id, name, ... }}, ...]\nconst categoryItems = $items('Get Categories'); // [{ json: { id, name, ... }}, ...]\nconst postItems = $items('Get Posts');       // [{ json: { categories: [ids], tags: [ids], ... }}, ...]\n\n// Build lookup maps\nconst tagsById = Object.fromEntries(\n  tagItems\n    .filter(i => i?.json?.id != null && i?.json?.name != null)\n    .map(i => [String(i.json.id), i.json.name])\n);\n\nconst categoriesById = Object.fromEntries(\n  categoryItems\n    .filter(i => i?.json?.id != null && i?.json?.name != null)\n    .map(i => [String(i.json.id), i.json.name])\n);\n\n// Helper: normalize a field that might be number | string | array into an array of strings\nconst toIdArray = (val) => {\n  if (val == null) return [];\n  if (Array.isArray(val)) return val.map(v => String(v));\n  return [String(val)];\n};\n\n// Enrich posts with names instead of IDs\nconst out = postItems.map(item => {\n  const post = item.json;\n\n  const categoryIds = toIdArray(post.categories);\n  const tagIds = toIdArray(post.tags);\n\n  const categoryNames = categoryIds\n    .map(id => categoriesById[id])\n    .filter(Boolean);\n\n  const tagNames = tagIds\n    .map(id => tagsById[id])\n    .filter(Boolean);\n\n  return {\n    json: {\n      ...post,\n      categoryNames,\n      tagNames,\n    },\n    // keep binary if present\n    binary: item.binary,\n  };\n});\n\nreturn out;"
      },
      "typeVersion": 2
    },
    {
      "id": "989f3e60-1a1b-454c-b5f8-cdd27bf5c379",
      "name": "Ajouter les articles avec étiquettes et catégories à la feuille Google",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        480,
        -336
      ],
      "parameters": {
        "columns": {
          "value": {
            "URL": "={{ $json.link }}",
            "Tags": "={{ $json.tagNames }}",
            "Title": "={{ $json.title.rendered }}",
            "Categories": "={{ $json.categoryNames }}"
          },
          "schema": [
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Categories",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Categories",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Tags",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1nZ3WHn_QedbuNYlFVfPildBZETNYYJFT0yYFIgJy2Mg/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1nZ3WHn_QedbuNYlFVfPildBZETNYYJFT0yYFIgJy2Mg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1nZ3WHn_QedbuNYlFVfPildBZETNYYJFT0yYFIgJy2Mg/edit?usp=drivesdk",
          "cachedResultName": "[WP]"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "sgj6aGeryqEVmS3h",
          "name": "GSheets - Piotr.Sikora.Ck@gmail.com"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "88750e8c-ad3c-4f40-b3f5-83618faa5de4",
      "name": "Note adhésive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        -640
      ],
      "parameters": {
        "color": 4,
        "height": 496,
        "content": "## Add posts, with tags, categories to Google Sheet\n\nRemember o create **Googe Sheet** with filds:\n- **URL**\n- **Title**\n- **Categories**\n- **Tags**"
      },
      "typeVersion": 1
    },
    {
      "id": "ed1593aa-3c25-42d4-a8cc-020843039197",
      "name": "Note adhésive 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -112,
        -1072
      ],
      "parameters": {
        "color": 3,
        "height": 304,
        "content": "## WP API Errror\n\nAPI is not avalable"
      },
      "typeVersion": 1
    },
    {
      "id": "f23af13c-7b4d-46b4-af31-f33726fd8356",
      "name": "Note adhésive 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -480,
        -928
      ],
      "parameters": {
        "color": 5,
        "width": 256,
        "height": 960,
        "content": "## Fetch API data\n\nFetch the following resources:\n- **Posts**\n- **Categories**\n- **Tags**\n\n\nPlease note that the `per_page` parameter is statically assigned for the posts and categories endpoints, with its value set to 100.\n\nIf you require a different number of results, adjust the parameter in the appropriate nodes accordingly."
      },
      "typeVersion": 1
    },
    {
      "id": "06d3d9a1-40bc-43e3-82a4-8bf08e640a9a",
      "name": "Note adhésive 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        144,
        -640
      ],
      "parameters": {
        "color": 6,
        "height": 496,
        "content": "## Append categories and tags names\n\nWhat this does:\n- Reads Get Tags, Get Categories, and Get Posts.\n- Builds fast lookup maps.\n- Appends `categoryNames` and `tagNames` directly into each post.\n- Returns the modified posts ready for next steps."
      },
      "typeVersion": 1
    },
    {
      "id": "c51ef4bd-2234-486b-b0f1-2d40f0d00e00",
      "name": "Formulaire",
      "type": "n8n-nodes-base.form",
      "position": [
        688,
        -336
      ],
      "webhookId": "32930177-d74b-4ab5-98b6-7726b70811f5",
      "parameters": {
        "options": {},
        "operation": "completion",
        "completionTitle": "List created",
        "completionMessage": "Please check linked document to see details"
      },
      "typeVersion": 2.3
    },
    {
      "id": "b5e7141e-b922-496f-afd7-1c75a29dc408",
      "name": "Note adhésive 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -848,
        -656
      ],
      "parameters": {
        "color": 7,
        "height": 368,
        "content": "## Config per_page\n\nConfigure `per_page` parametter."
      },
      "typeVersion": 1
    },
    {
      "id": "7a062203-6a2e-4521-a98d-f1435f52ad17",
      "name": "Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        -784,
        -448
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "39de8718-83b1-4060-9dc9-23b1a0a20857",
              "name": "per_page",
              "type": "number",
              "value": 100
            }
          ]
        }
      },
      "typeVersion": 3.4
    }
  ],
  "active": false,
  "pinData": {
    "On form submission": [
      {
        "json": {
          "URL": "http://juttle.app",
          "formMode": "test",
          "Post limit": 1,
          "submittedAt": "2025-10-22T10:15:02.313+02:00"
        }
      }
    ]
  },
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "91e580eb-4b6f-45ea-a1fc-68998aa694db",
  "connections": {
    "6a924b56-3613-4b7f-a7c8-819bbe38387b": {
      "main": [
        [
          {
            "node": "46d785e4-fc5f-49ba-8aa6-ee6436621131",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7a062203-6a2e-4521-a98d-f1435f52ad17": {
      "main": [
        [
          {
            "node": "f6c0f099-2c27-45df-91b3-0fd1ea15d165",
            "type": "main",
            "index": 0
          },
          {
            "node": "2201ba9e-40b8-4bcc-988c-e8dce2578dda",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f6c0f099-2c27-45df-91b3-0fd1ea15d165": {
      "main": [
        [
          {
            "node": "6a924b56-3613-4b7f-a7c8-819bbe38387b",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "bc6731ac-f1aa-4594-a1a6-98275d976ea3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3a5f6f97-c79a-4fed-b32a-fe7695e569f1": {
      "main": [
        [
          {
            "node": "6a924b56-3613-4b7f-a7c8-819bbe38387b",
            "type": "main",
            "index": 2
          }
        ],
        [
          {
            "node": "bc6731ac-f1aa-4594-a1a6-98275d976ea3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2201ba9e-40b8-4bcc-988c-e8dce2578dda": {
      "main": [
        [
          {
            "node": "6a924b56-3613-4b7f-a7c8-819bbe38387b",
            "type": "main",
            "index": 1
          }
        ],
        [
          {
            "node": "bc6731ac-f1aa-4594-a1a6-98275d976ea3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bfc25242-766f-4b7d-ab23-a0829de1fe83": {
      "main": [
        [
          {
            "node": "3a5f6f97-c79a-4fed-b32a-fe7695e569f1",
            "type": "main",
            "index": 0
          },
          {
            "node": "7a062203-6a2e-4521-a98d-f1435f52ad17",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "46d785e4-fc5f-49ba-8aa6-ee6436621131": {
      "main": [
        [
          {
            "node": "989f3e60-1a1b-454c-b5f8-cdd27bf5c379",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "989f3e60-1a1b-454c-b5f8-cdd27bf5c379": {
      "main": [
        [
          {
            "node": "c51ef4bd-2234-486b-b0f1-2d40f0d00e00",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

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 - Étude de marché

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.

Informations sur le workflow
Niveau de difficulté
Intermédiaire
Nombre de nœuds15
Catégorie1
Types de nœuds8
Description de la difficulté

Adapté aux utilisateurs expérimentés, avec des workflows de complexité moyenne contenant 6-15 nœuds

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34