Schema Markup Analysis & Generation
Detection
- Scan page source for JSON-LD
<script type="application/ld+json">
- Check for Microdata (
itemscope, itemprop)
- Check for RDFa (
typeof, property)
- 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 June 2026)
Read ../seo/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.
NO RICH RESULTS, KEEP IF USEFUL:
- FAQPage: Google retired FAQ rich results for ALL sites on May 7, 2026 (supersedes the Aug 2023 gov/health restriction). No Google SERP rich-result benefit; flag existing FAQPage at Info (not Critical) rather than removal. For genuine user Q&A pages, use QAPage.
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: Deprecation notice 2025-11-05; Search Console / Rich Results Test support removed 2026-01-06
- Book Actions: Deprecated/removed from Google rich results; do not recommend it for SERP features.
- Search Console / Rich Results Test / appearance-filter support for CourseInfo, EstimatedSalary, LearningVideo, SpecialAnnouncement, VehicleListing was removed 2025-09-09; Practice Problem support was removed 2026-01-06.
Supported for Dataset Search only:
- Dataset: Not discontinued; consumed by Google Dataset Search, with no Google Search rich-result surface. Don't advise removal as if it were killed.
Still supported (do not flag):
- QAPage (expanded comment-thread properties 2026-03-24), DiscussionForumPosting, Education Q&A (Quiz /
eduQuestionType=Flashcard). For e-commerce, hasAdultConsideration (added 2026-05-22; value https://schema.org/SexualContentConsideration) is required for adult products.
Generation
When generating schema for a page:
- Identify page type from content analysis
- Select appropriate schema type(s)
- Generate valid JSON-LD with all required + recommended properties
- Include only truthful, verifiable data. Use placeholders clearly marked for user to fill
- Validate output before presenting
Common Schema Templates
Organization
{
"@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
{
"@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
{
"@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. |
1---2name: seo-schema3description: 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".4license: MIT5---67# Schema Markup Analysis & Generation89## Detection10111. Scan page source for JSON-LD `<script type="application/ld+json">`122. Check for Microdata (`itemscope`, `itemprop`)133. Check for RDFa (`typeof`, `property`)144. Always recommend JSON-LD as primary format (Google's stated preference)1516## Validation1718- Check required properties per schema type19- Validate against Google's supported rich result types20- Test for common errors:21 - Missing @context22 - Invalid @type23 - Wrong data types24 - Placeholder text25 - Relative URLs (should be absolute)26 - Invalid date formats27- Flag deprecated types (see below)2829## Schema Type Status (as of June 2026)3031Read `../seo/references/schema-types.md` for the full list. Key rules:3233### ACTIVE (recommend freely):34Organization, 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, DiscussionForumPosting3536### VIDEO & SPECIALIZED (recommend freely):37BroadcastEvent, Clip, SeekToAction, SoftwareSourceCode3839See `schema/templates.json` for ready-to-use JSON-LD templates for these types.4041> **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.4243### NO RICH RESULTS, KEEP IF USEFUL:44- **FAQPage**: Google retired FAQ rich results for ALL sites on May 7, 2026 (supersedes the Aug 2023 gov/health restriction). No Google SERP rich-result benefit; flag existing FAQPage at Info (not Critical) rather than removal. For genuine user Q&A pages, use **QAPage**.4546### DEPRECATED (never recommend):47- **HowTo**: Rich results removed September 202348- **SpecialAnnouncement**: Deprecated July 31, 202549- **CourseInfo, EstimatedSalary, LearningVideo**: Retired June 202550- **ClaimReview**: Retired from rich results June 202551- **VehicleListing**: Retired from rich results June 202552- **Practice Problem**: Deprecation notice 2025-11-05; Search Console / Rich Results Test support removed 2026-01-0653- **Book Actions**: Deprecated/removed from Google rich results; do not recommend it for SERP features.54- Search Console / Rich Results Test / appearance-filter support for CourseInfo, EstimatedSalary, LearningVideo, SpecialAnnouncement, VehicleListing was removed 2025-09-09; Practice Problem support was removed 2026-01-06.5556### Supported for Dataset Search only:57- **Dataset**: Not discontinued; consumed by Google Dataset Search, with no Google Search rich-result surface. Don't advise removal as if it were killed.5859### Still supported (do not flag):60- QAPage (expanded comment-thread properties 2026-03-24), DiscussionForumPosting, Education Q&A (Quiz / `eduQuestionType=Flashcard`). For e-commerce, **hasAdultConsideration** (added 2026-05-22; value `https://schema.org/SexualContentConsideration`) is required for adult products.6162## Generation6364When generating schema for a page:651. Identify page type from content analysis662. Select appropriate schema type(s)673. Generate valid JSON-LD with all required + recommended properties684. Include only truthful, verifiable data. Use placeholders clearly marked for user to fill695. Validate output before presenting7071## Common Schema Templates7273### Organization74```json75{76 "@context": "https://schema.org",77 "@type": "Organization",78 "name": "[Company Name]",79 "url": "[Website URL]",80 "logo": "[Logo URL]",81 "contactPoint": {82 "@type": "ContactPoint",83 "telephone": "[Phone]",84 "contactType": "customer service"85 },86 "sameAs": [87 "[Facebook URL]",88 "[LinkedIn URL]",89 "[Twitter URL]"90 ]91}92```9394### LocalBusiness95```json96{97 "@context": "https://schema.org",98 "@type": "LocalBusiness",99 "name": "[Business Name]",100 "address": {101 "@type": "PostalAddress",102 "streetAddress": "[Street]",103 "addressLocality": "[City]",104 "addressRegion": "[State]",105 "postalCode": "[ZIP]",106 "addressCountry": "US"107 },108 "telephone": "[Phone]",109 "openingHours": "Mo-Fr 09:00-17:00",110 "geo": {111 "@type": "GeoCoordinates",112 "latitude": "[Lat]",113 "longitude": "[Long]"114 }115}116```117118### Article/BlogPosting119```json120{121 "@context": "https://schema.org",122 "@type": "Article",123 "headline": "[Title]",124 "author": {125 "@type": "Person",126 "name": "[Author Name]"127 },128 "datePublished": "[YYYY-MM-DD]",129 "dateModified": "[YYYY-MM-DD]",130 "image": "[Image URL]",131 "publisher": {132 "@type": "Organization",133 "name": "[Publisher]",134 "logo": {135 "@type": "ImageObject",136 "url": "[Logo URL]"137 }138 }139}140```141142## Output143144- `SCHEMA-REPORT.md`: detection and validation results145- `generated-schema.json`: ready-to-use JSON-LD snippets146147### Validation Results148| Schema | Type | Status | Issues |149|--------|------|--------|--------|150| ... | ... | ✅/⚠️/❌ | ... |151152### Recommendations153- Missing schema opportunities154- Validation fixes needed155- Generated code for implementation156157## Error Handling158159| Scenario | Action |160|----------|--------|161| URL unreachable | Report connection error with status code. Suggest verifying URL and checking if the page requires authentication. |162| No schema markup found | Report that no JSON-LD, Microdata, or RDFa was detected. Recommend appropriate schema types based on page content analysis. |163| Invalid JSON-LD syntax | Parse and report specific syntax errors (missing brackets, trailing commas, unquoted keys). Provide corrected JSON-LD output. |164| Deprecated schema type detected | Flag the deprecated type with its retirement date. Recommend the current replacement type or advise removal if no replacement exists. |