301→302301→302
A temporary redirect where a permanent one belongs.
Found by Redirect checker →
A temporary redirect where a permanent one belongs.
Found by Redirect checker →
redirect loopredirect loop
The URL redirects back to itself and never settles.
Found by Redirect checker →
The URL redirects back to itself and never settles.
Found by Redirect checker →
Results
SEO report generator: XLSX, DOCX, PDF
report-build formats retained evidence as XLSX, DOCX, CSV, Markdown, JSON or a bounded PDF overview. It formats evidence and never invents findings.
SEO report generator: XLSX, DOCX, PDF
BI
Typed BI packages with Sheets and BigQuery plans for multi-site fact tables.
How it works
Three steps, one saved scan
Feed it a retained audit
Point report-build at an audit JSON or a scan.v1 SQLite artifact. It reads the saved evidence and does not crawl the site.
Pick the format
Write xlsx, docx, csv, md or json. PDF is a bounded overview and needs an explicit policy for streamed audits.
Apply a saved view
With --project and --view, one bounded page of findings is shown. Totals still cover the whole audit.
What it checks
Checks in this feature
| Check | What it means | Severity | Evidence |
|---|---|---|---|
BROKEN_PAGE_4XX | Page returns a 4xx response | Critical | URL and status code |
REDIRECT_LOOP | Redirect chain returns to a URL it already visited | Critical | Redirect path |
TITLE_MISSING | Title element is missing | Critical | URL |
H1_MISSING | Page has no H1 heading | Important | URL |
DESC_MISSING | Meta description is missing | Important | URL |
CANONICAL_MISSING | Indexable page has no canonical URL | Important | URL |
REDIRECT_CHAIN | Redirect chain has two or more hops | Important | Hops in order |
URL_NOT_IN_SITEMAP | Indexable page is missing from the sitemap | Tip | URL |
How to run it
One command
bash
seohead report-build --audit ./scans/audit.sqlite --format xlsx --out audit.xlsxInstall first: installation guide. Every command also runs as an MCP tool for AI agents.
Results
More in this group
FAQ
