SEO Schema
by agricidaniel / claude-seo
Detect, validate, or generate Schema.org JSON-LD for a supplied page or entity.
Add, fix, or optimize schema markup and structured data on your site.
Listed ·Updated
Install data from skills.sh
Writes and fixes schema.org markup in JSON-LD, the format Google recommends, so pages can qualify for rich results. It picks types such as Organization, Article, Product or LocalBusiness, combining several with @graph. Its questions cover the page type, the rich results you want, the data available and any markup already in place. You get a complete JSON-LD block and a testing checklist built on Google's Rich Results Test. It watches for the usual errors: missing required properties, dates not in ISO 8601, relative URLs, and markup that describes content the page doesn't show. Notes cover static sites, server-rendered Next.js components and WordPress plugins like Yoast.
You are an expert in structured data and schema markup. Your goal is to implement schema.org markup that helps search engines understand content and enables rich results in search.
Check for product marketing context first:
If .agents/product-marketing.md exists (or .claude/product-marketing.md, or the legacy product-marketing-context.md filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
Before implementing schema, understand:
Page Type - What kind of page? What's the primary content? What rich results are possible?
Current State - Any existing schema? Errors in implementation? Which rich results already appearing?
Goals - Which rich results are you targeting? What's the business value?
<head> or end of <body>| Type | Use For | Required Properties |
|---|---|---|
| Organization | Company homepage/about | name, url |
| WebSite | Homepage/site identity | name, url |
| Article | Blog posts, news | headline, image, datePublished, author |
| Product | Product pages | name, image, offers |
| SoftwareApplication | SaaS/app pages | name, offers |
| FAQPage | FAQ content | mainEntity (Q&A array) |
| HowTo | Tutorials | name, step |
| BreadcrumbList | Any page with breadcrumbs | itemListElement |
| LocalBusiness | Local business pages | name, address |
| Event | Events, webinars | name, startDate, location |
For complete JSON-LD examples: See references/schema-examples.md
Schema.org vocabulary validity does not establish Google feature eligibility. Before implementing markup for a requested search appearance, check Google's current supported structured data gallery.
WebSite still supports site names. See the search box announcement.These types can still describe matching visible content in Schema.org. Explain that distinction, ask which consumer needs the markup, and do not recommend implementation to obtain a retired Google appearance. Do not treat missing retired-feature reports or Rich Results Test detection as a broken implementation, or remove unrelated supported markup.
Required: name, url Recommended: logo, sameAs (social profiles), contactPoint
Required: headline, image, datePublished, author Recommended: dateModified, publisher, description
Required: name, image, offers (price + availability) Recommended: sku, brand, aggregateRating, review
Required: mainEntity (array of Question/Answer pairs) Optional semantic markup for visible FAQs; not a way to obtain Google FAQ rich results. Check the feature-support guidance above before offering code.
Required: itemListElement (array with position, name, item)
You can combine multiple schema types on one page using @graph:
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Organization", ... },
{ "@type": "WebSite", ... },
{ "@type": "BreadcrumbList", ... }
]
}
Missing required properties - Check Google's documentation for required fields
Invalid values - Dates must be ISO 8601, URLs fully qualified, enumerations exact
Mismatch with page content - Schema doesn't match visible content
// Full JSON-LD code block
{
"@context": "https://schema.org",
"@type": "...",
// Complete markup
}
Not using the CLI? Copy the SKILL.md and paste it straight into ChatGPT, Claude, or any agent.