Google seo audit
Skill bsisduck/google-search-ads-analytics-docs/.claude/skills/google-seo-audit
Official Google docs (Search/SEO, Search Console, Ads, GA4) as a validated local knowledge base (English) + two Claude Code skills: cited retrieval and a multi-agent SEO audit. Reproducible, measured (92% recall@5).
npx -y skills add bsisduck/google-search-ads-analytics-docs --skill google-seo-auditAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
This skill should be used when the user asks to "audit my page/site/repo", "scan for SEO", "check structured data / rich results", "is my page Google-ready", "SEO audit", "Google scanner", or wants prioritized, cited recommendations to improve a page in Google Search. It runs a full multi-agent SEO / discoverability audit of a web page - a live URL OR a local .html file in the current repo - grounded in the local Google documentation knowledge base (the google-search-ads-analytics-docs skill): it spawns one subagent per audit dimension and produces a scored report with fixes that cite the official Google docs (source_url).
SKILL.md
5.5 KB, as published. Nobody here has run it
Google SEO Audit - multi-agent page audit
Audits a page across every Google-discoverability dimension and returns a
scored report with prioritized, cited recommendations. Every recommendation
must be grounded in the local corpus via the google-search-ads-analytics-docs skill
(.claude/skills/google-search-ads-analytics-docs/search.py) and cite a Google source_url.
Fast path - the Workflow
For a thorough, adversarially-verified audit, run the bundled seo-audit
workflow (Workflow tool), saved at .claude/workflows/seo-audit.js. It implements
the four phases below and scales agents to the work - no fixed cap:
Snapshot -> Verify (one agent per dimension) -> Refute (adversarial
verifiers per finding, false positives dropped) -> Synthesize (AUDIT-<page>.md).
Pass the target as args (URL or local path); optional { refuters: N } raises the
adversarial panel size. If the Workflow tool isn't available, do the same steps
manually with the Task tool, below.
Step 1 - Pick the target(s)
- A live page: pass the URL.
- This repo (default when the user says "my page/repo"): find local pages
with
Glob "**/*.html"(ignore.venv/,node_modules/). The repo's page isapp/index.html. Audit each found page.
Step 2 - Snapshot (deterministic, run once per target)
Use a per-target output file so multiple pages don't clobber each other:
.venv/bin/python3 .claude/skills/google-seo-audit/fetch_page.py <url-or-path> --out /tmp/snap-<page-slug>.json
Produces a JSON of: status/headers/HTTPS, title, meta description, meta robots, canonical, viewport (mobile), lang + hreflang, H1/heading outline, word count, images+missing-alt, JSON-LD structured data (types + a parse-OK flag - not schema validation; the structured-data agent must still verify required props), Open Graph, analytics/ads tags (GA4/GTM/Ads), and robots.txt (remote only).
Step 3 - Fan out the audit (one subagent per dimension)
Spawn the dimensions in parallel (Task tool, or the Workflow). Give each agent
the snapshot JSON and tell it to consult google-search-ads-analytics-docs first - run
.venv/bin/python3 .claude/skills/google-search-ads-analytics-docs/search.py "<topic>" (and
--doc <doc_id> to resolve a citation), then read the matched files - and cite
source_url on every finding. Dimensions:
- Crawlability & Indexing - HTTP status, redirects,
meta robots/X-Robots-Tag, canonical, robots.txt, sitemap. KB:crawling-indexing/*. - On-page SEO & Content - title (len/uniqueness), meta description,
exactly one H1, heading hierarchy, content depth, helpful-content signals.
KB:
fundamentals/seo-starter-guide,creating-helpful-content,appearance/snippet,appearance/title-link. - Structured Data & Rich Results - JSON-LD presence, valid types, required
props, rich-result eligibility. KB:
appearance/structured-data/*. - Page Experience & Core Web Vitals - HTTPS, HSTS, mobile viewport,
intrusive-interstitial risk, CWV considerations. KB:
appearance/page-experience,appearance/core-web-vitals,crawling-indexing/mobile/*. - International (hreflang) -
lang, hreflang alternates, locale handling (only if the page is multilingual). KB:specialty/international/*. - Measurement & Tagging - GA4/gtag, GTM, Google Ads conversion, GA4
events/Measurement Protocol readiness. KB:
google-analytics/*,google-ads-help/*.
Each finding: {check, verdict: pass|warn|fail, evidence, recommendation, severity: high|medium|low, citation_url}.
Step 4 - Synthesize the report
Aggregate into AUDIT-<page>.md:
- Score: each dimension 0-100; overall = average (call out fails).
- Executive summary (3-5 lines).
- Prioritized fixes: a table sorted by severity -> effort, each with the
concrete change and a
source_urlcitation. - Per-dimension findings (pass/warn/fail with evidence).
- Be honest: don't invent issues; mark "N/A" where a dimension doesn't apply (e.g. hreflang on a single-language page).
Notes
- Requires the project venv (
.venv/bin/python3) with Scrapling, and thegoogle-search-ads-analytics-docsskill present for grounding. - Local files can't show HTTP-level signals (status/headers/HTTPS/robots.txt) - flag those as "deployment-dependent, verify on the live URL".
Safety
- Authorization: only audit pages you own or are explicitly authorized to
test.
fetch_page.pyissues a normal browser-like GET to the target and its/robots.txt; do not point it at internal/private hosts you don't control (it has no SSRF allow-list - it fetches whatever URL you pass). - No credentials, no writes to the target. The snapshot is read-only and is
written only to the local
--outJSON (or stdout). Nothing is sent anywhere except the HTTP GET to the page being audited.