AutomationFlowsAI & RAG › Automate SEO Blog Pipeline From Keywords to Wordpress with Gpt-5 & Fal.ai Images

Automate SEO Blog Pipeline From Keywords to Wordpress with Gpt-5 & Fal.ai Images

ByPaul @diagopl on n8n.io

Complete PostgreSQL-backed system: Keyword scoring → AI research → Multi-part content generation → fal.ai Nano Banana image generation → WordPress publishing

Cron / scheduled trigger★★★★★ complexityAI-powered96 nodesWordPressOpenAIPerplexityOutput Parser StructuredOpenAI ChatChain LlmPostgresOpenRouter Chat
AI & RAG Trigger: Cron / scheduled Nodes: 96 Complexity: ★★★★★ AI nodes: yes Added:

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

This workflow follows the Agent → Chainllm 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
{
  "nodes": [
    {
      "id": "b1f3327b-a3e3-4434-ae46-c85bfe219469",
      "name": "Edit Fields1",
      "type": "n8n-nodes-base.set",
      "position": [
        5344,
        784
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "eeae3506-93c8-4247-a891-557b37dd8e5d",
      "name": "Markdown",
      "type": "n8n-nodes-base.markdown",
      "position": [
        5168,
        784
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "d69c8069-4278-4ba1-952f-19a0a16417f0",
      "name": "Create a post",
      "type": "n8n-nodes-base.wordpress",
      "position": [
        5568,
        784
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "23b3d13c-2ded-4f4a-99f9-10f2ef3fda72",
      "name": "Preliminary Plan1",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -208,
        1264
      ],
      "parameters": {},
      "typeVersion": 1.8
    },
    {
      "id": "524a410b-a811-431d-8ae0-f41617dc710f",
      "name": "Message a model1",
      "type": "n8n-nodes-base.perplexity",
      "position": [
        96,
        1264
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "8276b50a-4f4f-47d1-9762-d8aa9d036bba",
      "name": "Edit Fields8",
      "type": "n8n-nodes-base.set",
      "position": [
        1392,
        416
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "3ac81125-12ee-4ff8-8264-f852fb0fba4a",
      "name": "Split Out4",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1152,
        416
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "dd53ca17-db2e-4b41-8765-3e05a627b9b1",
      "name": "Aggregate7",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1616,
        416
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "02c8781f-c5bd-4845-a25e-53d66d6a8848",
      "name": "Merge1",
      "type": "n8n-nodes-base.merge",
      "position": [
        2768,
        736
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "2f647a88-0457-44c9-af1e-8771cdd5a928",
      "name": "Edit Fields13",
      "type": "n8n-nodes-base.set",
      "position": [
        2528,
        400
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "89a0be83-0e75-4e06-8ed4-81c4d81b8e0d",
      "name": "Structured Output Parser3",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1328,
        128
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "1e7385a2-16f9-4e29-a185-85408b4fa487",
      "name": "Edit Fields15",
      "type": "n8n-nodes-base.set",
      "position": [
        912,
        -32
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "df16555e-d46d-4ce2-b848-54916522dd42",
      "name": "OpenAI Chat Model8",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1152,
        128
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "5c0197cf-af2d-4727-a369-9c2ee5a14651",
      "name": "Aggregate8",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        3008,
        800
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "f9c4f53d-fbdb-46c0-964e-1ca0726cf0c0",
      "name": "Intro1",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        3360,
        320
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "cd109f1f-f5fc-4297-9380-8300792dd9e6",
      "name": "conclusion1",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        3376,
        1680
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "4abd93a7-df00-4c38-91df-f86fa3192e9f",
      "name": "Merge3",
      "type": "n8n-nodes-base.merge",
      "position": [
        4416,
        704
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "3511876c-d41f-44d3-8f16-2bfa514871b0",
      "name": "Aggregate9",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        4576,
        768
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "f18a413f-01bd-4edb-9f1f-275eee69fd22",
      "name": "Edit Fields16",
      "type": "n8n-nodes-base.set",
      "position": [
        3712,
        384
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "01f83222-ad77-4e6d-b730-d1c20571d6f5",
      "name": "Edit Fields19",
      "type": "n8n-nodes-base.set",
      "position": [
        3712,
        864
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "3f3b840d-ea89-473c-a661-2aad59465934",
      "name": "Edit Fields21",
      "type": "n8n-nodes-base.set",
      "position": [
        3712,
        1312
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "00588572-a164-4595-92f9-808e856e3fe7",
      "name": "Edit Fields22",
      "type": "n8n-nodes-base.set",
      "position": [
        3680,
        1760
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "30cf042e-cc89-4ffa-8165-28ef9ff8172d",
      "name": "header post1",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        3360,
        -32
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "652d4149-e6cf-453f-8851-a691d4d07ade",
      "name": "Code8",
      "type": "n8n-nodes-base.code",
      "position": [
        4896,
        768
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "a1e7708f-20e4-4723-a275-98bc6e5aabde",
      "name": "Edit Fields2",
      "type": "n8n-nodes-base.set",
      "position": [
        4720,
        768
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "ff17bf59-338d-4f36-9699-6ff71fff16dd",
      "name": "Edit Fields24",
      "type": "n8n-nodes-base.set",
      "position": [
        5744,
        784
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "e6e56b4d-b7e5-44e2-a82a-f5a209771e11",
      "name": "Edit Fields25",
      "type": "n8n-nodes-base.set",
      "position": [
        1296,
        880
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "84a4adbf-3a8b-4d73-92d5-5ba545bcdceb",
      "name": "Aggregate1",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1504,
        880
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "661cd282-cbcd-4e03-b666-b64bc3fb8518",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        16,
        1152
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "ec3e672b-f88c-4032-a833-97465f31ff4b",
      "name": "select blog table1",
      "type": "n8n-nodes-base.postgres",
      "position": [
        -560,
        1264
      ],
      "parameters": {},
      "typeVersion": 2.6
    },
    {
      "id": "091575e9-d5db-4c2b-bfaf-038a6dfe2f14",
      "name": "limit to ",
      "type": "n8n-nodes-base.limit",
      "position": [
        -336,
        1264
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7e500f18-4410-493e-89ac-83fbc0d58c8b",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        352
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "c484bf30-3707-4edd-a77c-aab0bc9b3683",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        896,
        784
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "27d5909b-18d0-422b-b9a2-62c6c5b8f7b0",
      "name": "blog table1",
      "type": "n8n-nodes-base.postgres",
      "position": [
        1088,
        880
      ],
      "parameters": {},
      "typeVersion": 2.6
    },
    {
      "id": "6fdaabc9-912f-4022-bd92-cc478de1a1f9",
      "name": "create plan for dev1",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1136,
        -32
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "2361fe23-e7b3-4921-8394-0dff968a208f",
      "name": "Log blog link for future internal links1",
      "type": "n8n-nodes-base.postgres",
      "position": [
        5904,
        784
      ],
      "parameters": {},
      "typeVersion": 2.6
    },
    {
      "id": "c8d4265c-32e6-4c47-852d-9fc444864053",
      "name": "Sticky Note20",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3168,
        -256
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "25860983-be9d-49fc-bc73-d14fe9f17adc",
      "name": "Sticky Note21",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4832,
        688
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "6dc21895-bdb9-4de5-a7bb-0c74f112f8a9",
      "name": "Sticky Note22",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        816,
        -208
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "29e05935-0e4f-40fd-81a5-390e198d7a42",
      "name": "Sticky Note23",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        1136
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "cd9eab84-3270-4937-a031-a7d55846d61c",
      "name": "FAQ section1",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        3328,
        2064
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "afa6a4f2-8b7d-4669-a698-1de7088ede25",
      "name": "Edit Fields26",
      "type": "n8n-nodes-base.set",
      "position": [
        3712,
        2096
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "1d3a4056-1bd0-4cca-9e53-903603cbe8f1",
      "name": "Schedule Trigger3",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -800,
        1264
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "2f38a2ad-284f-4bbc-a620-5ebf11b1ed0d",
      "name": "OpenAI Chat Model10",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3392,
        176
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "d1210cbe-e830-44af-8bd5-590ada0288f3",
      "name": "OpenAI Chat Model11",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3520,
        544
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "04888440-e99f-455b-967e-72e473500f0f",
      "name": "OpenAI Chat Model12",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3456,
        992
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "f0c2b1ee-4b14-4de2-8ec0-a2e3a1632f48",
      "name": "OpenAI Chat Model13",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3552,
        1856
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "b7e4e1e7-609d-44fc-8e1e-c5e07221bed3",
      "name": "OpenAI Chat Model14",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3584,
        1472
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "cc1d6071-04c3-4083-b372-5a3d489f1650",
      "name": "OpenAI Chat Model15",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3328,
        2240
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "04767abd-2757-4982-8147-8e538dd100b7",
      "name": "Basic LLM Chain",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1744,
        -128
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "114f98b0-59bd-41a6-94c0-4fdf1ebe56be",
      "name": "OpenRouter Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        1888,
        16
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "09087fef-8173-4942-abd3-321c800cbcc5",
      "name": "Create Image1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2016,
        -128
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "589547c7-24bb-4d8b-ba04-a5c9351c4d56",
      "name": "Get Result1",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        2304,
        -128
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "205a8b76-2383-4f47-be3d-7974e52601b7",
      "name": "10 Seconds1",
      "type": "n8n-nodes-base.wait",
      "position": [
        2176,
        -128
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "91b8a06d-ff27-4304-bd67-a94472a2fbd7",
      "name": "5 Seconds1",
      "type": "n8n-nodes-base.wait",
      "position": [
        2336,
        16
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "75d2b6e0-afd3-4a76-ae4b-d5ecdc173986",
      "name": "Basic LLM Chain1",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1088,
        1280
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "9133b155-54d5-46cf-8aa8-0310480bf6a5",
      "name": "OpenRouter Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        1040,
        1424
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "37f91081-376a-4106-9533-e6b6a01d2026",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        2112,
        1168
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "22aab6b7-b30e-45ec-892b-9d155acba534",
      "name": "Create Image3",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1424,
        1280
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "8509d3a4-30f9-4d99-a084-dcadee3eeecc",
      "name": "Get Result3",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        1760,
        1280
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "752c12bb-a03a-497c-acdb-bac7d1a15156",
      "name": "10 Seconds3",
      "type": "n8n-nodes-base.wait",
      "position": [
        1584,
        1280
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "b0d5fa77-5359-4962-bda4-623cf2f3f893",
      "name": "5 Seconds3",
      "type": "n8n-nodes-base.wait",
      "position": [
        1952,
        1376
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "2b0e5bd1-3767-42b1-ba4b-9292ac059f03",
      "name": "dev 2",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        3344,
        1216
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "7735497f-4c2f-421d-9911-44c208e698c3",
      "name": "dev 1",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        3344,
        752
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "155f416d-8688-43a1-9c22-71cd329dd06b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        1088
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "d7116f04-cd71-4d6e-8af6-a5ae0ed3c9ca",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1648,
        -256
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "30bb9c95-9253-4a37-9a8a-0b6eeb1ac81c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        5088,
        688
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "4cc4e8be-9282-4651-b779-39bdd7dd3f25",
      "name": "Aggregate2",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        160,
        -1088
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7e7a1922-e519-49c3-b730-7d2e7b46a95c",
      "name": "Edit Fields3",
      "type": "n8n-nodes-base.set",
      "position": [
        16,
        -1088
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "2126a40e-5bf4-44bd-9211-a9ad2023d99a",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        592,
        -864
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "b7cb3dfb-aa43-4923-b362-677ba5ecabdb",
      "name": "Insert rows in a table",
      "type": "n8n-nodes-base.postgres",
      "position": [
        736,
        -896
      ],
      "parameters": {},
      "typeVersion": 2.6
    },
    {
      "id": "4eb84a42-57ee-4ca4-ae66-2698a43c099b",
      "name": "Select rows from a table1",
      "type": "n8n-nodes-base.postgres",
      "position": [
        736,
        -1088
      ],
      "parameters": {},
      "typeVersion": 2.6
    },
    {
      "id": "1df5eff6-262d-4b3c-905f-9e41220c4588",
      "name": "Select rows from a table2",
      "type": "n8n-nodes-base.postgres",
      "position": [
        960,
        -1296
      ],
      "parameters": {},
      "typeVersion": 2.6
    },
    {
      "id": "0a52569d-6b15-4fa9-b82d-f09804365dba",
      "name": "Split Out2",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        736,
        -1296
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "0a95ca85-9376-447a-a4b8-8c5cd3a6176c",
      "name": "Code4",
      "type": "n8n-nodes-base.code",
      "position": [
        1120,
        -1296
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "1ea4f919-76ee-4a19-8246-7e12482724f8",
      "name": "Code5",
      "type": "n8n-nodes-base.code",
      "position": [
        960,
        -1088
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "2f7c3566-62d7-48b9-9596-6deb2bf93f65",
      "name": "Sticky Note27",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -816,
        -1648
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "014b8086-4dd9-4896-9635-5b2d16a66c1d",
      "name": "Select rows from a table",
      "type": "n8n-nodes-base.postgres",
      "position": [
        1712,
        -1232
      ],
      "parameters": {},
      "typeVersion": 2.6
    },
    {
      "id": "5825a7b8-9004-4208-92ba-278eea4623d4",
      "name": "Score Keywords",
      "type": "n8n-nodes-base.code",
      "position": [
        2224,
        -1232
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "81d86f50-1cfb-4921-b5e3-fbd898993699",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        2000,
        -1232
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "15192939-d3e1-4d1a-be9c-a5236b52f499",
      "name": "Fetch Keywords1",
      "type": "n8n-nodes-base.postgres",
      "position": [
        -448,
        -1088
      ],
      "parameters": {},
      "typeVersion": 2.4
    },
    {
      "id": "b0b2791e-f13c-4b80-b29e-568919e34a2c",
      "name": "Select rows from a table in Postgres",
      "type": "n8n-nodes-base.postgresTool",
      "position": [
        464,
        -864
      ],
      "parameters": {},
      "typeVersion": 2.6
    },
    {
      "id": "09cacb1b-a286-450b-aa71-c13b630425c4",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -624,
        -1088
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "3b36067e-ef7f-4a93-83b4-1eeec3125a87",
      "name": "Choose keywords, Intent, etc",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        384,
        -1088
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "fe489f6e-1509-471a-b6f6-c6c5d0610258",
      "name": "Primary keywords",
      "type": "n8n-nodes-base.postgres",
      "position": [
        1184,
        -1088
      ],
      "parameters": {},
      "typeVersion": 2.6
    },
    {
      "id": "79835988-1d89-4cd6-9e4b-a469bbc08096",
      "name": "Used secondary",
      "type": "n8n-nodes-base.postgres",
      "position": [
        1392,
        -1296
      ],
      "parameters": {},
      "typeVersion": 2.6
    },
    {
      "id": "a315d8b1-075d-47bc-b2b7-1c877c8e62c2",
      "name": "Update score",
      "type": "n8n-nodes-base.postgres",
      "position": [
        2432,
        -1152
      ],
      "parameters": {},
      "typeVersion": 2.6
    },
    {
      "id": "e9198617-a284-485d-860e-d069ee677ad1",
      "name": "All scored",
      "type": "n8n-nodes-base.noOp",
      "position": [
        2224,
        -1488
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "162e9c9f-fd4f-46c4-937f-9efc4970b71b",
      "name": "Sticky Note16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1712,
        -1440
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "2f7ca97e-4d94-42d2-aa57-2da271539942",
      "name": "Sticky Note17",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -512,
        -1200
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "a9fc07b9-343b-4073-b0c2-41ae99b535f8",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        336,
        -864
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "52562268-d02c-4855-a6e7-1963532d71c3",
      "name": "Limit2",
      "type": "n8n-nodes-base.limit",
      "position": [
        -240,
        -1088
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "012e1ac7-5295-48da-88af-e678384e502f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1600,
        -1584
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "f5767d52-3b36-4026-b556-4a4e86c5be07",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        -1440
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "eda20e63-a7e6-47e4-b878-b01a04db03ea",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2160,
        -1312
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "845f4bd6-bf6d-4e94-8a02-c819a94ff806",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2448,
        -1648
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Code4": {
      "main": [
        [
          {
            "node": "Used secondary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code5": {
      "main": [
        [
          {
            "node": "Primary keywords",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code8": {
      "main": [
        [
          {
            "node": "Markdown",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dev 1": {
      "main": [
        [
          {
            "node": "Edit Fields19",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dev 2": {
      "main": [
        [
          {
            "node": "Edit Fields21",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Intro1": {
      "main": [
        [
          {
            "node": "Edit Fields16",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit2": {
      "main": [
        [
          {
            "node": "Edit Fields3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge1": {
      "main": [
        [
          {
            "node": "Aggregate8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge3": {
      "main": [
        [
          {
            "node": "Aggregate9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Markdown": {
      "main": [
        [
          {
            "node": "Edit Fields1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "limit to ": {
      "main": [
        [
          {
            "node": "Preliminary Plan1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5 Seconds1": {
      "main": [
        [
          {
            "node": "Get Result1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5 Seconds3": {
      "main": [
        [
          {
            "node": "Get Result3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate1": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "Aggregate2": {
      "main": [
        [
          {
            "node": "Choose keywords, Intent, etc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate7": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Aggregate8": {
      "main": [
        [
          {
            "node": "Intro1",
            "type": "main",
            "index": 0
          },
          {
            "node": "dev 1",
            "type": "main",
            "index": 0
          },
          {
            "node": "dev 2",
            "type": "main",
            "index": 0
          },
          {
            "node": "conclusion1",
            "type": "main",
            "index": 0
          },
          {
            "node": "header post1",
            "type": "main",
            "index": 0
          },
          {
            "node": "FAQ section1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate9": {
      "main": [
        [
          {
            "node": "Edit Fields2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out2": {
      "main": [
        [
          {
            "node": "Select rows from a table2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out4": {
      "main": [
        [
          {
            "node": "Edit Fields8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "10 Seconds1": {
      "main": [
        [
          {
            "node": "Get Result1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "10 Seconds3": {
      "main": [
        [
          {
            "node": "Get Result3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "Get Result1": {
      "main": [
        [
          {
            "node": "Edit Fields13",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "5 Seconds1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Result3": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "5 Seconds3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "blog table1": {
      "main": [
        [
          {
            "node": "Edit Fields25",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "conclusion1": {
      "main": [
        [
          {
            "node": "Edit Fields22",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields1": {
      "main": [
        [
          {
            "node": "Create a post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields2": {
      "main": [
        [
          {
            "node": "Code8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields3": {
      "main": [
        [
          {
            "node": "Aggregate2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields8": {
      "main": [
        [
          {
            "node": "Aggregate7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "FAQ section1": {
      "main": [
        [
          {
            "node": "Edit Fields26",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update score": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "header post1": {
      "main": [
        [
          {
            "node": "Merge3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Image1": {
      "main": [
        [
          {
            "node": "10 Seconds1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Image3": {
      "main": [
        [
          {
            "node": "10 Seconds3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a post": {
      "main": [
        [
          {
            "node": "Edit Fields24",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields13": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields15": {
      "main": [
        [
          {
            "node": "create plan for dev1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields16": {
      "main": [
        [
          {
            "node": "Merge3",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Edit Fields19": {
      "main": [
        [
          {
            "node": "Merge3",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Edit Fields21": {
      "main": [
        [
          {
            "node": "Merge3",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "Edit Fields22": {
      "main": [
        [
          {
            "node": "Merge3",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "Edit Fields24": {
      "main": [
        [
          {
            "node": "Log blog link for future internal links1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields25": {
      "main": [
        [
          {
            "node": "Aggregate1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields26": {
      "main": [
        [
          {
            "node": "Merge3",
            "type": "main",
            "index": 5
          }
        ]
      ]
    },
    "Score Keywords": {
      "main": [
        [
          {
            "node": "Update score",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain": {
      "main": [
        [
          {
            "node": "Create Image1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Keywords1": {
      "main": [
        [
          {
            "node": "Limit2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "All scored",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Score Keywords",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain1": {
      "main": [
        [
          {
            "node": "Create Image3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message a model1": {
      "main": [
        [
          {
            "node": "Split Out4",
            "type": "main",
            "index": 0
          },
          {
            "node": "Edit Fields15",
            "type": "main",
            "index": 0
          },
          {
            "node": "blog table1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Fetch Keywords1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Preliminary Plan1": {
      "main": [
        [
          {
            "node": "Message a model1",
            "type": "main",
            "index": 0
          },
          {
            "node": "Basic LLM Chain1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger3": {
      "main": [
        [
          {
            "node": "select blog table1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Choose keywords, Intent, etc",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model8": {
      "ai_languageModel": [
        [
          {
            "node": "create plan for dev1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "select blog table1": {
      "main": [
        [
          {
            "node": "limit to ",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model10": {
      "ai_languageModel": [
        [
          {
            "node": "header post1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model11": {
      "ai_languageModel": [
        [
          {
            "node": "Intro1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model12": {
      "ai_languageModel": [
        [
          {
            "node": "dev 1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model13": {
      "ai_languageModel": [
        [
          {
            "node": "conclusion1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model14": {
      "ai_languageModel": [
        [
          {
            "node": "dev 2",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model15": {
      "ai_languageModel": [
        [
          {
            "node": "FAQ section1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "create plan for dev1": {
      "main": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Select rows from a table": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Choose keywords, Intent, etc",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Select rows from a table1": {
      "main": [
        [
          {
            "node": "Code5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Select rows from a table2": {
      "main": [
        [
          {
            "node": "Code4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser3": {
      "ai_outputParser": [
        [
          {
            "node": "create plan for dev1",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Choose keywords, Intent, etc": {
      "main": [
        [
          {
            "node": "Insert rows in a table",
            "type": "main",
            "index": 0
          },
          {
            "node": "Select rows from a table1",
            "type": "main",
            "index": 0
          },
          {
            "node": "Split Out2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Select rows from a table in Postgres": {
      "ai_tool": [
        [
          {
            "node": "Choose keywords, Intent, etc",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

How this works

This workflow turns keyword research into a steady stream of SEO-optimised blog posts that publish directly to WordPress. It scores incoming keywords, runs AI-driven research with Perplexity, then uses GPT-5 to create structured multi-part articles before generating matching images via fal.ai. The entire sequence runs on a schedule and stores everything in PostgreSQL so teams can track performance and reuse approved content.

Use it when you need consistent weekly publishing without constant manual oversight; avoid it for one-off posts or when brand voice must stay strictly human-written. Common variations include swapping the image model, adding approval gates before publishing, or routing high-scoring keywords to a separate newsletter flow.

About this workflow

Complete PostgreSQL-backed system: Keyword scoring → AI research → Multi-part content generation → fal.ai Nano Banana image generation → WordPress publishing

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

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

We’ve released Version 4 of our AI Powered Blog Automation workflow. We heard your complains and made a complete redesign built for serious content creators.

RSS Feed Read, OpenAI Chat, Text Classifier +6
AI & RAG

This workflow is for beauty salons who want consistent, high‑quality social media content without writing every post manually. It also suits agencies and automation builders who manage multiple beauty

Telegram, Google Sheets Trigger, Agent +26
AI & RAG

System Architecture Two integrated N8N workflows providing automated US stock portfolio management through Telegram:

Output Parser Autofixing, OpenAI Chat, Perplexity +10
AI & RAG

This workflow automates the creation, rendering, approval, and posting of TikTok-style POV (Point of View) videos to Instagram, with cross-posting to Facebook and YouTube. It eliminates manual video p

OpenAI Chat, Output Parser Item List, HTTP Request +10
AI & RAG

This workflow searches the internet for the latest news in your niche, selects the most interesting topics, writes complete long-form SEO articles with AI-generated images, and publishes them directly

Agent, OpenAI Chat, @Brave/N8N Nodes Brave Search +5