AEO Toolkit skills
Claude Skills that give an agent the full method for Answer Engine Optimization: how to make a site reachable, understandable and citable by ChatGPT, Claude, Perplexity, Gemini, Google AI Overviews and Copilot, implemented in the stack the agent is actually working in.
The MCP servers answer “what is wrong, and how is it performing?” These skills answer “how do I fix it here, and how do I know it worked?” Each one follows the same loop: detect with a rule or tool, decide whether it is really a problem, implement with per-stack recipes, then verify with the same check.
Start with aeo. It reads an audit, orders the work and hands each failing rule
to its owner.
Every audit rule has an owner
The scoring engine has 58 rules. rule-map.json assigns each one to exactly one
skill, and a test in packages/scoring fails CI if any of these drift:
- a rule exists without an owning skill
- a mapped skill does not exist
- the router’s copy of the map diverges
The skills
| Skill | Fixes | Uses |
|---|---|---|
aeo | Router: audit → triage → hand off | analyze_website_aeo |
| Access | ||
aeo-ai-crawler-access | AI bots blocked by robots.txt or a CDN; training vs search bots | analyze_website_aeo |
aeo-server-rendering | Content that only exists after JavaScript runs | analyze_website_aeo |
aeo-llms-txt | llms.txt, served without cannibalizing your pages | analyze_website_aeo |
aeo-indexability | Sitemaps, canonicals, noindex, redirects, hreflang, HTTPS | gsc_url_inspect, engine_divergence |
| Identity | ||
aeo-organization-entity | Organization JSON-LD, @id graph, consistent identity | analyze_website_aeo |
aeo-article-author-schema | Article + Person author markup | analyze_website_aeo |
aeo-faq-qa-schema | FAQPage / QAPage / HowTo, honestly scoped | analyze_website_aeo |
aeo-structured-data-validation | Invalid or conflicting structured data | analyze_website_aeo |
aeo-product-schema | Product / Offer / Review for stores | analyze_website_aeo |
aeo-local-business-schema | LocalBusiness, NAP consistency, Business Profile | check_ai_visibility |
| Extractability | ||
aeo-answer-first-content | Question headings, answer-first paragraphs, depth | discover_ranking_prompts |
aeo-site-structure | Breadcrumbs and internal linking | analyze_website_aeo |
aeo-page-metadata | Titles, descriptions, Open Graph, lang, viewport, alt text | gsc_ctr_gaps |
aeo-content-freshness | Honest dates across page, JSON-LD and sitemap | gsc_decay |
aeo-eeat-trust-signals | About, contact, policies, references | analyze_website_aeo |
| Off-site | ||
aeo-citation-earning | Where competitors get cited, mentions, outreach | backlink tools |
| Measurement | ||
aeo-visibility-tracking | Prompt sets, baselines, Perplexity citation share | visibility tools |
aeo-ai-referral-analytics | AI-assistant referral traffic in GA4 | ga4_run_report |
seo-bing-coverage | Google vs Bing gaps | engine_divergence, bing_* |
seo-traffic-drop | Traffic dropped. What caused it? | gsc_traffic_drop |
seo-cannibalization | Are my own pages competing? | gsc_cannibalization |
seo-content-decay | What content needs refreshing? | gsc_decay |
seo-high-intent-ctr | Buyer-intent searches that rank but lose the click | gsc_ctr_gaps |
Implementation recipes live in each skill’s references/ (Next.js, Astro, WordPress, static HTML,
and Shopify/WooCommerce where relevant). The agent only loads the one for the stack in front of
it.
Install
Skills are plain directories. Copy the ones you want into your skills folder:
# Claude Code, for one projectmkdir -p .claude/skillscp -r path/to/aeo-toolkit/skills/aeo* .claude/skills/
# or for every projectcp -r path/to/aeo-toolkit/skills/* ~/.claude/skills/They activate on their own when a request matches the description in the frontmatter. You
do not need to name the skill.
MCP servers: helpful, mostly optional
The aeo-* skills work without any MCP server. Each Detect step has a no-MCP fallback, for
example curl or view-source. Connecting the servers makes detection and verification faster
and more complete. The seo-* and measurement skills read Search Console, GA4, Bing or
Perplexity data, and they need the matching server.
| Server | Endpoint | Auth |
|---|---|---|
aeo-visibility | https://aeo.advancelabs.dev/api/mcp/ai-visibility/mcp | none |
aeo-backlink | https://aeo.advancelabs.dev/api/mcp/backlink/mcp | none |
aeo-search | https://aeo.advancelabs.dev/api/mcp/search/mcp | Google sign-in; Bing key optional |
Setup for each client is at advancelabs.dev/mcp.
On “no API keys” claims. Search Console requires OAuth. Anything promising GSC data with no authentication is either reading an already-authenticated local session or not reading Search Console at all.
What these will not do
- They don’t promise citations. A fix removes a known blocker. Whether an engine then cites you is measured, not assumed.
- The visibility tools see one engine.
check_ai_visibilityand its siblings query Perplexity, so their readings are Perplexity citations, not “AI” in general. - They can’t see competitors’ Search Console data. Competitor comparisons use public signals (citations, links) only.
- They don’t change anything remotely. Every MCP tool is read-only. Code changes happen in your repo, where you can review them.
Contributing a skill
Same bar as the rest of the repo:
- encode judgement a tool description cannot hold
- be explicit about what the data cannot answer
- never assert a cause you can’t evidence
- date every volatile fact (bot names, Google policies) in a
## Sourcessection, against a primary source
The frontmatter description decides whether the skill activates, so write it as when to use
this (including the phrase “Use when”), not as a title.
Behavioural evals live in evals/skills/<skill>/: a small broken site plus the prompt a user
would type. CI checks that every fixture really fails its target rules. To run the agents, use
SKILL_EVALS=1 pnpm --filter @advance-labs/chrome-extension exec vitest run src/lib/skill-evals.test.ts.
Each run copies the site and only the skill under test into a temp dir, runs claude -p, and
re-audits. Add an eval when you add a skill whose rules can be checked on a single page.
Two tests keep the skills honest:
packages/scoring/src/skills-map.test.tshere checks rule ownership.- A test in the private platform repo checks frontmatter, and checks that every MCP tool a skill names is registered on one of the three servers.
AEO Toolkit is an open-source instrument by Advance Labs.