{"id":133779,"date":"2025-09-10T06:14:20","date_gmt":"2025-09-10T06:14:20","guid":{"rendered":"\/tutorials\/?p=133779"},"modified":"2026-03-10T09:26:01","modified_gmt":"2026-03-10T09:26:01","slug":"n8n-wordpress-node-create-post","status":"publish","type":"post","link":"\/ca\/tutorials\/n8n-wordpress-node-create-post","title":{"rendered":"How to use the n8n WordPress node to create posts with AI"},"content":{"rendered":"<?xml encoding=\"utf-8\" ?><p>n8n is a low-code platform that enables you to create automation workflows for various tasks by connecting various tools or applications, including WordPress. For example, n8n&rsquo;s Create Post node lets you generate and publish content as WordPress posts.<\/p><p>Integration between n8n and WordPress can also facilitate other content management tasks. For example, you can publish posts to multiple websites from a single source, or automatically translate articles for a multilingual site.<\/p><p>If you already have the platforms and credentials set up, you can automate a content creation task by integrating the Create Posts node into your n8n-WordPress workflow, which can be done in five steps:<\/p><ol class=\"wp-block-list\">\n<li>Generate the WordPress REST API credentials<\/li>\n\n\n\n<li>Plan the workflow arrangement and logic<\/li>\n\n\n\n<li>Configure the topic generation and routing nodes<\/li>\n\n\n\n<li>Add the content writer and WordPress post nodes<\/li>\n\n\n\n<li>Test and troubleshoot the complete workflow<\/li>\n<\/ol><p>Let&rsquo;s explore the steps to use the n8n WordPress node to create posts with AI automatically.<\/p><p>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-what-is-an-n8n-wordpress-node\"><strong>What is an n8n WordPress node?<\/strong><\/h2><p>The WordPress node in <a href=\"\/ca\/tutorials\/what-is-n8n\">n8n is<\/a> the main building block of your automation system. It lets you integrate the WordPress content management system (CMS) and run various pre-determined tasks without directly interacting with the platform.<\/p><p>Each node performs a specific action, like creating a post or assigning a role to a user. By chaining them, you can build a series of actions, otherwise known as a workflow, that complete a particular goal.<\/p><p>Here are examples of content-related <a href=\"\/ca\/tutorials\/what-can-you-automate-with-n8n\">tasks that you can automate with n8n<\/a> and WordPress:<\/p><ul class=\"wp-block-list\">\n<li><strong>Creating content<\/strong>. Combining an AI agent with WordPress creates an autonomous content creation workflow that writes and drafts posts on your website. <\/li>\n\n\n\n<li><strong>Publishing posts<\/strong>. You can automatically push content from <a href=\"\/ca\/tutorials\/notion-alternatives\">platforms, like Google Docs or Notion<\/a>, to WordPress without opening the post editor.<\/li>\n\n\n\n<li><strong>Distributing articles. <\/strong>n8n&rsquo;s integration with various social media and messaging platforms lets you automatically share new WordPress posts.<\/li>\n\n\n\n<li><strong>Alerting the team of new posts. <\/strong>Integrating platforms like Slack or Microsoft Teams with WordPress lets you notify your team of new posts.<\/li>\n\n\n\n<li><strong>Translating for locales<\/strong>. Using tools like DeepL and Google Translate, you can automatically translate and publish new WordPress posts to another locale. <\/li>\n\n\n\n<li><strong>Syncing multiple blogs<\/strong>.<strong> <\/strong>If you want to publish duplicate content to multiple blogs or websites, you can easily do it from a single entry point in n8n. <\/li>\n<\/ul><h2 class=\"wp-block-heading\" id=\"h-prerequisites-for-connecting-wordpress-to-n8n\"><strong>Prerequisites for connecting WordPress to n8n<\/strong><\/h2><p>Before <a href=\"\/ca\/tutorials\/how-to-integrate-n8n-with-wordpress\">creating an n8n workflow with WordPress<\/a>, you must meet certain prerequisites to ensure a smooth integration process.<\/p><p>Ensure you have <a href=\"\/ca\/tutorials\/how-to-install-n8n\">installed n8n<\/a> and deployed your WordPress website. While you can use n8n&rsquo;s official hosting plan, we highly recommend self-hosting it for better flexibility and data privacy.<\/p><p>You must also have created an account on each platform. WordPress requires an admin-level account to be able to configure the integration credentials.<\/p><p>Next, check if your WordPress website&rsquo;s REST API is reachable. To do this, open the following address in your web browser, with yoursite.com being your website&rsquo;s actual domain:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">yoursite.com\/wp-json<\/pre><p>If you see errors like <strong>403 forbidden<\/strong>, the API is inactive. In this case, <a href=\"https:\/\/jetpack.com\/resources\/wordpress-rest-api\/\" target=\"_blank\" rel=\"noreferrer noopener\">enable the WordPress REST API manually<\/a> and update the CMS to the latest version.<\/p><p>Since we&rsquo;ll write WordPress posts using AI, you need an API key from a large language model (LLM) provider. n8n supports different providers, but we&rsquo;ll use OpenAI&rsquo;s ChatGPT as it&rsquo;s the most popular and the easiest to set up.<\/p><p>To integrate ChatGPT, create an account on the <a href=\"https:\/\/platform.openai.com\/api-keys\" target=\"_blank\" rel=\"noreferrer noopener\">OpenAI portal API page<\/a> and generate an API key. Store the key in a safe location, as you&rsquo;ll need it later.<\/p><p>Now that you have all the prerequisites, let&rsquo;s dive into the steps.<\/p><h2 class=\"wp-block-heading\" id=\"h-how-to-set-up-a-wordpress-node-in-n8n-to-create-posts\"><strong>How to set up a WordPress node in n8n to create posts<\/strong><\/h2><p>Depending on what you want to automate, there are several possible ways to set up a WordPress node in n8n to create posts. For this tutorial, we&rsquo;ll create an autonomous system that writes a daily WordPress post based on a random topic.<\/p><h3 class=\"wp-block-heading\" id=\"h-1-generate-wordpress-rest-api-credentials\"><strong>1. Generate WordPress REST API credentials<\/strong><\/h3><p>An application password is a credential that authenticates other platforms to access your WordPress instance. It enables n8n to connect and exchange data with your WordPress instance securely.<\/p><p>Here&rsquo;s how to create an application password. Note that it&rsquo;ll only be valid for the account that generated it:<\/p><ol class=\"wp-block-list\">\n<li>Open your website&rsquo;s <strong>WordPress admin dashboard <\/strong>and navigate to the <strong>Sidebar <\/strong>&rarr; <strong>Users<\/strong> &rarr; <strong>Profile<\/strong>.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1f425c609f\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"662\" height=\"212\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/09\/the-profile-menu-on-wordpress-admin-sidebar.png\" alt=\"The Profile menu on WordPress' admin sidebar\" class=\"wp-image-133780\"  sizes=\"auto, (max-width: 662px) 100vw, 662px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"2\" class=\"wp-block-list\">\n<li>Scroll down to the <strong>Application Passwords<\/strong> section.<\/li>\n\n\n\n<li>Enter a name for your application password, preferably something descriptive like <strong>n8n-create-post<\/strong>.<\/li>\n\n\n\n<li>Hit <strong>Add Application Password<\/strong>.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1f425c8cdf\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"204\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/09\/application-password-menu-on-wordpress-with-a-name-entered-1024x204.png\" alt=\"The Application Password menu on WordPress with a name entered\" class=\"wp-image-133781\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"5\" class=\"wp-block-list\">\n<li>Copy the application password and store it in a safe location. <\/li>\n<\/ol><p><div><p class=\"important\"><strong>Important!<\/strong> After closing the profile page, you won&rsquo;t be able to reaccess your WordPress application password for security reasons. Make sure you have copied it before proceeding.<\/p><\/div>\n\n\n\n<\/p><p>We&rsquo;ll use this application password later when configuring the WordPress node. First, you&rsquo;ll need to create your workflow.<\/p><h3 class=\"wp-block-heading\" id=\"h-2-plan-your-workflow\"><strong>2. Plan your workflow<\/strong><\/h3><p>Developing a blueprint of your workflow helps you determine what nodes you need and their arrangement.<\/p><p>To set up a simple automation system that creates a WordPress post at a fixed schedule, the required nodes and the general workflow logic are:<\/p><ul class=\"wp-block-list\">\n<li>The <strong>Schedule trigger<\/strong> node starts the workflow in a specific interval. <\/li>\n\n\n\n<li><strong>OpenAI&rsquo;s Message a model<\/strong> node sends a predetermined prompt to the chosen LLM, generating a topic to write.<\/li>\n\n\n\n<li><strong>Google Sheets&rsquo; Get row <\/strong>node fetches a list of already-written topics. <\/li>\n\n\n\n<li>The <strong>If <\/strong>node checks whether the newly generated topic already exists in the list. If it does, this node requests <strong>OpenAI&rsquo;s Message a model<\/strong> node to develop another topic. <\/li>\n\n\n\n<li>Otherwise, the <strong>Google Sheets Append row <\/strong>node takes the new topic and puts it at the bottom of the list. It then forwards the topic to the second <strong>OpenAI&rsquo;s Message a model <\/strong>node.<\/li>\n\n\n\n<li>The <strong>OpenAI<\/strong> node creates the content and passes it to the <strong>WordPress Create post<\/strong> node to publish the writing. <\/li>\n<\/ul><p>After determining how the workflow functions, you can go on to create it in n8n. This is outlined node by node below to better explain the logic.<\/p><h3 class=\"wp-block-heading\" id=\"h-3-configure-the-topic-generation-and-filtering-nodes\"><strong>3. Configure the topic generation and filtering nodes<\/strong><\/h3><p>The goal of configuring the topic generation and filtering nodes is to ensure your workflow generates a unique theme for your content each time it runs.<\/p><p>Insert a trigger by clicking the <strong>+ <\/strong>icon on your n8n canvas and selecting <strong>Schedule trigger<\/strong>. Adjust the schedule based on your needs. For this tutorial, we&rsquo;ll make the workflow run daily at 8 AM.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1f425ca551\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"759\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/09\/the-schedule-trigger-configuration-window-for-n8n-wordpress-post-autmation-759x1024.png\" alt=\"The Schedule trigger's configuration window for n8n WordPress post automation\" class=\"wp-image-133782\"  sizes=\"auto, (max-width: 759px) 100vw, 759px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>Next, configure the OpenAI Message node that will generate a topic for your WordPress post:<\/p><ol class=\"wp-block-list\">\n<li>Click the <strong>+<\/strong> icon on n8n and add the <strong>OpenAI Message a model <\/strong>node.<\/li>\n\n\n\n<li>Expand the<strong> Credential to connect with <\/strong>and select <strong>Create new credential<\/strong>.<\/li>\n\n\n\n<li>Enter your <strong>OpenAI API key<\/strong> and hit <strong>Save<\/strong>. <\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1f425cbec3\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"585\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/09\/the-openai-n8n-node-credential-configuration-page-1024x585.png\" alt=\"The OpenAI n8n node credential configuration page\" class=\"wp-image-133783\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"4\" class=\"wp-block-list\">\n<li>Select your desired <strong>OpenAI model<\/strong>. <\/li>\n\n\n\n<li>Scroll down and enable the <strong>Output Content as JSON<\/strong> setting.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1f425cd478\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"258\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/09\/the-openai-node-output-content-as-json-setting-1024x258.png\" alt=\"The OpenAI node's Output content as JSON setting\" class=\"wp-image-133784\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"6\" class=\"wp-block-list\">\n<li>Add the prompt for generating a topic. The <strong>{{ $json.Topic }} <\/strong>expression will automatically change based on existing topics fetched from the sheet:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"atomic\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Generate a new topic for a blog post about tech. Only give the topic name and don't output anything else. It should be a short phrase. I already have the following topics, which should not be duplicated:  {{ $json.Topic }}<\/pre><p>Remember to adjust the prompt accordingly if you wish to write about other themes.<\/p><p>Next, connect the <strong>Google Sheets Get row <\/strong>node to fetch a list of previously written topics. Learn more about the steps by checking out our guide on <a href=\"\/ca\/tutorials\/how-to-integrate-n8n-to-google-sheets\">integrating n8n with Google Sheets<\/a>.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1f425ceb4a\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"833\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/09\/the-get-row-sheet-node-configuration-for-fetching-existing-topics-1024x833.png\" alt=\"The Get row sheet node's configuration for fetching existing topics\" class=\"wp-image-133785\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p><div><p class=\"important\"><strong>Important!<\/strong> Name the column in which you list all the topics as <strong>Topic<\/strong>. Otherwise, the expressions for forwarding the data between nodes will differ.<\/p><\/div>\n\n\n\n<\/p><p>Group the fetched topics into a single item so that the filtering rule reads them once each time and avoids double outputs. To do this, add the <strong>Aggregate <\/strong>node, then set the <strong>Aggregate<\/strong> setting to <strong>Individual Fields<\/strong> and <strong>Input Field Name<\/strong> to the row name of your topic list, namely <strong>Topic<\/strong>.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1f425d0487\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"665\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/09\/the-aggregate-node-configuration-for-grouping-wordpress-post-topics-1024x665.png\" alt=\"The Aggregate node configuration for grouping WordPress post topics\" class=\"wp-image-133786\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>Add the<strong> If<\/strong> node to set the filtering rule: If the newly generated topic matches any entry of the aggregated list, it returns <strong>true<\/strong>. Do this by opening the <strong>If<\/strong> node configuration menu and adding the following to the<strong> Value1<\/strong> field:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{{ $json.Title }}<\/pre><p>Set the condition as <strong>String<\/strong> &rarr; <strong>Contains<\/strong>. Then, enter the following into the <strong>Value2<\/strong> field:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{{ $('Generate a topic').item.json.message.content.topic }}<\/pre><p>Remember to connect all the nodes. Once finished, your workflow will look like this:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1f425d1dc5\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"224\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/09\/the-finished-n8n-workflow-for-generating-wordpress-post-topics-1024x224.png\" alt=\"The finished n8n workflow for generating WordPress post topics\" class=\"wp-image-133787\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>At this point, your workflow should be able to generate a topic and distinguish whether it&rsquo;s already been written. You&rsquo;ll then need to automate the processing of this topic into a WordPress post.<\/p><h3 class=\"wp-block-heading\" id=\"h-4-add-the-content-writer-and-wordpress-post-nodes\"><strong>4. Add the content writer and WordPress post nodes<\/strong><\/h3><p>To complete the workflow, you&rsquo;ll then need to set up the nodes that will <a href=\"\/ca\/tutorials\/how-to-use-n8n-to-generate-content\">automate the content writing process in n8n<\/a>.<\/p><p>Split the workflow into two scenarios using the <strong>If<\/strong> filter. For the <strong>true <\/strong>condition, simply connect it back to OpenAI&rsquo;s topic generator node when the generated topic already exists.<\/p><p>For the <strong>false <\/strong>condition, direct the workflow to create the WordPress post. Add the <strong>Google Sheets Append row <\/strong>node to log new topics on your list. Make sure you select the same document and sheet as specified in the <strong>Get row<\/strong> node.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1f425d3cb0\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"198\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/09\/the-wordpress-post-automation-workflow-routing-1024x198.png\" alt=\"The WordPress post automation workflow's routing\" class=\"wp-image-133788\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>Then, connect and configure another <strong>OpenAI Message a model<\/strong> node. Repeat the same configuration as the previous one, but use the following prompt instead.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"atomic\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Create a short 1000-word WordPress blog post on the following topic:  {{ $json.Title }}.<\/pre><p>Expand the prompt if you wish to instruct the AI content writer to follow your style guide.<\/p><p><div><p class=\"important\"><strong>Important!<\/strong> Remember to convert the OpenAI node output into JSON by toggling the <strong>Output Content as JSON<\/strong> setting.<\/p><\/div>\n\n\n\n<\/p><p>Finally, insert the <strong>WordPress<\/strong> <strong>Create a post <\/strong>node and follow these steps to configure it:<\/p><ol class=\"wp-block-list\">\n<li>Expand the <strong>Credential to connect with <\/strong>and click <strong>Create new credential<\/strong>.<\/li>\n\n\n\n<li>Add the <strong>WordPress admin username<\/strong>.<\/li>\n\n\n\n<li>Enter the <strong>Application password<\/strong> associated with the username. <\/li>\n\n\n\n<li>Include your WordPress website URL. It has to start with <strong>https:\/\/<\/strong>.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1f425d5632\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"587\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/09\/the-wordpress-node-credential-configuration-menu-1024x587.png\" alt=\"The WordPress node credential configuration menu\" class=\"wp-image-133789\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"5\" class=\"wp-block-list\">\n<li>In the <strong>Title<\/strong> field, enter the following to fetch the post title of your content:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{{ $json.message.content.title }}<\/pre><ol start=\"6\" class=\"wp-block-list\">\n<li>Click <strong>Add Field<\/strong> and enter this expression to fetch the generated content:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{{ $json.message.content.content }}<\/pre><p>That&rsquo;s it! Your workflow is now complete and should look like the example below. The last step is to check its functionality and troubleshoot errors.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1f425d6c75\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"197\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/09\/the-completed-automated-wordpress-post-creation-workflow-in-n8n-1024x197.png\" alt=\"The completed automated WordPress post creation workflow in n8n\" class=\"wp-image-133790\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><h3 class=\"wp-block-heading\" id=\"h-5-test-and-troubleshoot-the-complete-workflow\"><strong>5. Test and troubleshoot the complete workflow<\/strong><\/h3><p>The last step in developing your n8n and WordPress automation is to test it &ndash; simply hit the <strong>Execute Workflow<\/strong> button at the bottom to do so.<\/p><p>If your workflow runs as intended, it will turn green and show a checkmark. Your sheet will also be updated with the new topic, and a new post draft will appear on your WordPress dashboard.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1f425d8447\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"177\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/09\/n8n-workflow-for-an-automated-post-creation-in-wordpress-1024x177.png\" alt=\"n8n workflow for an automated post creation in WordPress\" class=\"wp-image-133791\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>If there is an error in your workflow, the node with the issue will show a red warning sign. Causes of this error &ndash; and their solutions &ndash; may be:<\/p><ul class=\"wp-block-list\">\n<li><strong>Invalid credentials. <\/strong>Using the wrong credentials prevents n8n from connecting to other applications and using their services. Check the node&rsquo;s credential setting to see if the entered information is correct, and make sure your WordPress admin user details haven&rsquo;t been changed. <\/li>\n\n\n\n<li><strong>Data mapping issue<\/strong>. An expression that selects incorrect or missing data can cause a workflow error. Check each node&rsquo;s input and output panes to verify that the correct data is being passed.<\/li>\n\n\n\n<li><strong>Insufficient permission<\/strong>. If the WordPress user connected to n8n doesn&rsquo;t have the admin permission, it won&rsquo;t have the permission to create a post on your website. Make sure to select an account with the correct role. <\/li>\n<\/ul><p>If you encounter multiple errors, we recommend debugging in a chronological order to identify where the issue starts more easily. Start with the node closest to the trigger and work your way through the workflow.<\/p><p>After verifying that your workflow works correctly, click the toggle at the top of your n8n canvas to activate it.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1f425d9a30\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"144\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/09\/the-activation-toggle-of-an-n8n-workflow-1024x144.png\" alt=\"The activation toggle of an n8n workflow\" class=\"wp-image-133792\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><h2 class=\"wp-block-heading\" id=\"h-choose-the-right-hosting-for-your-wordpress-and-n8n-automation\"><strong>Choose the right hosting for your WordPress and n8n automation<\/strong><\/h2><p>When self-hosting a WordPress-n8n integration, choosing a reliable provider is crucial to maintain stable API communication, avoid downtime, and ensure sufficient computing resources.<\/p><p>Offering robust performance and comprehensive features, Hostinger is an excellent option for self-hosting your WordPress and n8n automation.<\/p><p>Our <a href=\"\/ca\/wordpress-hosting\">managed WordPress hosting solution<\/a> comes with a free domain and SSL certificate so you can get your website up quickly. It also integrates with various developer tools like Git, WP-CLI, and n8n.<\/p><?xml encoding=\"utf-8\" ?><figure class=\"wp-block-image size-large\"><a class=\"hgr-tutorials-cta hgr-tutorials-cta-wordpress-hosting\" href=\"\/ca\/wordpress-hosting\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2024\/06\/New-WP_in-text-banner-1024x300.png\" alt=\"\" class=\"wp-image-111781\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><p>Meanwhile, our <a href=\"\/ca\/self-hosted-n8n\">self-hosted n8n solution<\/a> provides a one-click installer template that lets you install n8n easily without typing commands. Simply select it during the onboarding process, and it will be ready to integrate with your WordPress website in just a few minutes.<\/p><p>Both our WordPress and n8n hosting plans come with essential security features like automatic backups and a built-in firewall. Moreover, our <strong>99.9%<\/strong> uptime guarantee ensures optimal automation availability.<\/p><h2 class=\"wp-block-heading\" id=\"h-other-ways-to-automate-wordpress-posts\"><strong>Other ways to automate WordPress posts<\/strong><\/h2><p>There are other ways to automate content production in WordPress. For example, you can use an <a href=\"\/ca\/tutorials\/best-ai-automation-tools\">alternative automation platform<\/a> like Zapier instead of n8n.<\/p><p>Or, if you are into the latest trend, you can use OpenClaw. Simply <a href=\"\/ca\/tutorials\/how-to-set-up-openclaw-for-wordpress\">connect OpenClaw to the WordPress<\/a> website using REST API, and you can interact with the AI agent to generate a post or even create an automation just by prompting.<\/p><p>Several WordPress plugins can also automatically generate content for you. For example, you can ask <strong>Hostinger&rsquo;s AI WordPress plugin<\/strong> to brainstorm topics and write the content for your WordPress post directly from the admin area. <strong>Kodee<\/strong>, our AI assistant, lets you use the <a href=\"\/ca\/tutorials\/wordpress-mcp-integration\">model context protocol (MCP) in your WordPress<\/a> instance. This means you can ask it to manage your posts and create new ones.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>n8n is a low-code platform that enables you to create automation workflows for various tasks by connecting various tools or applications, including WordPress. For example, n8n&rsquo;s Create Post node lets you generate and publish content as WordPress posts. Integration between n8n and WordPress can also facilitate other content management tasks. For example, you can publish [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/ca\/tutorials\/n8n-wordpress-node-create-post\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":337,"featured_media":142739,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"How to use n8n WordPress note to create posts","rank_math_description":"How to use the n8n WordPress node to create posts with AI: 1. Generate the WordPress REST API credentials; 2. Plan your workflow + more.","rank_math_focus_keyword":"n8n wordpress node create post","footnotes":""},"categories":[22699],"tags":[],"class_list":["post-133779","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/n8n-wordpress-node-create-post","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/n8n-wordpress-node-create-post\/","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/n8n-wordpress-node-create-post\/","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/n8n-wordpress-node-create-post\/","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/n8n-wordpress-node-create-post\/","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/n8n-wordpress-node-create-post\/","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/n8n-wordpress-node-create-post\/","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/n8n-wordpress-node-create-post","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/posts\/133779","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/users\/337"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/comments?post=133779"}],"version-history":[{"count":9,"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/posts\/133779\/revisions"}],"predecessor-version":[{"id":142738,"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/posts\/133779\/revisions\/142738"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/media\/142739"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/media?parent=133779"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/categories?post=133779"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/tags?post=133779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}