aiskilloftheweek/substack-aeo-geo-optimizer
> Optimizes any Substack content for AEO (Answer Engine Optimization) and GEO (Generative Engine Optimization) — making it citable by ChatGPT, Perplexity, Claude, Gemini, and Google AI Overviews. Use this skill whenever the user provides a Substack URL or pastes Substack post content and wants to increase AI visibility, get cited by AI search engines, optimize for generative search, or asks things like "optimize this for AI search", "make this citable by ChatGPT or Perplexity", "GEO optimize this post", "AEO this article", "how do I get AI to cite my newsletter", "optimize for AI overviews", "make this show up in AI answers". Always trigger this skill when the goal is to make a Substack post more visible inside AI-generated answers, not just Google rankings. This is separate from SEO metadata optimization.
npx skills add https://github.com/aiskilloftheweek/claude-ai-skill-of-the-week --skill substack-aeo-geo-optimizer
Transforms a Substack post (URL or pasted text) into content that AI engines
(ChatGPT, Perplexity, Claude, Gemini, Google AI Overviews) are structurally
likely to cite in their answers.
Built on the CITED framework from Passionfruit's AEO methodology and Princeton
KDD 2024 GEO research showing 30-40% citation lift from structured optimization.
AI engines don't cite content at random. They cite content that:
Most Substack posts are written for human readers who tolerate narrative buildup.
AI engines are pattern-matching for extraction — they need the answer upfront,
the evidence inline, and the structure explicit.
If a URL is provided, fetch and read the full post content.
If text is pasted, read it directly.
Classify the post into one of these query types (this determines optimization priority):
| Query type | Signal | Primary AI citation format |
|---|---|---|
| Definitional | "What is X", "X explained" | Definition block (40-60 words), then depth |
| How-to / Process | "How to X", numbered steps | Numbered list with clear step verbs |
| Comparison | "X vs Y", "best X for Y" | Comparison table, named criteria |
| Opinion / Contrarian | "Why X is wrong", "The truth about X" | Named expert quotes, cited data |
| List / Roundup | "Best X", "Top Y tools" | Structured list with consistent criteria |
| Case study / Story | "How I did X", "My results with Y" | Result-first opening, metrics inline |
Score the existing post on each of the 5 CITED dimensions.
Mark each as ✅ Present / ⚠️ Weak / ❌ Missing.
Does the post make clear who it's for and what specific question it answers?
Does the content structure match the intent of someone asking this question to an AI?
Does the post contain verifiable, citable evidence?
Count: named statistics with source, expert quotes with attribution, specific data points.
Is the content structurally easy for an AI to lift and cite?
Does the post contain at least one thing no other source says in this way?
Original framework, proprietary data, personal result, counter-intuitive claim.
Output a structured report with these sections:
C — Context clarity: [✅/⚠️/❌] [1-line explanation]
I — Intent match: [✅/⚠️/❌] [1-line explanation]
T — Truth signals: [✅/⚠️/❌] [1-line explanation]
E — Extraction format: [✅/⚠️/❌] [1-line explanation]
D — Differentiation: [✅/⚠️/❌] [1-line explanation]
AI Citation Readiness: [LOW / MEDIUM / HIGH]
List the 3 most likely questions a user would ask ChatGPT or Perplexity that
this post *should* show up in — but probably doesn't yet.
Format:
1. "[Exact query a user would type]"
→ Currently blocked by: [what's missing]
2. "[Exact query a user would type]"
→ Currently blocked by: [what's missing]
3. "[Exact query a user would type]"
→ Currently blocked by: [what's missing]
The single highest-impact fix. Rewrite the post's opening paragraph as an
AEO-optimized direct-answer intro of 40-60 words.
Rules for this block:
Format:
ORIGINAL OPENING:
[first 50-80 words of original post]
AEO-OPTIMIZED OPENING (40-60 words):
[rewritten version]
Why this works: [1-line explanation of the structural change]
Generate 3-5 FAQ entries the post should include to capture question-based queries.
These are the questions people ask AI engines that this post answers (or should answer).
Format:
**Q: [Natural language question — how a user would actually ask an AI]**
A: [Direct answer in 2-4 sentences. Specific, not vague. Citable.]
**Q: [Question]**
A: [Answer]
Rules:
List the specific claims in the post that currently lack a named source,
and suggest what type of source would make them citable.
Format:
CLAIM: "[quote the unsourced claim]"
→ Source needed: [e.g., "Substack 2024 growth data", "email open rate benchmark study", "your own newsletter analytics"]
→ Why it matters: [why an AI would hesitate to cite this without evidence]
If the post has no unsourced claims, say so explicitly — that's a strength.
Quick wins the creator can implement in 15 minutes:
□ Add direct-answer intro (see Section 3 above)
□ Add FAQ block (see Section 4 above)
□ [List any missing headers that would help AI parse sections]
□ [Flag any specific stat that needs a source added]
□ [Note if post needs a comparison table]
□ [Note if URL slug should include primary keyword]
□ [Note if post's first 150 words bury the main point]
Only include fixes that apply to this specific post. Skip items that are already done.
Brief note on which AI engine this post is most likely to get cited by, and why:
Most likely platform: [ChatGPT / Perplexity / Google AI Overviews / Claude]
Reason: [1-2 sentences on why this content fits that platform's citation pattern]
Hardest platform to crack: [platform]
What's missing: [specific gap for that platform]
Platform citation patterns (reference only — don't show this to user):
If the user explicitly asks for a full rewrite (not just the report), apply all
Section 3-5 fixes to produce a complete AEO-optimized version of the post.
Rules for full rewrite:
What this skill does NOT do:
What makes a post uncitable by design (flag these):
If the post falls into one of these categories, say so directly and explain
why AEO optimization won't help, rather than forcing a framework that doesn't fit.
Always match the language of the input content.
If the Substack post is in Italian, the entire optimization report is in Italian.
If in English, in English.
Do not mix languages in the output.
Take aiskilloftheweek/substack-aeo-geo-optimizer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.