Structured data that never goes stale.
Content drifts. Titles change. Articles get rewritten. MetaPilot watches every page for changes and regenerates its metadata automatically — so your JSON-LD keeps telling the truth long after you’ve moved on.
GET /blog/pricing-guide If-None-Match: "a41f9c-27b" If-Modified-Since: Tue, 04 Aug 2026 09:12:00 GMT 304 Not Modified → skip, 0 regenerations GET /blog/whats-new 200 OK ETag: "b7702e-4d1" ≠ stored "9c31aa-4b0" ladder ....... ETag → Last-Modified → Content-Length verdict ...... changed → regenerate → inject
TL;DR
Structured data goes stale the day the content changes and nothing tells the metadata. Auto-pilot re-checks your pages every night, reading the lastmod in your sitemap and then sending a conditional GET, so it can tell a real content change from noise and regenerate only the pages that actually moved. Origins that report neither are refreshed on a cadence floor instead, so nothing stays stale forever.
The problem
You ship structured data once. Then the content changes and the metadata does not. Six months later your JSON-LD is quietly describing a page that no longer exists, and structured data that contradicts the page it is on is worse than none at all.
Doing regeneration by hand across hundreds of URLs is not realistic, and the naive fix (re-generate everything on a timer) burns budget on pages nobody touched. What you actually want is content-change detection good enough to tell the difference.
How it works
-
Nightly re-fetch
Every night MetaPilot pulls your sitemap and lines up every page you have put on auto-pilot.
-
Three-tier change detection
First it checks whether the sitemap’s
lastmodadvanced. If the sitemap is silent, it sends a conditional GET —If-None-MatchandIf-Modified-Since— and reads the answer. A304means nothing changed and costs almost nothing. -
Auto-regenerate what really moved
Changed pages get fresh metadata generated and published through whichever channel you run on: injected at the edge on Cloudflare, written into the pages the platform serves on Shopify and Wix.
What you get
Automatic metadata refresh, set once
Flip auto-pilot on per page and MetaPilot keeps that page’s metadata current for you. It asks your live server on its own schedule, whatever your site runs on. A build-time tool only knows what your last deploy told it.
Real content-change detection, not guesswork
On a 200 we walk an ETag → Last-Modified → Content-Length ladder against what the server told us last time. That is RFC 7232 cache validation, not a crude re-hash of the page.
Regeneration only when it matters
A page that has not moved does not trigger a regeneration. A 304 ends the check, so the AI is spent on stale JSON-LD, not on noise.
A floor for silent servers
Some origins expose no ETag, no Last-Modified, and never advance lastmod. A cadence floor refreshes those pages anyway after 14 days, so nothing goes stale forever.
Freshness that actually does something
A detected change does not stop at the JSON-LD. The same signal rebuilds your managed llms.txt and llms-full.txt, so the map you hand assistants describes the site you have now, not the one you had last quarter.
Optional safety net
Pair auto-pilot with side-by-side review and changes are proposed instead of published — you approve before anything reaches your live pages.
Plan availability
Auto-pilot is on every paid plan, and there is no separate number to pick. Your plan is priced on pages under management, and it includes that same number of regenerations every month — 500 pages, 500 regenerations. When a page changes it gets refreshed, with no per-regeneration charge and no meter running: a busy month costs the same as a quiet one.
Free has no regenerations, so auto-pilot needs a paid plan to actually re-run.
Frequently asked
No. The detection ladder has to say a page genuinely changed first — an advanced lastmod, or a conditional GET that comes back 200 with a different ETag, a newer Last-Modified, or a different Content-Length. A 304 ends the check and costs you nothing.
Then the conditional GET cannot prove anything either way, so a cadence floor takes over: the page is refreshed after 14 days regardless. Stale-forever is not an option we leave on the table.
Your choice. Auto-publish, or route every change through the approval queue and review the before-and-after before anything ships.
Nightly. The sitemap is refreshed first, then auto-pilot runs against it, so a change is picked up on the next cycle.
Stale JSON-LD is worse than none: it tells search engines and answer engines something about the page that is no longer true, and Google’s guidance is explicit that structured data must match the page it describes. Separately, the AI assistants do lean recent, though Google’s AI Overviews do not: Ahrefs found the pages assistants cite average 1,064 days old against 1,432 for Google organic results, with AI Overviews matching organic almost exactly (July 2025, 17M citations). Metadata that still matches your page is table stakes for both.
Turn on auto-pilot and stop babysitting your metadata
Pick the pages that change, flip the switch, and let the detection ladder decide when a regeneration is worth spending.
Ask an AI how stale schema hurts you