This workflow follows the Chainllm → Google Drive 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 →
{
"createdAt": "2025-03-27T17:36:18.035Z",
"updatedAt": "2025-03-28T08:03:59.000Z",
"id": "K1rxm9ImtudpNVQC",
"name": "WP",
"active": false,
"nodes": [
{
"parameters": {
"content": "Final confirmation to the user",
"height": 80,
"width": 263,
"color": 7
},
"id": "12b26895-7514-48a2-895b-e2d716d01fdb",
"name": "Sticky Note43",
"type": "n8n-nodes-base.stickyNote",
"position": [
3500,
3880
],
"typeVersion": 1
},
{
"parameters": {
"resource": "image",
"prompt": "=Generate a photographic image to be used as the cover image for the article titled {{ $('Blog Planner').first().json.output.title }}, {{ $('Blog Planner').first().json.output.subtitle }}\nThis is the prompt for the image: {{ $('Blog Planner').first().json.output.image.imagePrompt }}, photography, realistic. Do not show any texts in the image.",
"options": {
"quality": "standard",
"size": "1792x1024",
"style": "natural"
}
},
"id": "e3281b08-4c79-4b31-9a7f-37946b39c27f",
"name": "Generate featured image",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1020,
1460
],
"typeVersion": 1,
"disabled": true
},
{
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"title\": \"Content Schema\",\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"subtitle\": {\n \"type\": \"string\"\n },\n \"introduction\": {\n \"type\": \"string\"\n },\n \"slug\": {\n \"type\": \"string\"\n },\n \"googleExcerpt\": {\n \"type\": \"string\"\n },\n \"googleMetaDescription\": {\n \"type\": \"string\"\n },\n \"chapters\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"prompt\": {\n \"type\": \"string\"\n },\n \"image\": {\n \"type\": \"object\",\n \"properties\": {\n \"imagePrompt\": {\n \"type\": \"string\"\n },\n \"fileName\": {\n \"type\": \"string\"\n },\n \"caption\": {\n \"type\": \"string\"\n },\n \"altText\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n },\n \"conclusion\": {\n \"type\": \"string\"\n },\n \"image\": {\n \"type\": \"object\",\n \"properties\": {\n \"imagePrompt\": {\n \"type\": \"string\"\n },\n \"fileName\": {\n \"type\": \"string\"\n },\n \"caption\": {\n \"type\": \"string\"\n },\n \"altText\": {\n \"type\": \"string\"\n }\n }\n },\n \"cta\": {\n \"type\": \"string\"\n },\n \"ctaUrl\": {\n \"type\": \"string\"\n },\n \"companyOffering\": {\n \"type\": \"string\"\n }\n }\n}\n"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.2,
"position": [
-560,
540
],
"id": "6a25610a-e60b-4ad4-8d9e-b08b1aa9b641",
"name": "Structured Output Parser2"
},
{
"parameters": {
"promptType": "define",
"text": "=**Write a Chapter for an Article**\n\n**Article Details:**\n- **Topic:** {{ $('Blog Planner').first().json.output.title }}\n- **Subtitle:** {{ $('Blog Planner').first().json.output.subtitle }}\n\n**Chapter Details:**\n- **Chapter Title:** {{ $json.title }}\n- **Chapter Prompt:** {{ $json.prompt }}\n\n**Task:**\nGenerate a chapter for the article using the topic, subtitle, chapter title, and chapter prompt above.\nWrite a detailed, cohesive chapter for an article based on the topic, subtitle, chapter title, and chapter prompt above. The chapter should flow naturally without segmenting the content into many short or shallow subtopics.\n\n**Guidelines:**\n- **Avoid Phrases:** Do not use \u201cIn today\u2019s fast-paced world\u201d or similar expressions.\n- **No Product Names:** Refrain from mentioning any names of products or services.\n- **Formatting:** \n - Return the chapter content as plain text without extra internal titles or headings.\n - Use markdown formatting (e.g., **bold**, *italic*, lists) where appropriate.\n- **Length & Style:**\n - The chapter should be about **{{ Math.round($('Settings').first().json['Max word count']) / $('Settings').first().json['Number of chapters'] }} words**.\n - Keep most sentences under 20 words.\n - Dive deep into the topic\u2014avoid superficial explanations.\n- **Context Consideration:**\n {{ $itemIndex > 0 ? \"- Previous chapter title: \" + $input.all()[$itemIndex - 1].json.title : \"\" }} \n {{ $itemIndex > 0 ? \"- Previous chapter prompt: \" + $input.all()[$itemIndex - 1].json.prompt : \"\" }}\n {{ $itemIndex < $input.all().length - 1 ? \"- Next chapter title: \" + $input.all()[$itemIndex + 1].json.title : \"\" }} \n {{ $itemIndex < $input.all().length - 1 ? \"- Next chapter prompt: \" + $input.all()[$itemIndex + 1].json.prompt : \"\" }}\n - Ensure the chapter content is coherent with both previous and following chapters and does not repeat concepts already discussed.\n- **Internal Linking:**\n - Review the list of blog URLs below:\n ```\n {{ $json.internal_links.join(\"\\n\") }}\n ```\n - Choose one URL that is relevant to the chapter content and embed it as an internal link with appropriate hyperlink text.\n - Use each URL only once. If none are relevant, do not add any links.\n- **Integration:** \n This chapter is part of a larger article. Do not include an introduction or conclusion that stands alone; ensure the chapter flows naturally into the overall article.\n\n**Output Format:**\nReturn the chapter as a JSON object with two fields:\n```json\n{\n \"title\": \"string\",\n \"content\": \"string\"\n}\n```\n\n---",
"hasOutputParser": true
},
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.5,
"position": [
1880,
460
],
"id": "3822892c-3d9b-4a45-a3ec-b50c302b5e91",
"name": "Write chapter text"
},
{
"parameters": {
"mode": "combine",
"combineBy": "combineAll",
"options": {}
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
1240,
360
],
"id": "a7f3021f-465a-459f-bcdd-0b8d0f29c90a",
"name": "Merge"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "deb6621e-982a-4e20-a1c1-1140be02cad3",
"name": "Website",
"value": "={{ $json.Website }}",
"type": "string"
},
{
"id": "fdd24a9b-649b-4088-b085-da0be99f3d86",
"name": "Seed keyword",
"value": "={{ $json.Seed_keyword }}",
"type": "string"
},
{
"id": "2b0b01e1-8a4b-4cf4-8327-bc6e0ca30ef8",
"name": "Target audience",
"value": "={{ $json.Target_audience }}",
"type": "string"
},
{
"id": "0dafb0ac-5735-4243-84cc-85e787697892",
"name": "Max word count",
"value": "={{ $json.Word_Count }}",
"type": "number"
},
{
"id": "3bab3dcd-e18d-4b22-9c86-a8e9b60ea5c3",
"name": "Number of chapters",
"value": "={{ $json.Chapters }}",
"type": "number"
},
{
"id": "191105bb-4f7e-4b4f-bab7-95fa1f858c43",
"name": "Introduction length",
"value": "={{ $json.Introduction_length }}",
"type": "number"
},
{
"id": "d1368f97-9249-4bb6-9c5c-f3185b7ef9eb",
"name": "Conclusion length",
"value": "={{ $json.conclusion_length }}",
"type": "number"
},
{
"id": "9579a7f2-1a4e-45b7-8cd7-ef249073798d",
"name": "style",
"value": "={{ $json.Style }}",
"type": "string"
},
{
"id": "1575eee8-6b01-4d0f-8304-68d4d541f0f7",
"name": "Category ID",
"value": "={{ $json.Category_ID }}",
"type": "number"
},
{
"id": "ae45f0c3-1ed6-4901-bf50-359ea3da33a9",
"name": "CTA",
"value": "={{ $json.CTA }}",
"type": "string"
},
{
"id": "c71d3ccd-369d-4c50-8f57-1cb693af14be",
"name": "CTA URL",
"value": "={{ $json.CTA_URL }}",
"type": "string"
},
{
"id": "f6e4ce2b-6d29-4ca8-9b91-6236701d71b5",
"name": "Company Offering",
"value": "={{ $json.Company_offering }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-1500,
360
],
"id": "ff6ac9d4-56d8-4352-b15b-660a109edd93",
"name": "Settings"
},
{
"parameters": {
"content": "## Settings",
"height": 431,
"width": 567,
"color": 2
},
"id": "8f200852-7c0f-4c9c-9a78-f4d3aa4a1947",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1560,
280
],
"typeVersion": 1
},
{
"parameters": {
"content": "## Create Article structure\n",
"height": 431,
"width": 787,
"color": 2
},
"id": "21293af7-f35f-4acb-bf60-97d3287cd378",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-940,
280
],
"typeVersion": 1
},
{
"parameters": {
"content": "## Generate text for each chapter\n",
"height": 531,
"width": 2347,
"color": 2
},
"id": "4827808d-4b75-45cd-b7dc-12132ff440ce",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
520,
280
],
"typeVersion": 1
},
{
"parameters": {
"content": "## Get all internal links\n",
"height": 231,
"width": 1207,
"color": 2
},
"id": "f9284a43-e8d6-47d0-875f-1f5fbd7b8d95",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"typeVersion": 1
},
{
"parameters": {
"content": "## Generate image for each chapter",
"height": 451,
"width": 2167,
"color": 2
},
"id": "ed0e350a-342f-4866-ae2c-2da3b339802b",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
700,
880
],
"typeVersion": 1
},
{
"parameters": {
"content": "## Combine and finalize the article\n",
"height": 431,
"width": 1567,
"color": 2
},
"id": "038bb621-a32f-4811-8114-082a77a15472",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
2920,
280
],
"typeVersion": 1
},
{
"parameters": {
"content": "## Publish article to website\n",
"height": 431,
"width": 367,
"color": 2
},
"id": "697382e1-cc93-4148-a671-9fe91cfc9f72",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
4640,
280
],
"typeVersion": 1
},
{
"parameters": {
"content": "## Set featured image for the article\n",
"height": 431,
"width": 987,
"color": 2
},
"id": "0dd7df4f-0e03-466c-bf30-570e113b7c3c",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
5080,
280
],
"typeVersion": 1
},
{
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"title\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"content\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}\n"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.2,
"position": [
2040,
680
],
"id": "9f246a14-3bf2-48d4-bf5e-7cb995d31e12",
"name": "Structured Output Parser"
},
{
"parameters": {
"fieldToSplitOut": "output.chapters",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
760,
360
],
"id": "2d193e31-c328-44c6-9ed7-95e78f71c2b1",
"name": "Split out chapters"
},
{
"parameters": {
"url": "=https://{{ $json.Website }}/post-sitemap.xml",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
80,
60
],
"id": "54ee81d3-680f-48e5-8a3c-33363c238578",
"name": "Get post sitemap"
},
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.xml",
"typeVersion": 1,
"position": [
300,
60
],
"id": "019e93cf-2aad-49bd-a67b-0903c87da23f",
"name": "Get XML file"
},
{
"parameters": {
"fieldToSplitOut": "urlset.url",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
520,
60
],
"id": "2acf70de-23a9-4f98-aad3-b5965911af1a",
"name": "Split out links"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "3db2a3a4-d89e-4848-835c-1d6ac68419ac",
"name": "chapter_title",
"value": "={{ $json.output.title }}",
"type": "string"
},
{
"id": "25fbf572-7e57-4797-99ba-34fc1c8d560a",
"name": "chapter_content",
"value": "={{ $json.output.content }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
3000,
340
],
"id": "4546c50b-5c69-42cb-91b1-c7bf0a98f91b",
"name": "Get title chapter and content"
},
{
"parameters": {
"resource": "image",
"prompt": "=Generate a photographic image to be used as the cover image for the chapter {{ $json.title }} in the article titled {{ $('Blog Planner').first().json.output.title }},\nThis is the prompt for the image: {{ $json.image.imagePrompt }}, photography, realistic. Do not show any texts in the image.",
"options": {
"quality": "standard",
"size": "1792x1024",
"style": "natural"
}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.7,
"position": [
1460,
1040
],
"id": "ccc62822-b59e-4325-aff1-4e5a63ef3082",
"name": "Generate chapter image"
},
{
"parameters": {
"operation": "resize",
"dataPropertyName": "=data",
"width": 800,
"height": 800,
"options": {
"fileName": "={{ $('Split out chapters').item.json.image.fileName }}",
"format": "webp"
}
},
"type": "n8n-nodes-base.editImage",
"typeVersion": 1,
"position": [
1720,
940
],
"id": "1d541178-1095-439c-8544-8439803a06ea",
"name": "Resize Image"
},
{
"parameters": {
"mode": "combine",
"combinationMode": "mergeByPosition",
"options": {}
},
"id": "2b7e997c-c64b-4178-86cd-65d32d4a150a",
"name": "Merge chapters title and text",
"type": "n8n-nodes-base.merge",
"position": [
3320,
420
],
"typeVersion": 2.1
},
{
"parameters": {
"mode": "markdownToHtml",
"markdown": "={{ $json.article }}",
"destinationKey": "article",
"options": {}
},
"type": "n8n-nodes-base.markdown",
"typeVersion": 1,
"position": [
4060,
420
],
"id": "a38544c7-e91b-4537-9b58-e3768b827d7b",
"name": "Markdown to HTML"
},
{
"parameters": {
"title": "={{ $('Blog Planner').first().json.output.title }}",
"additionalFields": {
"content": "={{ $('Final article in HTML').item.json.article }}",
"slug": "={{ $('Blog Planner').first().json.output.slug }}",
"status": "publish",
"categories": [
403
]
}
},
"id": "44f32434-14f2-4a13-883b-d800cc96104d",
"name": "Post on Wordpress",
"type": "n8n-nodes-base.wordpress",
"position": [
4760,
420
],
"typeVersion": 1
},
{
"parameters": {
"operation": "resize",
"width": 800,
"height": 800,
"options": {
"fileName": "={{ $('Blog Planner').item.json.output.image.fileName }}",
"format": "webp"
}
},
"type": "n8n-nodes-base.editImage",
"typeVersion": 1,
"position": [
1420,
1400
],
"id": "2de60d31-2590-434f-9cd9-93bdcf88c4e0",
"name": "Resize featured image",
"disabled": true
},
{
"parameters": {
"method": "POST",
"url": "=https://{{ $('Settings').first().json.Website }}/wp-json/wp/v2/media",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "wordpressApi",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Disposition",
"value": "=attachment; filename=\"{{ $('Blog Planner').item.json.output.image.fileName }}.{{ $binary.data.fileExtension }}\""
}
]
},
"sendBody": true,
"contentType": "binaryData",
"inputDataFieldName": "data",
"options": {}
},
"id": "36361f02-7961-4a93-8537-e75d4346ae85",
"name": "Upload featured image",
"type": "n8n-nodes-base.httpRequest",
"position": [
5400,
440
],
"typeVersion": 4.1
},
{
"parameters": {
"method": "POST",
"url": "=https://{{ $('Settings').first().json.Website }}/wp-json/wp/v2/posts/{{ $('Post on Wordpress').item.json.id }}",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "wordpressApi",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "featured_media",
"value": "={{ $json.id }}"
}
]
},
"options": {}
},
"id": "d0f9a617-78b4-41a2-8fee-20e88dceade9",
"name": "Set featured image for post",
"type": "n8n-nodes-base.httpRequest",
"position": [
5820,
440
],
"typeVersion": 4.1
},
{
"parameters": {
"batchSize": 5,
"options": {}
},
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
1020,
920
],
"id": "e42fc99b-658a-401b-b146-00869ccdf578",
"name": "Loop Over Items"
},
{
"parameters": {
"method": "POST",
"url": "=https://{{ $('Settings').first().json.Website }}/wp-json/wp/v2/media/{{ $json.id }}",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "wordpressApi",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "alt_text",
"value": "={{ $('Blog Planner').first().json.output.image.altText }}"
},
{
"name": "title",
"value": "={{ $('Blog Planner').first().json.output.image.caption }}"
},
{
"name": "caption",
"value": "={{ $('Blog Planner').first().json.output.image.caption }}"
},
{
"name": "description",
"value": "={{ $('Blog Planner').first().json.output.image.caption }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
5620,
440
],
"id": "c53641dd-3127-4e32-af28-c6f4f6a9a55d",
"name": "Update featured image meta data"
},
{
"parameters": {
"batchSize": "={{ $('Settings').item.json['Number of chapters'] }}",
"options": {}
},
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
1460,
360
],
"id": "d09c20d8-b759-4e42-9a83-008f56b59916",
"name": "Loop Over Items1"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "178011dc-bb76-420d-a01e-5a5d9797957e",
"name": "response",
"value": "=A new blog post was created and published at {{ $('Post on Wordpress').item.json.link }}. All the generated materials are saved to Google Drive: https://drive.google.com/drive/folders/{{ $('Create Drive folder').item.json.id }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
5460,
960
],
"id": "79d64daf-51a3-451d-9dbd-c1b8466af036",
"name": "Edit Fields"
},
{
"parameters": {
"content": "## Generate featured image",
"height": 431,
"width": 1347,
"color": 2
},
"id": "d2607ec4-8cf2-47fe-bd3e-eeccd73c6e4e",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
720,
1380
],
"typeVersion": 1
},
{
"parameters": {
"content": "## SEO\n",
"height": 431,
"width": 507,
"color": 2
},
"id": "599b38cf-b7cc-49ce-b196-cabbf4ee5c44",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
6120,
280
],
"typeVersion": 1
},
{
"parameters": {
"method": "POST",
"url": "=https://{{ $('Settings').first().json.Website }}/wp-json/wp/v2/posts/{{ $('Post on Wordpress').item.json.id }}",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "wordpressApi",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "excerpt",
"value": "={{ $('Blog Planner').first().json.output.googleExcerpt }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
6180,
440
],
"id": "74b5b4a4-e6e2-4ae8-b58a-cb1e23814031",
"name": "Set excerpt"
},
{
"parameters": {
"unit": "minutes"
},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
2340,
460
],
"id": "2582923b-5bcc-4a9b-ae37-f8f03749ec99",
"name": "Wait",
"disabled": true
},
{
"parameters": {},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
2640,
1040
],
"id": "dfbc19e6-b032-4928-9660-ad5d640ef435",
"name": "Wait1",
"disabled": true
},
{
"parameters": {
"pollTimes": {
"item": [
{
"mode": "everyX",
"value": 5,
"unit": "minutes"
}
]
},
"documentId": {
"__rl": true,
"value": "https://docs.google.com/spreadsheets/d/1lauWVua2rykUOxymjCY1_xgZOEHIyzlxT8-3mmKlwH8/edit?usp=sharing",
"mode": "url"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "blog",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lauWVua2rykUOxymjCY1_xgZOEHIyzlxT8-3mmKlwH8/edit#gid=0"
},
"event": "rowAdded",
"options": {
"dataLocationOnSheet": {
"values": {
"rangeDefinition": "specifyRange"
}
}
}
},
"type": "n8n-nodes-base.googleSheetsTrigger",
"typeVersion": 1,
"position": [
-2140,
360
],
"id": "681e07d4-dca6-4e27-954d-5d4679a799c9",
"name": "Google Sheets Trigger",
"credentials": {
"googleSheetsTriggerOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"maxItems": 20
},
"type": "n8n-nodes-base.limit",
"typeVersion": 1,
"position": [
760,
60
],
"id": "85c3d42a-b8c8-4071-b2cc-1fdc0e9e729f",
"name": "Limit1"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "a5e0892b-6f70-46d4-81fc-e33321dc87b9",
"leftValue": "={{ $json.Website }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
},
{
"id": "b4b4c8d5-9acb-4b8d-be85-7cb70954da7d",
"leftValue": "={{ $json['Seed keyword'] }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
},
{
"id": "48f46993-3214-48b6-a7d1-54a23c0cad48",
"leftValue": "={{ $json['Target audience'] }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
},
{
"id": "5599e8bf-4ed9-4316-9b2d-3eea6f74e9a3",
"leftValue": "={{ $json['Max word count'] }}",
"rightValue": "",
"operator": {
"type": "number",
"operation": "notEmpty",
"singleValue": true
}
},
{
"id": "4b177d23-d6e7-4444-8bbb-fe4d5064da03",
"leftValue": "={{ $json['Number of chapters'] }}",
"rightValue": "",
"operator": {
"type": "number",
"operation": "notEmpty",
"singleValue": true
}
},
{
"id": "34b9e9d2-c5a3-4878-a12a-f5ad87b43efa",
"leftValue": "={{ $json['Introduction length'] }}",
"rightValue": "",
"operator": {
"type": "number",
"operation": "notEmpty",
"singleValue": true
}
},
{
"id": "68969bc3-a14a-4459-95d3-7c6a0cb279ce",
"leftValue": "={{ $json['Conclusion length'] }}",
"rightValue": "",
"operator": {
"type": "dateTime",
"operation": "notEmpty",
"singleValue": true
}
},
{
"id": "30633e71-924d-4f0f-9ea8-f2d4a119ae51",
"leftValue": "={{ $json.style }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
},
{
"id": "ecb3a6a6-a19a-40b5-8026-2b26cca361de",
"leftValue": "={{ $json['Category ID'] }}",
"rightValue": "",
"operator": {
"type": "number",
"operation": "notEmpty",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-1220,
360
],
"id": "df4b9bf2-86cc-4b64-981c-a7e35f3e05bf",
"name": "Check inputs"
},
{
"parameters": {
"mode": "combine",
"combineBy": "combineByPosition",
"options": {}
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
5180,
440
],
"id": "9eceda96-0550-4373-a29a-0c809d590c26",
"name": "Add featured image"
},
{
"parameters": {
"operation": "update",
"documentURL": "={{ $json.id }}",
"actionsUi": {
"actionFields": [
{
"action": "insert",
"text": "={{ $('Final article in HTML').item.json.article }}"
}
]
}
},
"type": "n8n-nodes-base.googleDocs",
"typeVersion": 2,
"position": [
5080,
960
],
"id": "82959316-f900-4b1f-af4f-ee21ae2a3825",
"name": "Save texts to Doc"
},
{
"parameters": {
"folderId": "={{ $('Create Drive folder').first().json.id }}",
"title": "={{ $('Blog Planner').first().json.output.title.replace(/ /g, \"_\") }}"
},
"type": "n8n-nodes-base.googleDocs",
"typeVersion": 2,
"position": [
4700,
960
],
"id": "e179e715-9e3e-4405-84ea-7da71d1d92ec",
"name": "Create Doc"
},
{
"parameters": {
"name": "={{ $('Blog Planner').item.json.output.image.fileName }}",
"driveId": {
"__rl": true,
"value": "My Drive",
"mode": "list",
"cachedResultName": "My Drive",
"cachedResultUrl": "https://drive.google.com/drive/my-drive"
},
"folderId": {
"__rl": true,
"value": "={{ $('Create Drive folder').item.json.id }}",
"mode": "id"
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
1420,
1640
],
"id": "589e2c36-8a30-4842-9004-d2d964b4666c",
"name": "Upload featured image to Drive"
},
{
"parameters": {
"name": "={{ $('Split out chapters').item.json.image.fileName }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"folderId": {
"__rl": true,
"value": "={{ $('Create Drive folder').item.json.id }}",
"mode": "id"
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
1720,
1180
],
"id": "6dfa3762-85b3-4957-9c6e-d542a7294b42",
"name": "Upload chapter images to Drive"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "8cada260-4cd5-4470-8dba-139cec531ddc",
"name": "output",
"value": "={{ $('Blog Planner').item.json.output }}",
"type": "object"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
300,
360
],
"id": "52505d40-6d26-4bcc-be39-0eaad46c5541",
"name": "Get output"
},
{
"parameters": {
"resource": "folder",
"name": "={{ $json.output.title.replace(/ /g, \"_\") }}",
"driveId": {
"__rl": true,
"value": "My Drive",
"mode": "list",
"cachedResultName": "My Drive",
"cachedResultUrl": "https://drive.google.com/drive/my-drive"
},
"folderId": {
"__rl": true,
"value": "1SgWu_jHIXLXaDi15LBM3gEJ2bbzOAL82",
"mode": "list",
"cachedResultName": "DSDM_Posts",
"cachedResultUrl": "https://drive.google.com/drive/folders/1SgWu_jHIXLXaDi15LBM3gEJ2bbzOAL82"
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
40,
360
],
"id": "4a82a51f-9e3d-4647-bc61-d06d9078ef58",
"name": "Create Drive folder",
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "chooseBranch"
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
1840,
1520
],
"id": "f5e90892-53e0-4d95-84ef-51b3d15372fa",
"name": "Merge2"
},
{
"parameters": {
"mode": "chooseBranch"
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
2440,
1040
],
"id": "ef38b767-c05a-41b7-a958-afa30b938f4d",
"name": "Merge1"
},
{
"parameters": {
"content": "Create Save Folder on Drive",
"height": 431,
"width": 467,
"color": 2
},
"id": "e2651fdb-2fb7-440d-9285-ddebd3e18df5",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
280
],
"typeVersion": 1
},
{
"parameters": {
"content": "## Save to Doc on Drive\n",
"height": 431,
"width": 1047,
"color": 2
},
"id": "cabd4ac5-b869-4d95-a267-e22eae4875d3",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
4640,
800
],
"typeVersion": 1
},
{
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
-2140,
580
],
"id": "e2c1c1c8-66de-4ec2-83e2-afb1cf305246",
"name": "Schedule Trigger",
"disabled": true
},
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
-2140,
800
],
"id": "d5073ec0-280e-439b-bd82-f7aebea848f8",
"name": "When clicking \u2018Test workflow\u2019",
"disabled": true
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "cd9e8fee-8386-4410-8cb4-5ef83c265d52",
"name": "article",
"value": "={{ $json.article }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
3840,
420
],
"id": "fa0fe9bf-9424-4cb3-8441-4ad104274761",
"name": "Final article in Markdown"
},
{
"parameters": {
"jsCode": "let article = \"\";\n\n// Introduction\narticle += $('Blog Planner').first().json.output.introduction;\narticle += \"\\n\\n\";\n\nfor (const item of $input.all()) {\n // Add the chapter title as a level 2 Markdown header\n article += \"## \" + item.json.chapter_title + \"\\n\\n\";\n \n // Insert the chapter image if it exists (Markdown image syntax)\n if (item.json.source_url) {\n article += `\\n\\n`;\n }\n \n // Add the chapter content\n article += item.json.chapter_content;\n article += \"\\n\\n\";\n}\n\n// Conclusion\narticle += \"## Final words\\n\\n\";\narticle += $('Blog Planner').first().json.output.conclusion;\narticle += \"\\n\\n\";\n\n// Call-to-Action (CTA)\narticle += $('Blog Planner').first().json.output.cta + \"\\n\\n\";\narticle += \"Learn more: [\" + $('Blog Planner').first().json.output.ctaUrl + \"](\" + $('Blog Planner').first().json.output.ctaUrl + \")\\n\\n\";\n\n// Company Offering\narticle += \"## About us\\n\\n\";\narticle += $('Blog Planner').first().json.output.companyOffering;\n\nreturn [\n {\n \"article\": article\n }\n];\n"
},
"id": "3b5e9977-42c3-42a0-ad4a-74096b711803",
"name": "Combine into article",
"type": "n8n-nodes-base.code",
"position": [
3560,
420
],
"typeVersion": 1
},
{
"parameters": {
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "loc",
"renameField": true,
"outputFieldName": "internal_links"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
1020,
60
],
"id": "2cea31f2-2532-4c0e-b12d-bd5d5acc0523",
"name": "Aggregate internal links"
},
{
"parameters": {
"content": "## README\n\nUPDATE: \n1) replace Open Router with OpenAI node!\n2) Move \"Wait\" node to end of loop instead of at start\n3) COrrect the \"Loop\" node. The batch side should be equal to the number of chapter.\n\nThe best content automation in the market\\! This advanced workflow not only creates and publishes **SEO-optimized blog posts** to your **WordPress website,** but also generates **a unique image for each chapter and a featured image for the overall article**. In addition, it automatically collects internal website links\u2014seamlessly inserting them throughout each chapter and the entire article. Last but not least, it automatically **backs up all content and images** to a designated folder in your Google Drive. \nThis integrated approach enhances on-page SEO, improves navigation, and streamlines your content creation process, saving you time while ensuring your work is securely stored.\n\n### How it works\n\n1. **Trigger:** It activates upon adding a new row to a Google Sheet. Users can control many customizable parameters, such as see keyword, number of chapters, target audience, length, and style. \n2. **Structure Planning:** It plans a detailed structure for the entire article and breaks the article into chapters strongly tied to the main topic. \n3. **Expert Copywriting: It** generates content for each chapter in depth based on the provided parameters. \n4. **Image Generation:** It generates and adds images for each chapter, as well as a featured image for the article. \n5. **Internal Linking:** The system gathers internal website links and strategically embeds them within each chapter and throughout the article, boosting SEO and enhancing user navigation. \n6. **Final Assembly & Publishing:** All texts, images, and links are combined into one comprehensive article, which is then published directly to your WordPress website. You can also choose to post it as a draft for final review. \n7. **Auto Backup to Drive:** Get peace of mind knowing all content (blog post and images) is automatically saved to Google Drive, organized in a folder named after the blog post title.\n\n### Unique features\n\n1. **Full Automation:** The workflow is designed to be 100% automated. Once imported and configured, it can run without manual intervention. \n2. **Simple Activation:** It can be easily triggered through the Google Spreadsheets interface. You simply add a new row to a Google Sheet. \n3. **Customization Options:** Offers a wide array of customization options, including topic, category, target audience, word count, number of chapters, length of introduction and conclusion, and writing style. It also allows for the inclusion of calls-to-action (CTAs) and company/product introductions. \n4. **Automatic Content Saving:** After writing a blog post, all content and images are automatically saved to Google Drive, preventing data loss. The folder is even named after the title of the blog post. \n5. **Advanced Loop:** Clever looping is used to write each chapter and generate images, ensuring optimal results. \u201cWait\u201d nodes are added where appropriate to avoid API call rate limits. \n6. **SEO-Optimized Content:** It's designed to create content optimized for SEO using seed keywords. \n7. **Rate Limit Handling:** Includes \"Wait\" nodes to avoid rate limits. \n8. **Internal Link Limit:** Limits the number of internal links to 20 by default.\n\nAnd many more big and small improvements.\n\n### Requirements\n\nPlease make sure you have these requirements ready to ensure smooth deployment of this n8n workflow template:\n\n1. **OpenAI API** or equivalent for text and image generation \n2. A **WordPress** website (other website platforms will not work\\!) \n3. Google Sheets for triggering the workflow, or a trigger of your choice \n4. Google Drive and Google Docs for auto backup\n\n### Set up steps\n\n1. **Install the Workflow Template:** Import the JSON files into your n8n instance. \n2. **Connect the Workflow with Your Accounts:** Link your accounts for OpenAI API, Google Drive, Google Sheets, Google Docs, and WordPress website. \n3. **Configure the Google Sheet:** Ensure your Google Sheet is set up to trigger the workflow upon adding a new row and that the input data is correctly formatted. \n4. **Customize the Inputs:** Adjust parameters like topic, target audience, and writing style to match your specific content needs. Optimize prompts for the best results. \n5. **Test the Workflow:** Use low-cost AI models and image settings initially to ensure everything runs smoothly. \n6. **Tailor Further as Needed:** Modify workflow elements to perfectly align with your needs and content strategy.\n\n---\n\n### Tips for PROs\n\n1. **Image Generation:** The default AI model for image generation is OpenAI\u2019s Dall-E. However, the outputs of this model are not impressive. Consider using FLUX.1 for better image quality. \n2. **Triggering:** Triggering with a new row on Google Sheets is limited and unreliable. Consider setting an auto trigger with a daily schedule at a specific time. You can even put the whole workflow in a loop to process multiple rows one-by-one from Google Sheets. \n3. **Human in the Loop:** It is possible to incorporate a human review process. For example, after the article is posted to WordPress as a draft, a human can review the draft. Only after approval will the post be published, and a final copy of the post will be saved to the shared Drive folder.",
"height": 1460,
"width": 1360
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-3800,
320
],
"id": "b6c95c3d-37c4-4d68-b47d-7f80176caca1",
"name": "Sticky Note12"
},
{
"parameters": {
"model": {
"__rl": true,
"value": "gpt-4o",
"mode": "list",
"cachedResultName": "gpt-4o"
},
"options": {
"maxRetries": 2
}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
-780,
560
],
"id": "57dfb7e8-09e3-4387-9d3f-d8784ee3e8bf",
"name": "OpenAI Chat Model",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"model": {
"__rl": true,
"value": "gpt-4o",
"mode": "list",
"cachedResultName": "gpt-4o"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
1840,
660
],
"id": "9fc8f979-4e86-4128-97e9-51bde6b99ad2",
"name": "OpenAI Chat Model1"
},
{
"parameters": {
"keep": "lastItems"
},
"type": "n8n-nodes-base.limit",
"typeVersion": 1,
"position": [
-1800,
360
],
"id": "3e3a6e82-6abf-46e5-9c5e-cc7a28562b95",
"name": "Limit to the last row"
},
{
"parameters": {
"promptType": "define",
"text": "=## Instructions\nWrite a article about {{ $json['Seed keyword'] }} that targets {{ $json['Target audience'] }} in {{ $json.style }} writing style. The article should have {{ $json['Number of chapters'] }} chapters with {{ $json['Max word count'] }} maximum word count. \n\n### Title and Subtitle\nWrite an **engaging title** and a **concise subtitle** that reflects the topic.\n\n### Introduction\nWrite an introduction of approximately **{{ $json['Introduction length'] }} words** that introduces the topic and sets the stage for the rest of the article.\n\n- **Avoid phrases** like:\n - \"In this article\"\n - \"In the fast-paced world\"\n - \"Transformative\"\n\n### Slug\nCreate a **short, SEO-friendly URL slug** of 3-5 words:\n\n- Ensure it contains the **SEO keyword phrase**.\n- Use **dashes (-)** to separate words.\n\n### Google Excerpt\nWrite a **Google-friendly excerpt** (up to **160 characters**):\n\n- Use an **active voice**.\n- Include the **target key phrase**.\n\n### Google Meta Description\nBased on the article content:\n\n- Limit to **156 characters**.\n- Use an **active voice** and make it **actionable**.\n- Include the **target key phrase**.\n\n### Chapters\nCreate detailed chapter content:\n\n- **Structure**:\n - Provide a title and an **exhaustive prompt** for each chapter.\n - Place chapters in an array field called **chapters**, with fields:\n - `title`\n - `prompt`\n - `image`\n - Ensure a **logical flow** between chapters without repeating concepts.\n - Avoid generic titles like \"Chapter 1,\" \"Chapter 2,\" etc.; use **descriptive titles**.\n\n- **Markdown Formatting**:\n - Use **bold**, *italic*, and _underline_ styles when appropriate.\n - Include **lists** and **numbered lists** as needed.\n\n- **Image Details** for Each Chapter:\n - **Image Prompt**: A vivid and detailed description of the image.\n - **File Name**: A descriptive file name for the image (without an extension).\n - **Caption**: A succinct summary of the image content.\n - **Alt Text**: An accessibility-focused description of the image.\n\n### Conclusion\nWrite a **{{ $json['Conclusion length'] }}-word conclusion** summarizing the article and leaving the reader with a final takeaway.\n\n### Call-to-Action (CTA) and Company Offering\n- **CTA**: At the end of the article, include a compelling call-to-action message that motivates readers to take the next step: {{ $('Settings').item.json.CTA }} \n- **CTA URL**: Provide a URL for the CTA: {{ $('Settings').item.json['CTA URL'] }}\n- **Company Offering**: Include a detailed description of the company\u2019s offering: {{ $('Settings').item.json['Company Offering'] }}\n\n---\n\n## Image Details for Article Cover\nThe article should include a **featured image object** with the following fields:\n\n- **Image Prompt**: A vivid and detailed description of the image reflecting the article's content and sentiment.\n- **File Name**: A descriptive file name for the cover image (without an extension).\n- **Caption**: A succinct summary of the cover image content.\n- **Alt Text**: An accessibility-focused description of the cover image.\n\n**Requirements** for the Cover Image:\n- **Aspect Ratio**: 16:9\n- Must be **relevant** to the article's content and sentiment.\n- Contain **rich details** and reflect the text content in a **photo-realistic style**.\n- Exclude any text other than the DALL-E 3 prompt.\n\n---\n\n### Output Format: JSON\n```json\n{\n \"title\": \"string\",\n \"subtitle\": \"string\",\n \"introduction\": \"string\",\n \"slug\": \"string\",\n \"googleExcerpt\": \"string\",\n \"googleMetaDescription\": \"string\",\n \"chapters\": [\n {\n \"title\": \"string\",\n \"prompt\": \"string\",\n \"image\": {\n \"imagePrompt\": \"string\",\n \"fileName\": \"string\",\n \"caption\": \"string\",\n \"altText\": \"string\"\n }\n }\n ],\n \"conclusion\": \"string\",\n \"image\": {\n \"imagePrompt\": \"string\",\n \"fileName\": \"string\",\n \"caption\": \"string\",\n \"altText\": \"string\"\n },\n \"cta\": \"string\",\n \"ctaUrl\": \"string\",\n \"companyOffering\": \"string\"\n}\n```",
"hasOutputParser": true
},
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.5,
"position": [
-760,
360
],
"id": "25715cd4-effb-49e0-9074-964f67b81b0c",
"name": "Blog Planner",
"alwaysOutputData": false
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "f85e6d76-179d-4fa8-ac9b-d0ae849c2d83",
"leftValue": "{{ $json.output }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-400,
360
],
"id": "159cf568-1978-498d-bd69-ce06a811fb6f",
"name": "Check empty output"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "b6877f11-541d-4ac5-8556-f10374322f2a",
"name": "article",
"value": "={{ $json.article }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
4300,
420
],
"id": "faca84b1-c639-472a-a396-6ebdd7002737",
"name": "Final article in HTML"
}
],
"connections": {
"Generate featured image": {
"main": [
[
{
"node": "Upload featured image to Drive",
"type": "main",
"index": 0
},
{
"node": "Resize featured image",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser2": {
"ai_outputParser": [
[
{
"node": "Blog Planner",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Write chapter text": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
]
]
},
"Settings": {
"main": [
[
{
"node": "Check inputs",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Write chapter text",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Split out chapters": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
},
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Get post sitemap": {
"main": [
[
{
"node": "Get XML file",
"type": "main",
"index": 0
}
]
]
},
"Get XML file": {
"main": [
[
{
"node": "Split out links",
"type": "main",
"index": 0
}
]
]
},
"Split out links": {
"main": [
[
{
"node": "Limit1",
"type": "main",
"index": 0
}
]
]
},
"Get title chapter and content": {
"main": [
[
{
"node": "Merge chapters title and text",
"type": "main",
"index": 0
}
]
]
},
"Generate chapter image": {
"main": [
[
{
"node": "Upload chapter images to Drive",
"type": "main",
"index": 0
},
{
"node": "Resize Image",
"type": "main",
"index": 0
}
]
]
},
"Resize Image": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"Merge chapters title and text": {
"main": [
[
{
"node": "Combine into article",
"type": "main",
"index": 0
}
]
]
},
"Markdown to HTML": {
"main": [
[
{
"node": "Final article in HTML",
"type": "main",
"index": 0
}
]
]
},
"Post on Wordpress": {
"main": [
[
{
"node": "Add featured image",
"type": "main",
"index": 0
}
]
]
},
"Resize featured image": {
"main": [
[
{
"node": "Merge2",
"type": "main",
"index": 0
}
]
]
},
"Upload featured image": {
"main": [
[
{
"node": "Update featured image meta data",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[
{
"node": "Merge chapters title and text",
"type": "main",
"index": 1
}
],
[
{
"node": "Generate chapter image",
"type": "main",
"index": 0
}
]
]
},
"Update featured image meta data": {
"main": [
[
{
"node": "Set featured image for post",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items1": {
"main": [
[
{
"node": "Get title chapter and content",
"type": "main",
"index": 0
}
],
[
{
"node": "Write chapter text",
"type": "main",
"index": 0
}
]
]
},
"Set featured image for post": {
"main": [
[
{
"node": "Set excerpt",
"type": "main",
"index": 0
}
]
]
},
"Set excerpt": {
"main": [
[
{
"node": "Create Doc",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
]
]
},
"Wait1": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets Trigger": {
"main": [
[
{
"node": "Limit to the last row",
"type": "main",
"index": 0
}
]
]
},
"Limit1": {
"main": [
[
{
"node": "Aggregate internal links",
"type": "main",
"index": 0
}
]
]
},
"Check inputs": {
"main": [
[
{
"node": "Blog Planner",
"type": "main",
"index": 0
},
{
"node": "Get post sitemap",
"type": "main",
"index": 0
}
]
]
},
"Add featured image": {
"main": [
[
{
"node": "Upload featured image",
"type": "main",
"index": 0
}
]
]
},
"Create Doc": {
"main": [
[
{
"node": "Save texts to Doc",
"type": "main",
"index": 0
}
]
]
},
"Upload chapter images to Drive": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 1
}
]
]
},
"Get output": {
"main": [
[
{
"node": "Split out chapters",
"type": "main",
"index": 0
},
{
"node": "Generate featured image",
"type": "main",
"index": 0
}
]
]
},
"Create Drive folder": {
"main": [
[
{
"node": "Get output",
"type": "main",
"index": 0
}
]
]
},
"Upload featured image to Drive": {
"main": [
[
{
"node": "Merge2",
"type": "main",
"index": 1
}
]
]
},
"Merge1": {
"main": [
[
{
"node": "Wait1",
"type": "main",
"index": 0
}
]
]
},
"Final article in Markdown": {
"main": [
[
{
"node": "Markdown to HTML",
"type": "main",
"index": 0
}
]
]
},
"Combine into article": {
"main": [
[
{
"node": "Final article in Markdown",
"type": "main",
"index": 0
}
]
]
},
"Aggregate internal links": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Blog Planner",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "Write chapter text",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Limit to the last row": {
"main": [
[
{
"node": "S
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleDriveOAuth2ApigoogleSheetsTriggerOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
WP. Uses openAi, outputParserStructured, chainLlm, httpRequest. Event-driven trigger; 63 nodes.
Source: https://github.com/hoangthikd/n8nbk/blob/5a89e05ed179144ed81836eaa59b0f44aeb43eaf/workflows/WP.json — 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.
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
100% autonomous workflow that transforms YouTube videos into unique, high-quality, SEO-optimized blog articles and automatically publishes them to WordPress. No human intervention required: it uses Yo
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,
✍️🌄 Your First Wordpress Content Creator - Quick Start. Uses manualTrigger, lmChatOpenAi, outputParserStructured, agent. Event-driven trigger; 39 nodes.
Enrich Faq Sections On Your Website Pages At Scale With Ai. Uses manualTrigger, lmChatOpenAi, splitInBatches, splitOut. Event-driven trigger; 36 nodes.