adding-schema-markup — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited adding-schema-markup (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Schema is the language Google and LLMs use to understand a page. Crawlers extract entities, relationships, and facts from JSON-LD with much higher confidence than from raw HTML. In 2026 the Google rich-result surface has narrowed sharply (HowTo retired, FAQPage limited to gov/health authority sites) [1][2], but the AI-citation upside has grown: pages with well-formed structured data are cited 2.5–3.2× more often in ChatGPT, Perplexity, and AI Overviews than unstructured pages [3][4].
The job: pick the right type, populate the required + key recommended fields from content that actually exists on the page, validate, ship.
Organization + WebSite schema and now needs page-specific markupDon't use for: thin pages with no real content (Google penalizes schema-for-content-that-isn't-there [1]), legal/disclaimer/utility pages, or pages already covered by a route-level generator.
| Page type | Schema type | Notes |
|---|---|---|
| Blog post / news article | Article or BlogPosting | Use NewsArticle for time-sensitive news only |
| Long-form guide | Article + BreadcrumbList | Add mainEntityOfPage |
| Product page | Product + nested Offer (+ AggregateRating if real reviews exist) | Faking ratings = manual action [1] |
| FAQ section on a page | FAQPage | Rich-result display deprecated for non-gov/health [2], but still drives AI citations [4] |
| Step-by-step tutorial | HowTo | No rich result anymore [1]; still useful for LLMs |
| Site nav / breadcrumb trail | BreadcrumbList | Cheap, near-universal — almost always worth adding |
| Landing / home | Organization + WebSite | Already shipped by seo-bootstrap — don't duplicate |
| Trip / itinerary / road-trip page | TouristTrip + itinerary (ItemList of TouristAttraction) | No Google rich result, but Perplexity / AI Overviews read it [5] — relevant for vibecrafting.ai-style sites |
app/blog/[slug]/page.tsx, pages/products/[id].astro, etc.) and the rendered content. Pick from the table above.Article — it's a superset.headline, datePublished, author, image, description from the actual page data — never invent fields. Required fields per type are documented at schema.org and Google Search Central [6][7].<script type="application/ld+json"> containing an @graph when the page has multiple entities that reference each other (Article → Author → Organization) [8]. Use separate blocks only for fully independent entities. Reuse the helper from seo-bootstrap/templates/ so the Organization @id matches site-wide.schema-validate MCP if installed. Otherwise paste into Schema Markup Validator for syntax + schema.org compliance, then Google Rich Results Test for rich-result eligibility [9].feat(seo): add <Type> schema to <route>.WebSite. Validators silently drop the wrong casing. Same trap as bootstrap.@id references inside an @graph [8].// Article (minimum)
{ "@context":"https://schema.org","@type":"Article",
"headline":"...", "datePublished":"2026-04-26", "author":{"@type":"Person","name":"..."} }
// Product
{ "@context":"https://schema.org","@type":"Product",
"name":"...", "image":"...", "offers":{"@type":"Offer","price":"29","priceCurrency":"USD","availability":"https://schema.org/InStock"} }
// FAQPage
{ "@context":"https://schema.org","@type":"FAQPage",
"mainEntity":[{"@type":"Question","name":"...","acceptedAnswer":{"@type":"Answer","text":"..."}}] }
// BreadcrumbList
{ "@context":"https://schema.org","@type":"BreadcrumbList",
"itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://..."}] }
// TouristTrip
{ "@context":"https://schema.org","@type":"TouristTrip",
"name":"...", "itinerary":{"@type":"ItemList","itemListElement":[/* TouristAttraction entries */]},
"provider":{"@id":"https://site.com/#org"} }Organization + WebSite only, in root layout. Handled by seo-bootstrap.Article, Product, TouristTrip) as content ships. This skill.FAQPage and HowTo for LLM consumption [4].Pair with optimizing-on-page for the full per-page polish loop (titles, H1, internal links, schema). Run auditing-technical-seo quarterly to catch schema drift.
Citations [1]–[9] resolve in SOURCES.md.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.