AutomationFlowsContent & Video › Rank Math Bulk Title & Description Optimizer for Wordpress

Rank Math Bulk Title & Description Optimizer for Wordpress

Byphil @phil on n8n.io

This n8n workflow, along with its companion WordPress plugin (), automates the bulk optimization of your WordPress posts' Rank Math SEO titles and descriptions using AI.

Event trigger★★★★☆ complexityAI-powered16 nodesOpenRouter ChatOutput Parser StructuredHTTP RequestChain LlmWordPress
Content & Video Trigger: Event Nodes: 16 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #4646 — we link there as the canonical source.

This workflow follows the Chainllm → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "2fe59e46-3223-4c68-880b-31218f9bf2de",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -520,
        340
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "df642b6e-2bbe-47d4-8ea9-35f136518936",
      "name": "settings",
      "type": "n8n-nodes-base.set",
      "notes": "// IMPORTANT: Don't forget the trailing slash at the end, e.g., https://example.com/",
      "position": [
        -300,
        340
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 3.4
    },
    {
      "id": "63b9e188-ac2e-4c97-a9d5-ac8c36fe1708",
      "name": "OpenRouter Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        1360,
        580
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6998e831-e666-4b7f-919e-6008f2386e23",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1520,
        580
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "255336bd-918b-41fa-80f9-5161c9438776",
      "name": "Get Posts ID",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -80,
        340
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "9bbad149-66a9-46c1-891c-9490aaa4b80a",
      "name": "Update Post Metas",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1820,
        540
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "d18cdaad-c607-4087-bbaf-189bf20a773c",
      "name": "Post",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        400,
        340
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "11cae1be-dd40-4784-b1a7-f605c4d37319",
      "name": "Create Meta Infos",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1340,
        340
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "1a408ed7-e729-4dd0-b7de-4f1ebd67006d",
      "name": "Finish \ud83d\ude80",
      "type": "n8n-nodes-base.noOp",
      "position": [
        620,
        80
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "ab72ab69-6581-4008-8ab3-5fba46c701e2",
      "name": "Get post",
      "type": "n8n-nodes-base.wordpress",
      "position": [
        620,
        280
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "3a9a66d9-2b7a-4b6e-adff-661f23c8ac7d",
      "name": "Should I Rewrite",
      "type": "n8n-nodes-base.if",
      "position": [
        940,
        360
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "201349c2-34be-42fd-a5c6-32bab332d8ab",
      "name": "Limit",
      "type": "n8n-nodes-base.limit",
      "notes": "// TEST: Limits processing to 5 items. Disable/remove for production.",
      "position": [
        140,
        340
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 1
    },
    {
      "id": "6eccc735-02a1-4b94-82ee-3fce532b46bd",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        -120
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "f07e1094-0141-4340-b604-db33f14942cb",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -640,
        -120
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "ba8680ad-c744-4568-bce9-323b6348ceb3",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        840,
        -120
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "c8b6b8af-4ca5-413f-9de6-19d51ef5fa03",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1280,
        -120
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Post": {
      "main": [
        [
          {
            "node": "Finish \ud83d\ude80",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit": {
      "main": [
        [
          {
            "node": "Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get post": {
      "main": [
        [
          {
            "node": "Should I Rewrite",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "settings": {
      "main": [
        [
          {
            "node": "Get Posts ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Posts ID": {
      "main": [
        [
          {
            "node": "Limit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Should I Rewrite": {
      "main": [
        [
          {
            "node": "Create Meta Infos",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Meta Infos": {
      "main": [
        [
          {
            "node": "Update Post Metas",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Post Metas": {
      "main": [
        [
          {
            "node": "Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Create Meta Infos",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Create Meta Infos",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "settings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This n8n workflow, along with its companion WordPress plugin (), automates the bulk optimization of your WordPress posts' Rank Math SEO titles and descriptions using AI.

Source: https://n8n.io/workflows/4646/ — original creator credit. Request a take-down →

More Content & Video workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Content & Video

The best content automation in the market! This advanced workflow not only creates and publishes SEO-optimized blog posts to your WordPress website but also backs up all content and images to a design

OpenAI, Output Parser Structured, Chain Llm +8
Content & Video

The Ultimate Guide to Optimize WordPress Blog Posts with AI. Uses manualTrigger, googleSheets, openAi, wordpress. Event-driven trigger; 21 nodes.

Google Sheets, OpenAI, WordPress +4
Content & Video

This workflow automates the process of creating a complete SEO-optimized blog post, including generating content, titles, images, and meta tags, and publishing it on WordPress. It leverages AI models

Google Sheets, OpenAI, WordPress +4
Content & Video

Perplexity. Uses httpRequest, chainLlm, lmChatOpenRouter, wordpress. Event-driven trigger; 7 nodes.

HTTP Request, Chain Llm, OpenRouter Chat +2
Content & Video

This template is ideal for creators, bloggers, and automation enthusiasts who want to auto-generate blog posts from AI-generated content — without lifting a finger. Whether you're running a tech blog,

HTTP Request, WordPress, Rss Feed Read Trigger +4