SEO Audit Report: Build an Evidence-First Deliverable
Build an SEO audit report with raw URL evidence, methods, limitations, owners, and verification fields so every recommendation can be reproduced later.
Author credentials: William Zhu is cofounder of InfiniSynapse (GitHub @allwefantasy · auto-coder). Desk: shipping SEO Health and the /en/tool/ visibility pages. No personal LinkedIn published. About: team / editorial standards.
Publisher credentials: InfiniSynapse has public profiles on GitHub, YouTube, and X. A 2026 WAIC Future Tech OPC excellence award covers the Agentic Data Infra entry (WAIC; third-party recap: Xinhua / Caohejing). That award does not review this page or SEO Health. Method CLI: infinitegrowth on npm. Archive: recognition and scope notes.

On this page
By William Zhu · Cofounder, InfiniSynapse · Published: 2026-09-11 · Last updated: 2026-09-30 · Last verified: 2026-09-14 · Reviewed by the InfiniSynapse Data Team.
Reviewed by: InfiniSynapse Data Team · method review 2026-09-14. First-party CLI JSON on the hub URL plus declared map loc counts; no customer export and no Looker dashboard.
Trust / COI: About · Corrections. SEO Health is a commercial product from this team. The 71 KB JSON is our own hub check, not a client deliverable and not a Google quality file.
TL;DR
This sample SEO audit report is the 2026-09-14 check of one hub URL. It keeps the URL, the named warning, the speed number, the date, the user-agent, and the sitemap loc counts. It is not a sitewide score and not a blank template. A PDF that drops those JSON fields is a slide, not a ledger.
Direct answer: This sample SEO audit report is a ledger for
https://infinisynapse.com/en/tool/seo-website-auditon 2026-09-14: about 71 KB of JSON, one Image Alt Text warning, and zero errors. Every claim in the memo has to point at one of those observations. A vanity 100 without those fields is not a handoff.
On 2026-09-14 we ran npx --yes -p infinitegrowth@0.1.1 seo-health check --format json --lang en against https://infinisynapse.com/en/tool/seo-website-audit. Exit 0. Cached false. The sample size is one CLI document plus the three declared maps and eight public curl rows from the same desk. That sample cannot establish how often other tool URLs share the same warning, and it does not prove a later deploy kept the same JSON. Reproduce the check. Do not invent a 50-page crawl we did not run.
What you will learn
- Which CLI fields must survive the executive summary
- How 71 KB of JSON still leaves one warning on a 200
- Why loc counts belong in the provenance header
- When a score without
issues[].nameis unusable - Where this SEO audit report page stops and a sibling owns the tool or the checklist
Those five bullets are the minimum cover. A later editor will try to replace them with a single “health” integer. The 71 KB JSON already refuses that compression: it has a URL, a named warning, a speed field, and no site-wide grade. Keep the integer out of the SEO audit report title slide.
What the ledger must keep
Key definition: This sample SEO audit report is a dated ledger that joins raw observations to owners and acceptance tests. It is not a decorative PDF, not a vendor severity poster, and not an official Google grade.
NIST SP 1800-25 is the integrity reminder we used when deciding that raw values must stay attachable. Google Search Console bulk export is a separate official export surface. Neither document writes this report for you, and neither endorses the commercial service discussed here.
People open an SEO audit report when a stakeholder wants a sentence they can challenge. They do not need a cover score that cannot be replayed.
SEO Health remains the deterministic evidence foundation for sampling and per-URL lights. After the export exists, a team may place those rows in an InfiniSynapse Server API long-task workspace; the API does not refetch the hub or rescore issues[].
Provenance before the summary
State scope, URL source, selection rule, tool version, command, user-agent, timestamp, and exclusions before the first finding. An SEO audit report that leads with “the site is a 79” has already inverted the file. Speed 79 is a field. It is not the title of the memo.
Claims that point at IDs
Every executive claim should link to one or more observation IDs. If the memo says one warning, the SEO audit report ledger must contain exactly one qualifying issues[] row whose status is warning. If the memo says 1,568 locs, the header must name the map and the retrieval time.
The filled sample: one hub URL
The hub check is the filled sample SEO audit report. It is not a site census.
| Field kept in the ledger | Observed value |
|---|---|
| url | https://infinisynapse.com/en/tool/seo-website-audit |
| exit | 0 |
| cached | false |
| title length | 51 |
| words | 2,530 |
| speed | 79 |
| images / missingAlt | 5 / 2 |
| issues error / warning / good | 0 / 1 / 7 |
| warning name | Image Alt Text |
| stdout bytes | ~71 KB |
| user-agent / date | CLI package infinitegrowth@0.1.1 · 2026-09-14 |
The same desk fetched eight public URLs with InfiniSynapse-P2-desk/2026-09-14. / was 200. /en was 308 to /. The hub tool URL was 200. The blog twin was 308 to the tool URL. The invented /en/ path was 301 into a blog 404 whose title matched the homepage. Those hop rows belong in an SEO audit report as requested URL, first status, Location, final status, and final title. They do not belong as a rounded “a few redirects.”
We did not run audit --pages 50. Help text documents 50–500 and table|json. A documented range is not a completed batch. Do not paste a 50-page table we do not have.
Figure: Two series from the same hub check. Warning count is not JSON size. Neither series is a site-wide score.
How we captured the JSON
npx --yes -p infinitegrowth@0.1.1 seo-health check --format json --lang en \
https://infinisynapse.com/en/tool/seo-website-audit
Keep the command, the package version, the format flag, and the exit code. RFC 9110 is the HTTP semantics record we used when writing first status beside final status on the hop rows. MDN HTTP redirections is the independent hop vocabulary. Neither source writes the executive paragraph.
What the JSON still cannot say
One URL cannot establish template prevalence. The 1,131 blog locs were not in this CLI document. The warning on two of five images does not prove every tool page is missing alt text. Write that limit next to speed 79 so a later briefing cannot promote one check into a site grade.
The JSON is also silent on hop titles. The invented path’s homepage title lived in the curl table, not in issues[]. An SEO audit report that only exports CLI lights will drop that classification. Attach the hop table as a second sheet. Keep a shared observation ID so the memo can say “one warning and one dishonest 404 title” without mixing the sources.
Stdout size is a capture fact. About 71 KB means the file existed and was not an empty stub. It is not quality. Do not put “71 KB” in the executive sentence except as a pointer to the attachment.
Sample header: locs are not pages crawled
robots.txt answered 200 (938 bytes) and named three Sitemap lines. All three maps answered 200. The main map was 192,851 bytes with 1,568 <loc> values (392 /en/tool/, 1,131 /en/blog/, 45 other). The health map held 76 locs. The gallery map held 94. Across the three files the total was 1,738. Last-Modified on the main map was Fri, 11 Sep 2026 11:37:28 GMT. The map file also carried x-robots-tag: noindex, nofollow.
An SEO audit report that omits those counts has no population. An SEO audit report that treats 1,568 as “pages crawled” has already lied. Loc count is a declared list. The fetch count on this desk was eight plus one CLI URL.
Looker Studio documentation is useful when a team later charts the ledger. It is not a substitute for the JSON. W3C Reporting API is a different reporting contract. Citation is not a testimonial.
As of 2026-09-14 those loc counts matched this desk. A later deploy can change Last-Modified. Re-fetch the maps before you reuse last week’s header.
A header that lists 1,738 locs and then describes eight fetches is honest. A header that lists 1,738 locs and then implies the SEO audit report walked every loc is not. Write the fetch list. Write the CLI URL. Write the three map byte sizes. If a stakeholder wants 50 pages, say the help text allows it and say we did not run it. That sentence belongs in the limitations paragraph, not in a footnote you hope nobody reads.
Fields this sample refuses to drop
url
Write the requested URL and the final URL. The blog twin 308’d. If the memo only prints the tool URL, the hop disappears. The SEO audit tool page owns export-field choice. This SEO audit report owns the refusal to file a score without the URL.
issues[].name and issues[].status
Keep the string Image Alt Text and the status warning. “Some image issues” is not a row. An SEO audit report that collapses seven good lights and one warning into “mostly fine” has already destroyed the ledger.
speed, date, and user-agent
Speed 79 without a date is a rumor. The same URL on a later cold fetch can change. Record the UA string. A browser check is not this CLI check.
sitemap loc counts
Write 1,568 / 76 / 94 and the 1,738 total. Without N, the sample size is invisible. The SEO website audit hub owns how those maps were read. This page owns putting the counts in the header.
If any of those four field groups is missing, stop the SEO audit report before the cover slide. A memo can wait. A score without a URL cannot be challenged. A warning without a name cannot be ticketed. A speed without a date cannot be compared. Loc counts without a retrieval time cannot be reconciled after the next deploy.
How to read the sample
Read this sample SEO audit report by the named warning first, then the population N, and only then speed 79. Separate that ledger from the executive view. Keep immutable rows at URL-and-check grain: observation ID, requested URL, final URL, timestamp, tool version, raw value, expected condition, capture location, and limitation. A finding may reference many observations. An observation may support more than one finding. Never paste an altered raw value into a narrative cell.
Build the executive view from finding IDs. Name the root cause, the observed sample, the population N, confidence, owner, dependency, release target, and acceptance query. “1 of 1 checked hub URL is missing two alts” is different from “the site has image problems.” When a fix ships, append a verification observation with a new timestamp. Retaining both states is how an SEO audit report stays auditable.
The SEO audit checklist owns triage order. Do not let the memo invent a new sequence that skips first status.
Priority needs impact, reach, confidence, dependency, and effort as visible factors. A vendor severity label is not a rationale. If you cannot explain why the alt warning outranks a later advisory, the order is not ready.
Looker can chart the ledger later. Looker Studio documentation does not decide the columns. An SEO audit report that starts in a dashboard and reverse-engineers the JSON has already lost the IDs. Export first. Chart second. The W3C Reporting API is another reminder that reporting is its own contract; it is not this memo.
When two reviewers open the same attachment, they should see the same issues[].status values. If they do not, the file moved or a newer check overwrote it. Keep dated copies. An SEO audit report that lives only in a chat thread has no verification path.
What this sample does not contain
This sample SEO audit report is one hub URL on 2026-09-14. It is not a blank Google Sheets template, not an A–F grade card, and not an Ahrefs backlink chapter. We did not run --pages 50. Help text allows 50–500 pages. That range is not this file.
No PDF cover score is attached. The attachment is the CLI JSON, the eight hop rows, and the three map loc counts.
Failure modes that fake a handoff
Writing the summary before locking evidence. The 71 KB JSON exists. Quote it.
Rounding observed counts. One warning is one warning. Do not write “a couple of issues.”
Filing a score without issues[]. Speed 79 without the warning name is a poster.
Calling one URL a 50-page audit. We did not run --pages 50.
Deleting fixed rows. Closure is a new observation, not an erase.
Treating loc counts as crawls. 1,738 declared locs are not 1,738 fetched pages.
Promoting a CLI 100 we do not have. Exit 0 plus a warning is a punch list. An SEO audit report that hides the warning to keep the cover clean is already dishonest.
Adjacent guides
This SEO audit report returns to the SEO website audit hub for inventory. Narrower jobs stay on siblings.
| Job you actually have | Guide to open next |
|---|---|
| Choose a tool by export fields | SEO audit tool |
| First status before lights | SEO audit checklist |
| Declared maps and strata | SEO website audit |
Export the JSON before you write the memo
Keep url, issues, speed, date, user-agent, and loc counts. Then write the paragraph that cites those IDs.
Run SEO Health CheckerFrequently Asked Questions
What does this sample SEO audit report contain?
This sample SEO audit report keeps the requested URL, the Image Alt Text warning, speed 79, the 2026-09-14 date, the CLI user-agent, and the three sitemap loc counts. Observation ID, final URL, tool version, and the limitation belong in the same ledger. A score without those columns cannot be replayed.
How should priorities be calculated?
Keep impact, reach, confidence, dependency, and effort visible. The order must be explainable without a vendor severity label. One hub warning is not a site-wide image crisis.
Can narrative change an observed status?
No. Narrative cites immutable observation IDs. A new fetch creates a verification row. It does not overwrite the 2026-09-14 JSON.
What proves a report item is closed?
A named verifier reruns the stated acceptance case after deploy and attaches the new raw observation to the original finding. Once the JSON attachment exists, a credited memo may be opened once in the InfiniSynapse web app.
Did this desk file a 50-page report?
No. Help text documents --pages 50–500. This rewrite used one check on the hub URL. Do not attach a 50-page appendix we did not produce.
Conclusion
Use this sample SEO audit report when the job is to hand off a replayable ledger. The 2026-09-14 desk keeps a 71 KB hub JSON, one named warning, eight hop rows, and three map loc counts. Close the SEO audit report when url, issues[], speed, date, user-agent, and N are still visible. A cited JSON is more useful than an unsupported cover score.
If a later week needs a wider pass, enlarge the sample on purpose and give that pass a new date. Do not silently grow last week’s SEO audit report by adding URLs in prose. The ledger either gained rows with IDs or it did not.
William Zhu · Cofounder, InfiniSynapse · GitHub @allwefantasy
Desk-validated SEO Health methods. Corrections: zhuhl@infinisynapse.com · corrections policy.