Template. Replace placeholder values like {{YOUR_NAME}}, {{CONTENT_DIR}}, etc. with your own before using.

Content Creation

SEO/GEO Content

Create 2000+ word blog articles optimized for both Google search and AI search engines like ChatGPT and Perplexity using keyword research, E-E-A-T signals, and schema markup.

MCP Required. This skill needs Serper, Exa to run.

Save to ~/.claude/skills/seo-geo/SKILL.md
SKILL.md
---
name: seo-geo
description: Generate long-form blog content (2000+ words) optimized for both traditional Google search AND AI search engines (ChatGPT, Perplexity, Google AI Overviews) to drive inbound leads for {{BRAND_NAME}}. Triggers include "write SEO article", "create blog post", "GEO optimized content", "SEO content", or when creating content for search visibility.
version: 1.0.0
---

# SEO/GEO Content Skill

You are helping {{YOUR_NAME}} create long-form blog content optimized for both traditional search (SEO) AND AI search engines (GEO - Generative Engine Optimization). The goal is to create content that ranks on Google AND gets cited by ChatGPT, Perplexity, and Google AI Overviews.

---

## Step 1: Determine Content Source

**Ask the user which approach:**

1. **Repurpose**: Read existing `research.md` from a Marketing project folder
   - Ask: "Which project folder should I pull research from?"
   - Location: `{{CONTENT_DIR}}/[folder-name]/research.md`

2. **Fresh**: Conduct keyword research for a new topic
   - Proceed to Step 3 for keyword research

---

## Step 2: Load Context

**Always read the user profile:**
Read `{{PROFILE_PATH}}` to understand {{YOUR_NAME}}'s background, expertise, client results, and voice.

**Ask before writing:**
- "Does this topic connect to your personal experience? Any stories from {{YOUR_EXPERIENCE}} that would strengthen this?"
- "Any specific client results or data points I should include?"

**Use the profile for:**
- E-E-A-T signals (Experience, Expertise, Authority, Trust)
- Real stories and anecdotes
- Specific numbers and results
- Authentic voice matching

---

## Step 3: Keyword/Topic Research (if fresh)

**Use these MCP tools to gather real data:**

### Serper Tools
- `mcp__serper__google_search` - Find what's ranking, competitor content
- `mcp__serper__google_search_news` - Recent news/trends on topic
- `mcp__serper__google_autocomplete` - Related search queries people type
- `mcp__serper__webpage_scrape` - Analyze top-ranking articles

### Exa Tools
- `mcp__exa__web_search_exa` - Deep web search for unique angles
- `mcp__exa__get_code_context_exa` - For technical topics (Claude Code, AI tools)

### Research Workflow

1. **Identify Primary Keyword**
   - Use `mcp__serper__google_search` with the main topic
   - Note what's ranking and the search intent

2. **Find Related Questions**
   - Use `mcp__serper__google_autocomplete` for related queries
   - Search "[topic] questions" and "[topic] how to"
   - Capture "People Also Ask" questions

3. **Analyze Top Competitors**
   - Scrape top 3 ranking articles with `mcp__serper__webpage_scrape`
   - Note: length, structure, headers, gaps in coverage

4. **Gather Stats & Data**
   - Search for "[topic] statistics 2024" or "[topic] data"
   - Find 3-5 specific, citable data points

5. **Check Recent News**
   - Use `mcp__serper__google_search_news` for last 30 days
   - Note any trending angles or developments

6. **Identify Unique Angle**
   - What's missing from current content?
   - Where does {{YOUR_NAME}}'s experience add unique value?

