183 lines
5.8 KiB
Markdown
183 lines
5.8 KiB
Markdown
---
|
|
name: seo-schema
|
|
description: >
|
|
Detect, validate, and generate Schema.org structured data. JSON-LD format
|
|
preferred. Use when user says "schema", "structured data", "rich results",
|
|
"JSON-LD", or "markup".
|
|
risk: unknown
|
|
source: "https://github.com/AgriciDaniel/claude-seo"
|
|
date_added: "2026-03-21"
|
|
user-invokable: true
|
|
argument-hint: "[url]"
|
|
allowed-tools:
|
|
- Read
|
|
- Grep
|
|
- Glob
|
|
- Bash
|
|
- WebFetch
|
|
- Write
|
|
---
|
|
|
|
# Schema Markup Analysis & Generation
|
|
|
|
## When to Use
|
|
- Use when detecting, validating, or generating Schema.org structured data.
|
|
- Use when the user asks about JSON-LD, rich results, or markup opportunities.
|
|
- Use when schema validation is the main task, rather than a broader SEO audit.
|
|
|
|
## Detection
|
|
|
|
1. Scan page source for JSON-LD `<script type="application/ld+json">`
|
|
2. Check for Microdata (`itemscope`, `itemprop`)
|
|
3. Check for RDFa (`typeof`, `property`)
|
|
4. Always recommend JSON-LD as primary format (Google's stated preference)
|
|
|
|
## Validation
|
|
|
|
- Check required properties per schema type
|
|
- Validate against Google's supported rich result types
|
|
- Test for common errors:
|
|
- Missing @context
|
|
- Invalid @type
|
|
- Wrong data types
|
|
- Placeholder text
|
|
- Relative URLs (should be absolute)
|
|
- Invalid date formats
|
|
- Flag deprecated types (see below)
|
|
|
|
## Schema Type Status (as of Feb 2026)
|
|
|
|
Read `references/schema-types.md` for the full list. Key rules:
|
|
|
|
### ACTIVE (recommend freely):
|
|
Organization, LocalBusiness, SoftwareApplication, WebApplication, Product (with Certification markup as of April 2025), ProductGroup, Offer, Service, Article, BlogPosting, NewsArticle, Review, AggregateRating, BreadcrumbList, WebSite, WebPage, Person, ProfilePage, ContactPage, VideoObject, ImageObject, Event, JobPosting, Course, DiscussionForumPosting
|
|
|
|
### VIDEO & SPECIALIZED (recommend freely):
|
|
BroadcastEvent, Clip, SeekToAction, SoftwareSourceCode
|
|
|
|
See `schema/templates.json` for ready-to-use JSON-LD templates for these types.
|
|
|
|
> **JSON-LD and JavaScript rendering:** Per Google's December 2025 JS SEO guidance, structured data injected via JavaScript may face delayed processing. For time-sensitive markup (especially Product, Offer), include JSON-LD in the initial server-rendered HTML.
|
|
|
|
### RESTRICTED (only for specific sites):
|
|
- **FAQ**: ONLY for government and healthcare authority sites (restricted Aug 2023)
|
|
|
|
### DEPRECATED (never recommend):
|
|
- **HowTo**: Rich results removed September 2023
|
|
- **SpecialAnnouncement**: Deprecated July 31, 2025
|
|
- **CourseInfo, EstimatedSalary, LearningVideo**: Retired June 2025
|
|
- **ClaimReview**: Retired from rich results June 2025
|
|
- **VehicleListing**: Retired from rich results June 2025
|
|
- **Practice Problem**: Retired from rich results late 2025
|
|
- **Dataset**: Retired from rich results late 2025
|
|
- **Book Actions**: Deprecated then reversed, still functional as of Feb 2026 (historical note)
|
|
|
|
## Generation
|
|
|
|
When generating schema for a page:
|
|
1. Identify page type from content analysis
|
|
2. Select appropriate schema type(s)
|
|
3. Generate valid JSON-LD with all required + recommended properties
|
|
4. Include only truthful, verifiable data. Use placeholders clearly marked for user to fill
|
|
5. Validate output before presenting
|
|
|
|
## Common Schema Templates
|
|
|
|
### Organization
|
|
```json
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "Organization",
|
|
"name": "[Company Name]",
|
|
"url": "[Website URL]",
|
|
"logo": "[Logo URL]",
|
|
"contactPoint": {
|
|
"@type": "ContactPoint",
|
|
"telephone": "[Phone]",
|
|
"contactType": "customer service"
|
|
},
|
|
"sameAs": [
|
|
"[Facebook URL]",
|
|
"[LinkedIn URL]",
|
|
"[Twitter URL]"
|
|
]
|
|
}
|
|
```
|
|
|
|
### LocalBusiness
|
|
```json
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "LocalBusiness",
|
|
"name": "[Business Name]",
|
|
"address": {
|
|
"@type": "PostalAddress",
|
|
"streetAddress": "[Street]",
|
|
"addressLocality": "[City]",
|
|
"addressRegion": "[State]",
|
|
"postalCode": "[ZIP]",
|
|
"addressCountry": "US"
|
|
},
|
|
"telephone": "[Phone]",
|
|
"openingHours": "Mo-Fr 09:00-17:00",
|
|
"geo": {
|
|
"@type": "GeoCoordinates",
|
|
"latitude": "[Lat]",
|
|
"longitude": "[Long]"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Article/BlogPosting
|
|
```json
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "Article",
|
|
"headline": "[Title]",
|
|
"author": {
|
|
"@type": "Person",
|
|
"name": "[Author Name]"
|
|
},
|
|
"datePublished": "[YYYY-MM-DD]",
|
|
"dateModified": "[YYYY-MM-DD]",
|
|
"image": "[Image URL]",
|
|
"publisher": {
|
|
"@type": "Organization",
|
|
"name": "[Publisher]",
|
|
"logo": {
|
|
"@type": "ImageObject",
|
|
"url": "[Logo URL]"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Output
|
|
|
|
- `SCHEMA-REPORT.md`: detection and validation results
|
|
- `generated-schema.json`: ready-to-use JSON-LD snippets
|
|
|
|
### Validation Results
|
|
| Schema | Type | Status | Issues |
|
|
|--------|------|--------|--------|
|
|
| ... | ... | ✅/⚠️/❌ | ... |
|
|
|
|
### Recommendations
|
|
- Missing schema opportunities
|
|
- Validation fixes needed
|
|
- Generated code for implementation
|
|
|
|
## Error Handling
|
|
|
|
| Scenario | Action |
|
|
|----------|--------|
|
|
| URL unreachable | Report connection error with status code. Suggest verifying URL and checking if the page requires authentication. |
|
|
| No schema markup found | Report that no JSON-LD, Microdata, or RDFa was detected. Recommend appropriate schema types based on page content analysis. |
|
|
| Invalid JSON-LD syntax | Parse and report specific syntax errors (missing brackets, trailing commas, unquoted keys). Provide corrected JSON-LD output. |
|
|
| Deprecated schema type detected | Flag the deprecated type with its retirement date. Recommend the current replacement type or advise removal if no replacement exists. |
|
|
|
|
## Limitations
|
|
- Use this skill only when the task clearly matches the scope described above.
|
|
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
|
|
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
|