{
  "name": "Automated WordPress post tagging with AI analysis and Claude Opus 4.5",
  "nodes": [
    {
      "id": "19d56691-de9b-4df2-9921-9a3612d9e4d5",
      "name": "When clicking ‘Execute workflow’",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -944,
        -48
      ]
    },
    {
      "id": "a343644f-f466-4250-a956-e2182eb510d5",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        688,
        256
      ]
    },
    {
      "id": "dd612a8c-8ca6-41ea-a3a6-1f18f3963b19",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        608,
        448
      ]
    },
    {
      "id": "b2f9a916-b4eb-45d7-a957-7472875e530e",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        224,
        -32
      ]
    },
    {
      "id": "ec85a859-1959-45a1-ba8a-10f8ad2ef335",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1952,
        352
      ]
    },
    {
      "id": "0e77a564-4e3e-4fca-b5c8-d659c258701d",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1696,
        352
      ]
    },
    {
      "id": "91860e9c-f950-415f-a4eb-a3d4baede93f",
      "name": "Merge1",
      "type": "n8n-nodes-base.merge",
      "position": [
        2496,
        -64
      ]
    },
    {
      "id": "d35b31af-8c7b-4ff3-82a3-b47d4539da1b",
      "name": "Tags Expert",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        592,
        -32
      ]
    },
    {
      "id": "acf6d3a2-fff4-44ad-a4b0-464fd60513e8",
      "name": "Get article",
      "type": "n8n-nodes-base.wordpress",
      "position": [
        -464,
        -48
      ]
    },
    {
      "id": "c435cf92-29c5-4846-bef3-439f959268fe",
      "name": "Set data",
      "type": "n8n-nodes-base.set",
      "position": [
        -688,
        -48
      ]
    },
    {
      "id": "35b8af4b-17d4-432e-9dad-dec6477d7f39",
      "name": "Get all tags",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -208,
        112
      ]
    },
    {
      "id": "a332004c-b183-418f-bcd5-7e8ecbca0ac3",
      "name": "Sanitaze Tags",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        16,
        112
      ]
    },
    {
      "id": "75fd4341-4739-4097-8962-18ef97afa8c0",
      "name": "Update article",
      "type": "n8n-nodes-base.wordpress",
      "position": [
        3216,
        -64
      ]
    },
    {
      "id": "74218def-028a-4897-bc90-7f96be1abe39",
      "name": "Existing Tags",
      "type": "n8n-nodes-base.set",
      "position": [
        1456,
        -80
      ]
    },
    {
      "id": "aa018103-57fc-4876-ac50-cef5e486a976",
      "name": "New Tags",
      "type": "n8n-nodes-base.set",
      "position": [
        1440,
        352
      ]
    },
    {
      "id": "932d4bc8-c787-466c-b622-713e3ec3d6e8",
      "name": "Add tag",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2240,
        416
      ]
    },
    {
      "id": "90ce0a46-2b4c-4588-b7a1-a862a24c579c",
      "name": "Aggretate new tags",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        2240,
        256
      ]
    },
    {
      "id": "c5b7b08f-7a03-4f0f-bd0c-fff925f91af1",
      "name": "Aggregate tags article",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        2752,
        -64
      ]
    },
    {
      "id": "1862f83f-9e7b-4f3b-8543-b221e2013ed2",
      "name": "Sanitize",
      "type": "n8n-nodes-base.code",
      "position": [
        2976,
        -64
      ]
    },
    {
      "id": "987a4979-df07-4c6e-8048-8f99cf907d6c",
      "name": "Anthropic Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        528,
        256
      ]
    },
    {
      "id": "84fe9ff4-9b56-4cd8-9001-017e1eca187c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -752,
        -704
      ],
      "parameters": {
        "width": 1104,
        "height": 448,
        "content": "## Automated WordPress Post Tagging with AI Analysis\n\nThis workflow automates the full process of **generating, creating, and assigning optimized WordPress tags** to a specific blog post. It uses a co"
      }
    },
    {
      "id": "82abca87-cea3-445e-a5c9-93453b14ee1e",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -752,
        -192
      ],
      "parameters": {
        "width": 1104,
        "height": 800,
        "content": "## STEP 1 - Get all tags from website\n\nFetching a specific WordPress article using a provided post_id. Simultaneously, it retrieves all existing tags from the WordPress site via the REST API. These tw"
      }
    },
    {
      "id": "3cafca79-2274-4ff8-a0f2-f1cffb7febc5",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        384,
        -192
      ],
      "parameters": {
        "width": 688,
        "height": 800,
        "content": "## STEP 2 - Tag Analysis\nThe merged data (article content and existing tag list) is sent to an LLM (Claude 4.5 Opus). The AI acts as an \"SEO expert,\" analyzing the article's title, content, and excerp"
      }
    },
    {
      "id": "3cdde487-bef4-48a4-bf43-03cc7873899d",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1104,
        -192
      ],
      "parameters": {
        "width": 1296,
        "height": 304,
        "content": "## STEP 3 - Existing Tags\nThe list of selected tag IDs is prepared for the final update. "
      }
    },
    {
      "id": "9bb3fd91-3eba-477c-ac4d-6668b79edb37",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1104,
        144
      ],
      "parameters": {
        "width": 1312,
        "height": 464,
        "content": "## STEP 4 - New Tags\nThe list of new tag names is processed in a loop. For each new tag, the workflow sends a POST request to the WordPress API to create it. The newly created tag IDs are collected."
      }
    },
    {
      "id": "45d2e8be-4259-4ff4-986f-bea01735df3c",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2656,
        -192
      ],
      "parameters": {
        "width": 768,
        "height": 304,
        "content": "## STEP 5 - Final Assignment:\nThe existing tag IDs and the newly created tag IDs are merged into a single list. This final list of tag IDs is then sent back to the original WordPress article via an \"U"
      }
    }
  ],
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Tags Expert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge1": {
      "main": [
        [
          {
            "node": "Aggregate tags article",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add tag": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "New Tags": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sanitize": {
      "main": [
        [
          {
            "node": "Update article",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set data": {
      "main": [
        [
          {
            "node": "Get article",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get article": {
      "main": [
        [
          {
            "node": "Get all tags",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tags Expert": {
      "main": [
        [
          {
            "node": "Existing Tags",
            "type": "main",
            "index": 0
          },
          {
            "node": "New Tags",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get all tags": {
      "main": [
        [
          {
            "node": "Sanitaze Tags",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Existing Tags": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sanitaze Tags": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Aggretate new tags",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Add tag",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggretate new tags": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Structured Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Anthropic Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Tags Expert",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate tags article": {
      "main": [
        [
          {
            "node": "Sanitize",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Tags Expert",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "Set data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}