Back to Blog
Automation

Steal This Workflow: An n8n Blueprint for Programmatic SEO Content Generation

The Workflow Finder
2026-08-25
7 min read
Steal This Workflow: An n8n Blueprint for Programmatic SEO Content Generation

The exact n8n nodes, prompt template, and JSON schema that turn a keyword list into review-ready SEO drafts on a schedule, plus where this breaks if you skip the human edit pass.

Most "AI automates your SEO content" posts describe the idea and skip the part where you'd actually build it. Here's the n8n workflow itself: the exact nodes, the exact prompt template, and the JSON schema the model has to return, plus where it breaks if you skip the review step.

What this workflow actually does

A scheduled n8n workflow reads pending keywords from a spreadsheet, generates a structured draft (title, meta description, outline, body) through an LLM node, writes the draft back for human review, and notifies you when it's ready. It does not auto-publish. That's a deliberate choice, not a missing feature: a model that's never seen your product, your customers, or last week's pricing change will confidently write something wrong, and the fix is a human reading it before it goes live, not a smarter prompt.

Inputs you need before you build this

  • An n8n instance, self-hosted (free) or n8n Cloud (plans start around €20/month). Self-hosting only matters here if you'd rather not route draft content through n8n's servers; for public blog topics that's rarely a real concern.
  • An API key for the model you'll use in the AI node. n8n's native AI nodes connect directly to OpenAI, Anthropic, and Google. This blueprint uses Claude, but the node swap is trivial.
  • A Google Sheet (or Airtable base) with at minimum: keyword, status (pending / drafted / published), and empty columns for title, meta_description, draft_body.
  • A place to get notified: Slack webhook or email, whichever you already check.

Map the logic: the six nodes, in order

  1. Schedule Trigger: runs daily, or however often you add new keywords.
  2. Google Sheets (Read Rows): pulls every row where status = pending.
  3. Loop Over Items: n8n's built-in batching node, so each keyword gets its own model call instead of one call asked to write five articles at once.
  4. AI Agent / Claude node: the actual generation step. This is the node that matters; see the exact prompt below.
  5. Code node: parses the model's JSON response, splits it into the columns your sheet expects, and catches malformed output before it hits your data.
  6. Google Sheets (Update Row) + Slack node: writes the draft back with status = needs review and pings you that it's ready.

That's the whole pipeline. No webhook to your CMS, no auto-publish step. The workflow's job ends at "ready for a human to read."

The exact prompt

This is the system prompt for the AI Agent node. The specificity matters more than the length. A vague "write an SEO article about {{keyword}}" prompt is where most of these workflows go wrong.

You are a content strategist writing a single blog post outline and draft for the keyword: "{{ $json.keyword }}".

Return ONLY valid JSON matching this exact schema, no commentary outside the JSON:

{
  "title": "string, under 60 characters, includes the target keyword naturally",
  "meta_description": "string, 140-155 characters, includes the keyword and a concrete benefit",
  "outline": ["array of 4-6 H2 section headers"],
  "draft_body": "string, markdown, 700-900 words, follows the outline exactly",
  "internal_link_suggestions": ["array of 2-3 topic phrases this post should link to, not URLs"]
}

Rules:
- Lead every section with the concrete answer, not a definition of the topic.
- No claims about specific tools' pricing, features, or integrations unless the fact is common knowledge you're highly confident about. Flag anything uncertain with [VERIFY] inline rather than stating it as fact.
- No filler phrases ("in today's fast-paced world", "it's important to note that").
- Write like a practitioner who has done this, not a marketer describing the idea of doing it.

The [VERIFY] instruction is the single highest-leverage line in that prompt. Models hallucinate specifics with total confidence: a wrong pricing figure or a discontinued feature reads exactly as authoritative as a correct one. Forcing the model to flag its own uncertainty turns an invisible failure mode into a visible, searchable one your reviewer can Ctrl+F for.

Where this breaks

  • Keyword cannibalization. If two rows in your sheet target near-identical keywords, you'll get two articles competing with each other. Dedupe keyword intent before rows ever reach pending, not after.
  • Voice drift. Every draft will sound competent and generic unless you push back. The fix isn't a better prompt, it's a standing rule: every draft this workflow produces gets a real edit pass before publishing, one that adds your own examples, your own opinion, and at least one sentence a competitor's AI couldn't write because it doesn't know what you know.
  • The [VERIFY] tags are a floor, not a guarantee. A model can still state something wrong with full confidence and no flag. Treat this workflow as a fast first draft generator, not a fact-checked one.

The verdict

n8n is the right tool for this specifically because the Code node lets you parse and validate the model's JSON output before it touches your spreadsheet. Zapier and Make can call the same AI APIs, but validating and reshaping structured JSON mid-workflow is where n8n's code-node flexibility earns its higher technical bar. If your team is comfortable with a config that requires some JavaScript, this blueprint saves the actual research-and-outline hour of writing a post; it does not save the editing hour, and it shouldn't.

Mentioned in This Post

Share this article

Related articles

Signal, no noise.

A weekly breakdown of the AI tools and workflows actually worth your time.