Skip to main content
Lifetime license included with every purchase
n8n workflowsblog automationAI contentcontent automation

How to Automate Blog Content Generation with n8n and AI

Build an n8n blog content generation workflow that drafts posts with AI, parses the output, and routes through email approval before WordPress publishes.

Nn8n Marketplace Team·June 23, 2026·Updated June 23, 2026·7 min read

The internet has enough auto-published AI slop. The workflows behind most of it look identical: a topic goes into OpenAI, the raw response goes straight into a WordPress node, and whatever the model returned is now live with nobody having read it. n8n blog content generation done well does the opposite. It treats the AI draft as a draft, parses it into real fields, and makes a human click "approve" before anything publishes.

Two things break the naive version. The model returns one blob of text while the publish node expects structured fields, so the post lands malformed or empty. And with no approval gate, a hallucinated claim or an off-brand paragraph goes public before anyone sees it.

This is the build that fixes both: AI draft, parse step, email approval, then publish.

What you can automate in a content pipeline

A content workflow is more than "write a post." Once n8n holds the topic and the draft, you can wire in the steps a real editorial process needs:

  • Pull queued topics from a Google Sheet, one draft per run
  • Seed the model with brand-voice examples so output matches your tone
  • Parse the AI response into title, body, excerpt, and slug fields
  • Generate a meta description and tags in the same call
  • Route the draft to an editor's inbox with approve and reject links
  • Publish approved drafts to WordPress as draft status, not live, for a final human pass
  • Log every generated post, its status, and its approver to a sheet

The list is tempting to automate end-to-end with no human in it. Resist that. The approval gate is the feature, not the friction.

The content-generation pipeline

Topic Trigger → OpenAI draft → Code parse → Email approval
       → WordPress publish (draft) → Log to Sheet

Topic in. Draft from the model. Parse the blob into fields. Wait for a human. Publish only on approval.

1. Collect the topic

A Google Sheets row or a form submission is the cleanest trigger. One row holds the topic, the target keyword, and an optional angle. Read it, and the rest of the pipeline has structured input instead of a vague prompt.

2. Draft with brand voice

Send the topic to an OpenAI node. The honest way to get brand voice isn't a magic instruction; it's example seeding. Paste two or three short excerpts of your actual published writing into the system prompt and ask the model to match their rhythm and vocabulary. That works far better than "write in a professional yet friendly tone," which produces the same beige prose for everyone.

Ask the model to return structured output: a JSON object with title, body, excerpt, and tags. You'll need those fields separated anyway, so ask for them separated.

3. Parse the output (the step everyone skips)

This is where most pipelines silently break. The OpenAI node hands you text. The WordPress node wants discrete fields. Between them goes a Code node that parses the model's JSON into $json.title, $json.body, and so on.

Add this node every single time, even when it feels redundant. The failure mode is sneaky: a missing parse step doesn't throw a loud error, it posts an empty or mangled article. The execution log makes a broken parse obvious after the fact; the live post makes it embarrassing.

The model returns text, the publish node wants fields

The single most common reason an n8n content workflow ships a broken post is a missing parse step. n8n-nodes-base.openAi returns a text string; the WordPress node expects a structured title and body. Put a Code node between them that reads the model's JSON and maps it to fields. If the model sometimes returns prose instead of valid JSON, wrap the parse in a try/catch and route failures to a Slack alert instead of to WordPress.

4. The approval gate

Insert an approval step. n8n's email-based wait node sends the parsed draft to an editor with approve and reject links and pauses the execution until someone clicks. Approved drafts continue. Rejected ones route to a "needs work" sheet with the editor's note.

This single node is what separates a content workflow you'd run on your own site from a content farm you'd be ashamed of.

5. Publish and log

On approval, the WordPress node creates the post. Set its status to draft rather than publish for one more human pass in the CMS itself. Then append a row to your tracking sheet: topic, title, approver, timestamp, and the post URL.

Implementation patterns worth copying