### Research Checklist
Before moving to writing, confirm:
- [ ] Primary keyword identified
- [ ] 5-10 related questions/long-tail keywords found
- [ ] Top 3 ranking articles analyzed (length, structure, gaps)
- [ ] "People Also Ask" questions captured
- [ ] 3-5 specific stats/data points sourced
- [ ] Recent news/trends checked (last 30 days)
- [ ] Unique angle identified (what's missing from current content)

---

## Step 4: Content Structure Planning

**Create outline optimized for SEO + GEO:**

### Title
- Include primary keyword
- Add compelling hook or benefit
- Keep under 60 characters for SERP display

### Meta Description
- 150-160 characters
- Include primary keyword naturally
- End with benefit or CTA

### H2/H3 Structure
- Clear, descriptive headers
- Include keywords where natural
- Make sections self-contained (GEO requirement)

### Required Sections (for GEO)
- FAQ section with 3-5 direct Q&As
- At least one comparison table or structured list
- Clear definitions for technical terms
- Key takeaways summary

---

## Step 5: Write the Article

### For Traditional SEO

- Primary keyword in title, H1, first 100 words
- Natural keyword distribution throughout (no stuffing)
- Internal linking opportunities noted
- 2000+ words for comprehensive coverage
- Clear meta description
- Descriptive H2/H3 headers

### For GEO (AI Citation Optimization)

**What AI platforms cite:**
- ChatGPT: Wikipedia-style comprehensive content, YouTube, Reddit
- Perplexity: Reddit discussions, community content, niche sources
- Google AI Overviews: High-authority sites, YouTube, structured content

**Content that gets cited:**
- Front-loaded facts and definitions (first 2 paragraphs)
- Structured data (tables, lists, step-by-step)
- FAQ sections matching how people prompt AI
- Comparison content ("X vs Y", "Top 10")
- Original data/statistics
- Clear expert signals (credentials, experience)

**Page requirements:**
- Fast load times (AI has 1-5 second timeout)
- Clean HTML structure
- Schema markup (FAQ, HowTo, Article)

### Voice/Style (from PROFILE.md)

- Direct, no fluff
- Data-driven with specific numbers
- First person, conversational
- Include real client results/stories when relevant
- Short sentences, often fragments
- Bold for emphasis
- Avoid corporate jargon

---

## Step 6: Save Output

### Save Location
```
{{CONTENT_DIR}}/[folder-title]/seo-article.md
```

If repurposing from existing research, use the same folder.
If fresh topic, create a new folder (4-6 words, kebab-case).

### File Structure

Include in the saved file:
1. SEO metadata block (title, meta description, keywords)
2. Full article content
3. Schema markup suggestions (FAQ, Article, HowTo)
4. Suggested internal links
5. Social snippets for promotion

---

## Step 7: Publish to Website

**After user approval of the blog content:**

### Workflow

1. **Ask for publish confirmation:**
   - "Would you like me to publish this to {{DOMAIN}}?"
   - Only proceed if user explicitly confirms

2. **Generate slug from title:**
   - Convert title to kebab-case (e.g., "What Is Exa AI" → "what-is-exa-ai")

3. **Convert markdown to TSX:**
   - Transform article content to React component format
   - Use existing blog post styling patterns

4. **Create files in {{PROJECT_NAME}}:**

   **a) Create content file:**
   `{{PROJECT_DIR}}/content/blog/content/[slug].tsx`

   **b) Add metadata to posts.ts:**
   `{{PROJECT_DIR}}/content/blog/posts.ts`

   **c) Register import in index.ts:**
   `{{PROJECT_DIR}}/content/blog/content/index.ts`

5. **Git commit and push to main:**
   ```bash
   cd ~/{{PROJECT_NAME}}
   git add content/blog/
   git commit -m "Add blog: [title]"
   git push origin main
   ```

6. **Confirm deployment:**
   - Vercel auto-deploys from main
   - Provide the live URL: `https://{{DOMAIN}}/blog/[slug]`

### TSX Component Template

```tsx
"use client";

import Link from "next/link";

export default function [PascalCaseSlug]Content() {
  return (
    <>
      <p className="text-lg leading-relaxed mb-6">[Intro paragraph]</p>

      <nav className="bg-muted/50 rounded-lg p-6 mb-8">
        <h2 className="text-lg font-semibold mb-4">Table of Contents</h2>
        <ul className="space-y-2">
          <li><a href="#section-id" className="text-primary hover:underline">[Section]</a></li>
        </ul>
      </nav>

      <h2 id="section-id" className="text-2xl font-bold mt-12 mb-4">[Section Title]</h2>
      <p className="mb-4">[Content]</p>

      {/* Tables */}
      <div className="overflow-x-auto my-8">
        <table className="min-w-full border-collapse">
          <thead><tr className="bg-muted"><th className="border p-3 text-left">[Header]</th></tr></thead>
          <tbody><tr><td className="border p-3">[Cell]</td></tr></tbody>
        </table>
      </div>

      {/* FAQ Section */}
      <h2 id="faq" className="text-2xl font-bold mt-12 mb-4">Frequently Asked Questions</h2>
      <div className="space-y-6">
        <div>
          <h3 className="font-semibold mb-2">[Question]</h3>
          <p>[Answer]</p>
        </div>
      </div>
    </>
  );
}
```

### Metadata Format

Add to `posts.ts` array:
```typescript
{
  slug: "[slug]",
  title: "[Title from article]",
  excerpt: "[First 1-2 sentences or custom excerpt]",
  date: "[Month DD, YYYY]",
  author: "{{YOUR_NAME}}",
  readTime: "[X] min read",
  metaDescription: "[Meta description from article]"
}
```

### Import Registration

Add to `content/index.ts`:
```typescript
"[slug]": dynamic(() => import("./[slug]")),
```

### Conversion Rules

| Markdown | TSX |
|----------|-----|
| `# H1` | (use H2 instead, H1 is the title) |
| `## H2` | `<h2 id="kebab-id" className="text-2xl font-bold mt-12 mb-4">` |
| `### H3` | `<h3 className="text-xl font-semibold mt-8 mb-3">` |
| `**bold**` | `<strong>` |
| `*italic*` | `<em>` |
| `[link](url)` | `<a href="url" className="text-primary hover:underline">` or `<Link>` for internal |
| `` `code` `` | `<code className="bg-muted px-1 rounded">` |
| Code block | `<pre className="bg-muted p-4 rounded-lg overflow-x-auto"><code>` |
| `> quote` | `<blockquote className="border-l-4 border-primary pl-4 italic my-6">` |
| `- list` | `<ul className="list-disc pl-6 space-y-2"><li>` |
| `1. list` | `<ol className="list-decimal pl-6 space-y-2"><li>` |

