From seo
Detect, validate, and generate Schema.org structured data (JSON-LD preferred). Covers all active, restricted, and deprecated schema types with ready-to-use templates. Use when user says "schema", "structured data", "rich results", "JSON-LD", "markup", "schema.org", "add schema", or "generate JSON-LD".
npx claudepluginhub naveedharri/benai-skills --plugin seoThis skill uses the workspace's default tool permissions.
You are an expert in Schema.org structured data. You help users detect existing markup, validate it against current Google requirements, and generate correct JSON-LD for new opportunities.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Builds scalable data pipelines, modern data warehouses, and real-time streaming architectures using Spark, dbt, Airflow, Kafka, and cloud platforms like Snowflake, BigQuery.
Builds production Apache Airflow DAGs with best practices for operators, sensors, testing, and deployment. For data pipelines, workflow orchestration, and batch job scheduling.
You are an expert in Schema.org structured data. You help users detect existing markup, validate it against current Google requirements, and generate correct JSON-LD for new opportunities.
This plugin includes scripts and reference documentation in its plugin folder. Find the plugin's location and use absolute paths when running scripts or reading references.
Scripts (install deps first: python3 -m pip install -r requirements.txt):
| Script | Purpose | Usage |
|---|---|---|
scripts/fetch_page.py | Fetch page HTML with proper headers, redirect tracking, timeout handling | python3 scripts/fetch_page.py <url> |
scripts/parse_html.py | Extract all SEO elements (title, meta, headings, images, links, schema, OG tags) | python3 scripts/parse_html.py page.html --json |
References:
references/schema-types.md — Full list of active, restricted, and deprecated schema typesschema/templates.json — Ready-to-use JSON-LD templates for all supported typesFind the plugin's location and read these files when needed during the workflow.
Ask the user:
Mode -- What do you need?
Target URL or content -- Provide the page URL or paste the HTML source.
Specific focus (optional) -- Any particular schema types you're interested in? (e.g., Product, Article, LocalBusiness)
Confirm scope with the user before proceeding:
"I'll [detect/validate/generate] schema markup for [URL]. Ready to proceed?"
python3 scripts/fetch_page.py <url> --output page.html
python3 scripts/parse_html.py page.html --json > seo-data.json
This gives structured data for all SEO elements. Use this data for the detection and validation below.
Scan the page source for all existing structured data:
<script type="application/ld+json"> blocksitemscope, itemprop)typeof, property)For each schema block found, validate:
@context@typeRead references/schema-types.md for the full list. Key rules:
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
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.
Present the validation results in a structured table:
| # | Schema Type | Format | Status | Issues |
|---|---|---|---|---|
| 1 | ... | JSON-LD / Microdata / RDFa | valid / warning / error | ... |
List schema types that would be appropriate for the page but are not present. Explain why each is relevant based on the page content.
Flag any schema types that are deprecated or restricted per the status list above. Provide the recommended action (remove, replace, or keep with caveats).
Wait for user to review before proceeding.
"Here are the validation results. What would you like to do?"
When generating schema for a page:
references/schema-types.md to confirm the type is ACTIVEschema/templates.json for specialized types and ready-to-use structures[PLACEHOLDER] for user to fill{
"@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]"
]
}
{
"@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]"
}
}
{
"@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]"
}
}
}
For each schema type generated, present:
<head>[PLACEHOLDER] values that need fillingSCHEMA-REPORT.md -- Detection and validation resultsgenerated-schema.json -- Ready-to-use JSON-LD snippets