Pattern: JSON-mode parse with a fallback

Ask the model for JSON and use the response-format option where the node supports it. But models occasionally ignore it and return prose. Wrap the Code node parse in a try/catch: valid JSON publishes, invalid JSON pings Slack so a person fixes the prompt instead of the workflow shipping garbage.

Pattern: brand-voice example library

Keep your voice examples in a Google Sheet, not hardcoded in the node. When your tone shifts, you edit a sheet instead of every workflow. The Content Scheduler & Distributor reads its inputs from a Sheet for exactly this reason, so the writing changes without touching node config.

Pattern: multi-output from one draft

One topic can produce the blog post plus its social captions in a single run. Reuse the parsed body, send it to a second OpenAI call for short-form variants, and route those to your posting workflow. That's the repurposing pattern, and the Social Media Scheduler & Designer handles the caption-plus-graphic side of it.

n8n nodes you'll use most

NodePurpose
Google SheetsHolds the topic queue and the brand-voice examples
OpenAIDrafts the post and structures the output
CodeParses the AI blob into title, body, and tags
Wait / Send EmailThe human approval gate
WordPressPublishes the approved draft
SlackSurfaces parse failures and rejections

Getting started

  1. Set up a Google Sheet with topic, keyword, and status columns.
  2. Add an OpenAI node and seed it with two or three real excerpts of your writing.
  3. Tell the model to return JSON with title, body, excerpt, and tags.
  4. Insert a Code node that parses that JSON into fields, wrapped in a try/catch.
  5. Add the email approval wait node pointed at your editor's inbox.
  6. Connect the WordPress node, set status to draft, and run one topic end-to-end.
  7. Add the Sheets log so every post records its approver and URL.
Browse content automation templates
Skip the build

The Content Scheduler & Distributor ships this end-to-end: it reads a content queue from Google Sheets, generates optimized copy with OpenAI, and routes each item out with the parse step already wired so the publish node never receives a raw blob. It's part of The Complete n8n Templates Bundle, a one-time lifetime license to the whole catalog plus every template added later, worth it once you run more than one content automation.

Get the Content Scheduler & Distributor

For the broader picture, automate content creation with n8n covers the end-to-end editorial workflow, and n8n OpenAI workflows digs into the output-path and JSON-mode details that make the parse step reliable. Once your drafts are publishing cleanly, the Social Media Scheduler & Designer turns each one into ready-to-post social content.

Compare AI content templates
FAQ

Common questions

How do I generate blog posts automatically with n8n?
Trigger on a topic from a Google Sheet or form, send it to an OpenAI node with a brand-voice prompt, parse the response into title/body/excerpt fields with a Code node, route it through an email approval gate, then publish to WordPress.
Why does my n8n WordPress node fail after the AI step?
The model returns one text blob, but the WordPress node expects separate title, content, and excerpt fields. Add a Code node between them to parse the AI output into those fields. Skipping this parse step is the most common failure.
Can I add human approval before n8n publishes a post?
Yes. Insert an n8n approval step (email with approve/reject links, or a Slack message) between the AI draft and the WordPress publish node so a person signs off before anything goes live.
Stop reading. Start running.

Get the workflow templates this guide is built on

Import-ready n8n JSON, step-by-step setup, and tested end-to-end. One-time payment, own it forever.

Free — $40 value

Get 3 tested n8n templates, free

The full customer package for three real catalog templates — workflow JSON, step-by-step setup guide, credential checklist. Test-run on a live n8n instance like everything we sell. Plus new templates and automation guides in your inbox. No spam, unsubscribe anytime.

  • 01Smart To-Do List ManagerPre-built n8n workflow template that automates productivity with OpenAI. Live in about 10 minutes.$14
  • 02Email Follow-Up AutomatorPre-built n8n workflow template that automates crm with OpenAI. Live in about 15 minutes.$12
  • 03Market Trend AnalyzerPre-built n8n workflow template that automates data processing with OpenAI. Live in about 10 minutes.$14