AI SEO
by coreyhaines31 / marketingskills
Optimize content for AI search engines, get cited by LLMs, or appear in AI-generated answers.
Audits a live website for AI-engine discoverability (AEO/GEO).
Listed ·Updated
Install data from skills.sh
Audit Website AEO is an AI SEO (GEO and AEO) skill for AI agents, published in the seoskills.sh catalog. Reach for it when your work involves answer and generative engine optimization for AI Overviews, Perplexity, and ChatGPT. Install it with one command and it runs inside your own agent, so the work happens in your workflow, not a separate SEO tool.
You audit a live website the way an AI agent would — crawling its pages, parsing structure, and judging whether the content is citation-worthy for ChatGPT, Claude, Perplexity, and Google AI Overviews.
The audit has two halves:
Final score = 0.5 × foundational + 0.5 × intelligence, mapped to an A-F grade.
This skill produces a diagnosis. To then fix a codebase, hand off to the improve-aeo-geo skill.
Follow this sequence exactly.
Ask the user for:
workspace/<customer-name>/ if working a customer project.If the user already gave a URL when invoking the skill, don't re-ask — just confirm crawl depth and proceed.
Run the bundled script from this skill's scripts/ directory. It requires only Node 18+ — no npm install.
node <skill-path>/scripts/aeo-audit.mjs <url> --max-pages=10 --out=<output-dir>/aeo-audit.json
The script crawls (sitemap + robots.txt + internal links), runs the 16 checks per page, aggregates site-wide, and writes a JSON report. It also prints a human-readable summary. Tell the user the foundational score and the failed checks.
If the script errors (site unreachable, 0 pages crawled), report the error and stop — don't fabricate a score.
Read the aeo-audit.json file. The key fields:
scoring.foundationalScore — the deterministic score (0-100). This is final — do not change it.checks — the 16 site-wide checks with pass/fail and details.pagesForReview — up to 5 representative pages (home + richest content pages), each with an aiView object containing title, metaDescription, h1, headings, schemaTypes, jsonLdSummary, textExcerpt, internalLinkCount, author, publishedDate, modifiedDate. Use these for Step 4.prioritizedFixes, worstPages, coverage, heuristicIntelligenceSignals — supporting context. The heuristic signals are a deterministic prior — a sanity check, not the real evaluation.You are an AI agent that just found this site via web search. A user asked you a question and you landed here. Decide: would you cite this site in your answer?
Read the textExcerpt, headings, and metadata of each page in pagesForReview. Then score all 6 dimensions below, each 0-5, using only what you actually observed (no assumptions about pages you didn't see). Write the rationale before the score.
Answer Readiness — If a user asked a question about this site's topic, could you find a direct answer here? The #1 factor — content answering questions in the first paragraph gets 4.8x more citations.
Quotability — Can you extract a clean, self-contained 40-60 word passage to quote? Comparison tables get 2.8x citations; FAQ blocks +156%.
Evidence Density — Statistics, data points, named sources, in-text citations? Adding in-text citations = +115% visibility; statistics = +40% citation rate.
Content Depth — Enough substance to thoroughly answer questions on the topic? Long-form (2000+ words) gets 3x more citations.
Freshness — Current enough to cite confidently? 76% of ChatGPT's most-cited pages were updated in the last 30 days.
Structural Clarity — Does the HTML parse cleanly into readable text? A prerequisite — clean heading hierarchy = 3.2x more citations.
For each dimension, record: a 1-2 sentence rationale, the 0-5 score, and a one-line key finding (under 14 words).
average(6 dimension scores) × 20 → rounds each 0-5 to 0-100.round(0.5 × foundationalScore + 0.5 × intelligenceScore).| Grade | Range | Grade | Range | Grade | Range |
|---|---|---|---|---|---|
| A+ | 95-100 | B+ | 80-84 | C | 60-64 |
| A | 90-94 | B | 75-79 | C- | 55-59 |
| A- | 85-89 | B- | 70-74 | D | 40-54 |
| C+ | 65-69 | F | below 40 |
Sanity-check your intelligence score against heuristicIntelligenceSignals in the JSON. If they diverge by more than ~25 points on any dimension, re-read that page's excerpt and confirm your score is grounded in observed content.
Write a Markdown report to <output-dir>/aeo_audit_report.md using the format in Report Format below. Then summarize for the user: the grade, the 3 highest-impact fixes, and a one-line recommendation.
If the user wants to act on the findings:
improve-aeo-geo skill, passing this report as input.Run by the script. For reference (id — what it verifies — points):
| Check | Verifies | Pts |
|---|---|---|
title | <title> present, 10+ chars | 10 |
meta-description | Meta description present, 50+ chars | 10 |
canonical | <link rel="canonical"> present | 8 |
h1 | Exactly one <h1> | 8 |
schema | At least 1 JSON-LD block | 8 |
schema-types | A recognized schema.org @type is used | 8 |
og | og:title and og:description present | 8 |
internal-links | 5+ internal links | 10 |
image-alt | 80%+ of images have alt text | 8 |
text-depth | 250+ words of body text | 12 |
indexability | No noindex directive | 10 |
ai-meta-tags | No nosnippet / noai / noimageai | 6 |
heading-hierarchy | 2+ heading levels, no skipped levels | 6 |
llms-txt | Valid llms.txt (heading + links + 100+ chars) | 10 |
ai-bot-access | robots.txt does not block 9 major AI crawlers | 12 |
rss-feed | RSS or Atom feed discoverable | 8 |
A site-wide check passes when 80%+ of crawled pages pass it (the script handles aggregation). Foundational score = earned points ÷ 142 × 100.
# AEO/GEO Audit — [domain]
**Audited:** [date] · **Pages crawled:** [N]
## Score
| | Score | |
|---|---|---|
| Foundational (16 checks) | XX/100 | |
| Intelligence (6 dimensions) | XX/100 | |
| **Final** | **XX/100** | **Grade: X** |
[One-sentence verdict on AI-citation readiness.]
## Foundational Checks
[Table of the 16 checks: ✓/✗, label, detail. Group failures at the top.]
## Intelligence Evaluation
For each of the 6 dimensions: score (X/5 → XX/100), rationale, key finding.
## Prioritized Fixes
Numbered list, highest impact first. For each: what to change, why it matters,
impact/effort. Pull from `prioritizedFixes` and your dimension findings.
## Weakest Pages
[From `worstPages` — URL and per-page %.]
## Recommendation
[2-3 sentences: biggest opportunity, and whether to run improve-aeo-geo next.]
textExcerpt / headings / metadata in pagesForReview. No assumptions about unseen pages.improve-aeo-geo.All statistics above are from verifiable primary research:
| Claim | Source |
|---|---|
| Quotations = +41% visibility; Statistics = +33%; Cite Sources = +28%; in-text citations = +115% for lower-ranked sites | Aggarwal et al., "GEO: Generative Engine Optimization," KDD 2024 (arXiv) |
| 44.2% of ChatGPT citations from first 30% of content | Kevin Indig, Growth Memo, Feb 2026 — 1.2M AI answers |
| Comparison tables 2.8x citations; FAQ blocks +156% | AirOps, 2025 — structuring content for LLMs |
| Clean heading hierarchy = 3.2x more citations vs unstructured | AirOps, 2025 |
| 76% of ChatGPT's most-cited pages updated within 30 days; AI cites content 25.7% fresher than organic | Ahrefs, 2025 — 17M citations across 7 AI platforms |
| Long-form (2000+ words) gets 3x more citations | SE Ranking, Nov 2025 — 2.3M pages, 295K domains |
Not using the CLI? Copy the SKILL.md and paste it straight into ChatGPT, Claude, or any agent.