SHIP auto schema-audit
Every page carries structured data that validates
The file
take it and run it.
One markdown file: the goal prompt, the verifier prompt, and the stopping condition. Read it before you run it. MIT licensed, no account, nothing to sign up for.
curl -fsSL https://vibemarketers.ai/loops/schema-audit.md -o .claude/loops/schema-audit.md The loop
copy it.
Structured data gets added when a page is built and then never checked again. Pages added later quietly ship without it, and nobody notices because nothing breaks.
Use it when you have more pages than you can check by hand, or when several people add pages and only some of them think about schema.
You need your built output. This reads what actually ships rather than your source, because that is what a crawler sees.
You get a dated report: every page with a verdict, which pages carry nothing, and which blocks are missing a property they claim to have.
The gate is you. It reports and never edits a page.
Goal prompt
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
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.
MCPs it needs
- none required
Want everything at once
The installer writes the three starter skills and every
published loop into .claude/. Read the
script first.
curl -fsSL https://vibemarketers.ai/install.sh | bash The receipt
- 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.
- Hypothesis
- Checking the built output rather than the source will find pages that were never given a block, because the source has no single place where that would be visible.
- Intervention
- Parsed every built HTML page, extracted its structured data block, validated the type against an accepted list and checked each required property.
- 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.
- Commercial signal
- none
- Attribution limits
- 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.
- Learning
- Every missing page was one nobody thought of as content: the legal pages, the log, the form. The pages that get written as content get structured data; the ones that get written as plumbing do not.
- Next intervention
- Check that the declared type matches what the page actually is, so a form page cannot claim to be an Article.
Sources: run log, lab/runs/2026-09-25-schema-audit.json, collected , window: 33 pages, single run before and after the fix .
One entry per run, append-only, newest first. Corrections append a dated line.
Inside a company
where the lane changes.
VibeMarketers tests the loop. SuperMarketers runs it on a real team.
- Problem
- Structured data is added once at launch and then silently rots as pages are added.
- Source of truth
- The built output, not the source, because what ships is what gets crawled.
- Permitted actions
- Read built pages, parse and validate blocks, write a report. Never edit a page.
- Required approvals
- The owner approves any schema change before it ships.
- Owner
- Technical SEO owner
- Metric
- Share of pages carrying structured data that validates against its declared type.
On a real team this runs in CI on every build, so a page cannot ship without valid structured data in the first place.
Running this on your own site is one person reading a diff. Running it inside a company changes four things, and the guide covers them. When it stops being a file you copy and becomes a build, SuperMarketers does the same loop model inside your stack, on your keys.