# Every page carries structured data that validates

> Every page carries valid structured data. Checks the build, reports what is missing.

Loop: `schema-audit`
Category: AI visibility
Autonomy: auto
License: MIT
Source: https://vibemarketers.ai/loops/schema-audit

Checks every built page for structured data, validates it against the type it claims, and reports the pages that have none.

## What you need

- none required

## Goal prompt

Give this to your agent. Replace anything in <angle brackets> with your own.

```
Read every built HTML page for <site>. For each, find the structured data
block, parse it, and check that its type is one you accept and that it
carries every property that type requires. Report pages with no structured
data, blocks that do not parse, and blocks missing required properties.
Write the report with a date.
```

## Verifier prompt

Run this as a second, separate agent. It grades the first one's work and must be
able to fail. A checker that never fails is not a checker.

```
Open the report. FAIL if any built page is missing from it, if a page is
reported as valid while its block does not parse, if a required property is
reported present while empty, or if the report has no date. Otherwise PASS.
```

## Stopping condition

Every built page appears in the report with a verdict, and the verifier marks PASS.

## How to run it

1. Save this file into your project, for example `.claude/loops/schema-audit.md`.
2. Open your agent in that project (Claude Code, Cursor, or Codex).
3. Paste the goal prompt, with your own values in place of the angle brackets.
4. When it stops, start a fresh session and paste the verifier prompt.
5. Read the verdict before you accept any change.

## What happened when we ran it

Last run 2026-09-25 on vibemarketers.ai.

- Baseline: 33 built pages with no automated check that any of them carried structured data. Whether a page had a block at all was unknown until someone looked.
- Result: 33 pages checked. 5 had no structured data at all: free-run, issues, log, privacy and terms. 0 blocks failed to parse and 0 were missing a required property. All 5 were then given a block and a rerun found 0 missing.
- What this does not prove: A valid block is not a useful one. This checks that structured data exists and parses, not that it describes the page accurately or that any engine acts on it.
- Cost: 0 human touches, 5 minutes, $0.00
- Raw log: https://github.com/genwfurukawa/vibemarketers-v2/blob/main/lab/runs/2026-09-25-schema-audit.json

## Inside a company

- Problem it solves: Structured data is added once at launch and then silently rots as pages are added.
- Source of truth it reads: The built output, not the source, because what ships is what gets crawled.
- What it may do: Read built pages, parse and validate blocks, write a report. Never edit a page.
- Who approves: The owner approves any schema change before it ships.
- Who owns it: Technical SEO owner
- How you measure it: Share of pages carrying structured data that validates against its declared type.

MIT licensed. Copy it, change it, run it. No attribution required.
