The readback
What this site says it is
Every line below is lifted from the site's own structured data or head tags — quoted, not judged. If something here is wrong or missing, that is what a machine reading the site currently believes. Contact facts are reported as found and then redacted: the finding is that a machine can read them, not what they say.
Names it claims
- Chris Brock ×12
Site name in the head
- Chris Brock ×6
Types it declares
- Person ×6
- WebSite ×6
What it says it offers
No products or services are declared.
Who it says it is connected to
- https://github.com/cbrock84 ×6
- https://linkedin.com/in/chrisaustinbrock ×6
Contact facts a machine can read
- [redacted]@chrisbrock.io
- Atlanta, GA, US
The finding
The one thing most worth fixing
One finding, whole — what we saw, why it matters, and what to do about it. The other thirty-two checks work the same way.
CI-03
Stable passage structure
What we saw. Across 6 sampled pages the median page carries 2 heading(s). 6 declare exactly one H1, 2 give at least one heading an id that can be linked directly, and 1 use a table or list. 1 page(s) exceed 400 words with fewer than three headings: https://chrisbrock.io/about. 2 page(s) skip a heading level: https://chrisbrock.io/blog: h1 followed by h3; https://chrisbrock.io/reading: h1 followed by h3. This describes the 6 page(s) this scan read, not the whole site: collection stopped at a configured bound (runtime or byte budget exhausted). An audit reads the site and rates it as a site.
Why it matters. Headings and anchors are the unit an engine extracts. A page with no internal structure can only be cited whole, which usually means it is not cited at all.
What to do. Give every page one H1, a descriptive H2 for each distinct answer, and a stable id on each H2 so a passage can be linked directly.
Where this finding came from
Every row is a request this scan actually made. The hash is of exactly what came back, so the same URL can be fetched again and compared. Nothing here was typed by hand.
| Record | Fetched | Status | When | SHA-256 of the response |
|---|---|---|---|---|
ev_465b6ce915bdf465 | https://chrisbrock.io/reading | 200 | 2026-09-11T16:34:14+00:00 | sha256:716a92ad6a2f78c817e… |
ev_59e7686288619e82 | https://chrisbrock.io/situations | 200 | 2026-09-11T16:34:14+00:00 | sha256:7426f7d3f7ffa0a5f6a… |
ev_71e3688b7b2890be | https://chrisbrock.io/about | 200 | 2026-09-11T16:34:14+00:00 | sha256:c5764524ad1b7168ad4… |
ev_867d3ba84db374b4 | https://chrisbrock.io/contact | 200 | 2026-09-11T16:34:14+00:00 | sha256:da7b32a6c13a38d4eeb… |
ev_88c4b5fd688c09e6 | https://chrisbrock.io/blog | 200 | 2026-09-11T16:34:14+00:00 | sha256:e1d160b94c9d8aa2a8f… |
ev_938fc8c00392ce13 | https://chrisbrock.io/ | 2026-09-11T16:34:14+00:00 | sha256:3e5202d9e6da4411405… | |
ev_c6e99cc6fdbe7f18 | https://chrisbrock.io/ | 200 | 2026-09-11T16:34:14+00:00 | sha256:7bfb66f963dbf223b7e… |
ev_d033d7d5be846d15 | https://chrisbrock.io/sitemap-index.xml | 200 | 2026-09-11T16:34:14+00:00 | sha256:1a17334f50f981b53f3… |
What ran
13 checks a machine can settle on its own
These are the checks whose answer is a fact about the page rather than a judgement about the writing. A person did not review them, so they are reported exactly as the tool found them — including the ones it could not settle.
- 8 Complete
- 2 Substantial
- 2 Partial
- 1 Inconclusive
| Check | Name | Outcome | What we saw |
|---|---|---|---|
AC-02 | Machine-readable guidance quality | Partial | 2 machine-readable guidance file(s) are served: /llms.txt (10981 bytes, 69 link(s)), /.well-known/security.txt (187 bytes, 2 link(s)). 1 link(s) inside the link-index files point off the audited domain. /.well-known/security.txt is not a link index, so outbound links in it are not counted: prose quotes URLs, and a site publishing work it did for somebody else has to name that site. These conventions are voluntary. Serving them is not a ranking or citation guarantee, and no engine is known to require them. |
CI-03 | Stable passage structure | Substantial | Across 6 sampled pages the median page carries 2 heading(s). 6 declare exactly one H1, 2 give at least one heading an id that can be linked directly, and 1 use a table or list. 1 page(s) exceed 400 words with fewer than three headings: https://chrisbrock.io/about. 2 page(s) skip a heading level: https://chrisbrock.io/blog: h1 followed by h3; https://chrisbrock.io/reading: h1 followed by h3. This describes the 6 page(s) this scan read, not the whole site: collection stopped at a configured bound (runtime or byte budget exhausted). An audit reads the site and rates it as a site. |
CI-05 | Content freshness signals | Substantial | 1 of 6 sampled pages expose a date in visible text, structured data, or a time element (16.7%). No contradiction was found between visible and structured dates in the sample. This describes the 6 page(s) this scan read, not the whole site: collection stopped at a configured bound (runtime or byte budget exhausted). An audit reads the site and rates it as a site. |
CR-01 | Stable successful retrieval | Complete | 7 of 7 sampled URLs returned a successful response (100.0%). Median response time was 1104 ms. This describes the 6 page(s) this scan read, not the whole site: collection stopped at a configured bound (runtime or byte budget exhausted). An audit reads the site and rates it as a site. |
CR-02 | Robots and crawler directives | Complete | robots.txt was retrieved and parsed: 2 group(s) covering user-agents *, Amazonbot, Applebot-Extended, Bytespider, CCBot, ChatGPT-User, Claude-SearchBot, Claude-User, ClaudeBot, GPTBot, Google-Extended, Meta-ExternalAgent, MistralAI-User, OAI-SearchBot, Perplexity-User, PerplexityBot, cohere-ai, 1 declared sitemap(s). The group matching this crawler allows 1 and disallows 0 path pattern(s). No sampled page declared a noindex directive in markup or headers. This describes the 6 page(s) this scan read, not the whole site: collection stopped at a configured bound (runtime or byte budget exhausted). An audit reads the site and rates it as a site. |
CR-03 | Sitemap quality | Inconclusive | 2 sitemap document(s) were retrieved and all of them were indexes listing further sitemaps. This scan stops at 2 sitemap documents, so the child sitemaps holding the URLs were never fetched and nothing can be said about them. This is a limit of the scan, not a finding about the site. This describes the 6 page(s) this scan read, not the whole site: collection stopped at a configured bound (runtime or byte budget exhausted). An audit reads the site and rates it as a site. |
CR-04 | Canonical and duplicate control | Complete | 6 of 6 sampled indexable pages declare a canonical URL. Host and protocol variants: http://chrisbrock.io/ -> HTTP 200 at https://chrisbrock.io/; https://www.chrisbrock.io/ -> HTTP 200 at https://chrisbrock.io/. This describes the 6 page(s) this scan read, not the whole site: collection stopped at a configured bound (runtime or byte budget exhausted). An audit reads the site and rates it as a site. |
CR-06 | Body text is machine-readable prose | Complete | No template syntax was found in the visible text of 6 sampled page(s). This describes the 6 page(s) this scan read, not the whole site: collection stopped at a configured bound (runtime or byte budget exhausted). An audit reads the site and rates it as a site. |
SD-01 | Valid core entities | Complete | 6 of 6 sampled pages carry JSON-LD (100.0%), producing 12 entit(ies). Declared types: Person (6), WebSite (6). Core identity types present: Person, WebSite. This describes the 6 page(s) this scan read, not the whole site: collection stopped at a configured bound (runtime or byte budget exhausted). An audit reads the site and rates it as a site. |
SD-02 | Entity relationships | Complete | 12 of 12 entit(ies) declare an @id (100.0%), producing 2 distinct identifier(s). 6 relationship reference(s) were found across 1 relationship type(s). 6 entit(ies) declare sameAs links to external profiles. This describes the 6 page(s) this scan read, not the whole site: collection stopped at a configured bound (runtime or byte budget exhausted). An audit reads the site and rates it as a site. |
SD-03 | Page-specific markup | Partial | No article-style pages were present in the sample. 0 of 6 sampled pages declare BreadcrumbList markup. This describes the 6 page(s) this scan read, not the whole site: collection stopped at a configured bound (runtime or byte budget exhausted). An audit reads the site and rates it as a site. |
SD-04 | Metadata consistency | Complete | Across 6 sampled pages: 6 declare a title, 6 a meta description, 6 an html lang attribute, and 6 Open Graph titles. No metadata inconsistency was found in the sample. This describes the 6 page(s) this scan read, not the whole site: collection stopped at a configured bound (runtime or byte budget exhausted). An audit reads the site and rates it as a site. |
TA-04 | Internal topic relationships | Complete | Across 6 sampled pages the median page links to 5 other sampled page(s). 0 sampled page(s) received no internal link from any other sampled page, and 0 received exactly one. This describes the 6 page(s) this scan read, not the whole site: collection stopped at a configured bound (runtime or byte budget exhausted). An audit reads the site and rates it as a site. |
What did not run
20 checks this scan cannot answer
Each of these needs a person: either to judge the writing (assisted — the tool proposes, a reviewer decides) or to look at the site directly (manual). None of them is a pass. They were not run.
| Check | Name | Needs |
|---|---|---|
AC-01 | Intentional crawler treatment | assisted |
AC-03 | Agent-facing transaction boundaries | manual |
CI-01 | Direct answer passages | assisted |
CI-02 | Claim support | assisted |
CI-04 | Source attribution | assisted |
CR-05 | Rendered content availability | manual |
EN-01 | Organization identity consistency | assisted |
EN-02 | Product and service identity | assisted |
EN-03 | People and authorship identity | assisted |
EN-04 | External identity reconciliation | manual |
MR-01 | Baseline question set | manual |
MR-02 | Referral and conversion attribution | manual |
MR-03 | Recheck discipline | manual |
TA-01 | Priority-question coverage | assisted |
TA-02 | First-hand experience | assisted |
TA-03 | Comparative and decision content | assisted |
TE-01 | Ownership and accountability | assisted |
TE-02 | Expertise and credential support | assisted |
TE-03 | Customer and outcome evidence | assisted |
TE-04 | Policy and limitation clarity | assisted |
What this scan will not tell you
- This scan does not produce a score. Thirteen of thirty-three checks is not a rubric, and a number derived from a fifth of the points would mislead more than no number.
- It cannot tell you whether an engine will cite you. Nobody controls that.
- A check that could not be settled from the evidence is recorded as inconclusive, never as a fault.
- The twenty checks listed under 'not covered' were not run. They are not passes.
- 12 check(s) describe the 6 page(s) this scan read rather than the whole site: CI-03, CI-05, CR-01, CR-02, CR-03, CR-04, CR-06, SD-01, SD-02, SD-03, SD-04, TA-04. A free scan reads a sample, so a rating here is a fact about that sample. Only an audit, which reads the site, rates the site.
- This scan read 6 page(s) before its own time limit of 20 seconds, not because the site ran out of pages. A paid audit is not bounded this way.
What is still unread
13 of 33 checks are settled. The other 20 need somebody to read your pages.
That is not a hedge about this sheet — everything above is settled and cited. It is the size of what a machine alone cannot reach: 66 of the rubric's points are unresolvable without a reader, and they are the checks about whether your claims are supported, whether your answers stand on their own, and whether anything outside your site agrees with it.
| Check | Name | Points |
|---|---|---|
CI-01 | Direct answer passages | 5 |
CI-02 | Claim support | 5 |
EN-01 | Organization identity consistency | 4 |
EN-02 | Product and service identity | 4 |
EN-03 | People and authorship identity | 4 |
An audit runs all thirty-three. The twenty above are proposed by an assisted pass and then rated by a person who has read your pages, each with a written reason you could argue with, and every finding cites a captured response you can open yourself.
See what an audit costs Read one first
It buys a reading of your site against a published rubric on one day. It is not a guarantee of placement, ranking, citation, recommendation, traffic, or revenue in any search engine or AI answer product.
Provenance
How this was collected
Self-service free scan. The requester asserted they are entitled to request it; no written authorization was collected and none is implied. Public content only, bounded to the limits in this record.
The crawler identifies itself, reads only public pages, respects the site's crawl controls, and stops at every bound below. It does not sign in, submit forms, or collect personal data.
| Bound | Value |
|---|---|
| concurrency | 1 |
| connect_timeout_seconds | 5 |
| max_depth | 2 |
| max_pages | 8 |
| max_redirects | 5 |
| max_response_bytes | 3000000 |
| max_retries | 1 |
| max_sitemap_documents | 2 |
| max_sitemap_urls | 200 |
| max_total_bytes | 20000000 |
| per_host_delay_seconds | 1.0 |
| read_timeout_seconds | 5 |
| total_runtime_seconds | 20 |