{ "meta": { "instanceId": "408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9", "templateCredsSetupCompleted": true }, "nodes": [ { "id": "8eaf0925-1394-4771-bf43-281ad14fefb4", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [ 540, 880 ], "parameters": { "color": 4, "width": 301.3874093724939, "height": 371.765663140765, "content": "## Data check" }, "typeVersion": 1 }, { "id": "ab31ac7c-6bd4-44f6-8c0c-8e41463a3983", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [ 560, 940 ], "parameters": { "color": 7, "width": 272.8190508599808, "height": 80, "content": "Checks that the data returned by OpenAI is correct" }, "typeVersion": 1 }, { "id": "306ffdb5-d6b6-4e49-a26d-a256e32f7c67", "name": "Sticky Note5", "type": "n8n-nodes-base.stickyNote", "position": [ 1940, 880 ], "parameters": { "color": 5, "width": 302, "height": 392, "content": "## Draft on WordPress" }, "typeVersion": 1 }, { "id": "928da5f9-194c-461d-a5dd-7fd5c8563345", "name": "Sticky Note9", "type": "n8n-nodes-base.stickyNote", "position": [ 1960, 960 ], "parameters": { "color": 7, "width": 254.77269221373095, "height": 80, "content": "The article is posted as a draft on WordPress" }, "typeVersion": 1 }, { "id": "271f6b4d-cf7c-49b8-9479-dd753d7c5199", "name": "Sticky Note10", "type": "n8n-nodes-base.stickyNote", "position": [ 2260, 880 ], "parameters": { "color": 3, "width": 678, "height": 389, "content": "## Featured image" }, "typeVersion": 1 }, { "id": "efb047c4-b835-4706-af6a-b40c6cd76757", "name": "Sticky Note11", "type": "n8n-nodes-base.stickyNote", "position": [ 2280, 960 ], "parameters": { "color": 7, "width": 517.9195082760601, "height": 80, "content": "The image is generated with Dall-E, uploaded to WordPress, and then connected to the post as its featured image" }, "typeVersion": 1 }, { "id": "4f78eb2c-a501-4774-b5ab-29d7aa83817d", "name": "Sticky Note12", "type": "n8n-nodes-base.stickyNote", "position": [ 160, 940 ], "parameters": { "color": 7, "width": 287.370178643191, "height": 80, "content": "Starting from the given keywords, generates the article title, subtitle, chapters, and image prompt" }, "typeVersion": 1 }, { "id": "536d265a-1c0b-4262-adab-96edd5924530", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ 140, 880 ], "parameters": { "color": 6, "width": 360, "height": 371, "content": "## Article structure" }, "typeVersion": 1 }, { "id": "8b4b7cf6-4809-44e7-af9a-c72919981698", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ -400, 880 ], "parameters": { "color": 7, "width": 239.97343293577688, "height": 370.512611879577, "content": "## User form" }, "typeVersion": 1 }, { "id": "734b8ac2-2148-4d56-ab04-84f12991cf44", "name": "Sticky Note13", "type": "n8n-nodes-base.stickyNote", "position": [ -380, 940 ], "parameters": { "color": 7, "width": 199.7721486302032, "height": 80, "content": "The user triggers the post creation" }, "typeVersion": 1 }, { "id": "c54f91a7-ac3d-4029-a19f-3fa3794d581a", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [ 2960, 880 ], "parameters": { "color": 7, "width": 220, "height": 391, "content": "## User feedback" }, "typeVersion": 1 }, { "id": "509e89e7-8916-4228-91ae-baae25a75be7", "name": "Sticky Note14", "type": "n8n-nodes-base.stickyNote", "position": [ 2980, 960 ], "parameters": { "color": 7, "width": 183.38125554060056, "height": 80, "content": "Final confirmation to the user" }, "typeVersion": 1 }, { "id": "5c6e90c4-9714-43db-a82c-54fcbf43a26c", "name": "Sticky Note6", "type": "n8n-nodes-base.stickyNote", "position": [ 880, 1280 ], "parameters": { "color": 7, "width": 281.2716777103785, "height": 288.4116890365125, "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nUser is notified to try again since some data is missing" }, "typeVersion": 1 }, { "id": "54e10057-b300-475b-8280-cb761acc303a", "name": "Sticky Note7", "type": "n8n-nodes-base.stickyNote", "position": [ 140, 1280 ], "parameters": { "color": 7, "width": 340, "height": 275, "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nWikipedia is used to write the article" }, "typeVersion": 1 }, { "id": "5f5b9ad9-1da5-4321-b6b4-e1985ff257ca", "name": "Sticky Note8", "type": "n8n-nodes-base.stickyNote", "position": [ -120, 880 ], "parameters": { "color": 2, "width": 226.71615243495023, "height": 370.512611879577, "content": "## Settings" }, "typeVersion": 1 }, { "id": "6e298414-634f-45fb-b931-2abcae9c6db1", "name": "Sticky Note15", "type": "n8n-nodes-base.stickyNote", "position": [ -100, 940 ], "parameters": { "color": 7, "width": 179.37633247508526, "height": 80, "content": "Set the URL of your WordPress here" }, "typeVersion": 1 }, { "id": "94b09f31-31aa-4284-936e-c37fb3088acc", "name": "Sticky Note16", "type": "n8n-nodes-base.stickyNote", "position": [ 880, 880 ], "parameters": { "color": 2, "width": 225.47038972308582, "height": 370.512611879577, "content": "## Chapters split" }, "typeVersion": 1 }, { "id": "633cba39-ec92-410c-b010-083048487b2b", "name": "Sticky Note17", "type": "n8n-nodes-base.stickyNote", "position": [ 900, 940 ], "parameters": { "color": 7, "width": 185.6051460344073, "height": 80, "content": "Splits out chapter contents from the previous node" }, "typeVersion": 1 }, { "id": "4c9fd35f-d69d-4ced-a759-175336f43c8a", "name": "Sticky Note18", "type": "n8n-nodes-base.stickyNote", "position": [ 1160, 940 ], "parameters": { "color": 7, "width": 287.370178643191, "height": 80, "content": "Writes the text for each chapter" }, "typeVersion": 1 }, { "id": "0d751d84-117a-4bf4-a9a7-d5ad1b557fec", "name": "Sticky Note19", "type": "n8n-nodes-base.stickyNote", "position": [ 1140, 880 ], "parameters": { "color": 6, "width": 333.40108076977657, "height": 370.512611879577, "content": "## Chapters text" }, "typeVersion": 1 }, { "id": "ce36a500-136b-4082-988c-5f9b6dd6d971", "name": "Sticky Note21", "type": "n8n-nodes-base.stickyNote", "position": [ 1500, 880 ], "parameters": { "color": 4, "width": 420.4253447940705, "height": 514.2177254645992, "content": "## Content preparation" }, "typeVersion": 1 }, { "id": "9da83dc4-9e99-42a4-88a1-27ef87df6d09", "name": "Sticky Note22", "type": "n8n-nodes-base.stickyNote", "position": [ 1520, 960 ], "parameters": { "color": 7, "width": 368.1523541074699, "height": 80, "content": "Merges the content and prepare it before sending it to WordPress" }, "typeVersion": 1 }, { "id": "8591f4cb-edc4-4582-96b4-bcb2214a27a7", "name": "On form submission", "type": "n8n-nodes-base.formTrigger", "position": [ -340, 1080 ], "webhookId": "080f8376-cc82-49cc-8dd0-6db36bb887ab", "parameters": { "options": { "path": "create-wordpress-post" }, "formTitle": "Create a WordPress post with AI", "formFields": { "values": [ { "fieldLabel": "Keywords (comma-separated)", "requiredField": true }, { "fieldType": "dropdown", "fieldLabel": "Number of chapters", "fieldOptions": { "values": [ { "option": "1" }, { "option": "2" }, { "option": "3" }, { "option": "4" }, { "option": "5" }, { "option": "6" }, { "option": "7" }, { "option": "8" }, { "option": "9" }, { "option": "10" } ] }, "requiredField": true }, { "fieldType": "number", "fieldLabel": "Max words count", "requiredField": true } ] }, "responseMode": "lastNode", "formDescription": "Fill this form with the required information to create a draft post on WordPress" }, "typeVersion": 2.2 }, { "id": "59619ea3-ac29-4188-9050-a6711c3f0921", "name": "Split Out", "type": "n8n-nodes-base.splitOut", "position": [ 940, 1080 ], "parameters": { "options": {}, "fieldToSplitOut": "message.content.chapters" }, "typeVersion": 1 }, { "id": "728b7e4c-7b4a-46d9-ac86-98c23bda6c98", "name": "OpenAI", "type": "@n8n/n8n-nodes-langchain.openAi", "position": [ 1180, 1080 ], "parameters": { "modelId": { "__rl": true, "mode": "list", "value": "gpt-4o-mini", "cachedResultName": "GPT-4O-MINI" }, "options": {}, "messages": { "values": [ { "content": "=Write a chapter for the article: {{ $('Create post title and structure').item.json.message.content.title }}, {{ $('Create post title and structure').item.json.message.content.subtitle }}, that talks about {{ $('Settings').item.json[\"keywords\"] }}\n\nThis is the prompt for the chapter titled {{ $json.title }}: {{ $json.prompt }}.\n\nGuidelines:\n- Just return the plain text for each chapter (no JSON structure).\n- Don't use markdown for formatting.\n- Use HTML for formatting, but limited to bold, italic and lists.\n- Don't add internal titles or headings.\n- The length of each chapther should be around {{ Math.round(($('Settings').item.json.words - 120)/ $('Settings').item.json.chapters) }} words long\n- Go deep in the topic you treat, don't just throw some superficial info\n{{ $itemIndex > 0 ? \"- The previous chapter talks about \" + $input.all()[$itemIndex-1].json.title : \"\" }}\n{{ $itemIndex > 0 ? \"- The promt for the previous chapter is \" + $input.all()[$itemIndex-1].json.prompt : \"\" }}\n{{ $itemIndex < $input.all().length ? \"- The following chapter will talk about \" + $input.all()[$itemIndex+1].json.title: \"\" }}\n{{ $itemIndex < $input.all().length ? \"- The prompt for the following chapter is \" + $input.all()[$itemIndex+1].json.prompt : \"\" }}\n- Consider the previous and following chapters what writing the text for this chapter. The text must be coherent with the previous and following chapters.\n- This chapter should not repeat the concepts already exposed in the previous chapter.\n- This chapter is a part of a larger article so don't include an introduction or conclusions. This chapter should merge with the rest of the article.\n" } ] } }, "credentials": { "openAiApi": { "id": "8gccIjcuf3gvaoEr", "name": "OpenAi account" } }, "typeVersion": 1.8 }, { "id": "85007abe-b4b1-4263-a7e6-62f0a2ebd7c3", "name": "Settings", "type": "n8n-nodes-base.set", "position": [ -60, 1080 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "c07386d7-9f51-4052-a62d-500e9aff9336", "name": "wordpress_url", "type": "string", "value": "https://you-wordpress-url-here.com/" }, { "id": "2bbdd88a-3d66-4407-9b77-32af63f44e11", "name": "keywords", "type": "string", "value": "={{ $json['Keywords (comma-separated)'] }}" }, { "id": "4a199e44-1033-446a-a019-e2e1a694009e", "name": "chapters", "type": "string", "value": "={{ $json['Number of chapters'] }}" }, { "id": "312d2e97-d1b6-46d9-b2ae-35f7234b5404", "name": "words", "type": "string", "value": "={{ $json['Max words count'] }}" } ] } }, "typeVersion": 3.4 }, { "id": "d87b4460-1bf1-4c7f-8f5a-51993c1b7cd0", "name": "Create post title and structure", "type": "@n8n/n8n-nodes-langchain.openAi", "position": [ 180, 1080 ], "parameters": { "modelId": { "__rl": true, "mode": "list", "value": "gpt-4o-mini", "cachedResultName": "GPT-4O-MINI" }, "options": {}, "messages": { "values": [ { "content": "=Write the title, the subtitle, the chapters details, the introduction, the conclusions, and an image prompt for a SEO-friendly article about these topics:\n{{ $json.keywords }}.\n\nInstructions:\n- Place the article title in a JSON field called `title`\n- Place the subtitle in a JSON field called `subtitle`\n- Place the introduction in a JSON field called `introduction`\n- In the introduction introduce the topic that is then explored in depth in the rest of the text\n- The introduction should be around 60 words\n- Place the conclusions in a JSON field called `conclusions`\n- The conclusions should be around 60 words\n- Use the conclusions to sum all said in the article and offer a conclusion to the reader\n- The image prompt will be used to produce a photographic cover image for the article and should depict the topics discussed in the article\n- Place the image prompt in a JSON field called `imagePrompt`\n- There should be {{ $json.chapters.toString() }} chapters.\n- For each chapter provide a title and an exaustive prompt that will be used to write the chapter text.\n- Place the chapters in an array field called `chapters`\n- For each chapter provide the fields `title` and `prompt`\n- The chapters should follow a logical flow and not repeat the same concepts.\n- The chapters should be one related to the other and not isolated blocks of text. The text should be fluent and folow a linear logic.\n- Don't start the chapters with \"Chapter 1\", \"Chapter 2\", \"Chapter 3\"... just write the title of the chapter\n- For the title and the capthers' titles don't use colons (`:`)\n- For the text, use HTML for formatting, but limited to bold, italic and lists.\n- Don't use markdown for formatting.\n- Always search on Wikipedia for useful information or verify the accuracy of what you write.\n- Never mention it if you don't find information on Wikipedia or the web\n- Go deep in the topic you treat, don't just throw some superficial info" } ] }, "jsonOutput": true }, "credentials": { "openAiApi": { "id": "8gccIjcuf3gvaoEr", "name": "OpenAi account" } }, "typeVersion": 1.8 }, { "id": "57f5811a-e82e-4dd3-8d53-0559b2716dac", "name": "Wikipedia", "type": "@n8n/n8n-nodes-langchain.toolWikipedia", "position": [ 280, 1360 ], "parameters": {}, "typeVersion": 1 }, { "id": "1987ab2c-4b6e-451d-a831-0817004be72b", "name": "Check data consistency", "type": "n8n-nodes-base.if", "position": [ 620, 1080 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "9523cb70-8467-4e65-9ecf-65cb91c29cb7", "operator": { "type": "string", "operation": "notEmpty", "singleValue": true }, "leftValue": "={{ $json.message.content.title }}", "rightValue": "" }, { "id": "d754869d-10fe-4348-807f-2e1bc82a7b41", "operator": { "type": "array", "operation": "lengthGt", "rightType": "number" }, "leftValue": "={{ $json.message.content.chapters }}", "rightValue": 0 }, { "id": "79a60fc1-66f8-4cfc-a61b-de528dfb7978", "operator": { "type": "string", "operation": "notEmpty", "singleValue": true }, "leftValue": "={{ $json.message.content.subtitle }}", "rightValue": "" }, { "id": "c0c44d88-1c3d-44ba-9030-6e8fa9f2860f", "operator": { "type": "string", "operation": "notEmpty", "singleValue": true }, "leftValue": "={{ $json.message.content.introduction }}", "rightValue": "" }, { "id": "338cd7e0-d2b8-40f4-838d-3aaf618268d2", "operator": { "type": "string", "operation": "notEmpty", "singleValue": true }, "leftValue": "={{ $json.message.content.conclusions }}", "rightValue": "" }, { "id": "76eb9ba1-7675-403c-9287-ac1319791ffe", "operator": { "type": "string", "operation": "notEmpty", "singleValue": true }, "leftValue": "={{ $json.message.content.imagePrompt }}", "rightValue": "" } ] } }, "typeVersion": 2.2 }, { "id": "6b22ae14-80c9-48ac-9a03-9266bc3a9aa4", "name": "Form", "type": "n8n-nodes-base.form", "position": [ 940, 1340 ], "webhookId": "691e1010-7083-46be-9e6e-4e77fb853a9a", "parameters": { "operation": "completion", "respondWith": "showText", "responseText": "There was a problem creating the article, please refresh the form and try again!" }, "typeVersion": 1 }, { "id": "5a22467a-6835-4a62-951f-e8cd43bef3af", "name": "Merge chapters title and text", "type": "n8n-nodes-base.merge", "position": [ 1580, 1200 ], "parameters": { "mode": "combine", "options": {}, "combineBy": "combineByPosition" }, "typeVersion": 3 }, { "id": "f4609858-7f65-4f2d-b222-f03ee207f166", "name": "Final article text", "type": "n8n-nodes-base.code", "position": [ 1760, 1080 ], "parameters": { "jsCode": "let article = \"\";\n\n// Introduction\narticle += $('Create post title and structure').first().json.message.content.introduction;\narticle += \"

\";\n\nfor (const item of $input.all()) {\n article += \"\" + item.json.title + \"\";\n article += \"

\";\n article += item.json.message.content;\n article += \"

\";\n}\n\n// Conclusions\narticle += \"Conclusions\";\narticle += \"

\";\narticle += $('Create post title and structure').first().json.message.content.conclusions;\n\n\nreturn [\n {\n \"article\": article\n }\n];" }, "typeVersion": 2 }, { "id": "e21a5519-315b-442e-97d0-8ee745138652", "name": "Post on Wordpress", "type": "n8n-nodes-base.wordpress", "position": [ 2040, 1080 ], "parameters": { "title": "={{ $('Create post title and structure').first().json.message.content.title }}", "additionalFields": { "status": "draft", "content": "={{ $json.article }}" } }, "credentials": { "wordpressApi": { "id": "YMW8mGrekjfxKJUe", "name": "Wordpress account" } }, "typeVersion": 1 }, { "id": "7d7de1e3-cff2-41f2-a8ae-123441d9b18c", "name": "Generate featured image", "type": "@n8n/n8n-nodes-langchain.openAi", "position": [ 2340, 1080 ], "parameters": { "prompt": "=Generate a photographic image to be used as the cover image for the article titled: {{ $('Create post title and structure').first().json.message.content.title }}. This is the prompt for the image: {{ $('Create post title and structure').first().json.message.content.imagePrompt }}, photography, realistic, sigma 85mm f/1.4", "options": { "size": "1792x1024", "style": "natural", "quality": "hd" }, "resource": "image" }, "credentials": { "openAiApi": { "id": "8gccIjcuf3gvaoEr", "name": "OpenAi account" } }, "typeVersion": 1.8 }, { "id": "edbd0658-0edf-43e8-8428-3fea52639d62", "name": "Upload media", "type": "n8n-nodes-base.httpRequest", "position": [ 2560, 1080 ], "parameters": { "url": "https://wp-demo.mondo.surf/wp-json/wp/v2/media", "method": "POST", "options": {}, "sendBody": true, "contentType": "binaryData", "sendHeaders": true, "authentication": "predefinedCredentialType", "headerParameters": { "parameters": [ { "name": "Content-Disposition", "value": "attachment; filename=\"example.jpg\"" } ] }, "inputDataFieldName": "data", "nodeCredentialType": "wordpressApi" }, "credentials": { "wordpressApi": { "id": "YMW8mGrekjfxKJUe", "name": "Wordpress account" } }, "typeVersion": 4.2 }, { "id": "e2cd720b-03e6-4cee-8901-a6a06e4bd1ec", "name": "Set image ID for the post", "type": "n8n-nodes-base.httpRequest", "position": [ 2780, 1080 ], "parameters": { "url": "=https://wp-demo.mondo.surf/wp-json/wp/v2/posts/{{ $('Post on Wordpress').first().json.id }}", "method": "POST", "options": {}, "sendQuery": true, "queryParameters": { "parameters": [ { "name": "featured_media", "value": "={{ $json.id }}" } ] } }, "typeVersion": 4.2 }, { "id": "daddda39-db6a-4266-b823-8ae9080ca1a8", "name": "Form1", "type": "n8n-nodes-base.form", "position": [ 3020, 1080 ], "webhookId": "a9bf2986-4c9d-4d89-b5bf-ef6e93130b60", "parameters": { "options": {}, "operation": "completion", "completionTitle": "Created Successfully!", "completionMessage": "=The article {{ $json.title.rendered }} was correctly created as a draft on WordPress!" }, "typeVersion": 1 } ], "pinData": {}, "connections": { "OpenAI": { "main": [ [ { "node": "Merge chapters title and text", "type": "main", "index": 0 } ] ] }, "Settings": { "main": [ [ { "node": "Create post title and structure", "type": "main", "index": 0 } ] ] }, "Split Out": { "main": [ [ { "node": "OpenAI", "type": "main", "index": 0 }, { "node": "Merge chapters title and text", "type": "main", "index": 1 } ] ] }, "Wikipedia": { "ai_tool": [ [ { "node": "Create post title and structure", "type": "ai_tool", "index": 0 } ] ] }, "Upload media": { "main": [ [ { "node": "Set image ID for the post", "type": "main", "index": 0 } ] ] }, "Post on Wordpress": { "main": [ [ { "node": "Generate featured image", "type": "main", "index": 0 } ] ] }, "Final article text": { "main": [ [ { "node": "Post on Wordpress", "type": "main", "index": 0 } ] ] }, "On form submission": { "main": [ [ { "node": "Settings", "type": "main", "index": 0 } ] ] }, "Check data consistency": { "main": [ [ { "node": "Split Out", "type": "main", "index": 0 } ], [ { "node": "Form", "type": "main", "index": 0 } ] ] }, "Generate featured image": { "main": [ [ { "node": "Upload media", "type": "main", "index": 0 } ] ] }, "Set image ID for the post": { "main": [ [ { "node": "Form1", "type": "main", "index": 0 } ] ] }, "Merge chapters title and text": { "main": [ [ { "node": "Final article text", "type": "main", "index": 0 } ] ] }, "Create post title and structure": { "main": [ [ { "node": "Check data consistency", "type": "main", "index": 0 } ] ] } } }