---
name: blog-pipeline
description: Activates when the user asks to write a blog post, generate SEO content, run a content pipeline, create AI-optimized articles, or produce content that ranks on Google AND gets cited by ChatGPT/Perplexity. Master skill that chains content gap analysis, SERP analysis, draft generation with GEO optimization, schema markup, and fragment chunking into one command. Outputs a publish-ready article with all supporting assets in 6-12 minutes.
---

# Blog Pipeline Skill

The master skill of Pillar 8. Chains six smaller skills into a complete content production workflow: keyword research, SERP analysis, draft generation with GEO/AEO optimization, schema markup, and fragment chunking. Run one command, get a publish-ready article in 6-12 minutes.

## Activation Rules

Activate when:
- The user asks to "write a blog post," "generate SEO content," "produce an article," etc.
- The user runs the `/blog-pipeline [keyword]` slash command
- A scheduled cron job triggers content production for a publishing calendar

## Prerequisites

1. **Ahrefs account** (Lite plan or above, $129/mo) with Ahrefs MCP installed
   - OR Google Search Console + DataForSEO for the free alternative path (lower data quality)
2. **Firecrawl MCP** (for scraping competitor pages during SERP analysis)
3. **brand-kit.md** with brand voice and tone documented
4. **A target keyword** and optional competitor list

If Ahrefs isn't connected, prompt the user to set it up or to use the free path.

---

## The Pipeline

The blog-pipeline skill chains these six sub-skills in sequence:

1. **content-gap-analyzer** (run once per quarter, not every article) — finds the keyword clusters worth targeting
2. **serp-analyzer** — understands what's already ranking and identifies content gaps
3. **content-generator** — writes the draft with GEO/AEO optimization baked in
4. **schema-generator** — adds JSON-LD schema markup
5. **content-chunker** — verifies the draft has citable fragments in every section
6. **llms-txt-generator** — runs once when first using the skill, generates the site-level llms.txt file

The blog-pipeline skill ties them together with shared context and a single output bundle.

---

## Slash Commands

### `/blog-pipeline [keyword]`

The primary command. End-to-end pipeline for a single article.

**Usage:**
```
/blog-pipeline "commercial cleaning services Atlanta"
```

**With optional context:**
```
/blog-pipeline "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"
```

**Workflow:**

1. **Run serp-analyzer for the keyword:**
   - Use Ahrefs to get SERP overview for the keyword
   - Scrape the top 5 ranking pages via Firecrawl
   - Extract: word count, heading structure, key topics covered, content format, unique angles, schema markup, FAQ sections, AI Overview citations
   - Identify content gaps (topics top pages miss or cover weakly)
   - Save brief to `./seo/serp-[keyword-slug].md`

2. **Run content-generator using the SERP brief:**
   - Read the SERP brief
   - Use Ahrefs to pull the questions report for the keyword (commonly asked questions for AEO)
   - 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)
   - Write the full article applying GEO optimization rules:
     - Lead each section with a clear, self-contained claim sentence
     - Include specific data points, statistics, or examples in every section
     - Use clear heading hierarchy (H1 > H2 > H3, no skipped levels)
     - Direct-answer paragraph for the primary keyword within first 200 words
     - FAQ sections in explicit Q&A format
     - Paragraphs limited to 2-3 sentences max
   - Save outline to `./seo/outlines/[keyword-slug]-outline.md`
   - Save draft to `./seo/drafts/[keyword-slug]-draft.md`

3. **Run schema-generator on the draft:**
   - Determine which schema types apply (Article always, FAQPage if FAQs present, HowTo if tutorial, etc.)
   - Generate JSON-LD for each applicable type
   - Include sameAs links to the brand's social profiles
   - Save schema block to `./seo/schema/[keyword-slug]-schema.json`

4. **Run content-chunker:**
   - Read the article draft
   - Identify every "citable claim" — self-contained sentence/paragraph that states a specific fact, statistic, definition, comparison, or recommendation
   - Verify every major section has at least one strong citable fragment
   - Flag sections lacking concrete extractable claims, suggest additions
   - Save fragment map to `./seo/fragments/[keyword-slug]-fragments.md`

5. **Compile the final output bundle:**
   - The article draft (markdown)
   - The schema markup (JSON-LD)
   - The fragment map (for GEO verification)
   - A publishing checklist
   - Save bundle to `./seo/output/[keyword-slug]/`

6. **Show summary:**
   ```
   Blog pipeline complete for keyword: "[keyword]"
   
   Output bundle: ./seo/output/[keyword-slug]/
     ├── article-draft.md          (1,847 words, 8th-grade reading level)
     ├── schema.json               (Article + FAQPage)
     ├── fragments.md              (12 citable claims identified)
     ├── publishing-checklist.md
     └── source-brief.md
   
   Time elapsed: 8 minutes
   API costs: ~$0.40 (Ahrefs MCP calls + Claude generation)
   
   Next steps:
   1. Review the article draft (./seo/output/[keyword-slug]/article-draft.md)
   2. Edit voice and tone to match your brand specifically
   3. Add internal links to related content on your site
   4. Paste schema.json into your page's <head> section
   5. Publish, submit URL to Google Search Console for indexing
   6. Run /geo-citation-tracker on the published URL after 14-30 days
   ```

### `/blog-pipeline-batch [keyword-list-file]`

Run the pipeline for multiple keywords in one batch.

**Usage:**
```
/blog-pipeline-batch ./seo/keyword-queue.txt
```

**Keyword queue file format:**
```
commercial cleaning services Atlanta
office cleaning Atlanta
janitorial services Buckhead
cleaning company Sandy Springs
```

