From seo-superpower
Use when adding JSON-LD structured data to a page — Article, BlogPosting, Product, FAQPage, HowTo, BreadcrumbList, Organization, WebSite, TouristTrip. Picks the right schema type for the page, populates required + key recommended fields from the actual content, validates against schema.org, and ships in a single PR. Triggers on "add schema", "add JSON-LD", "structured data", "rich results", "FAQ schema", "Article schema", "Product schema", "BreadcrumbList", "schema markup for [page]", or any time per-page schema is being added or audited.
How this skill is triggered — by the user, by Claude, or both
Slash command
/seo-superpower:adding-schema-markupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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...
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>.@type: "Website" (capital S). schema.org is case-sensitive — it's WebSite. Validators silently drop the wrong casing. Same trap as bootstrap.@context: "https://schema.org". No context, no parse.<noscript> or rendered only client-side after hydration. Most LLM crawlers and many SERP features read the initial HTML — schema must be in SSR output.AggregateRating. Same — manual action and AI engines downgrade trust.@id references inside an @graph [8].dateModified on refreshes — AI engines lean on freshness signals [4].// 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.
npx claudepluginhub benskamps/seo-superpower --plugin seo-superpowerGuides reception of code review feedback: verify before implementing, avoid performative agreement, push back with technical reasoning when needed.
Design banners for social media, ads, website heroes, and print with multiple art direction options and AI-generated visuals.