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.mdSKILL.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