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 →
{
"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
}
]
]
}
}
}
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
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.
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
System Architecture Two integrated N8N workflows providing automated US stock portfolio management through Telegram:
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
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