Seo Audit — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Seo Audit (Plugin) 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.
Aggregate score unchanged between these scans.
The primary manifest — the file an agent reads to learn what this artifact does.
A portable SEO audit skill for AI coding agents — Claude Code, Claude Desktop, Cursor, and OpenAI/Codex. Give it a live homepage URL or a codebase and it checks search-engine readiness from basic on-page hygiene to advanced technical, structured-data, social, and performance signals, then produces a prioritized Markdown report plus machine-readable JSON.
requests +BeautifulSoup automatically when installed for more robust parsing.
detector** so cloaked or JS-rendered pages aren't taken at face value.
See examples/sample-report.md for what a report looks like.
| Category | Highlights |
|---|---|
| Crawlability & Indexing | HTTPS, status, redirects, 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, broken internal links |
| Performance | HTML weight, render-blocking resources, image dimensions & lazy-loading (static heuristics) |
Full checklist and exact thresholds: checklist.md and thresholds.md.
Prerequisite (all systems): Python 3.8+ on the machine. The engine runs on the standard library alone; pip install -r skills/seo-audit/requirements.txt is optional but improves parsing. Most setups below start from a local clone:
git clone https://github.com/Maks417/seo-audit.git
cd seo-auditOption A — plugin (one command, recommended). No clone needed:
/plugin marketplace add Maks417/seo-audit
/plugin install seo-auditThen just ask "audit the SEO of https://example.com", or run the slash command /seo-audit https://example.com (it also audits the current project: /seo-audit this codebase).
Option B — personal or project skill (no plugin). Copy the self-contained skill folder:
cp -r skills/seo-audit ~/.claude/skills/seo-audit # personal: all projects
# or
cp -r skills/seo-audit .claude/skills/seo-audit # this project onlyIt auto-triggers on SEO requests — no command required.
Desktop installs a skill from a .zip whose SKILL.md sits at the archive root.
Easiest — download the prebuilt bundle: grab seo-audit.zip from the Releases page (no clone or Python needed).
Or build it yourself — exactly what package.py produces:
python package.py # writes dist/seo-audit.zipEither way, in Claude Desktop: Settings → Capabilities → Skills → Upload skill, and choose the seo-audit.zip. Use it by asking naturally, e.g. "audit the SEO of https://example.com".
Desktop sandbox notes: skills run in a Linux code-execution container. URL mode needs outbound network — it works only if the container allows it; code mode works offline. The container is stdlib-only unless deps are pip-installed in-session, but the engine's standard-library fallback means it runs either way.
Cursor uses rule files under .cursor/rules/:
cp adapters/cursor/seo-audit.mdc your-project/.cursor/rules/seo-audit.mdc
cp -r skills/seo-audit your-project/skills/seo-audit # the rule points at these scripts/refsThen ask Cursor's agent to "run an SEO audit on https://example.com" — it reads the rule and runs the engine.
Codex reads an AGENTS.md at the repo root:
cp adapters/openai/AGENTS.md your-project/AGENTS.md # or paste into an existing AGENTS.md
cp -r skills/seo-audit your-project/skills/seo-audit # keep the scripts/refs reachableThen ask Codex to "audit this site's SEO: https://example.com" or "audit this codebase for SEO" — it follows AGENTS.md and runs the engine. The same file also works as a custom-GPT system prompt.
| System | Mechanism | Source |
|---|---|---|
| Claude Code | /plugin install or copy to ~/.claude/skills/ | .claude-plugin/ + skills/seo-audit/ |
| Claude Desktop | Upload .zip in Settings → Capabilities → Skills | package.py → dist/seo-audit.zip |
| Cursor | Copy .mdc into .cursor/rules/ | adapters/cursor/seo-audit.mdc |
| Codex (OpenAI) | Use as AGENTS.md | adapters/openai/AGENTS.md |
pip install -r skills/seo-audit/requirements.txt # optional but recommended
python skills/seo-audit/scripts/seo_audit.py https://example.com --crawl 8 --out ./seo-report
python skills/seo-audit/scripts/seo_audit.py --self-check # show active backendWrites seo-report/report.md and seo-report/report.json.
| Option | Default | Meaning |
|---|---|---|
<url> | — | Homepage URL (https:// assumed if omitted) |
--crawl N | 8 | Max pages to crawl, homepage included (1 = homepage only) |
--out DIR | ./seo-report | Output directory for the report files |
--timeout S | 15 | Per-request timeout (seconds) |
--json-only / --md-only | — | Write only one format |
--self-check | — | Print Python version + active backend and exit |
Requires Python 3.8+. Optional deps: requests, beautifulsoup4, lxml, brotli.
seo-audit/
├── .claude-plugin/ # plugin.json + marketplace.json (Claude Code plugin install)
├── commands/seo-audit.md # /seo-audit slash command
├── skills/seo-audit/ # the self-contained skill (copy this for personal/Desktop use)
│ ├── SKILL.md # portable core: workflow + triggering
│ ├── requirements.txt
│ ├── scripts/ # audit engine
│ │ ├── seo_audit.py # CLI orchestrator
│ │ ├── fetch.py # HTTP + polite crawler (stdlib fallback)
│ │ ├── dom.py # HTML parsing (BeautifulSoup or stdlib)
│ │ ├── rules.py # finding model + scoring
│ │ ├── report.py # Markdown + JSON output
│ │ ├── confidence.py # bot-block / low-confidence detector
│ │ └── checks/ # one module per category
│ ├── references/ # checklist, thresholds, code-audit guide
│ └── assets/ # report template
├── adapters/ # Cursor (.mdc) + OpenAI (AGENTS.md) entry points
├── examples/sample-report.md # example output
├── package.py # builds dist/seo-audit.zip for Claude Desktop
├── .gitignore
├── LICENSE # MIT
└── README.mdThe engine fetches the homepage, crawls a few same-origin pages (respecting robots.txt), runs every check module, scores the findings (weighted by impact), assesses confidence, and renders the report.
non-browser clients (e.g. Amazon, aggressive WAFs) are detected and the report is marked low confidence with reasons — so a degraded score isn't taken at face value.
(also flagged as low confidence); verify in a browser when accuracy matters.
Lighthouse for real LCP/INP/CLS. The PageSpeed Insights API can be wired in as an optional extension (see thresholds.md).
--crawl deliberately for larger sites.MIT.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.