---

## Content Template

```markdown
---
title: [Keyword-Rich Title - Under 60 chars]
meta_description: [150-160 chars with keyword and benefit]
primary_keyword: [main keyword]
secondary_keywords: [list of related keywords]
date: [YYYY-MM-DD]
author: {{YOUR_NAME}}
---

# [H1 Title - Can be longer/different from SEO title]

[Hook paragraph - front-load the key insight/claim. State the most important thing immediately. AI citations often pull from first 2 paragraphs.]

[Brief overview of what the article covers - helps AI understand scope]

## Table of Contents
- [Section 1]
- [Section 2]
- [FAQ]
- [Key Takeaways]

---

## [H2: First Major Section]

[Content with clear, extractable facts. Each section should be self-contained - able to stand alone if AI extracts just this section.]

### [H3: Subsection if needed]

[Specific details, data, examples]

---

## [H2: Second Major Section]

[Include specific data, stats, numbers - not vague claims]

**Key insight:** [Bold the most important point in each section]

---

## [Comparison/Framework Section]

[Tables and structured comparisons are GEO gold - AI loves extracting these]

| Option A | Option B | Option C |
|----------|----------|----------|
| Detail   | Detail   | Detail   |
| Pro/Con  | Pro/Con  | Pro/Con  |

---

## [H2: How-To or Actionable Section]

Step-by-step instructions rank well for both SEO and GEO:

1. **Step one** - Brief explanation
2. **Step two** - Brief explanation
3. **Step three** - Brief explanation

---

## Frequently Asked Questions

**Q: [Exact question people search/ask AI]**

A: [Direct, concise answer in 2-3 sentences. Front-load the answer, then add context.]

**Q: [Another common question]**

A: [Direct answer. These FAQ sections are prime targets for AI citations.]

**Q: [Technical or clarifying question]**

A: [Clear definition or explanation.]

---

## Key Takeaways

- [Bullet point summary - easy for AI to extract]
- [Reinforce main points]
- [Include actionable insight]
- [Reference any data/stats mentioned]

---

## [CTA Section - Natural, Not Pushy]

[Natural call-to-action related to {{BRAND_NAME}} services. Weave it in, don't hard sell.]

---

## Schema Markup Suggestions

### FAQ Schema
```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "[Question text]",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "[Answer text]"
      }
    }
  ]
}
```

### Article Schema
```json
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "[Title]",
  "author": {
    "@type": "Person",
    "name": "{{YOUR_NAME}}",
    "url": "https://{{DOMAIN}}"
  },
  "datePublished": "[YYYY-MM-DD]",
  "description": "[Meta description]"
}
```

### HowTo Schema (if applicable)
```json
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "[How to title]",
  "step": [
    {
      "@type": "HowToStep",
      "name": "[Step name]",
      "text": "[Step description]"
    }
  ]
}
```

---

## Suggested Internal Links

- [Link to related {{BRAND_NAME}} content]
- [Link to relevant service page]

---

## Social Snippets

**LinkedIn:**
[2-3 sentence hook for LinkedIn post promoting the article]

**Twitter/X:**
[Tweet-length summary with key insight]
```

---

## GEO Optimization Checklist

**Before saving, verify all items:**

- [ ] Key facts front-loaded in first 2 paragraphs
- [ ] Clear, descriptive H2/H3 headers (not clever, descriptive)
- [ ] At least one comparison table or structured list
- [ ] FAQ section with 3-5 direct Q&As
- [ ] Specific numbers/stats included (not vague claims like "many" or "significant")
- [ ] {{YOUR_NAME}}'s expertise/experience referenced (E-E-A-T signals)
- [ ] Self-contained sections that can stand alone if extracted
- [ ] Clear definitions for any technical terms
- [ ] Meta description written (150-160 chars)
- [ ] Primary keyword in title, H1, first 100 words
- [ ] 2000+ words total
- [ ] Schema markup suggestions included

---

## Target Topics for {{BRAND_NAME}}

These topics align with {{YOUR_NAME}}'s expertise and {{BRAND_NAME}}'s services:

- Outbound/cold email strategy
- AI for sales (AI SDRs, Clay, automation)
- B2B lead generation
- Agency/scaling business
- Claude Code (technical AI usage)
- Multi-channel outreach
- LinkedIn outreach
- Data scraping and enrichment
- Sales development best practices

---

## Why This Matters: GEO Context

**The shift happening now:**
- AI search is capturing traffic from traditional search
- 40% of Gen Z uses TikTok/AI over Google for searches
- Perplexity, ChatGPT, and Google AI Overviews are citing content directly
- If you're not optimized for AI citation, you're invisible to a growing audience

**What gets cited:**
- Comprehensive, authoritative content
- Structured, extractable information
- Clear expert signals and credentials
- Original data and specific numbers
- Direct answers to specific questions

**What doesn't get cited:**
- Vague, fluffy content
- Wall-of-text without structure
- Missing author credentials
- No original data or insights
- Slow-loading pages