seo-audit
Audit websites for SEO, technical, content, security, JS rendering, and AI readiness using SEOmator CLI. Returns LLM-optimized reports with health scores across 332 rules and 20 categories, and can diff two audits to show what a deploy changed. Use when analyzing websites, debugging SEO issues, chec
By seo-skills · 988 installs
npx skills add seo-skills/seo-audit-skill --skill seo-audit
Source repository · Upstream listing
SEO Audit Skill
Audit websites for SEO, technical, content, performance, security, JavaScript rendering, and AI readiness using the SEOmator CLI.
SEOmator provides comprehensive website auditing by analyzing website structure and content against 332 rules across 20 categories .
It provides a list of issues with severity levels, affected URLs, and actionable fix suggestions.
Links
SEOmator npm package: [npmjs.com/package/@seomator/seo audit](https://www.npmjs.com/package/@seomator/seo audit)
GitHub repository: [github.com/seo skills/seo audit skill](https://github.com/seo skills/seo audit skill)
Web UI: [seomator.com/free seo audit tool](https://seomator.com/free seo audit tool)
What This Skill Does
This skill enables AI agents to audit websites for 332 rules in 20 categories , including:
Core SEO (24 rules): Canonical URLs, indexing directives, title uniqueness, canonical conflicts/loops
Performance (26 rules): LCP, CLS, FCP, TTFB, INP, compression, caching, minification, HTTP/2
Links (24 rules): Broken links, redirect chains, anchor text, localhost/fragment links, plus click depth and inbound internal links from the site graph ( crawl )
Images (14 rules): Alt text, dimensions, lazy loading, modern formats, alt length, background images
Security (23 rules): HTTPS, HSTS, CSP, external link safety, leaked secrets, SSL expiry/protocol, cookie flags and lifetime
Technical SEO (17 rules): robots.txt, sitemap.xml, URL structure, 404 pages, soft 404s, error codes
Crawlability (35 rules): Sitemap conflicts, indexability signals, canonical chains, pagination issues, sitemap lastmod quality
Structured Data (13 rules): Schema.org markup, Article, Organization, FAQ, Product, Breadcrumb
JavaScript Rendering (16 rules): Rendered DOM checks, raw vs rendered mismatches, SSR detection, console errors, failed resource requests
Accessibility (31 rules): ARIA labels, color contrast, form labels, landmarks, touch targets
Content (19 rules): Word count, readability, keyword density, duplicate detection, pixel widths
Social (9 rules): Open Graph tags, Twitter cards, share buttons, profile links
E E A T (14 rules): Author bylines, citations, trust signals, about/contact pages, YMYL detection
URL Structure (14 rules): Keyword slugs, stop words, uppercase, underscores, session IDs, tracking params
Redirects (11 rules): Redirect loops, types (301/302), meta refresh, JavaScript redirects, broken redirects
Mobile (12 rules): Font sizes, horizontal scroll, interstitials, viewport, mobile first parity (content, title, canonical, structured data, links) via mobile
Internationalization (13 rules): lang attribute, hreflang validation (return links, conflicts, mismatches)
HTML Validation (11 rules): Doctype, charset, head structure, lorem ipsum, multiple titles/descriptions
AI/GEO Readiness (5 rules): Semantic HTML, AI bot access, llms.txt, schema drift
Legal Compliance (1 rule): Cookie consent
The audit crawls the website, analyzes each page against audit rules, and returns a comprehensive report with:
Overall health score (0 100) with letter grade (A F)
Category breakdowns with pass/warn/fail counts
Specific issues with affected URLs grouped by rule
Actionable fix recommendations
When to Use
Use this skill when you need to:
Analyze a website's SEO health
Debug technical SEO issues
Check for broken links and redirect chains
Validate meta tags, canonical URLs, and structured data
Audit security headers, SSL, and HTTPS
Check accessibility compliance
Analyze JavaScript rendering and SSR compatibility
Evaluate AI/GEO readiness (semantic HTML, llms.txt, bot access)
Detect duplicate content across pages
Validate hreflang and internationalization setup
Check HTML document structure and validation
Generate site audit reports in multiple formats
Compare site health before/after changes
Prerequisites
This skill requires the SEOmator CLI to be installed.
Installation
Verify Installation
Check that seomator is installed and the system is ready:
This checks:
Node.js version (18+ recommended)
npm availability
Chrome/Chromium for Core Web Vitals and JS rendering
Write permissions for ~/.seomator
Local config file presence
Setup
Running seomator init creates a seomator.toml config file in the current directory.
If there is no seomator.toml in the directory, CREATE ONE with seomator init before running audits.
Usage
AI Agent Best Practices
YOU SHOULD always prefer format llm it provides token optimized XML output specifically designed for AI agents (50 70% smaller than JSON).
When auditing:
1. Prefer live websites over local dev servers for accurate performance and rendering data
2. Use no cwv for faster audits , but know what it costs: it skips the
browser render, so Core Web Vitals, the JavaScript rendering rules,
js console errors , js failed requests and all mobile parity rules
report unmeasured rather than passing or failing
3. Match the flags to the question. Rules that need more than one page or
more than one render are unmeasured without the right flag:
To check Run with
Click depth, inbound internal links crawl (builds the site graph)
Mobile first indexing parity mobile (second render at a phone viewport)
JS errors, failed subresources, Core Web Vitals default (omit no cwv )
What a deploy changed run before and after, then seomator compare <domain
4. Scope fixes as concurrent tasks when implementing multiple fixes
5. Run typechecking/formatting after implementing fixes (tsc, eslint, prettier, etc.)
Website Discovery
If the user doesn't provide a website to audit:
1. Check for local dev server configurations (package.json scripts, .env files)
2. Look for Vercel/Netlify project links
3. Check environment variables for deployment URLs
4. Ask the user which URL to audit
If you have both local and live websites available, suggest auditing the live site for accurate results.
Basic Workflow
Advanced Options
Audit specific categories only:
Save HTML report for sharing:
Verbose output for debugging:
Exit codes
An agent must be able to tell "the audit failed" from "the site scored badly".
Every command uses the same three:
Code Meaning
0 Success
1 The run worked, and the result is below a threshold — audit / analyze scored under 70, or compare fail on regression found a regression
2 The command failed: unreachable URL, HTTP error, missing crawl, bad config path
130 Cancelled with Ctrl C
A non zero exit is not automatically a failure. 1 means the tool worked
and is telling you something about the site. Only 2 means it could not do the
job. Under format json or format llm , a 2 also puts a structured
error on stdout with a stable code field:
Command Reference
Audit Command Options
Option Alias Description Default
format <fmt f Output format: console, json, html, markdown, llm console
max pages <n m Maximum pages to crawl 10
crawl Enable multi page crawl false
categories <list c Comma separated categories to audit All
no cwv Skip Core Web Vitals + JS rendering false
mobile Render mobile viewport + mobile first parity (single page) false
verbose v Show progress false
output <path o Output file path
config <path Config file path
no save Do not store this audit in ~/.seomator
Audits are stored by default, so compare and report always have history.
Dashboard
seomator serve runs a local web dashboard over the stored audits (history,
per rule detail, comparisons, exports). For scripted access, read the token
from ~/.seomator/serve.json and send it as X SEOmator Token ; GET /api
lists every route. See docs/WEB DASHBOARD.md .
Compare Command Options
seomator compare <domain diffs two stored audits of the same site. Every
audit is stored unless it ran with no save .
Option Description Default
against <auditId Compare against a specific audit instead of the previous run latest but one
trend Show score history for the domain instead of a two run diff false
json / j Machine readable diff false
fail on regression Exit 1 when the score dropped or new failures appeared false
Rules are diffed by ID, so a rule that broke and a different one that was fixed
are reported separately rather than cancelling out in a count.
Other Commands
Output Formats
Format Flag Best For
console format console Human terminal output (default)
json format json CI/CD, programmatic processing
html format html Standalone reports, sharing
markdown format markdown Documentation, GitHub
llm format llm AI agents (recommended)
The format llm output is a compact XML format optimized for token efficiency:
50 70% smaller than JSON output
Issues sorted by severity (critical first)
Fix suggestions included for each issue
Clean stdout for piping to AI tools
Examples
Example 1: Quick Audit with LLM Output
Example 2: Deep Crawl for Large Site
Example 3: Fresh Audit After Changes
Example 4: Generate Shareable Report
Example 5: Focus on Specific Areas
Example 6: Did This Deploy Make Anything Worse?
compare reports which specific rules changed status, which is more useful than
a score delta on its own: a score can hold steady while one thing broke and
another was fixed. Use fail on regression to make this a CI gate.
Example 7: Diagnosing a Page That Renders Empty
An uncaught exception halts the script that threw it, so content, structured
data or canonical tags that script would have written never appear to a
rendering crawler. A 404 on a script is invisible to static HTML analysis: the
tag is present and well formed, and only a real fetch reveals nothing came back.
Evaluating Results
Score Ranges
Score Grade Meaning
90 100 A Excellent Minor optimizations only
80 89 B Good Address warnings
70 79 C Needs Work Priority fixes required
50 69 D Poor Multiple critical issues
0 49 F Critical Major problems to resolve
Priority Order (by category weight)
Fix issues in this order for maximum impact:
1. Core (11%) Meta tags, canonical, H1, indexing
2. Performance (10%) Core Web Vitals + optimization
3. Links (8%) Internal linking structure
4. Images (8%) Performance + accessibility
5. Security (8%) Trust signals, SSL
6. Technical SEO (7%) Crawling foundation
7. Accessibility (7%) WCAG compliance
8. Crawlability (5%) Indexability, pagination
9. Structured Data (5%) Rich snippets
10. JavaScript Rendering (5%) Rendered DOM, SSR
11. Content (5%) Text quality + duplicates
12. Social (3%) Social sharing
13. E E A T (3%) Trust, expertise
14. URL Structure (3%) URL hygiene
15. Redirects (3%) Redirect chains
16. Mobile (2%) Viewport, fonts
17. Internationalization (2%) Hreflang
18. HTML Validation (2%) Document structure
19. AI/GEO Readiness (2%) Semantic HTML, AI bots
20. Legal Compliance (1%) Cookie consent
Fix by Severity
1. Failures (status: "fail") Must fix immediately
2. Warnings (status: "warn") Should fix soon
3. Passes (status: "pass") No action needed
How Scoring Works
A category score is the average of its rule results — pass 100, warn 50,
fail 0 — weighted by each rule's declared weight, so a heavy rule such as
security https moves the category far more than a minor one. The overall score
is the weighted average of category scores using the weights above.
Unmeasured checks car