askill
seo-schema

seo-schemaSafety 100Repository

Schema markup detection, validation, and generation in JSON-LD format. Covers active schema types, restricted types, deprecated types, JSON-LD templates for common use cases, and a validation checklist for ensuring rich results eligibility.

1 stars
1.2k downloads
Updated 2/19/2026

Package Files

Loading files...
SKILL.md

SEO Schema Skill

Purpose

Detect existing schema markup on pages, validate its accuracy and completeness, identify missing schema opportunities, and generate correct JSON-LD markup. This skill ensures structured data meets Google's current requirements for rich results eligibility while avoiding deprecated or restricted types.


Schema Detection Protocol

Step 1: Extract All Structured Data

FormatHow to DetectPriority
JSON-LD<script type="application/ld+json"> blocksPreferred (Google recommended)
Microdataitemscope, itemtype, itemprop attributesAcceptable but not recommended for new implementations
RDFavocab, typeof, property attributesAcceptable but not recommended for new implementations

Step 2: Parse and Catalog

For each detected block:

  1. Parse JSON-LD (validate JSON syntax)
  2. Identify @type (or array of types)
  3. Catalog all properties and their values
  4. Check for nesting (e.g., Author inside Article)
  5. Record location in DOM (which page, position)

Step 3: Compare Against Requirements

  • Map detected schema types against page type requirements
  • Identify missing required properties
  • Flag deprecated or restricted types
  • Compare against Google's Rich Results eligibility

Active Schema Types (Eligible for Rich Results)

High Priority (Should Be On Every Applicable Site)

TypeUse OnRich ResultRequired Properties
OrganizationHomepageKnowledge Panel, Logoname, url, logo, sameAs
WebSiteHomepageSitelinks Search Boxname, url, potentialAction (SearchAction)
BreadcrumbListAll non-homepage pagesBreadcrumb trail in SERPsitemListElement with ListItem objects
Article / BlogPostingBlog posts, news articlesArticle rich resultheadline, image, datePublished, author
FAQPageFAQ sectionsFAQ accordion in SERPsmainEntity with Question + acceptedAnswer
ProductProduct pagesProduct rich resultname, image, offers (with price, priceCurrency, availability)

Medium Priority (Use When Applicable)

TypeUse OnRich ResultRequired Properties
LocalBusinessLocal businessesLocal pack, Knowledge Panelname, address, telephone, openingHours
SoftwareApplicationSaaS/App pagesSoftware rich resultname, operatingSystem, applicationCategory, offers
Review / AggregateRatingReview pagesStar ratings in SERPsreviewRating or ratingValue, ratingCount
EventEvent pagesEvent rich resultname, startDate, location, offers
CourseEducation/course pagesCourse rich resultname, provider, description
RecipeRecipe pagesRecipe rich resultname, image, recipeIngredient, recipeInstructions
VideoObjectVideo pagesVideo rich resultname, description, thumbnailUrl, uploadDate
JobPostingJob listing pagesJob listing rich resulttitle, description, datePosted, hiringOrganization

Lower Priority (Situational)

TypeUse OnRich Result
BookBook review/listing pagesBook rich result
MusicGroup / MusicRecordingMusic pagesMusic rich result
DatasetData pagesDataset search result
MathSolverMath tool pagesMath solver rich result
EducationalOccupationalProgramProgram pagesProgram listing
PodcastPodcast pagesPodcast carousel

Restricted Schema Types

These types have limited eligibility. Using them incorrectly will not generate rich results and may trigger manual actions.

TypeRestrictionSinceDetails
FAQPageGovernment and health websites onlyAugust 2023Google restricted FAQ rich results to government (.gov) and health (recognized health authority) websites. Other sites can still use the markup but will NOT receive the FAQ rich result in SERPs. Still useful for AI citation extraction.
HowToRich results completely removedSeptember 2023Google removed HowTo rich results entirely. The schema type still exists in schema.org but will not generate any SERP feature. Avoid using for SEO purposes; no visual benefit.

Deprecated Schema Types

These types have been fully deprecated by Google and should be removed from implementations.

