AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Audit Website Aeo

skill-onvoyage-ai-gtm-engineer-skills-audit-website-aeo · by onvoyage-ai

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. Use to get a baseline before improve-aeo-geo, or to measure progress after changes.

No reviews yet
0 installs
3 views
0.0% view→install

Install

$ agentstack add skill-onvoyage-ai-gtm-engineer-skills-audit-website-aeo

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-onvoyage-ai-gtm-engineer-skills-audit-website-aeo)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Audit Website Aeo? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

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:

  1. Website URL (required) — the live site to audit.
  2. Crawl depth (optional) — how many pages to crawl. Default 10, max 30.
  3. Output location (optional) — where to save the report. Default: current directory, or workspace// 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 /scripts/aeo-audit.mjs  --max-pages=10 --out=/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.

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 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.

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

  1. Intelligence score = average(6 dimension scores) × 20 → rounds each 0-5 to 0-100.
  2. Final score = round(0.5 × foundationalScore + 0.5 × intelligenceScore).
  3. 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 /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-geo skill, 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 | ` present, 10+ chars | 10 | | meta-description | Meta description present, 50+ chars | 10 | | canonical | present | 8 | | h1 | Exactly one | 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 in pagesForReview. 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) | | 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 |

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.