Google seo audit
Skill bsisduck/google-search-ads-analytics-docs/.claude/skills/google-seo-audit
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).From its SKILL.md
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.
SKILL.md
5.5 KB, ~1.3k tokens by cl100k_base, 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.
What ships with it: 1 file
7.7 KB alongside SKILL.md, 1 of them executable
- fetch_page.pyruns7.7 KB