TypeDeprecatedDetailsAction
HowTo (rich result)September 2023Rich result removed from SERPsRemove or repurpose; no SEO benefit
SpecialAnnouncementJuly 2025Created during COVID-19 for emergency announcements; no longer supportedRemove entirely; will not generate any rich result
ClaimReviewJune 2025Fact-check rich results deprecatedRemove; consider Article with fact-check content structure instead

Migration Guidance

Deprecated TypeRecommended ReplacementNotes
HowToArticle with clear step-by-step content structureContent itself should be structured as steps; schema should be Article/BlogPosting
SpecialAnnouncementArticle or NewsArticle with appropriate datePublishedRemove the SpecialAnnouncement schema entirely
ClaimReviewArticle or NewsArticle with structured fact-check contentRemove ClaimReview markup; focus on content quality

JSON-LD Templates

Organization (Homepage)

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Company Name",
  "alternateName": "Brand Name",
  "url": "https://example.com",
  "logo": {
    "@type": "ImageObject",
    "url": "https://example.com/logo.png",
    "width": 600,
    "height": 60
  },
  "description": "Brief company description (1-2 sentences)",
  "foundingDate": "2020",
  "sameAs": [
    "https://twitter.com/company",
    "https://linkedin.com/company/name",
    "https://github.com/company"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer service",
    "email": "support@example.com",
    "availableLanguage": ["English"]
  }
}

LocalBusiness

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Business Name",
  "image": "https://example.com/photo.jpg",
  "url": "https://example.com",
  "telephone": "+1-555-555-5555",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main St",
    "addressLocality": "City",
    "addressRegion": "ST",
    "postalCode": "12345",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 40.7128,
    "longitude": -74.0060
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "09:00",
      "closes": "17:00"
    }
  ],
  "priceRange": "$$"
}

Article / BlogPosting

{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Article Title (max 110 characters)",
  "description": "Brief article summary (max 155 characters)",
  "image": {
    "@type": "ImageObject",
    "url": "https://example.com/article-image.jpg",
    "width": 1200,
    "height": 630
  },
  "author": {
    "@type": "Person",
    "name": "Author Name",
    "url": "https://example.com/about/author"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Publisher Name",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png",
      "width": 600,
      "height": 60
    }
  },
  "datePublished": "2025-01-15T08:00:00+00:00",
  "dateModified": "2025-06-01T10:30:00+00:00",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.com/blog/article-slug"
  },
  "wordCount": 2500,
  "keywords": ["keyword1", "keyword2", "keyword3"]
}

SoftwareApplication

{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "Application Name",
  "description": "Brief application description",
  "url": "https://example.com",
  "applicationCategory": "BusinessApplication",
  "operatingSystem": "Web",
  "offers": {
    "@type": "Offer",
    "price": "49.00",
    "priceCurrency": "USD",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "ratingCount": "150",
    "bestRating": "5",
    "worstRating": "1"
  },
  "screenshot": "https://example.com/screenshot.png"
}

WebSite with SearchAction (Sitelinks Search Box)

{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "Site Name",
  "url": "https://example.com",
  "potentialAction": {
    "@type": "SearchAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "https://example.com/search?q={search_term_string}"
    },
    "query-input": "required name=search_term_string"
  }
}

BreadcrumbList

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://example.com"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Blog",
      "item": "https://example.com/blog"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Article Title",
      "item": "https://example.com/blog/article-slug"
    }
  ]
}

FAQPage (Note: Rich results limited to gov/health sites)

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is the first question?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The answer to the first question."
      }
    },
    {
      "@type": "Question",
      "name": "What is the second question?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The answer to the second question."
      }
    }
  ]
}

Validation Checklist

Syntax Validation

CheckPass CriteriaSeverity
Valid JSONParses without syntax errorsCritical
@context present"@context": "https://schema.org"Critical
@type presentValid schema.org typeCritical
No trailing commasJSON does not contain trailing commasCritical
Proper nestingNested objects have correct @typeHigh
No duplicate blocksSame type not duplicated on a single page (unless intentional, e.g., multiple Products)Medium

Content Validation