Outputs a separate bundle per keyword. Useful for content calendars (queue 4-8 articles, run the batch overnight).

### `/blog-pipeline --serp-only [keyword]`

Just the SERP analysis step. Useful for evaluating whether a keyword is worth targeting before committing to writing.

### `/blog-pipeline --skip-schema [keyword]`

Skip schema generation if your CMS handles schema automatically (Webflow, modern Wordpress themes with Yoast/RankMath).

### `/blog-pipeline --refresh [url]`

Refresh existing content rather than writing new content.

**Workflow:**
1. Scrape the existing URL
2. Run SERP analysis for its primary keyword
3. Compare existing content against current top performers
4. Identify gaps and opportunities to update
5. Generate an "update brief" showing exactly what to add/change
6. Optionally regenerate sections that are weak

Run quarterly on your top 20 traffic-generating pages to maintain rankings.

---

## GEO Optimization Rules (Applied to Every Generated Article)

The skill applies these rules automatically. Listed here so you understand what's happening:

### Structure for AI extraction

- Every major section (H2) opens with a clear, self-contained claim sentence
- Paragraphs are 2-3 sentences max (AI extracts short chunks)
- Direct-answer paragraph for the primary keyword within first 200 words
- Questions are formatted as explicit H3 headings followed by paragraph answers (AEO featured snippet pattern)

### Authority signals

- Every section includes at least one specific data point, statistic, or example
- Claims are sourced (linked to original research, studies, or reports)
- Author bio with credentials relevant to the topic appended at end
- Schema markup includes Author and Organization types

### Technical SEO baseline

- Heading hierarchy is clean (H1 > H2 > H3, no skipped levels)
- Schema markup added (Article, FAQPage, HowTo as applicable)
- Internal link suggestions provided for 3-5 related pages on the site
- Meta title and meta description generated separately from H1

### Citation-friendly formatting

- Lists are formatted as proper HTML lists (not numbered paragraphs)
- Comparisons are formatted as tables when appropriate
- Definitions are written as "X is Y because Z" sentences (extraction-friendly)
- "Step 1, Step 2..." formatting for tutorial content

---

## What the Pipeline WILL NOT Do

It will not produce content that ranks #1 overnight. SEO is a 3-6 month game. The pipeline accelerates production from days per article to minutes — it doesn't accelerate Google's indexing and ranking.

It will not work without real keyword data. Without Ahrefs (or a comparable data source), you're guessing. The pipeline hallucinationproofs itself by pulling live data from Ahrefs at every decision point.

It will not replace editorial judgment. The output is structurally sound, data-informed, and GEO-optimized. But "structurally sound" and "genuinely useful to a human reader" are different things. The best content adds original insight, real experience, or a perspective AI can't generate from existing sources. Use the pipeline for the heavy lifting; add your expertise on top.

It will not write content the AI hasn't been told about. If your brand has a unique POV that isn't documented in brand-kit.md, the pipeline will generate competent but generic content. Document the POV first.

---

## Cross-Skill Integration

**This skill calls (in sequence):**
- serp-analyzer (generates SERP brief)
- content-generator (writes the article using SERP brief)
- schema-generator (adds schema markup)
- content-chunker (verifies GEO optimization)
- llms-txt-generator (first run only)

**This skill depends on:**
- Ahrefs MCP (for keyword and competitor data)
- Firecrawl MCP (for scraping competitor pages during SERP analysis)
- brand-kit.md (for brand voice and tone)

**Output flows to:**
- The user's CMS (paste the article + schema)
- Google Search Console (submit URL for indexing)
- The geo-citation-tracker skill (monitor AI citations after 14-30 days)

---

## Common Issues

### "The article is structurally good but feels generic"

Add more specific brand voice context to brand-kit.md. The pipeline can only personalize what it's told. A vague voice description ("we're friendly and professional") produces vague output. A specific voice description ("we're slightly self-deprecating, we use first-person plural but never sound corporate, our reader is a busy adult who can detect bullshit") produces specific output.

### "The article doesn't cite my company's case studies or examples"

Add a `case-studies.md` file to your project alongside brand-kit.md. List your case studies, customer wins, and unique data points. Reference this file in your `/blog-pipeline` command:

```
/blog-pipeline "commercial cleaning Atlanta" --case-studies "./case-studies.md"
```

The pipeline will weave in your real proof rather than generic industry stats.

### "Articles look the same across different keywords"

Most likely cause: the SERP analysis is finding similar competitors for adjacent keywords. Customize each article's `--context` parameter to give the pipeline a unique angle:

```
/blog-pipeline "office cleaning Atlanta" --context "Target small office buildings (under 10,000 sq ft) where the building manager IS the decision maker"
/blog-pipeline "commercial cleaning Atlanta" --context "Target large enterprise facility managers who need vendor consolidation"
```

### "Generated articles don't match my CMS's existing content style"

Provide 2-3 example articles from your existing site:

```
/blog-pipeline "[keyword]" --voice-examples "./examples/article-1.md,./examples/article-2.md"
```

The pipeline will analyze the examples and match your existing voice patterns.

---

## Notes

- Quality > volume. Producing 50 articles in a month with this pipeline will get you penalized by Google's helpful content system. Producing 4-8 well-edited articles per month is the sustainable rhythm.
- Always edit the output before publishing. The pipeline produces a strong first draft. Your edits are what make it publishable. Budget 30-60 minutes per article for editing.
- Run /blog-pipeline-refresh on your top 20 pages quarterly. This is the single biggest lever for maintaining rankings as Google's algorithms and the GEO/AEO landscape evolve.
- For agencies, use a separate brand-kit.md per client. Don't share content style across clients — each client needs their own voice fingerprint.
