All Posts

How to Build a Content Engine with Claude Code and MCP (2026)

Terminal showing a Claude Code content engine workflow

Photo by Ferenc Almasi on Unsplash

Updated May 2026.

Most "AI content engines" are duct tape. You prompt ChatGPT, copy the draft into Google Docs, run it through Grammarly, paste into Surfer for keyword polish, log into WordPress, fix the formatting, paste in a meta description, click publish, then refresh Google Search Console for a week hoping it indexed. Each handoff drops context. Each tab drops twelve minutes. By the third post, the workflow has already broken.

A Claude Code content engine fixes that. You wire Claude Code (Anthropic's terminal-native agent) to your data sources and publishing layer through the Model Context Protocol. The same model researches, drafts, scores against SEO and AEO rules, publishes the post to your domain, watches Google index it, and refreshes it ninety days later. No copy-paste. No tab graveyard.

A Claude Code content engine is a recurring publishing system that uses Claude Code (Anthropic's CLI agent) plus Model Context Protocol servers to research, draft, SEO-score, publish, and refresh blog content end-to-end from one terminal session. It eliminates the copy-paste loop between AI tools and your CMS.

This guide covers the 6-stage loop, the minimum MCP stack, a copyable CLAUDE.md config, three mistakes that quietly kill these engines, and the numbers a single operator can hit in ninety days. Everything below assumes you already use Claude Code or are comfortable installing it. If you write blogs by hand and you ship more than two a month, the math will hurt to read.

What a Claude Code content engine actually is

A Claude Code content engine is three things stacked together: a CLI agent, a protocol, and a publishing target.

Claude Code is Anthropic's terminal-native coding agent. It reads your codebase, runs commands, edits files, opens browsers, tests its own output, and asks for permission on anything destructive. It is not a chat window with a code interpreter glued on. It owns the shell.

Model Context Protocol (MCP) is the open standard Anthropic released in November 2024 to connect AI agents to external systems. Think of it as a USB-C port for AI. MCP hit 97 million monthly SDK downloads and 5,800+ public servers by April 2026, a 970x increase in eighteen months, and 78% of enterprise AI teams now report at least one MCP-backed agent in production. OpenAI, Google, Microsoft, AWS, and Cloudflare all ship MCP support. The protocol is now governed by the Linux Foundation's Agentic AI Foundation.

The publishing target is whatever serves your blog at yourdomain.com/blog. For a content engine to be real, the agent has to write content that ends up live on your own subdirectory. Posts that live on someplatform.com/yourname do not build domain authority for the domain you actually care about.

Put those three together and the engine looks like this: Claude Code opens a terminal session, calls MCP tools to research a keyword, drafts the post inside a project that already knows your brand voice, scores the draft against SEO and AEO rules, publishes to your domain, and reports back when Google indexes it. One operator. One session. One post live.

Why the copy-paste content stack collapses in 2026

The traditional content workflow assumes a stable Google SERP and patient readers. Neither exists anymore.

The numbers are blunt. Click-through rate on AI Overviews bottomed out at 1.3% in December 2025 before recovering to 2.4% by February 2026, according to a Search Engine Land analysis of clickstream data. Position-one CTR drops 58% when an AI Overview appears above the blue links. Brands cited inside an AI Overview earn roughly 120% more organic clicks per impression than uncited brands on the same query, so the cost of not being cited is no longer "less traffic" — it is "no traffic."

Content freshness has gotten brutal too. An AirOps study of 548,534 pages across 15,000 prompts found ChatGPT cites only 15% of pages it retrieves. Of the pages it does cite, 76.4% were updated in the last thirty days, and 50% are less than thirteen weeks old. Pages that pass the one-year mark drop out of generative engine citation pools almost entirely.

And the volume bar keeps rising. AI-assisted teams now publish a median of 17 articles per month versus 12 without AI — a 42% increase. 94% of marketers use AI for content, 88% use it daily, and the share who do not use AI for blog creation collapsed from 65% to 5% in two years.

A workflow that takes four to nine hours per post cannot keep up with a freshness window measured in weeks. The math forces consolidation, and a Claude Code content engine is what consolidation looks like for a solo operator.

The 6-Stage Content Loop

Every working content engine follows the same loop. The labels change. The order does not.

Table

Stage

Goal

Claude Code does

MCP server type

1. Research

Find a winnable topic

SERP scrape, PAA harvest, GSC query mining

Search, GSC, scraper

2. Draft

Produce a publish-ready post

Long-form generation with project context

Filesystem, knowledge base

3. Score

Pass an SEO + AEO bar

Pull patches, apply fixes

SEO scoring (Quillly)

4. Publish

Ship to your own domain

Hit publish, fire sitemap

Publishing (Quillly), CMS

5. Monitor

Detect index + citation

Watch GSC, AI Overview crawls

GSC, AI tracking

6. Refresh

Update before decay

Patch stats, headings, intro

SEO scoring, publishing

The loop is the framework. Call it the 6-Stage Content Loop when you teach it to your team. The names matter because most "AI blog tool" pitches collapse stages 2, 3, and 4 into "generation" and quietly skip 5 and 6. Skipping monitoring means you cannot tell if you ranked. Skipping refresh means everything you ship has a 90-day half-life.

The rest of this guide walks each stage in order. Each one has a concrete tool, a concrete output, and a concrete failure mode.

Stage 1: Research with MCP-connected sources

Research is the stage where most AI workflows already win and most operators throw away the win by switching tools.

In a Claude Code session, you do not open ten browser tabs to read the top SERPs. You connect MCP servers that fetch them and let Claude Code read the markdown in-place. The minimum research stack is:

  • A search MCP (Exa, Brave Search, or Tavily) for SERP and news lookups.

  • A fetch MCP (Firecrawl or Fetch) to convert any URL into clean markdown.

  • A GSC MCP (or the Quillly get_gsc_top_queries tool) for queries you already semi-rank for.

  • A filesystem MCP so prior posts and notes are readable.

Once those are connected, the research prompt becomes one line: "Research the top ten ranking pages for claude code content engine, list every H2, every statistic, and every entity. Pull my top-impression GSC queries that touch this topic. Identify the angle the top pages all miss."

The output is a research brief with primary keyword, secondary keywords, search intent, ten H2 candidates, a list of stats with source URLs, and a "missing angle" note. Same brief a senior SEO would write. Time elapsed: about three minutes. The win is not speed — it is that the brief stays in the same context window the writer uses for the draft, so nothing gets lost in transcription. For the deeper logic behind topic selection, our 5-layer ranking fix stack covers why most "research" stages produce thin briefs.

A common mistake here: skipping the GSC pass. Posts that target queries you already rank between 11 and 30 for are 4x more likely to break the first page than cold-start keywords. Your engine has to know which keywords are warm. That is what GSC mining is for.

Stage 2: Drafting in Claude Code with project context

A Claude Code "project" is a directory with a CLAUDE.md file at the root. That file is loaded into every session inside the directory. It is where your brand voice, your audience definition, your forbidden phrases, your formatting rules, and your internal link inventory live.

This is the unfair advantage. A ChatGPT chat starts cold every time. A Cursor session knows your codebase but not your editorial voice. A Claude Code project knows both.

A working content CLAUDE.md answers these questions:

  • Who is the reader, in one sentence.

  • What three things must every post do (educate, position the product, earn a citation).

  • Voice constraints (contractions on, em-dashes off, no "in today's fast-paced world" openings, no "leverage" or "utilize", grade 8-9 reading level).

  • Required structure (H1 in title only, direct-answer block within the first 200 words, 7-14 H2s, FAQ with 6-8 Q/As).

  • Internal link inventory (a list of every published post with slug and one-line summary).

  • Forbidden topics or claims (legal, regulatory, anything you cannot back up).

Once that file exists, the drafting prompt is short: "Using the research brief in briefs/claude-code-content-engine.md, write a 4,800-word pillar post following CLAUDE.md. Save to drafts/claude-code-content-engine.md. Stop at draft." Claude Code reads the brief, follows the voice rules, drops internal links naturally, and writes a full pillar in one pass.

Animalz noted that "Claude Code within Cursor has become an effective way to handle many marketing tasks." That understates it. Inside a properly configured project, Claude Code is the only tool a solo founder needs for stages two through four.

Stage 3: Scoring against SEO and AEO rules before publish

A draft is not a post. A post is a draft that has cleared a scoring bar.

Quillly's MCP server scores every blog against 14 SEO categories: Meta Tags, Heading Structure, Content Length, Keyword Usage, Internal Linking, External Links, Readability, URL Slug, Content Structure, Brand & Links, Image Alt Text, Schema Markup, AEO Signals, and Freshness. Each category returns a status (pass / warning / fail), a list of findings, and a list of suggestions. The composite is a score from 0 to 100 with a letter grade.

Inside Claude Code, the loop is:

  1. create_blog (or update_blog) saves the draft and returns a score.

  2. get_blog_seo_patches returns ready-to-apply find-and-replace operations with a point impact per fix.

  3. update_blog applies the patches in one call.

  4. Repeat until the score is at least 85 and the meta description is under 160 characters.

You do not eyeball "is this SEO good." The tool tells you "+8 points if you shorten the meta description, +6 if you add two internal links, +4 if you add an H3 inside section four." Claude Code applies the patches and re-checks. The whole cycle takes two to three minutes.

For AEO, the same scoring covers direct-answer blocks, FAQ structure, table density, expert quote presence, statistic count, and freshness markers. Pages with FAQ schema and inline citations are weighted roughly 40% higher in ChatGPT source selection. For the full breakdown of what each category actually checks, read how the SEO score is calculated and the 2026 AEO playbook.

The failure mode here is "publish and hope." Posts that ship at score 60 because the founder ran out of patience never recover. Posts that ship at 85+ start indexing within seventy-two hours and start earning AI Overview citations inside the first month. Same draft. Different outcome.

Stage 4: Publishing to your own domain

Where the post lives matters more than most "automated blog" pitches admit.

The default offering from most AI blog tools is yourname.someplatform.com or someplatform.com/yourname. Convenient. Also useless. Every backlink, every share, and every AI citation builds authority for the platform's root domain — not yours. Two years in, you have shipped 240 posts and learned nothing about your own domain's topical authority.

A real content engine publishes to yourdomain.com/blog/post-slug. That is a subdirectory of the domain you actually own. Subdirectory placement aggregates ranking signals into one root. Our full breakdown on subdirectory vs subdomain shows the SEO math, but the short version: when Google decides your domain has topical authority, every post on it inherits a head start. When Google decides someone else's domain has authority, none of yours do.

Inside the engine, publishing is one tool call. publish_blog flips status from draft to live, regenerates the sitemap, pings the Google Indexing API, and updates the RSS feed. From Claude Code, the agent calls it after the scoring loop passes. No CMS login. No "schedule for Tuesday at 9am" calendar dance — although the Quillly Pro plan supports that if you prefer scheduled drops.

A specific gotcha: the meta description must be 160 characters or fewer for the publish call to succeed. The scoring tool will flag it. The agent will fix it. The point is the agent flags it before you publish, not after Google indexes a truncated snippet.

Stage 5: Indexing and AI citation monitoring

Most "I shipped a blog" stories end at publish. A real content engine starts there.

Three things have to happen in the seventy-two hours after publish: Google has to crawl the URL, Google has to index it, and AI engines have to retrieve it the next time someone asks a related question. None of these are automatic. All three can fail silently.

The monitoring stack is small. Connect a Google Search Console MCP (or use Quillly's built-in GSC integration) and run two queries on a daily cron:

  • "List any URL submitted in the last seven days that is still showing Discovered — currently not indexed."

  • "List any URL with impressions but zero clicks at position 11-30."

The first surfaces stuck posts. The second surfaces near-misses. Either category gets the same treatment: pull the post, improve the meta description and the first-200-word direct-answer block, re-score, re-publish, and submit again. The fix usually takes ten minutes. Our full indexing fix stack covers the deeper causes when a post stays stuck.

For AI citation monitoring, the loop is similar but newer. Tools like Authoritas, AirOps, and Profound surface which prompts cited your URL across ChatGPT, Claude, Perplexity, and Google AI Overviews. Kevin Indig's State of AI Search Optimization 2026 notes that "retrieval, citation, and trust factors" — not classical ranking signals — determine LLM visibility now. You need both kinds of dashboard. The classical SERP and the AI surface track different things, and posts can win one while losing the other.

Stage 6: Refreshing on a 30/90/180 schedule

Freshness is the dirtiest secret of AI search. People assume "rankings" are stable. They are not.

The benchmarks are unambiguous. 50% of the content cited in AI search responses is less than thirteen weeks old. 76.4% of ChatGPT's top-cited pages were updated within the last thirty days. Pages older than ninety days lose citation share. Pages older than a year fall out of the citation pool. The half-life of "AI-optimized" content is shorter than the time most teams spend writing it.

A working content engine refreshes on a three-tier schedule:

  • 30 days for any post chasing a "this year" keyword. Update the year reference, the freshest statistic, and the intro.

  • 90 days for evergreen-leaning posts. Refresh the stats, swap one outdated source, rewrite any section where the landscape has shifted, and re-score.

  • 180 days for true evergreens (definitions, frameworks, how-it-works explainers). Full re-read, full re-score, and update the "Updated" timestamp at the top.

In Claude Code, the refresh prompt is one line: "List every published post older than ninety days. For each, fetch the current top-ranking URL, identify two facts that are now wrong, and queue a patch." The agent returns a list. You approve. The patches ship. The "Updated May 2026" stamp at the top of every post buys you another quarter of citation life. The same refresh cadence is built into our internal linking playbook, since refreshed posts get re-linked into the cluster automatically.

The contrarian point: refresh is more valuable than new posts. A post that has already indexed and earned three backlinks is a higher-leverage asset than a cold-start draft. Most operators write because writing feels productive. The engine refreshes because refreshing is what actually compounds.

The minimum MCP stack to wire up the engine

You do not need fifty MCP servers. You need six.

Table 2

Layer

What it does

Recommended server

Notes

Search

SERP, news, PAA

Exa or Tavily

Either works; Exa has cleaner output

Fetch

URL → markdown

Firecrawl or Fetch

Firecrawl handles JS-rendered pages

Knowledge

Filesystem + notes

Built-in Claude Code Filesystem

Free, ships with Claude Code

Search Console

Query mining, indexing

GSC MCP or Quillly

Quillly bundles it with publishing

SEO scoring

14-criteria scoring + patches

Quillly

Returns ready-to-apply patches

Publishing

Push to your own domain

Quillly

yourdomain.com/blog/slug

Quillly collapses three of the six layers (SEO scoring, GSC, publishing) into one MCP server with twenty-three tools on the Pro plan or twelve on the free plan. That matters because every MCP server is a token tax — each one's tool descriptions load into context on every session. Three combined servers cost less context than three separate ones, and Claude Code has a real (large but real) context budget. For the full landscape of MCP servers that touch SEO work, our builder's guide to MCP servers for SEO reviews each category.

Cost-wise: Claude Code is included with Anthropic plans starting at the Pro tier. Most MCP servers are free or open source. Quillly is free for one site (twelve MCP tools) or $9 a month for five sites (twenty-three MCP tools, custom CSS, scheduled publishing, 14-day trial). A complete engine for a solo operator costs less than one freelance blog post.

A copyable CLAUDE.md for content engines

This is the template a working solo-operator engine ships in. Drop it at the root of your content project directory. Rename the placeholders. Iterate as your voice tightens.

code
# Content Engine — CLAUDE.md

## Role
You are the lead content writer for [BRAND]. You ship 4,000–5,500 word
blog posts engineered to rank #1 in Google, be cited in AI Overviews,
and earn backlinks.

## Audience
[ONE-SENTENCE ICP: e.g. "Solo founders and indie hackers building
SaaS with AI tools."]

## Every post must
1. Answer one specific question the audience is searching.
2. Position [BRAND] as the solution in 2 places maximum.
3. Earn an AI citation by leading every section with the answer.

## Voice rules
- Grade 8–9 reading level. Short sentences.
- Contractions on ("don't", "you're").
- No "leverage", "utilize", "in today's fast-paced world",
  "in conclusion".
- No em-dash as a stylistic tic. Periods are fine.
- Active voice. "You" addresses the reader.
- Definite language ("X is defined as", "X means") over vague.

## Structure rules
- No H1 in body. Title is rendered separately.
- Direct-answer block (40–60 words) within the first 200 words.
- 10–14 H2s for pillar posts; 7–10 for standard.
- 120–180 words between headings.
- At least 5 statistics with source URLs.
- At least one comparison table (3+ rows).
- 1–2 expert quotes with attribution.
- FAQ section with 6–8 Q/As, 50–90 words each.
- Conclusion ends with one specific CTA.

## Internal link inventory
- /blog/[slug-1] — [one-line summary]
- /blog/[slug-2] — [one-line summary]
- (add every published post here)

## Forbidden
- Customer names without written permission.
- Statistics without source URLs.
- Claims you cannot back with a link.

Two things make this file work. First, the structure rules are tight enough that the agent stops asking "should I do X?" and just does X. Second, the internal link inventory is the most under-used SEO asset most operators own. When the agent has a list of every published post in context, it links naturally, anchor text stays descriptive, and your topical clusters tighten automatically.

The pattern scales. Add a briefs/ directory for research outputs, a drafts/ directory for in-progress posts, and a published/ directory for the canonical versions. Claude Code reads all of them. So does the human reviewing the work.

Three mistakes that quietly kill content engines

The failures are not loud. The engine just stops compounding. Three patterns account for almost all of them.

Mistake 1: Treating "AI generates blogs" as the goal. Generation is the cheapest stage in the whole loop. The compounding stages are scoring, monitoring, and refreshing. Operators who optimize for "how fast can I generate?" instead of "how much do my posts compound?" end up with a graveyard of 70-score drafts that never rank. The right frame: the engine is the system that gets posts to 85+ and keeps them fresh, not the system that writes the most words per hour.

Mistake 2: Running on a subdomain or shared platform. Every post you ship to someplatform.com/yourblog is a deposit into someone else's domain authority account. Two hundred posts in, that domain ranks. Yours does not. The fix is non-negotiable: your engine must publish to yourdomain.com/blog/post-slug. If your current platform cannot do that, you are not running a content engine. You are running a content tenancy.

Mistake 3: Skipping the refresh queue. This one is invisible until month four. The first two months feel great. You ship eight posts, three index, traffic ticks up. Then the freshness clock runs out, citations drop, and you blame the algorithm. The actual cause is that the engine wrote eight posts and refreshed zero. A useful rule: for every new post in week N, refresh at least one post from week N-12. The refresh queue is what turns a writing project into a compounding one.

The pattern across all three: AI tools market generation because generation demos well. Compounding does not demo. It is the only thing that pays.

A 90-day case study: what one engine ships

Numbers from a real solo operator running this stack in production. Same person we worked with on the programmatic SEO with MCP build.

Setup: Claude Code + Quillly MCP (Pro plan, 23 tools) + Exa search MCP + Firecrawl. One operator. One domain. Pre-existing brand voice in a 600-word CLAUDE.md.

Inputs (90 days): Twelve sessions per week of forty-five minutes each. Roughly four engine-driven posts shipped weekly. Refresh queue runs every Tuesday.

Output:

  • 48 new pillar and supporting posts published.

  • 31 posts (65%) indexed within seventy-two hours.

  • 14 posts cited in at least one AI Overview by day 60.

  • Average SEO score at publish: 91. Average word count: 3,420.

  • Refresh queue ran on 27 older posts. 19 of those recovered lost ranking positions.

Numbers that matter: Organic clicks at day 90 were 4.7x the day-0 baseline. The operator's reported time per post (research through published) averaged 41 minutes, down from a self-reported 5.5 hours in the previous "ChatGPT + WordPress" workflow. That is roughly 87% of the per-post labor removed without changing what the reader sees.

The case is unremarkable on purpose. No viral post. No paid distribution. No team. The engine is the strategy. The numbers are what consistency at 85+ scores produces when freshness and internal linking compound.

What is the difference between Claude Code and Claude Desktop for content work?

Claude Code is Anthropic's terminal-native CLI agent. It owns the shell, reads and edits files, and runs commands with permission. Claude Desktop is a chat app with MCP support but no file system control. For a content engine, Claude Code wins because the same agent that drafts the post can also save it, version it, score it through MCP tools, and publish it. Claude Desktop works for one-off blogs. Claude Code works for the recurring pipeline. We covered the Desktop path separately in our Claude Desktop publishing workflow.

Do I have to know how to code to run a Claude Code content engine?

No. You install Claude Code, run claude in a directory, and configure MCP servers via a JSON file. Most of the daily operation is plain-English prompts. The "code" part is reading config files and approving commands. If you can edit a package.json or run npm install, you can run the engine. Anything more technical, like custom MCP servers, is optional. The minimum stack uses only off-the-shelf servers.

How is this different from Surfer SEO or Jasper?

Surfer scores against a SERP-based content brief. Jasper generates drafts. Neither owns the publishing layer, neither watches indexing, and neither runs a refresh queue. A Claude Code content engine is the workflow that connects research, drafting, scoring, publishing, and refresh into one loop with one agent. Surfer and Jasper are valuable inside that loop. They are not the loop. The compounding asset is the integrated pipeline.

Will Google penalize content from this kind of engine?

Google's helpful content guidance does not penalize AI assistance. It penalizes thin, unhelpful, or duplicative content regardless of how it was written. An engine that ships 85+ scored posts, with original framing, real statistics, and structured FAQs is well inside the guidelines. The risk is shipping 60-score drafts on autopilot. The score gate at stage three is what keeps the engine compliant.

How many posts per week is realistic for a solo operator?

Three to five posts a week is the realistic ceiling for a solo operator running the full loop end-to-end, including refresh. More than five and either the scoring bar drops or the refresh queue stops running. Most operators are better off at four high-quality posts per week with one refresh batch than ten thin ones. Volume without compounding is noise.

What does MCP add that I cannot get from a regular API?

MCP standardizes how the agent calls external systems. The same Claude Code session can hit Google Search Console, your CMS, your filesystem, and a SEO scorer through one consistent interface. With raw APIs you write glue code for every integration and your context gets eaten by JSON. With MCP the tool definitions live on the server and the agent loads them on demand. By April 2026 the protocol had crossed 97 million monthly SDK downloads and 5,800+ public servers, so almost every tool you might want is already wrapped.

How do I track whether my posts are getting cited by ChatGPT or Google AI Overviews?

Three layers. First, watch Google Search Console for impression-to-click ratios on target queries, since AI Overview citations show as inflated impressions with depressed CTR. Second, run regular prompts in ChatGPT, Claude, Perplexity, and Google for your core queries and log which URLs cite. Third, use a dedicated AI visibility tool (Profound, Authoritas, AirOps) for systematic tracking. Our AI Overview ranking guide covers the optimization tactics in more depth.

What is the cheapest way to start?

Free. Claude Code runs on the Anthropic Pro plan if you already pay for Claude. Quillly's free plan gives you one website, unlimited blogs, twelve MCP tools, GSC integration, and SEO scoring. Add Exa or the open Brave Search MCP for research. Most operators can stand up the entire engine on day one without paying anything new. Upgrading to Quillly Pro at $9 a month or $90 a year adds five sites, twenty-three tools, custom CSS, scheduled publishing, and a 14-day trial.

The takeaway

Three points worth keeping after you close this tab.

One: the engine is the strategy, not the tool. Generation is cheap. Compounding is rare. A working content engine wins because scoring, monitoring, and refreshing are baked into the loop. Most "AI blog tools" sell stages two through three and call it a strategy. It is not.

Two: 48 posts in 90 days is achievable with one operator. The case study above is not unusual. With Claude Code, MCP, and a publishing target on your own domain, the per-post labor drops from five hours to forty minutes, and the quality bar goes up because the scoring loop runs every time.

Three: subdirectory or it does not count. Posts on someone else's domain compound for them. Posts at yourdomain.com/blog/post-slug compound for you. The single biggest mistake operators make is choosing a "fast" publishing tool that does not give them control of the URL.

Want your AI to actually publish the post it just wrote? Connect Quillly to Claude Code in under a minute and ship your first 85+ post by tomorrow.