Building an AI Content Pipeline with Claude and n8n
7 March 2026 · 7 min read
I publish over 20 pieces of content a week across LinkedIn, my newsletter, and this blog. If I wrote every piece manually, content would be my full-time job. It's not — I'm a technology consultant. Content is how I build in public and share what I'm learning, but it can't eat my entire schedule.
So I built an AI content pipeline using Claude Opus 4.6 and n8n that handles the heavy lifting — research, first drafts, reformatting, and scheduling. I still write the final versions and add my own perspective, but the pipeline compresses what used to take 15+ hours a week into about 4.
This post walks through the entire build. Not the theory — the actual n8n workflows, the Claude prompts, and the decisions I made along the way.
Why Claude + n8n (and Not Something Else)
I tested several combinations before landing on this stack:
- ChatGPT + Zapier — Zapier's AI actions are convenient but limiting. The moment you need branching logic or want to chain multiple AI calls with context passing, you hit walls. Pricing adds up fast at volume.
- Claude + Make — Make is powerful but the visual builder gets unwieldy for complex workflows. Debugging is harder than it needs to be.
- Claude + n8n — n8n is self-hosted (I run it on a small VPS), so I'm not paying per execution. The HTTP Request node gives me full control over the Claude API. And crucially, n8n handles branching, error handling, and webhook triggers natively.
The deciding factor was cost. At 20+ pieces of content per week, Zapier and Make pricing became unsustainable. n8n's self-hosted model means my only variable cost is Claude API usage — which runs about $30-40/month for my volume.
The Pipeline Architecture
Here's what the end-to-end flow looks like:
`
Trigger (Schedule/Webhook)
↓
Research Agent (Claude → web search → summarise)
↓
Content Brief Generator (Claude → structured outline)
↓
Draft Writer (Claude → long-form draft with voice guidelines)
↓
Reformatter (Claude → LinkedIn post + newsletter intro + blog excerpt)
↓
Review Queue (Notion database → manual approval)
↓
Scheduler (n8n → LinkedIn API + Beehiiv API + CMS)
`
Seven stages. Five of them are automated. Two require my input — writing voice guidelines into the brief, and approving final drafts before they publish. I never want to fully automate publishing. My name is on everything, so I review everything.
Stage 1: Research Agent
The first node is a scheduled trigger — it fires every Monday morning. The research agent's job is to find what's worth writing about this week.
Here's the core logic:
- n8n HTTP Request node calls the Claude API with a system prompt that acts as my research analyst
- The prompt includes my content pillars (AI tools, automation, consulting, productivity) and instructs Claude to identify 5-7 trending topics from the past week
- Claude's response comes back as structured JSON — topic, angle, target audience, estimated search interest
- A Function node in n8n filters and ranks the topics against my existing content calendar (pulled from Notion via API) to avoid duplication
The system prompt matters enormously here. I spent a full weekend iterating on it. The version that works includes specific instructions like: "Prioritise topics where I can share first-hand experience building or using the tool. Deprioritise pure news commentary where I have no unique angle."
That single instruction eliminated 80% of the generic topic suggestions Claude was generating initially.
Stage 2: Content Brief Generator
For each approved topic, a second Claude call generates a structured content brief:
`json
{
"title": "...",
"target_keyword": "...",
"hook": "...",
"outline": ["H2: ...", "H2: ...", "H2: ..."],
"key_points": ["...", "..."],
"cta": "newsletter | template",
"estimated_word_count": 800,
"internal_link_opportunities": ["...", "..."]
}
`
I built the brief format to match my SEO content requirements — target keyword, heading structure, CTA mapping, and internal linking. This means every piece of content coming through the pipeline is SEO-ready by design, not as an afterthought.
The brief goes into a Notion database where I can review and edit it before the draft stage fires. This is my first manual checkpoint.
Stage 3: Draft Writer
Once I approve a brief (by toggling a checkbox in Notion), an n8n webhook triggers the draft writer.
This is the most complex Claude call in the pipeline. The system prompt includes:
- My voice guidelines (direct, practical, first-person, problem-first framing)
- The approved content brief
- Three examples of my previous writing (pulled from Notion) so Claude can match my tone
- Explicit instructions: "Write as if explaining to a smart colleague. No corporate jargon. No filler paragraphs. Every section must contain a specific insight, example, or action step."
The output is a complete first draft in markdown. It's not publish-ready — I always rewrite the opening paragraph, add personal anecdotes Claude can't know about, and sharpen any sections that feel generic. But it gets me 70-80% of the way there, which is the whole point.
Stage 4: Reformatter
This is where one piece of content becomes several. A single Claude call takes the approved blog draft and produces:
- A LinkedIn post (hook + insight + CTA, under 1,300 characters)
- A newsletter intro (3-4 paragraphs that tease the full post)
- A blog excerpt (under 160 characters, keyword-optimised for SEO)
I tried having separate Claude calls for each format. It produced inconsistent messaging. A single call with all three outputs in one structured response keeps the core message aligned across channels.
Stage 5: Review Queue + Publishing
Drafts land in a Notion database with status "Ready for Review". I go through them in batches — usually twice a week, Tuesday and Thursday mornings. I edit, approve, and toggle "Ready to Publish".
n8n watches for that status change via a Notion webhook and triggers the publishing flow:
- LinkedIn — via LinkedIn's API (OAuth2, the
ugcPostsendpoint). n8n handles the auth token refresh automatically. - Newsletter — via Beehiiv's API. The newsletter intro goes out as the email body with a link to the full blog post.
- Blog — the markdown gets pushed to my Sanity CMS via their content API, scheduled for the next available publish slot.
What I Got Wrong (and Fixed)
First mistake: no voice examples in the draft prompt. The early drafts sounded nothing like me — polished but generic. Adding three of my own posts as reference examples in the system prompt fixed this almost completely.
Second mistake: trying to automate topic selection. I initially let the pipeline run fully autonomous — research, brief, draft, publish. The topics it selected were safe and generic. Now I review and approve topics manually before any drafting happens. The 10 minutes I spend on Monday morning picking topics saves hours of editing bad drafts later.
Third mistake: one output per Claude call. Having separate API calls for LinkedIn, newsletter, and blog excerpt meant the messaging drifted across formats. Consolidating into a single reformatter call with structured output fixed consistency.
The Numbers
After running this pipeline for 6 weeks:
Metric: Content pieces per week | Before Pipeline: 5-8 | After Pipeline: 20+
Metric: Hours spent on content | Before Pipeline: 15+ | After Pipeline: ~4
Metric: Claude API cost | Before Pipeline: — | After Pipeline: ~$35/month
Metric: n8n hosting | Before Pipeline: — | After Pipeline: $5/month VPS
Metric: Content consistency | Before Pipeline: Variable | After Pipeline: Consistent (same voice, same structure)
The biggest win isn't the time saving — it's the consistency. Every piece follows the same structure, targets a keyword, includes a CTA, and links back to existing content. That compounds over time in ways that ad-hoc content creation never does.
Should You Build This?
This pipeline makes sense if you're publishing at volume and your content follows a repeatable structure. If you write one blog post a month, this is overkill.
It also requires comfort with n8n (or a similar automation tool) and the Claude API. I'm an automation engineer, so this was a natural build for me. If API calls and webhook configs aren't your thing, a simpler setup — like Claude in a writing app with manual posting — might serve you better.
For anyone who does want to build it: the total setup took me about 12 hours across a weekend. The ROI hit positive within the first week.
I'm considering open-sourcing the n8n workflow templates. If that's something you'd use, let me know — subscribe to the newsletter and reply to the welcome email.
Shea Campbell is a technology consultant and AI engineer who builds intelligent automation for real workflows. [Subscribe to Ops & Insights](/newsletter) for practical AI tutorials and automation builds every week.
Enjoyed this? Get more like it.
A fortnightly filter of AI and automation news that actually matters for practitioners. No hype, no fluff.