CheckPass CriteriaSeverity
Property values match visible contentheadline matches the actual page titleHigh
URLs are absoluteAll URL properties use full URLs (https://...)High
Dates are ISO 8601datePublished uses format YYYY-MM-DDTHH:MM:SS+00:00High
Images are accessibleImage URLs return 200 statusHigh
No placeholder valuesNo "Lorem ipsum" or "TODO" in schemaCritical
Author existsAuthor object has at minimum name propertyMedium
Publisher existsPublisher object has name and logoMedium

Google Rich Results Eligibility

CheckPass CriteriaSeverity
Type is supportedGoogle supports the @type for rich resultsHigh
Required properties presentAll Google-required properties for the type are filledCritical
Recommended properties presentAs many recommended properties as applicableMedium
Not using deprecated typesNot using HowTo, SpecialAnnouncement, ClaimReview for rich resultsHigh
Not using restricted types incorrectlyFAQPage only on gov/health sites for rich result expectationMedium
Passes Rich Results TestNo errors in Google's Rich Results Test toolHigh
No policy violationsContent in schema matches page content (no spammy markup)Critical

Cross-Page Consistency

CheckPass CriteriaSeverity
Organization consistentSame Organization schema across all pagesMedium
Publisher consistentSame publisher info in all Article schemasMedium
Logo consistentSame logo URL used throughoutLow
Breadcrumbs accurateBreadcrumb trail matches actual URL hierarchyHigh
No conflicting sameAssameAs links consistent across all Organization referencesLow

Schema Generation Rules

When generating new schema markup:

  1. Always use JSON-LD format (Google's preferred format)
  2. Place in <head> section of the HTML (or just before </body>)
  3. One block per type unless multiple entities of the same type exist on the page
  4. Match visible content exactly; do not add information not present on the page
  5. Use absolute URLs for all URL properties
  6. Include both required and recommended properties wherever data is available
  7. Test with Google's Rich Results Test before deploying
  8. Check the deprecated/restricted lists before implementing any type
  9. Use ISO 8601 for dates with timezone offset
  10. Keep schema up to date when page content changes

Output Format

# Schema Markup Audit: [URL]
**Analyzed:** [YYYY-MM-DD]

## Detected Schema
| # | Type | Format | Valid | Properties Count |
|---|------|--------|-------|-----------------|
| 1 | [type] | JSON-LD | Yes/No | [N] |
| 2 | [type] | JSON-LD | Yes/No | [N] |

## Validation Results
### Block 1: [Type]
- Syntax: [PASS/FAIL]
- Required Properties: [X/Y present]
- Recommended Properties: [X/Y present]
- Rich Results Eligible: [Yes/No/Restricted]
- Issues: [list any issues]

## Missing Schema Opportunities
| Recommended Type | Reason | Priority |
|-----------------|--------|----------|
| [type] | [why this page should have it] | [High/Medium/Low] |

## Generated Schema (if requested)
[JSON-LD blocks ready to implement]

## Deprecated/Restricted Warnings
[Any detected uses of deprecated or restricted types]

Usage

# Detect and validate schema on a page
/seo-schema https://example.com/blog/article

# Generate schema for a page type
/seo-schema generate --type BlogPosting --url https://example.com/blog/article

# Audit schema across entire site (used as subagent of seo-audit)
/seo-schema audit --sitemap https://example.com/sitemap.xml

Notes

  • JSON-LD is the only format recommended for new implementations; microdata and RDFa should be migrated
  • FAQPage schema still has value for AI citation extraction even though rich results are restricted
  • Google's Rich Results Test is the authoritative validation tool
  • Schema.org types evolve; always check current documentation when implementing
  • Multiple JSON-LD blocks on a single page are valid and common (e.g., Organization + BreadcrumbList + Article)
  • Schema should be maintained alongside content; outdated schema (wrong dates, prices) can trigger manual actions

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

95/100Analyzed 2/23/2026

Highly comprehensive SEO schema skill with detection protocols, detailed type categorizations (active/restricted/deprecated), JSON-LD templates for 7+ schema types, and validation checklists. Well-structured with tables, code blocks, and clear sections. Provides actionable guidance with severity-rated validation criteria. The content is broadly applicable despite being in an agent config path. Tags and purpose statement included. Penalized slightly for agent path indicator but content quality is excellent.

100
95
90
95
95

Metadata

Licenseunknown
Version-
Updated2/19/2026
Publisheranorbert-cmyk

Tags

githubtesting