AI plugin to make quick SEO audit
SaferSkills independently audited seo-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.
Audit a website's search-engine readiness and produce a prioritized, actionable report. There are two modes — pick based on what the user gives you:
it fetches the page, crawls a few internal pages, scores everything, and writes the report.
an agent with repo access). Audit the source against the same checklist, citing real files, because many issues (sitemap generation, head/meta management, structured data, image alt) are best fixed at the source.
When both are available (e.g. a repo with a running dev server), do both: run the script against the live/dev URL for ground truth, then map findings back to the source to recommend fixes.
In code mode, read the real files — never invent meta tags, schema, or config that isn't there.
titles, mobile, structured data), not an undifferentiated wall of nitpicks.
matters for search, and the concrete change to make.
JS-heavy SPAs it may under-count content/links — say so. It does not measure real Core Web Vitals; recommend PageSpeed Insights / Lighthouse for field data.
Run the script by its real path, not relative to the user's current directory — when this skill triggers, the working directory is the user's project, not the skill folder. The script self-locates its own helpers, so it works from any directory once you give it the right path.
"${CLAUDE_PLUGIN_ROOT}/skills/seo-audit/scripts/seo_audit.py".
scripts/ folder sitsnext to this SKILL.md. Use that directory's absolute path (the one this file was loaded from), e.g. <skill-dir>/scripts/seo_audit.py.
In the commands below, SEO=<that absolute path>/seo_audit.py.
The engine has no required dependencies — it falls back to the Python standard library. But requests + BeautifulSoup make parsing more robust, so before the first URL audit, try to install them (ignore failure and proceed regardless):
pip install -r "<skill-dir>/requirements.txt" || true
python "$SEO" --self-check # shows Python version + which backend is activepython "$SEO" <url> [--crawl N] [--out DIR] [--json-only] [--md-only]<url> — homepage URL (scheme optional; https:// is assumed).--crawl N — max pages to crawl, homepage included. Default 8. Use 1 for homepage-only.--out DIR — output directory. Default ./seo-report. Writes report.md and report.json.--self-check — print the runtime environment / active backend and exit (no URL needed).Example:
python "$SEO" https://example.com --crawl 8 --out ./seo-reportAfter it runs: read seo-report/report.md, then present to the user:
report.json under confidence), lead with that — the site likely blocked the bot or served a stripped/JS-rendered shell, so the score reflects what a bot saw, not real users. Recommend verifying in a browser / headless renderer before trusting the findings.
The script prints which backend it used and a one-line summary to stderr; the full detail is in the report files.
Six categories, scored 0–100 each and rolled into an overall weighted score. Full detail, including exact thresholds and rationale, is in references/checklist.md and references/thresholds.md — read those when the user wants depth or asks "why".
| Category | Highlights |
|---|---|
| Crawlability & Indexing | HTTPS, HTTP status, redirect chains, noindex/X-Robots-Tag, canonical, robots.txt, XML sitemap |
| On-Page | title, meta description, single H1 + heading order, html lang, image alt, URL hygiene |
| Technical | mobile viewport, charset, favicon, hreflang, compression, caching, HTTP/2+, HSTS |
| Structured Data & Social | JSON-LD / schema.org, Open Graph, Twitter Cards |
| Content | thin content, duplicate titles/descriptions across the crawl, broken internal links |
| Performance | HTML weight, render-blocking resources, image dimensions & lazy-loading (static heuristics) |
When you have the repository, audit the source against the same six categories. The framework-specific guidance — where titles/meta live, how sitemaps and robots are generated, how to add JSON-LD, common pitfalls in Next.js / React (Vite/CRA) / Astro / Nuxt / plain HTML / WordPress — is in `references/code-audit.md`. Read it, detect the stack, then walk the source and produce findings that cite real files (e.g. app/layout.tsx:14).
If there's a runnable dev server, also run URL mode against it (http://localhost:PORT) and reconcile the two: the live run shows symptoms, the source shows where to fix them.
In URL mode the script writes the report for you. In code mode (or when summarizing), follow the structure in assets/report-template.md: overall grade → executive summary → top fixes → per-category findings with severity, the problem, why it matters, and the fix.
Keep severities consistent with the engine: 🔴 critical (blocks indexing/ranking), 🟠 warning (real problem), 🟡 notice (minor/improvement), 🟢 pass, ℹ️ info (context).
stripped page or a challenge to non-browser clients. The engine detects this and marks the audit low confidence with reasons — honor that signal and don't over-trust the score.
low confidence). Note it, and verify in a browser or with a headless renderer if accuracy matters.
PageSpeed Insights API (free key) can be wired in as an optional extension.
--crawl deliberately and mind the target's load.
references/checklist.md — the complete basic→advanced SEO checklist.references/thresholds.md — exact thresholds (lengths, counts) and the reasoning.references/code-audit.md — per-framework source-auditing guide.assets/report-template.md — report skeleton for code-mode / manual reports.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.