SEO/GEO Agency In A Box
Build a content pipeline that ranks on Google AND gets cited by ChatGPT.
A woman named Keisha runs a three-person marketing agency in Atlanta. One of her clients, a commercial cleaning company, was getting 40 organic visits a day from Google. Decent. Not great. Then in February 2026, Google’s AI Overviews started answering the exact queries Keisha’s client used to rank for. “Best commercial cleaning services in Atlanta” now shows an AI-generated answer at the top of the page, with citations to three competing websites. Her client’s organic traffic dropped 31% in six weeks. The rankings didn’t change. The clicks did.
Keisha’s problem isn’t SEO. Her problem is that SEO isn’t enough anymore.
In 2026, search has three layers: traditional Google rankings (SEO), getting cited in AI-generated answers from ChatGPT, Perplexity, and Google AI Overviews (GEO, Generative Engine Optimization), and appearing in featured snippets and answer boxes (AEO, Answer Engine Optimization). If your content ranks on Google but doesn’t get cited by the AI layer sitting on top of Google, you’re losing traffic to the machines that are summarizing your competitors instead of you.
Keisha rebuilt her client’s content pipeline using Claude Code, the Ahrefs MCP, and a chain of seven skill files. The pipeline finds keyword gaps, analyzes what’s ranking, generates publish-ready drafts optimized for both Google and AI citation, adds schema markup, and produces an llms.txt file that tells AI models what her client’s site is about.
Six weeks later: organic traffic recovered to baseline. And the commercial cleaning company started appearing as a cited source in Google AI Overviews for three high-intent keywords. Those AI citations are sending a new stream of traffic that didn’t exist before.
This is the playbook for building that pipeline.
Why “SEO” Changed in 2026
If you’re reading this, you probably know what SEO is. Optimize content for Google, get ranked, get traffic. The playbook hasn’t fundamentally changed since 2010: keyword research, good content, technical optimization, backlinks.
What changed is where the traffic goes after Google processes the query.
Roughly 11-12% of Google queries now trigger an AI Overview: a generated summary at the top of the results page that answers the question directly, often with citations to the sources it pulled from. For informational queries (the ones most content marketing targets), that number is even higher.
This creates a new problem: your page can rank #1 on Google and still lose traffic because the AI Overview answered the question before anyone clicked. Unless your page is one of the sources the AI Overview cites. Then you get traffic from both the traditional ranking and the AI citation.
GEO (Generative Engine Optimization) is the discipline of structuring your content so AI models cite it. Not just Google’s AI Overviews, but also ChatGPT’s search feature, Perplexity, Bing Copilot, and Claude’s web search. Each of these systems is trained to prefer certain types of content: well-structured, authoritative, factually grounded, and easy to extract discrete claims from.
AEO (Answer Engine Optimization) is the adjacent discipline focused on featured snippets, FAQ boxes, and “People Also Ask” sections. These have existed for years, but they’re now feeding the AI models: content that already appears in a featured snippet is more likely to get cited in an AI Overview.
The bottom line: an SEO strategy that ignores GEO and AEO is leaving traffic on the table. This pillar covers all three.
What You Need
- Claude Code with Pro or Max subscription
- Ahrefs account (Lite plan or above, starting at $129/mo). Ahrefs is the data backbone of this pipeline. You need it for keyword research, content gap analysis, SERP analysis, and rank tracking. There’s no free substitute that provides the same data quality.
- Ahrefs MCP connected to Claude Code
- Firecrawl MCP (for scraping competitor content)
- A website with a blog or content section where you’ll publish the optimized content
On the Ahrefs cost: Yes, $129/month is real money. But if you’re building an SEO agency or doing content marketing professionally, Ahrefs pays for itself. One client who finds you through organic search can be worth thousands per month. If you’re not ready for Ahrefs, you can use the free SEO skill repos on GitHub (like claude-seo or seo-geo-claude-skills) that work with free data sources like Google Search Console and DataForSEO. The output will be less precise, but the workflow is the same.
Connect the Ahrefs MCP
claude mcp add ahrefs -- npx -y @ahrefs/mcp
You’ll need your Ahrefs API key (found in your Ahrefs dashboard under Account > API). Set it as an environment variable or enter it when prompted.
Restart Claude Code and verify:
Use the Ahrefs MCP to pull the top 10 organic keywords for [your website URL].
Show keyword, volume, difficulty, and current position.
If you see data, you’re connected.
The Seven-Skill Pipeline
Ahrefs published their own version of this pipeline on their blog (Ryan Law’s “How I Do Content Engineering with Claude Code,” using 23 skill files to produce publish-ready articles in 6-12 minutes). This guide simplifies that into seven skills that cover the full SEO/GEO/AEO workflow for someone building a content pipeline from scratch.
Each skill is a markdown file in your .claude/skills/ directory. They chain together: the output of one becomes the input of the next.
Skill 1: Content Gap Analyzer
This skill finds keywords your competitors rank for that you don’t.
Create a Claude Code skill called "content-gap-analyzer" with these
instructions:
PURPOSE:
Identify content opportunities by comparing my site's keyword
portfolio against 3-5 competitors using the Ahrefs MCP.
INPUTS:
- my_domain: the user's website
- competitors: list of 3-5 competitor domains
WORKFLOW:
1. Use Ahrefs content gap analysis to find keywords where at least
2 competitors rank in the top 10 but my_domain does not rank
in the top 50
2. Filter to keywords with monthly volume > 100 and keyword
difficulty < 40
3. Group keywords by parent topic to identify content clusters
(not individual keywords)
4. For each cluster, estimate: total monthly volume, average
difficulty, number of keywords, and intent type (informational,
commercial, transactional)
5. Rank clusters by a composite score: (total volume * 0.4) +
(inverse difficulty * 0.3) + (commercial intent bonus * 0.3)
OUTPUT:
A prioritized list of content clusters to target, saved to
./seo/content-gaps-[date].md
Save to .claude/skills/content-gap-analyzer.md
Run it:
/content-gap-analyzer my_domain="example.com" competitors="competitor1.com, competitor2.com, competitor3.com"
The output tells you exactly what to write about, in priority order. Not individual keywords, but topic clusters that capture multiple related keywords with one piece of content.
Skill 2: SERP Analyzer
Before you write anything, you need to understand what’s already ranking and what the search intent is.
Create a Claude Code skill called "serp-analyzer":
PURPOSE:
For a given target keyword, analyze the current SERP to understand
what's ranking, why, and what our content needs to beat it.
WORKFLOW:
1. Use Ahrefs SERP overview for the target keyword
2. Scrape the top 5 ranking pages using Firecrawl
3. For each page, extract: word count, heading structure (H1/H2/H3),
key topics covered, content format (listicle, guide, comparison,
tutorial), unique angles or data points, schema markup present,
FAQ sections, and estimated reading level
4. Identify content gaps: topics the top pages miss or cover weakly
5. Check if an AI Overview exists for this query and what sources
it cites
6. Determine the dominant search intent and recommended content format
OUTPUT:
A SERP analysis brief saved to ./seo/serp-[keyword].md, including:
- Recommended content format and word count
- Must-cover topics (what every top result includes)
- Opportunity topics (what top results miss)
- AI Overview status and cited sources
- Schema recommendations
Save to .claude/skills/serp-analyzer.md
Skill 3: Content Generator
This skill produces the actual article draft, informed by the gap analysis and SERP analysis.
Create a Claude Code skill called "content-generator":
PURPOSE:
Generate a publish-ready article draft optimized for both
traditional SEO and AI citation (GEO).
INPUTS:
- target_keyword: primary keyword
- serp_brief: path to the SERP analysis file
- brand_voice: path to a brand voice document (tone, style, POV)
- context: optional high-level direction from the user
WORKFLOW:
1. Read the SERP analysis brief
2. Use Ahrefs to pull the questions report for the target keyword
(commonly asked questions) and long-tail variations
3. Generate an article outline that:
- Covers all must-cover topics from the SERP brief
- Includes the opportunity topics competitors missed
- Addresses the top 3-5 commonly asked questions (for AEO)
- Structures information in extractable chunks (for GEO)
4. Write the full article following these GEO optimization rules:
- Lead each section with a clear, self-contained claim sentence
that an AI could extract and cite (this is the core GEO move)
- Include specific data points, statistics, or examples in every
section (AI models prefer citing content with concrete evidence)
- Use clear heading hierarchy (H1 > H2 > H3, no skipped levels)
- Include a direct-answer paragraph for the primary keyword
within the first 200 words
- Write FAQ sections in explicit question-and-answer format
(for AEO featured snippets)
- Keep paragraphs to 2-3 sentences max (AI extracts short chunks)
5. Save the outline to ./seo/outlines/[keyword]-outline.md
6. Save the draft to ./seo/drafts/[keyword]-draft.md
Save to .claude/skills/content-generator.md
The key GEO principle: Write in extractable chunks. AI models cite content by pulling discrete claims from your page. If your key points are buried in long narrative paragraphs, they won’t get extracted. If each section opens with a clear, self-contained sentence that states a fact or claim, AI models will find it, quote it, and link back to you.
Skill 4: Schema Generator
Schema markup tells search engines (and AI models) exactly what your content is about in structured data format.
Create a Claude Code skill called "schema-generator":
PURPOSE:
Generate appropriate JSON-LD schema markup for a content page.
WORKFLOW:
1. Read the article draft
2. Determine which schema types apply:
- Article (always)
- FAQPage (if the article has FAQ sections)
- HowTo (if the article is a tutorial/guide)
- Organization (for the site/brand)
- BreadcrumbList (for site navigation)
3. Generate the JSON-LD for each applicable type
4. Include sameAs links to the brand's social profiles
5. Output the complete schema block ready to paste into the
page's <head> section
Save to .claude/skills/schema-generator.md
Skill 5: LLMs.txt Generator
This is the newest piece of the GEO stack. An llms.txt file sits at your site root (like robots.txt) and tells AI models what your site is about, what content to prioritize, and how to cite you.
Create a Claude Code skill called "llms-txt-generator":
PURPOSE:
Generate an llms.txt file for the website that helps AI models
understand and cite the site's content correctly.
WORKFLOW:
1. Read the site's existing content inventory (from Ahrefs site
audit or a provided sitemap)
2. Generate an llms.txt file with:
- Site description (who you are, what you do, in 2-3 sentences)
- Preferred citation format (how AI should reference your content)
- Key content categories with descriptions
- Links to the most important/authoritative pages
- Contact and attribution information
3. Save to ./seo/llms.txt
Save to .claude/skills/llms-txt-generator.md
Skill 6: Content Fragment Chunker
This skill takes your finished article and breaks it into discrete, citable fragments that AI models can easily extract.
Create a Claude Code skill called "content-chunker":
PURPOSE:
Process a finished article into structured fragments optimized
for AI citation and featured snippet capture.
WORKFLOW:
1. Read the article draft
2. Identify every "citable claim": a self-contained sentence or
paragraph that states a specific fact, statistic, definition,
comparison, or recommendation
3. For each claim, create a fragment with:
- The claim text
- The source/evidence supporting it
- The heading it falls under
- A suggested featured snippet format (paragraph, list, or table)
4. Verify that each major section of the article has at least one
strong citable fragment
5. Flag any sections that lack concrete, extractable claims and
suggest additions
6. Output a fragment map saved to ./seo/fragments/[keyword]-fragments.md
Save to .claude/skills/content-chunker.md
Skill 7: The Blog Pipeline (The Chain)
This is the master skill that chains all six previous skills together into one command.
Create a Claude Code skill called "blog-pipeline":
PURPOSE:
Run the complete content creation pipeline from keyword to
publish-ready draft.
INPUTS:
- keyword: target keyword
- competitors: competitor domains for gap analysis (optional if
gap analysis was already run)
- context: high-level direction (optional)
- brand_voice: path to brand voice file
WORKFLOW:
1. Run serp-analyzer for the keyword
2. Run content-generator using the SERP brief
3. Run schema-generator on the draft
4. Run content-chunker to verify GEO optimization
5. Run llms-txt-generator if one doesn't exist yet (first run only)
6. Compile the final output package:
- The article draft (markdown)
- The schema markup (JSON-LD)
- The fragment map (for GEO verification)
- A publishing checklist
Save each step's output to its respective folder so any stage
can be reviewed and restarted independently.
Save to .claude/skills/blog-pipeline.md
Run the complete pipeline:
/blog-pipeline keyword="commercial cleaning services Atlanta" context="Target facility managers at office buildings. Position our client as the reliable, no-contract option." brand_voice="./brand-voice.md"
Expected runtime: 6-12 minutes for the complete pipeline, depending on how many SERP results need to be scraped.
Expected output: A publish-ready article draft (1,500-3,000 words), schema markup ready to paste, a fragment map showing all citable claims, and a publishing checklist.
The GEO Checklist (Apply to Every Piece of Content)
Whether you use the full pipeline or write content manually, run every article through this checklist before publishing:
Structure for extraction:
- Does every major section open with a clear, self-contained claim sentence?
- Are paragraphs 2-3 sentences max (not dense walls of text)?
- Is there a direct-answer paragraph within the first 200 words?
Optimize for featured snippets (AEO):
- Are FAQs formatted as explicit Q&A (question as H3, answer as paragraph)?
- Do “how-to” sections use numbered steps with clear action verbs?
- Are comparison points formatted as tables where appropriate?
Build authority signals:
- Does the article include specific data points, statistics, or examples?
- Are claims sourced (linked to original research, studies, or reports)?
- Is there an author bio with credentials relevant to the topic?
Technical SEO:
- Is schema markup added (Article, FAQPage, HowTo as applicable)?
- Does the page load in under 3 seconds?
- Is the heading hierarchy clean (H1 > H2 > H3, no skipped levels)?
AI discoverability:
- Does the site have an llms.txt file?
- Are internal links pointing to other relevant content on the site?
- Is the page indexed and crawlable?
Tracking AI Citations
Publishing optimized content is half the work. Tracking whether AI models actually cite you is the other half.
Manual tracking (free): Search for your target keywords in ChatGPT, Perplexity, and Google (with AI Overviews enabled). Note whether your site appears as a cited source. Do this weekly for your top 10 keywords.
Automated tracking: Profound (profound.com) is an AI visibility platform that monitors how often your brand appears in LLM-generated answers across ChatGPT, Perplexity, Google AI Overviews, and Bing Copilot. It tracks citation trends over time and alerts you when you gain or lose citations. Pricing varies. Worth it if organic traffic is a significant revenue channel.
DIY tracking with Claude Code:
Create a Claude Code skill called "geo-citation-tracker":
PURPOSE:
Track whether target pages are being cited in AI-generated answers.
WORKFLOW:
1. For each target keyword, search Perplexity and note which sources
are cited in the answer
2. Check if my_domain appears as a cited source
3. Track results weekly in a CSV: keyword, date, cited (yes/no),
competitors_cited, citation_position
4. Generate a monthly report showing citation trends
Save to .claude/skills/geo-citation-tracker.md
The Downloadable Artifacts
This pillar comes with four files:
blog-pipeline.md: The master skill that chains all six content skills together. Drop into.claude/skills/and run/blog-pipeline [keyword].seo-geo-checklist.md: The GEO optimization checklist as a standalone reference. Print it and tape it next to your monitor.llms-txt-template.md: A pre-structuredllms.txttemplate. Fill in your site details and upload to your root directory.geo-citation-tracker.md: The citation tracking skill for monitoring your AI visibility over time.
All four are in the Vault downloads section.
What This System Will Not Do
It will not rank your site overnight. SEO is a long game. GEO is an even longer game. Expect 3-6 months before you see meaningful organic traffic from new content. The pipeline accelerates production (from days per article to minutes), but it doesn’t accelerate Google’s indexing and ranking timelines.
It will not work without Ahrefs (or a comparable data source). Claude Code is the brain, but Ahrefs is the data. Without real keyword metrics, search volume, and competitive analysis, you’re guessing. The pipeline hallucination-proofs itself by pulling live data from Ahrefs for every decision. Remove the data source and the quality drops dramatically.
It will not replace editorial judgment. The pipeline produces structurally sound, data-informed drafts. But “structurally sound” and “genuinely useful to a human reader” are different things. The best content adds original insight, real experience, or a perspective that AI can’t generate from existing sources. Use the pipeline for the heavy lifting. Add your expertise on top.
What’s Next
This is the final pillar in the Vault. Here’s what you now have:
Track A (Meta Ads AI Operating System): Research (Pillar 5) → Static ad production (Pillar 1) → Video ad production (Pillar 6) → Bulk distribution (Pillar 2) → Performance intelligence (Pillar 3) → Landing page conversion (Pillar 4)
Track B (AI Lead Gen): Automated local lead scraping and personalized outreach (Pillar 7)
Track C (AI SEO/Content): Full content pipeline from keyword gap to publish-ready, GEO-optimized article (Pillar 8)
Together, that’s a complete AI marketing operating system: paid acquisition, outbound lead gen, and inbound content, all running on Claude Code, skill files, and MCP integrations.
Every Friday, a new Workflow Drop adds a fresh skill or template to the Vault. Every Monday, a Tool Teardown reviews a tool worth knowing about. The first of every month, the Stack Update tells you what changed. The system keeps growing.
[CTA: Browse the Full Vault] | [CTA: Start from Pillar 1]
Files for this pillar
The master skill that chains all six content skills together. Run `/blog-pipeline [keyword]`.
The optimization checklist as a standalone reference.
Pre-structured llms.txt template for your site root.
Skill for monitoring AI visibility over time.