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

Or have us run it on your site →

The receipt

Receipt schema-audit
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.
0 human touches
5 minutes
0 errors
raw run logopen →

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.