AI Automation

An AI content pipeline with human approval: Claude drafts, you click “Approve” in Slack, then it posts

TL;DR

n8n workflow: schedule → fetch sources (RSS, idea sheet) → Claude drafts in brand voice → Slack Send and Wait for Response (Approve/Decline) → post only on Approve. Never let AI publish to a public channel without a human in the loop.

Letting AI draft marketing copy, blog posts and social posts makes a lot of sense — it saves hours every week. Letting AI publish to public channels on its own does not. One inaccurate, off-brand or copyright-infringing post can do far more damage than a 30-second review would cost. This guide builds an n8n pipeline where Claude drafts, you click Approve right in Slack, and only then does anything get published.

The pipeline

Schedule (8 am, Mon–Fri)
  → Sources: RSS from selected blogs / a Google Sheet of post ideas
  → De-duplicate in code (skip anything already written)
  → Claude: draft + 3 title options + hashtags  (JSON output)
  → Slack: Send and Wait for Response  (Approve / Decline)
      ├─ Approve → publish (CMS / LinkedIn / Facebook) + log
      └─ Decline → save draft + reason to a Sheet to improve the prompt

Step 1: Collect sources and de-duplicate

  • Use the RSS Read node for new posts from blogs you follow, or Google Sheets for an idea list the team fills in.
  • Drop duplicates with a Code node or by matching against a “processed” sheet — far cheaper than letting the model notice.
  • Trim the input (title, summary, link only) to save tokens.

Step 2: Claude drafts — with structured output

Use the Anthropic node (or an AI Agent without tools) with a prompt containing three mandatory parts:

  1. Brand voice: a short description plus your 2–3 best posts as examples.
  2. Hard rules: never invent numbers; figures must come from the source; always cite source links; never copy other people’s content verbatim — rewrite in your own words.
  3. A JSON output format so later steps are reliable:
{
  "titles": ["...", "...", "..."],
  "body": "...",
  "hashtags": ["...", "..."],
  "sources": ["https://..."],
  "risk_notes": "points the reviewer should double-check"
}

Attach a Structured Output Parser so n8n validates it; the risk_notes field tells the reviewer where to look hardest.

Step 3: Approve in Slack

The Slack node’s Send and Wait for Response operation sends a message and pauses the workflow until someone responds. Reviewers click right in Slack, without opening n8n.

OptionUse
Response Type: ApprovalApprove / Decline buttons inside the message
Free Text / Custom FormOpens an n8n confirmation page so reviewers can comment or edit before publishing
Capture Who RespondedRecords who approved (audit) — output includes approved, respondedAt and responder details
Restrict Who Can ApproveOnly editors may approve; others get a not-authorised message
After DecisionRemove the buttons and show the outcome and decider, so nobody clicks twice

Configuration note: Approval with interactive buttons needs the Slack app’s Signing Secret, the users:read and users:read.email scopes, and a public HTTPS n8n instance.

Step 4: Publish and log

  • Approve branch: call the CMS / social API to publish (or schedule), then log date, title, approver and post link.
  • Decline branch: save the draft and reason to a Sheet. Review rejection reasons weekly to tune the prompt — the most important improvement loop.
  • Set a maximum wait: if nobody approves within 24 hours, remind or cancel — never auto-publish.

Why human approval is mandatory

RiskExample
InaccuracyA plausible-sounding figure that isn’t in the source
CopyrightWording too close to the original, unlicensed images
Wrong tone / timingA cheerful post on the day the company has an outage
Prompt injection from sourcesAn RSS item with hidden instructions that slip a strange link into the post

How to apply it

  • Developers: Build it with one RSS source and one Slack channel first; connect the publishing API only once the approval flow works reliably.
  • Marketing / content: Put your 2–3 best posts in the prompt — far more effective than describing your voice with adjectives.
  • PMs: Track two numbers: approval rate and time from draft to publish. A low approval rate means fix the prompt/sources — don’t remove the review step.

Sources & references

  1. Slack node: human-in-the-loop approvals — n8n Docs
  2. Email approval workflows in n8n: human-in-the-loop automation — Kirim.Email