| name | seo-audit |
| description | Audit and optimize any website's SEO + GEO (AI/LLM visibility) + Core Web Vitals, then fix what's broken. Runs a portable, zero-dependency hard-gate audit over a build output directory (Astro/Next/Hugo/Jekyll/plain HTML) and a live-URL crawl/GEO audit (robots.txt AI-crawler policy, sitemap, llms.txt, on-page JSON-LD, canonical, security headers). Includes a battle-tested LCP playbook (7.5s → 1.5s mobile on the reference site): render-blocking CSS, critical-CSS split, font preload discipline, third-party JS deferral. Use when asked to: check/improve a site's SEO, raise a Lighthouse/PageSpeed score, fix slow LCP / Core Web Vitals, make a site discoverable by AI agents (ChatGPT/Claude/Perplexity/Gemini), add structured data, set up robots/sitemap/llms.txt, or review a site before launch. Distilled from the reference site's production build-time SEO gates. |
| compatibility | Claude Code, Claude Desktop, Cursor |
| keywords | ["seo-audit","seo","geo","ai-visibility","llms.txt","structured-data","json-ld","robots.txt","sitemap","canonical","lighthouse","pagespeed","core-web-vitals","lcp","render-blocking","critical-css","font-loading","LCP优化","性能优化","open-graph","schema.org","technical-seo","generative-engine-optimization","ai-crawler","indexnow","hard-gates","SEO体检","SEO优化","网站SEO","AI可见性","结构化数据","站点审计","上线前检查","搜索引擎优化","GEO优化","爬虫策略"] |
| metadata | {"author":"zeze","source":"a production site's build-time audit gates + worker SEO layer","openclaw":{"homepage":"https://github.com/Cosmofang/seo-audit","author":"zeze","runtime":{"node":">=18"},"permissions":["Reads files under the build-output directory you point it at (audit-seo.mjs)","Makes outbound HTTPS requests to the live URL you provide (audit-live.mjs)","Writes nothing — reports are printed to stdout / saved only where you redirect them"]}} |
You audit a website's technical SEO and GEO (Generative Engine Optimization — being found, cited, and recommended by AI assistants), report concrete problems ranked by impact, and apply fixes. This is an actionable harness, not just advice: two zero-dependency Node scripts do the measuring, the reference files tell you exactly what to fix and why.
The rules here are distilled from a production site whose build fails if any gate is violated — that discipline is why it scores high. Treat the gates as hard constraints, not suggestions.
When to use
- "Check/improve my site's SEO", "raise my PageSpeed/Lighthouse SEO score", "review before launch"
- "Make my site visible to AI / ChatGPT / Claude / Perplexity", "add llms.txt", "fix robots for AI crawlers"
- "Add structured data / JSON-LD / schema", "set up sitemap / canonical / Open Graph"
- "My LCP is slow / fix Core Web Vitals / PageSpeed says my site takes 7 s to load"
What you have
scripts/audit-seo.mjs — on-disk auditor. Runs the 12 hard-gate checks over a directory of built HTML + its local CSS/JS/images. Framework-agnostic. Node ≥18, no install.
scripts/audit-live.mjs — live-URL auditor. Checks the things only visible on a deployed origin: robots.txt policy (incl. per-AI-bot allow/deny), sitemap.xml, llms.txt, homepage JSON-LD (@graph-aware), canonical, HSTS / Vary / Cache-Control.
references/hard-gates.md — the 12 gates: exact thresholds, the general rule, and the Astro+Cloudflare reference implementation.
references/structured-data.md — copy-paste JSON-LD recipes (Organization, WebSite, Breadcrumb, Article, Product, FAQ) using the nested @graph pattern.
references/geo-ai-visibility.md — the GEO layer: robots AI-crawler allowlist (exact user-agents), llms.txt format, AI-oriented schema, IndexNow.
references/lcp-playbook.md — Core Web Vitals deep-dive: the measured levers that took the reference site from 7.5 s → ~1.5 s mobile LCP (render-blocking CSS, critical-CSS split, font discipline, deferring non-LCP DOM, third-party JS, CLS guardrails, CI lock-in). Use when the problem is speed, not markup.
Workflow
1. Locate the build output (don't audit source — audit the shipped HTML)
SEO lives in the rendered HTML. Find the build dir: Astro dist/, Next out/ (or .next after ), Hugo , Jekyll , Vite , or a plain folder. If it doesn't exist yet, run the project's build first. Confirm with the user if ambiguous.