$npx -y skills add yoyothesheep/claude-skills --skill aeo-topic-researchResearch AEO (Answer Engine Optimization) opportunities by discovering what questions AI engines are actually answering in your niche, which domains and pages they're citing, and what content formats are winning citations.
| 1 | # AEO Topic Research Skill |
| 2 | |
| 3 | This skill identifies what to create for AEO, and how to present it. |
| 4 | |
| 5 | This skill pulls from three data sources: **Ahrefs Brand Radar** (when available) for AI question volumes and citation frequency data, **Reddit** for authentic user language and unmet needs, and **direct page crawls** of top-cited competitor pages for content format and structure signals. When Ahrefs is unavailable, AI engine queries and web search replace Brand Radar — Reddit and page crawls run regardless. |
| 6 | |
| 7 | ## When to Use This Skill |
| 8 | |
| 9 | - User wants to know what topics to target for AEO/AI search |
| 10 | - User wants to understand what their competitors are getting cited for |
| 11 | - User wants to identify content gaps in AI-cited results for their niche |
| 12 | - User wants to know which AI engines (ChatGPT, Perplexity, etc.) to prioritize |
| 13 | |
| 14 | ## Core Workflow |
| 15 | |
| 16 | Step 0. **[Coordinator]** Understand the user's site — scan codebase or crawl URL to extract topics, content themes, and vocabulary |
| 17 | Step 1. **[Coordinator]** Gather Input — brand, competitors, market/niche, AI engines |
| 18 | Step 2. **[Coordinator]** Orchestrate agents — launch Haiku agents in two waves |
| 19 | Steps 3-5. **[Haiku Brand Radar Agents, parallel per AI engine]** Discover AI questions (Step 3), identify cited domains (Step 4), identify cited pages (Step 5) |
| 20 | Step 6. **[Haiku Reddit Agent]** Mine Reddit language — search and fetch threads per topic cluster (launched after Wave 1 with topic clusters from Brand Radar results) |
| 21 | Step 7. **[Haiku Page Crawl Agents, parallel per URL]** Crawl top cited pages — extract content format and structure signals |
| 22 | Steps 8-11. **[Sonnet Agent]** Synthesize patterns, score opportunities, surface content presentation recommendations, generate report |
| 23 | |
| 24 | --- |
| 25 | |
| 26 | ## Agent Architecture |
| 27 | |
| 28 | ### Coordinator (main Claude) |
| 29 | Handles Steps 1–2: gathers user input and orchestrates agents in two waves. Passes AI engine + market context to Brand Radar agents, passes topic clusters (from Brand Radar results) to the Reddit agent, and passes cited URLs to page crawl agents. Then passes all payloads to the Sonnet agent. |
| 30 | |
| 31 | ### Haiku Brand Radar Agents |
| 32 | - One agent per AI engine (chatgpt, perplexity, google_ai_overviews, gemini) |
| 33 | - Launched in parallel — Wave 1 |
| 34 | - Job: Run Brand Radar API calls for that engine — questions (Step 3), cited domains (Step 4), cited pages (Step 5) — mechanical data extraction only |
| 35 | - Output: structured JSON payload (see Brand Radar Agent Output Contract) |
| 36 | |
| 37 | ### Haiku Reddit Agent |
| 38 | - Single agent — launched in Wave 2 after Brand Radar results are available |
| 39 | - Job: Run web searches and fetch Reddit threads for the topic clusters identified in Brand Radar results |
| 40 | - Output: structured JSON payload (see Reddit Agent Output Contract) |
| 41 | |
| 42 | ### Haiku Page Crawl Agents |
| 43 | - One agent per top cited URL — see sampling rule below for URL selection |
| 44 | - Launched in parallel — Wave 2, alongside the Reddit agent |
| 45 | - Job: Fetch page and extract content format and structure signals — no analysis |
| 46 | - Output: structured JSON payload (see Page Crawl Agent Output Contract) |
| 47 | |
| 48 | ### Sonnet Synthesis Agent |
| 49 | - Single agent, runs after all Haiku agents complete |
| 50 | - Receives all Haiku JSON payloads |
| 51 | - Job: synthesize patterns, score content opportunities, write content presentation recommendations, generate final report |
| 52 | - Output: final report |
| 53 | |
| 54 | --- |
| 55 | |
| 56 | ## COORDINATOR |
| 57 | |
| 58 | ## Step 0: Understand the User's Site |
| 59 | |
| 60 | Before asking for any input, extract topics, content themes, and vocabulary from the user's site. This context informs the `market` parameter and seeds topic cluster discovery. |
| 61 | |
| 62 | **If running inside a codebase** (check for content files — `.md`, `.mdx`, `.tsx` routes, blog post directories): |
| 63 | - Glob for content files: `**/*.md`, `**/*.mdx`, `app/**/page.tsx`, `src/content/**/*` |
| 64 | - Read titles (H1s, frontmatter `title`), headings (H2/H3), and meta descriptions from a sample of 10–20 files |
| 65 | - Extract: main topic areas, recurring vocabulary, content types (guides, tools, data posts, comparisons) |
| 66 | |
| 67 | **If no codebase** (running in Claude Web or no content files found): |
| 68 | - WebFetch the user's homepage URL |
| 69 | - Extract: page title, H1, main nav links, H2 section headings, any visible blog/content index |
| 70 | - If a `/blog`, `/guides`, or `/resources` path exists, fetch it and extract post titles |
| 71 | |
| 72 | **Output of Step 0:** A `site_context` object used throughout the skill: |
| 73 | ```json |
| 74 | { |
| 75 | "site_context": { |
| 76 | "main_topics": ["AI-proof careers", "automation risk by job", "future-proof skills"], |
| 77 | "content_types": ["data-driven guides", "career comparisons", "industry reports"], |
| 78 | "vocabulary": ["AI-resistant", "automation-proof", "durable skills", "career pivots"], |
| 79 | "existing_pages": ["sample titles or slugs"], |
| 80 | "inferred_market": "careers safe from AI automation" |
| 81 | } |