Companion to ai-crawler-accessibility-audit, which already covers the crawler
half well (including the answer-engine vs training-bot distinction) but has
zero schema coverage. This fills that gap rather than duplicating it.
Scoped to structured data specifically. Deliberately excludes 'AEO content
strategy' -- comparison articles, parasite posting, manufactured industry
reports ranking yourself top. The last of those means publishing a misleading
document; structured data is a factual description of what you actually sell.
Leads with 'find what is already emitted', because duplicate conflicting schema
is a more common failure than missing schema -- Woo core, the SEO plugin and
the theme each emit their own. Covers AggregateOffer for variable products
where a single Offer misrepresents a size surcharge, per-locale emission on
WPML sites, and the field gotchas: comma decimal separators silently breaking
parsers, JS-injected JSON-LD being invisible to non-JS crawlers, and
non-standard WP table prefixes making a direct-SQL audit fail in a way that
reads as a different problem.
Retested 2026-09-07: a direct SigV4 PUT to s3.palmasolutions.net succeeds. The
Caddy fix landed the same day the bug was written up and the skill was never
updated, so for two weeks it told readers the endpoint was unusable.
Adds the actual cause of an apparently-dead offload: AS3CF 3.0+ stopped writing
amazonS3_info postmeta and records offloads in <prefix>_as3cf_items, so counting
postmeta reports zero on a working site. Also corrects the backfill recipe --
wp_update_attachment_metadata() does nothing in 4.x, the item handler is the
real API.
Records the gringo 2026-09-06 migration: zfs set mountpoint fails busy with
child datasets mounted, zfs set -u avoids it entirely, and jail.conf (not just
fstab) carries the path -- missing it means zero jails start.
Verified 2026-09-06: a launch failed on a missing chromium_headless_shell-1217
executable because the package moved to a build revision the cache lacked. The
skill previously said no re-download was needed.