AGENT SKILLBY ONVOYAGE-AI
Audit website AEO/GEO skill
AT A GLANCE
Audit website AEO/GEO skill is an SEO agent skill from onvoyage-ai. Audits a live website for AI-engine discoverability (AEO/GEO). The onvoyage-ai/gtm-engineer-skills repository on GitHub has 1.3K stars and the MIT license. Its SKILL.md runs to about 3,100 words. To add it, run npx skills add onvoyage-ai/gtm-engineer-skills --skill audit-website-aeo
- SOURCE REPOSITORY
- onvoyage-ai/gtm-engineer-skills (opens GitHub in a new tab)
- REPO STARS
- SOURCE REPOSITORY
- LICENSE
- MIT
- CATEGORIES
- SKILL.MD SIZE
- 19.2 KB425 LINES
QUICK ANSWER
- WHAT IT IS01
- Audits a live website for AI-engine discoverability (AEO/GEO). Crawls the site, runs 16 deterministic checks plus a 6-dimension content evaluation, and produces a scored report (A-F) with prioritized fixes. The value is a focused slice of search and SEO workflows judgment, useful when several similar skills cover the same ground.
- INPUTS02
- Context for search and SEO workflows: your goals, audience, constraints, and any source material the skill asks for.
- OUTPUT03
- A ready-to-use result for search and SEO workflows: the analysis, copy, or recommendations the agent produces.
INSTALL
One command adds this skill from its source repository.
npx skills add onvoyage-ai/gtm-engineer-skills --skill audit-website-aeoREAD THE SKILL.MD BELOW BEFORE YOU RUN IT. SKILLS INSTRUCT YOUR AGENT.
SKILL.MD
The full file, as published in the source repository. Copy it, download it or open it on GitHub.
ON THIS PAGE · 22
Audit Website AEO/GEO Skill#
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:
- Foundational (50%) — 16 deterministic pass/fail checks run by a script. Reproducible, no judgment.
- Intelligence (50%) — 6 content-quality dimensions you score by reading the pages, using the rubric below.
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.
Workflow#
Follow this sequence exactly.
Step 1: Get inputs#
Ask the user for:
- Website URL (required) — the live site to audit.
- Crawl depth (optional) — how many pages to crawl. Default 10, max 30.
- Output location (optional) — where to save the report. Default: current directory, or
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.
Step 2: Run the deterministic audit#
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.jsonThe 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.
Step 3: Read the JSON report#
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 anaiViewobject containingtitle,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.
Step 4: Score the 6 intelligence dimensions#
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.
Rubric (0-5 each)#
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.
- 0 = No answers; purely promotional or navigational
- 1 = Vague content that talks around topics but never directly answers
- 2 = Some answers exist but buried deep, not in opening paragraphs
- 3 = Several questions answerable; some definition-first or FAQ-style content
- 4 = Most common questions answerable; answers lead sections
- 5 = Exceptional (dedicated FAQ blocks, definition-first paragraphs, Q&A format throughout)
Quotability — Can you extract a clean, self-contained 40-60 word passage to quote? Comparison tables get 2.8x citations; FAQ blocks +156%.
- 0 = No extractable content (interactive-only, single dense block)
- 1 = Content requires full-page context; no passage stands alone
- 2 = A few passages extractable but most need surrounding context
- 3 = Several self-contained paragraphs; some lists or structured blocks
- 4 = Good quotability (tables, lists, FAQ sections, clear answer blocks)
- 5 = Highly quotable (comparison tables, step-by-step blocks, definition paragraphs throughout)
Evidence Density — Statistics, data points, named sources, in-text citations? Adding in-text citations = +115% visibility; statistics = +40% citation rate.
- 0 = No evidence; only marketing copy and vague claims
- 1 = Vague claims only ("best in class", "industry leading")
- 2 = Mostly generalities; rare specific data points
- 3 = Some statistics and named sources; cites a few external sources
- 4 = High density (numbers, dates, named sources, links to references)
- 5 = Exceptional (statistics every 150-200 words, in-text citations throughout, verifiable metrics)
Content Depth — Enough substance to thoroughly answer questions on the topic? Long-form (2000+ words) gets 3x more citations.
- 0 = Empty or placeholder content only
- 1 = Minimal (a few sentences, no real substance)
- 2 = Thin (surface-level, missing key details a user would need)
- 3 = Adequate (covers main points but lacks sub-topics or examples)
- 4 = Rich (comprehensive coverage, multiple sub-topics, examples, data)
- 5 = Exceptional (authoritative depth, multi-faceted, a go-to reference)
Freshness — Current enough to cite confidently? 76% of ChatGPT's most-cited pages were updated in the last 30 days.
- 0 = No date signals; content appears abandoned or timeless-generic
- 1 = Dates present but clearly outdated (2+ years, stale references)
- 2 = Moderately dated; no "last updated" indicator
- 3 = Reasonably current OR explicit "last updated" date visible
- 4 = Recent content with update timestamps and current references
- 5 = Clearly current (recent dates, active maintenance evident)
Structural Clarity — Does the HTML parse cleanly into readable text? A prerequisite — clean heading hierarchy = 3.2x more citations.
- 0 = Unreadable (no text, blocked, non-semantic markup)
- 1 = Very poor (walls of text, no headings, topic unclear)
- 2 = Weak (some structure but confusing or inconsistent headings)
- 3 = Adequate (clear headings and paragraphs, topic identifiable)
- 4 = Good (clean H1-H2-H3 hierarchy, scannable, purpose obvious)
- 5 = Excellent (perfect heading outline, semantic HTML, zero noise)
For each dimension, record: a 1-2 sentence rationale, the 0-5 score, and a one-line key finding (under 14 words).
Step 5: Compute the final score#
- Intelligence score =
average(6 dimension scores) × 20→ rounds each 0-5 to 0-100. - Final score =
round(0.5 × foundationalScore + 0.5 × intelligenceScore). - Grade from the final score:
| 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.
Step 6: Write the audit report#
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.
Step 7: Hand off#
If the user wants to act on the findings:
- To fix a codebase → recommend the
improve-aeo-geoskill, passing this report as input. - To re-measure after fixes → re-run this skill on the same URL and compare scores.
The 16 deterministic checks#
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.
Report Format#
# 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.]Rules#
- Never fabricate the crawl. Always run the script. If it fails, report the failure — don't invent pages or scores.
- The foundational score is the script's output. Don't recompute or adjust it.
- Score intelligence only from observed content. Base every dimension score on
textExcerpt/headings/ metadata inpagesForReview. No assumptions about unseen pages. - Rationale before score. Write why, then the number — for every dimension.
- One report file, saved to the output directory. Don't scatter partial outputs.
- This skill diagnoses; it does not edit code. Code fixes are the job of
improve-aeo-geo.
Research References#
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 (opens in a new tab)) |
| 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 |
Supporting file: examples/anthropic-com-audit.md#
AEO/GEO Audit — anthropic.com#
Audited: 2026-05-16 · Pages crawled: 6
Example output produced by
audit-website-aeo. Real crawl data; the intelligence scores below were assigned by reading the page excerpts.
Score#
| Score | ||
|---|---|---|
| Foundational (16 checks) | 72/100 | |
| Intelligence (6 dimensions) | 63/100 | |
| Final | 68/100 | Grade: C+ |
The site is technically clean and well-written, but missing structured-data and freshness signals keep it from being an easy, confident citation source.
Foundational Checks#
| Check | Detail | |
|---|---|---|
| ✗ | Structured data present | 2/6 pages passed |
| ✗ | Schema types identified | 2/6 pages passed |
| ✗ | Content structure | 2/6 pages passed (heading levels skipped/single-level) |
| ✗ | llms.txt valid | No llms.txt found |
| ✗ | RSS/Atom feed | No RSS/Atom feed found |
| ✓ | Clear page title | 6/6 |
| ✓ | Meta description | 6/6 |
| ✓ | Canonical URL | 6/6 |
| ✓ | Single H1 heading | 6/6 |
| ✓ | Open Graph basics | 6/6 |
| ✓ | Internal linking | 6/6 |
| ✓ | Image alt coverage | 5/6 |
| ✓ | Readable content depth | 6/6 |
| ✓ | Indexable for discovery | 6/6 |
| ✓ | AI-accessible meta tags | 6/6 |
| ✓ | AI bot access | No AI bots blocked in robots.txt |
Intelligence Evaluation#
Answer Readiness — 3/5 (60/100). Product and guidance pages lead with clean definitions ("Anthropic Interviewer is a research tool, powered by Claude, that…"); the homepage is promotional and navigational. Several questions answerable, but no FAQ-first structure across the site.
Quotability — 4/5 (80/100). Self-contained passages and concrete metrics ("Claude Haiku 4.5 scores 73.3% on SWE-bench Verified") are easy to extract; two pages carry FAQPage structure. Strong — clear answer blocks and lists.
Evidence Density — 3/5 (60/100). Product pages cite hard numbers and sample sizes ("1,250 professionals", "81,000 people"); value/careers pages run on qualitative copy. No author attribution anywhere. Uneven — strong on product pages, thin elsewhere.
Content Depth — 3/5 (60/100). Every page clears the depth threshold, but the crawl surfaced only home + miscellaneous pages — no docs or blog corpus. Adequate; lacks a deep knowledge section.
Freshness — 3/5 (60/100). Some pages show visible recent dates ("Last
updated Jul 10, 2025"), but these are inline text, not machine-readable
article:modified_time meta tags — and there is no RSS feed. Current content,
weak machine-readable freshness signals.
Structural Clarity — 3/5 (60/100). Single H1 and clean titles throughout, but heading hierarchy passes only 2/6 pages and the homepage extract is noisy with repeated nav text. Readable, but the outline does not chunk cleanly.
Prioritized Fixes#
- Add JSON-LD structured data to all key templates (High impact / Medium
effort) — only 2/6 pages carry any schema. Add
Organization+WebSitesite-wide,Articleto content pages,Product/SoftwareApplicationto model pages. Agents rely on this to classify entities. - Publish a valid
llms.txt(Medium / Low) — none exists. A heading + curated links gives AI systems a trusted index of the site. - Emit machine-readable date meta tags (Medium / Low) — convert visible
"Last updated" dates into
article:published_time/article:modified_time. Freshness is a top citation driver. - Fix heading hierarchy (Medium / Low) — 4/6 pages skip levels or use one. Enforce H1 → H2 → H3 so passages chunk cleanly.
- Add an RSS/Atom feed (Medium / Low) — helps AI systems discover new announcements and releases.
Weakest Pages#
Recommendation#
The biggest, lowest-effort win is structured data — it fails on two-thirds of
pages and is a hard prerequisite for AI classification. Combined with llms.txt
and machine-readable dates, these fixes would lift the foundational score into
the 80s. Run improve-aeo-geo against the site's codebase to apply them, then
re-run this audit to confirm the delta.
Supporting file: README.md#
Audit Website AEO/GEO#
An agent skill that audits a live website for AI-engine discoverability — the way ChatGPT, Claude, Perplexity, and Google AI Overviews actually see it.
It crawls the site, runs 16 deterministic checks, then evaluates 6 content-quality dimensions and produces a single A-F score with prioritized fixes.
This skill diagnoses. To then fix a codebase, hand the report to improve-aeo-geo (opens in a new tab).
Install#
Clone the repo, then symlink or copy audit-website-aeo/ into ~/.codex/skills/ or ~/.claude/skills/. See the root README (opens in a new tab) for examples.
Requires Node 18+ for the crawler script (uses the built-in fetch). No npm install — the script is zero-dependency.
Usage#
/audit-website-aeoOr:
"Audit my website for AEO" "Check if AI engines can cite https://example.com (opens in a new tab)" "Run an AEO/GEO audit on [URL]"
The skill asks for a URL and crawl depth, runs the audit, and writes a report.
How it works#
- Crawl — Discovers pages via
sitemap.xml,robots.txt, and internal links (up to 30 pages), respectingrobots.txt. - Deterministic audit — A Node script runs 16 binary checks per page and aggregates site-wide (a check passes when 80%+ of pages pass it).
- Intelligence evaluation — The agent reads the richest pages and scores 6 dimensions 0-5 using a research-backed rubric.
- Scoring —
Final = 50% foundational + 50% intelligence, mapped to an A-F grade. - Report — A Markdown report with the score, failed checks, dimension findings, prioritized fixes, and weakest pages.
The 16 deterministic checks#
Title · meta description · canonical URL · single H1 · structured data (JSON-LD) · recognized schema types · Open Graph · internal linking · image alt coverage · text depth · indexability · AI-accessible meta tags · heading hierarchy · llms.txt · AI-bot access in robots.txt · RSS/Atom feed.
The 6 intelligence dimensions#
| Dimension | Question it answers |
|---|---|
| Answer Readiness | Can an agent find a direct answer in the opening paragraphs? |
| Quotability | Can a clean 40-60 word passage be extracted to quote? |
| Evidence Density | Are there statistics, data points, and named sources? |
| Content Depth | Is there enough substance to thoroughly answer questions? |
| Freshness | Does the content appear current enough to cite? |
| Structural Clarity | Does the HTML parse cleanly into readable text? |
The crawler script#
scripts/aeo-audit.mjs is a standalone, zero-dependency Node crawler and checker. The skill runs it for you, but you can also run it directly:
node scripts/aeo-audit.mjs https://example.com --max-pages=20 --out=aeo-audit.json| Flag | Default | Description |
|---|---|---|
--max-pages=N | 10 | Pages to crawl (max 30) |
--out=PATH | aeo-audit-report.json | JSON report path |
--no-out | — | Skip writing the JSON file |
--json | — | Print full JSON to stdout instead of a summary |
It prints a human-readable summary and writes a JSON report containing the foundational score, all 16 checks, prioritized fixes, weakest pages, and pagesForReview (the pages the agent reads for the intelligence evaluation).
Parsing note: the script parses HTML with regex/string ops, not a full DOM, so it has no dependencies but is slightly less precise than a browser. Checks measure presence and structure, which tolerates this well.
Where it fits in the workflow#
audit-website-aeo → improve-aeo-geo → audit-website-aeo (re-run)
diagnose fix the codebase measure the deltaRun it before improve-aeo-geo to get a baseline, and again afterward to confirm the score improved.
License#
MIT — see the root LICENSE (opens in a new tab).
FAQ
07 QUESTIONS
01What is the Audit website AEO/GEO agent skill?
Audits a live website for AI-engine discoverability (AEO/GEO). Crawls the site, runs 16 deterministic checks plus a 6-dimension content evaluation, and produces a scored report (A-F) with prioritized fixes. It is listed under SEO in the 100xLab agent skills directory.
02How do I install Audit website AEO/GEO skill in Cursor, Claude Code, or Codex?
Run npx skills add onvoyage-ai/gtm-engineer-skills --skill audit-website-aeo in the project where you want it, then ask your agent for the skill by name. The --skill flag installs only Audit website AEO/GEO skill, not every skill in the repository.
03What does the Audit website AEO/GEO skill SKILL.md cover?
The SKILL.md includes sections on Workflow, Step 1: Get inputs, Step 2: Run the deterministic audit, Step 3: Read the JSON report, Step 4: Score the 6 intelligence dimensions and Step 5: Compute the final score. Read the full text on this page or in plain markdown at /resources/agent-skills/onvoyage-ai-gtm-engineer-skills--audit-website-aeo--10y37kx/raw.
04Which agents can use Audit website AEO/GEO skill?
Audit website AEO/GEO skill installs with the cross-agent skills installer (npx skills add), which sets it up for agents such as Claude Code, Cursor and Codex. Each agent loads the SKILL.md when you ask for the skill by name.
05What license is Audit website AEO/GEO skill under?
The onvoyage-ai/gtm-engineer-skills repository declares the MIT license. Read the license file in the repository before you copy or redistribute the skill.
06Is Audit website AEO/GEO skill free to use?
Reading, copying and installing Audit website AEO/GEO skill costs nothing: it is published in a public GitHub repository under the MIT license. Reuse and redistribution follow that license.
07Where is the source of Audit website AEO/GEO skill?
Audit website AEO/GEO skill comes from https://github.com/onvoyage-ai/gtm-engineer-skills, which has 1.3K GitHub stars. The SKILL.md is at https://github.com/onvoyage-ai/gtm-engineer-skills/blob/HEAD/audit-website-aeo/SKILL.md. The author is onvoyage-ai.
Need an agent workflow built around your stack?
Tell us the workflow you want automated. We reply within 4 working hours (IST).
ATTRIBUTION
Audit website AEO/GEO skill was written by its original authors and is published in onvoyage-ai/gtm-engineer-skills (opens GitHub in a new tab) under the MIT license. All rights stay with the original authors.
100xLab did not write, maintain or endorse this skill. This page lists it for discovery. Repo stars belong to the source repository, not to the skill. Review any skill before you install it.