Skip to content

Latest commit

 

History

History
160 lines (135 loc) · 4.98 KB

File metadata and controls

160 lines (135 loc) · 4.98 KB
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".

Schema Markup Analysis & Generation

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

{
  "@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

Execution Plan

When invoked as an agent, execute these steps:

  1. Parse the page HTML to extract JSON-LD using scripts/parse_html.py --fetch "$URL" --json, or fetch first with scripts/fetch_page.py "$URL" --output /tmp/page.html and then run scripts/parse_html.py /tmp/page.html --url "$URL" --json.
  2. Extract the schema array from the output.
  3. Validate each schema object against rules in resources/references/schema-types.md.
  4. If modifying local files, optionally run scripts/validate_schema.py file.html as a pre-commit check.
  5. Provide the user with the validation results and new JSON-LD snippets.