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.
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
draftstatus, 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 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
| Node | Purpose |
|---|---|
| Google Sheets | Holds the topic queue and the brand-voice examples |
| OpenAI | Drafts the post and structures the output |
| Code | Parses the AI blob into title, body, and tags |
| Wait / Send Email | The human approval gate |
| WordPress | Publishes the approved draft |
| Slack | Surfaces parse failures and rejections |
Getting started
- Set up a Google Sheet with
topic,keyword, andstatuscolumns. - Add an OpenAI node and seed it with two or three real excerpts of your writing.
- Tell the model to return JSON with
title,body,excerpt, andtags. - Insert a Code node that parses that JSON into fields, wrapped in a try/catch.
- Add the email approval wait node pointed at your editor's inbox.
- Connect the WordPress node, set status to
draft, and run one topic end-to-end. - Add the Sheets log so every post records its approver and URL.
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.
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 →Common questions
How do I generate blog posts automatically with n8n?
Why does my n8n WordPress node fail after the AI step?
Can I add human approval before n8n publishes a post?
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.
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
More automation guides

How to Automate RSS to Social Media with n8n (No Paid Relay)
Most RSS-to-social tutorials end the same way: they wire your feed into a paid relay like PostPulse, GetLate, or Blotato, charge a monthly fee on top of whatever you already pay OpenAI, and call it au…

n8n Social Media Scheduling From a Content Queue in Google Sheets
The social scheduling demos all look the same: connect Buffer, send a post, done. They skip the part that makes scheduling actually useful. That's a content queue you fill once and a workflow that pic…

n8n Newsletter Automation: Segment, Send, and Survive Rate Limits
The newsletter templates that rank send one email to one inbox and stop. That's a demo. A real newsletter goes to a list of hundreds, which is where the interesting problems live: segmentation, unsubs…