Detect existing JSON-LD structured data on a page, validate against Google's rich-result requirements, and generate missing schema markup (Article, Product, LocalBusiness, FAQPage, BreadcrumbList). Produces paste-ready JSON-LD script blocks. Use when the user asks for "schema markup", "structured data", "JSON-LD", "rich results", "schema validation", or "fix the schema on this page".
npx skills add https://github.com/seranking/seo-skills --skill seo-schema
> Example output: examples/seo-schema-budgetbytes-slow-cooker-chicken-noodle-soup-20260514/SCHEMA.md
Detect, validate, and generate Schema.org JSON-LD for a page. Output is paste-ready <script> blocks the user can drop into their CMS or page template, plus a validation report on what's currently present and what's broken.
mcp__firecrawl-mcp__firecrawl_scrape (raw HTML access). WebFetch returns markdown only — every <script type="application/ld+json"> block is stripped before the skill ever sees it. Without Firecrawl, the skill can still generate new schema from intent detection (steps 4–6) but cannot detect or validate what's already on the page (steps 2–3, 7).mcp__firecrawl-mcp__firecrawl_scrape (preferred) or degrade--no-firecrawl to force the degraded path (generate-only mode) for credit conservation.waitFor: 2000 (or a CSS selector for the main content) so the JS-rendered DOM is captured. Use the response's html for JSON-LD parsing in step 2 and metadata for canonical/robots cross-reference.SCHEMA.md: Existing-schema detection: skipped — Firecrawl required (WebFetch returns markdown only). Install via extensions/firecrawl/install.sh.html: extract every <script type="application/ld+json"> block.@type.itemscope/itemprop) and RDFa (typeof/property) — flag as legacy and recommend migration to JSON-LD (Google's stated preference).Existing-schema detection skipped in 01-detected.md.references/google-rich-results.md.@type, check required and recommended properties.@context, dates not in ISO 8601, prices as numbers instead of strings, availability as plain text instead of schema.org URL, telephone not in international format./blog/, /products/, /contact/, /how-to/, /faq/).<title> and <h1> tone.templates/:article.json — for editorial/blog contentproduct.json — for product/SKU pageslocal-business.json — for brick-and-mortar landing pagesfaq-page.json — for explicit Q&A blocks (gov/health allowlist only — see references/google-rich-results.md)breadcrumb-list.json — for any page with breadcrumb navigation{REPLACE: ...} so the user knows to complete it.HowTo — Google retired HowTo rich results in September 2023 (mobile + desktop). The schema can still ship for semantic clarity, but expect zero rich-result uplift; flag this in the recommendation rationale rather than treating HowTo as a live option.{REPLACE: ...}.DATA_getSerpResults + mcp__firecrawl-mcp__firecrawl_scrape<title> or user input).html and list detected @types. This produces real schema data, not inferences from markdown.Competitor benchmark skipped — Firecrawl required to read JSON-LD from competitor pages. into 04-competitor-benchmark.md.SCHEMA.md<script> blocks ready to paste.Create a folder seo-schema-{target-slug}-{YYYYMMDD}/ with:
seo-schema-{target-slug}-{YYYYMMDD}/
├── 01-detected.md (existing schema, validation results)
├── 02-recommended.md (which types this page should add and why)
├── 03-generated/
│ ├── article.jsonld
│ ├── faq-page.jsonld
│ └── ... (per generated type)
├── 04-competitor-benchmark.md (only if step 7 ran)
└── SCHEMA.md (deliverable: paste-ready blocks + install instructions)
SCHEMA.md follows this shape:
# Schema Markup: {URL}
> Snapshot dated {YYYY-MM-DD}.
## Currently present
- `Article` — valid ✓
- `BreadcrumbList` — invalid ✗ (missing `position` on item 2)
- ...
## Recommended additions
- `FAQPage` — page has 6 visible Q&A blocks but no FAQ schema. Adding this is eligible for FAQ rich results (subject to Google's 2024+ tightening — see references/google-rich-results.md).
- `HowTo` — ...
## Paste these into the `<head>` of the page
### FAQPage
\`\`\`html
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [...]
}
</script>
\`\`\`
### ... (per generated block)
## Validation pass
- All generated blocks parse cleanly ✓
- All required fields filled ({n} {REPLACE: ...} placeholders remain — see below)
- {REPLACE: ...} placeholders to fill manually:
- article.jsonld → `image` (need a hero image URL ≥ 1200×800)
- ...
## Install
1. Copy each `<script>` block above.
2. Paste into the `<head>` of the relevant page (or the global `<head>` template, gated by page type).
3. Test with [Google's Rich Results Test](https://search.google.com/test/rich-results).
4. Submit the URL to GSC for re-indexing if changes are critical.
<head> or top of <body>. Don't bury it.references/google-rich-results.md is dated. If it's >6 months old when you run this skill, flag staleness in the output and recommend the user verify against current docs.image is required. If the page has no obvious hero image, leave the {REPLACE: hero image URL} placeholder rather than guessing.DATA_getSerpResults. Firecrawl costs are separate: 1 credit for the target URL, +10 credits when step 7 runs.seo-firecrawl on the URL and grep META.md for the expected @types.A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).
Extracts and analyzes competitors' ads from ad libraries (Facebook, LinkedIn, etc.) to understand what messaging, problems, and creative approaches are working. Helps inspire and improve your own ad campaigns.
Identifies high-quality leads for your product or service by analyzing your business, searching for target companies, and providing actionable contact strategies. Perfect for sales, business development, and marketing professionals.
Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.
Complete App Store Optimization (ASO) toolkit for researching, optimizing, and tracking mobile app performance on Apple App Store and Google Play Store
NGS analysis toolkit. BAM to bigWig conversion, QC (correlation, PCA, fingerprints), heatmaps/profiles (TSS, peaks), for ChIP-seq, RNA-seq, ATAC-seq visualization.
Materials science toolkit. Crystal structures (CIF, POSCAR), phase diagrams, band structure, DOS, Materials Project integration, format conversion, for computational materials science.
Transforms vague UI ideas into polished, Stitch-optimized prompts. Enhances specificity, adds UI/UX keywords, injects design system context, and structures output for better generation results.
Take seranking/seo-schema from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.