seo-geo-audit — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited seo-geo-audit (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You audit a live website the way an AI answer engine sees it: from the server-rendered HTML (what curl returns), not the JavaScript-rendered DOM a browser shows. The two differ, and the gap is where most AI visibility silently dies.
The grade has two halves of equal weight:
references/INTELLIGENCE-RUBRIC.md.Final grade = 0.5 × foundational + 0.5 × intelligence, mapped to A-F.
This skill produces a diagnosis. To then apply fixes to a codebase, hand off to the `seo-geo-fix` skill. For the full battle-tested method behind the checks, read ../../references/PLAYBOOK.md.
If the user already gave a URL, don't re-ask, confirm depth and go.
Requires only Node 18+ (uses global fetch). No npm install.
node <skill-path>/scripts/audit.mjs <url> --max-pages=10 --out=<out-dir>/seo-geo-audit.jsonThe script crawls (sitemap + robots.txt + internal links), parses each page's raw HTML, runs the checks, scores them weighted, and writes JSON + a printed summary. If it crawls 0 pages it exits non-zero, do not fabricate a score, report the error.
Key fields:
scoring.foundationalScore (0-100) and scoring.foundationalGrade, final, do not change.scoring.categories, score per category, worst first. The bottleneck at a glance.checks, every check with status + detail.prioritizedFixes, fails then warns, heaviest weight first.pagesForReview, up to 5 richest pages with title, headings, schemaTypes, author,dates, wordCount, and geoSignals. Use these for step 4.
Read references/INTELLIGENCE-RUBRIC.md and score each dimension 0-5 using only what you observed in pagesForReview. Write the rationale before the number. You are an AI agent that just landed on this site from a web search, would you cite it?
Dimensions: Answer Readiness · Quotability · Evidence Density · Content Depth · Structure & Schema · Brand Authority signals.
intelligenceScore = (sum of 6 scores / 30) × 100.
final = round(0.5 × foundationalScore + 0.5 × intelligenceScore)Grade: A ≥90, B ≥80, C ≥70, D ≥60, E ≥50, else F.
Produce a report with:
always off-site once fundamentals are clean; see PLAYBOOK.md §1).
how to verify (a falsifiable curl or GSC check).
(YouTube > Reddit ≈ Wikipedia > LinkedIn > PR). Say so explicitly.
Optionally render assets/report-template.html filled with the JSON for a shareable report.
AI engines retrieve at the passage level, not the page level. scripts/chunk-sim.mjs <url> splits the page the way a RAG pipeline would and scores each chunk's standalone citability, flagging blocks that would be useless if retrieved alone (open with a pronoun/connective, no named subject, no concrete signal). Use it to action strategy 1 in ../../references/geo-frontier-strategies.md.
The audit is zero-dependency and measures citability/crawlability, not ranking. To add real ranking data, scripts/serp-enrich.mjs calls DataForSEO if DATAFORSEO_LOGIN/DATAFORSEO_PASSWORD are set (it exits cleanly with setup notes if not). Free alternative: Google Search Console. See ../../references/data-providers.md. Keep enrichment separate so the A-F foundational score stays reproducible without any key.
See references/RULES.md for the full catalog with weights. Highlights that catch the silent killers:
<h1>, host consistency, sitemap, llms.txt, answer-first/TL;DR, question headings, evidence density, freshness, named author.Pull these in when relevant; do not load them all up front.
references/RULES.md: the full deterministic check catalog with weights and curl verifications.references/INTELLIGENCE-RUBRIC.md: the 6-dimension scoring rubric for the intelligence half.../../references/PLAYBOOK.md: the full field method and every gotcha behind the checks.../../references/statistics-2026.md: sourced, dated GEO data and citation-lift multipliers (and what was debunked). Use it to justify recommendations.../../references/ai-crawlers.md: the exact AI crawler user-agents and robots.txt handling, for the ai-bots-allowed finding.../../references/platform-profiles/: how each engine (ChatGPT, Perplexity, Gemini, Claude, AI Overviews) retrieves and cites, so fixes target the right mechanism.../../references/geo-frontier-strategies.md: seven retrieval-mechanic GEO strategies, including the chunk-level approach behind scripts/chunk-sim.mjs.../../references/tactics-spectrum.md: the white/gray/black-hat map; stay white-hat and recognize the rest.../../references/data-providers.md and ../../tools/dataforseo/: optional real SERP/keyword/rank data.No em-dashes (commas, colons, parentheses instead). No emojis in client-facing copy. In finance/health/legal, minimize "AI" hype (it reads as a negative signal there). Never expose the client's internal tech/vendors. Measure live with curl, never quote scores from memory.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.