Agent skill

SEO Schema

by seranking in seranking/seo-skills

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).

MITAuto-check passedMarketing & SEO

Install SEO Schema

skills CLI
$ npx skills add seranking/seo-skills --skill seo-schema -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install seranking/seo-skills seo-schema --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/seranking/seo-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/seo-schema .claude/skills/seo-schema && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
seo-schema
GitHub stars
160
Token cost
~2.4k tokens
SKILL.md length
964 words
Files
7 (incl. references)
Skills in repo
32
Repo updated
First seen
Licence
MIT

At a glance

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).

  • Works in 8 steps: Fetch HTML… → Detect existing schema (requires… → Validate against Google's spec → …
  • The user asks for schema markup
  • SKILL.md covers Prerequisites, Process, Output format and Tips
  • Reaches search.google.com and schema.org

What it does

SEO Schema is an agent skill from seranking/seo-skills. 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".

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including reference files (for example `references/google-rich-results.md`, `templates/article.json` and `templates/breadcrumb-list.json`).

It sits in Marketing & SEO, covering Schema markup. It works with Model Context Protocol and Firecrawl. The repository describes itself as: Claude SEO Skills — production Claude Agent Skills for the SE Ranking MCP server. Content briefs, AI Search share of voice, audits, backlink gaps, keyword clusters, schema… The licence is MIT.

When your agent uses it

  • The user asks for schema markup
  • Structured data
  • Schema validation
  • Fix the schema on this page

Example prompts

  • “schema markup”
  • “structured data”
  • “JSON-LD”
  • “/seo-schema”

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. Fetch HTML mcpfirecrawl-mcpfirecrawl_scrape (preferred) or degrade
  2. Detect existing schema (requires Firecrawl HTML from step 1)
  3. Validate against Google's spec
  4. Detect page intent
  5. Generate missing JSON-LD
  6. Validate generated JSON-LD
  7. Optional: benchmark against top SERP results DATA_getSerpResults + mcpfirecrawl-mcpfirecrawl_scrape
  8. Synthesise SCHEMA.md

What it can do on your machine

Read from SKILL.md and the folder at commit fd6d140. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • search.google.com
    • schema.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

SEO Schema loads about 2.4k tokens when it runs, and up to ~4.1k if it reads all its reference files. Until then it costs about 99 tokens; SKILL.md has 964 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~99
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from seranking/seo-skills at commit fd6d140, republished under its MIT licence (© seranking). 964 words, ~2,363 tokens.

Download SKILL.mdSave it as .claude/skills/seo-schema/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
seo-schema
description
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".

Example output: examples/seo-schema-budgetbytes-slow-cooker-chicken-noodle-soup-20260514/SCHEMA.md

Schema Markup

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.

Prerequisites

  • Required for detect/validate paths: 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).
  • Optional: SE Ranking MCP server (used in step 7 for benchmarking competitor schema).
  • User provides: a target URL. Optionally a hint about page intent ("this is a product page", "this is a how-to") if the URL pattern doesn't make it obvious.

Process

  1. Fetch HTML mcp__firecrawl-mcp__firecrawl_scrape (preferred) or degrade

    • Cost note. Firecrawl: 1 credit for the target URL, +10 credits if step 7 (competitor benchmark) runs (1 per top-10 SERP result). User may pass --no-firecrawl to force the degraded path (generate-only mode) for credit conservation.
    • If Firecrawl available: scrape the target URL. For SPAs, pass 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.
    • If Firecrawl unavailable: skip steps 2, 3, and 7 entirely (they all need raw HTML). Steps 4–6 still run — the skill becomes "generate-only", producing recommended JSON-LD blocks from intent detection without comparing to what's on the page. Surface clearly in SCHEMA.md: Existing-schema detection: skipped — Firecrawl required (WebFetch returns markdown only). Install via extensions/firecrawl/install.sh.
    • Even with Firecrawl: if JSON-LD blocks appear only after JS render, flag in the output: "JS-rendered schema may not be detected by all crawlers — server-side render JSON-LD where possible."
  2. Detect existing schema (requires Firecrawl HTML from step 1)

    • From the returned html: extract every <script type="application/ld+json"> block.
    • Parse each as JSON. Report syntax errors.
    • List each detected @type.
    • Also detect Microdata (itemscope/itemprop) and RDFa (typeof/property) — flag as legacy and recommend migration to JSON-LD (Google's stated preference).
    • If step 1 degraded: skip this step. Record Existing-schema detection skipped in 01-detected.md.
  3. Validate against Google's spec

    • Load references/google-rich-results.md.
    • For each detected @type, check required and recommended properties.
    • Surface common errors: missing @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.
  4. Detect page intent

    • From URL pattern (/blog/, /products/, /contact/, /how-to/, /faq/).
    • From <title> and <h1> tone.
    • From content signals (numbered list of steps → HowTo; visible Q&A blocks → FAQPage; price + buy button → Product; address + hours → LocalBusiness).
    • If multiple intents detected, generate schema for each.
  5. Generate missing JSON-LD

    • For each detected intent without matching valid schema, load the relevant template from templates/:
      • article.json — for editorial/blog content
      • product.json — for product/SKU pages
      • local-business.json — for brick-and-mortar landing pages
      • faq-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
    • Fill template fields from the live HTML (title → headline, h2s → mainEntity questions, etc.).
    • Mark any field that couldn't be auto-filled as {REPLACE: ...} so the user knows to complete it.
    • Don't generate 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.
  6. Validate generated JSON-LD

    • Re-run the same validation rubric from step 3 on the generated blocks.
    • Surface any required fields still marked {REPLACE: ...}.
  7. Optional: benchmark against top SERP results DATA_getSerpResults + mcp__firecrawl-mcp__firecrawl_scrape

    • Identify the page's primary keyword (from <title> or user input).
    • Pull top 10 organic results.
    • If Firecrawl available: scrape each of the top 10 (10 Firecrawl credits). For each, parse JSON-LD blocks from the returned html and list detected @types. This produces real schema data, not inferences from markdown.
    • If Firecrawl unavailable: skip the benchmark — WebFetch's markdown strips all schema blocks, so any "detection" from it would be guesswork. Write Competitor benchmark skipped — Firecrawl required to read JSON-LD from competitor pages. into 04-competitor-benchmark.md.
    • Surface "schema types used by 6+ of the top 10 that this page is missing." High-signal addition list. (Only emitted when benchmark ran.)
  8. Synthesise SCHEMA.md

    • Validation report (existing schema, pass/fail per block).
    • Recommended additions (with rationale linking back to step 4 detection or step 7 benchmark).
    • Generated <script> blocks ready to paste.
Show full SKILL.md (229 more words)Show less

Output format

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:

markdown
# 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.

Tips

  • JSON-LD goes in <head> or top of <body>. Don't bury it.
  • Test every generated block in Google's Rich Results Test before shipping. The validation in step 3/6 follows the published spec but Google's actual test is authoritative.
  • 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.
  • Don't mark up content that isn't visibly on the page. Google penalises hidden-content schema. If a page doesn't actually have FAQs visible, don't generate FAQPage schema.
  • For Article schema, image is required. If the page has no obvious hero image, leave the {REPLACE: hero image URL} placeholder rather than guessing.
  • The skill is read-mostly on the SE Ranking side: zero SE Ranking credits unless step 7 (competitor benchmark) is requested — that adds ~5–10 SE Ranking credits for DATA_getSerpResults. Firecrawl costs are separate: 1 credit for the target URL, +10 credits when step 7 runs.
  • Verify after deploy: once the generated schema is pasted into your CMS and re-deployed, re-run this skill on the same URL — the new run's "Currently present" section reflects the live state and confirms the schema actually rendered (vs sitting in the CMS but not yet pushed). Ad-hoc alternative: invoke seo-firecrawl on the URL and grep META.md for the expected @types.

© seranking, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 6 other files (references) in skills/seo-schema of seranking/seo-skills.

  • SKILL.md
  • references/google-rich-results.md
  • templates/article.json
  • templates/breadcrumb-list.json
  • templates/faq-page.json
  • templates/local-business.json
  • templates/product.json

Open the folder on GitHubat commit fd6d140

Compare with similar skills

SEO Schema next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

SEO Schema compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
SEO Schema this skillseranking/seo-skills160—~2.4kAutomated safety check: PassMIT
SEO Checkerhanzili/hanzi-browse177—~1.9kAutomated safety check: PassCustom licence
SEONexus-JPF/note-companion870—~2.2kAutomated safety check: PassMIT
Firecrawl Site Crawl ExtensionAgriciDaniel/claude-seo18k1 repos~2kAutomated safety check: PassMIT
Web Scrapersandbaseai/sandbase-skills201—~746Automated safety check: PassApache-2.0
SEO GeoReScienceLab/opc-skills1.8k4 repos~2.1kAutomated safety check: PassApache-2.0

Similar skills

  • SEO Checker

    hanzili/hanzi-browse

    Audit web pages for SEO issues in a real browser. An agent skill from hanzili/hanzi-browse.

    177 GitHub stars~1.9k tokensUpdated 5 mo ago
    Marketing & SEOAuto-check passed
  • SEO

    Nexus-JPF/note-companion

    Use and read this skill immediately if the user request is in any way related to SEO or a site's organic search or AI search presence.

    870 GitHub stars~2.2k tokensUpdated yesterday
    Marketing & SEOAuto-check passed
  • Firecrawl Site Crawl Extension

    AgriciDaniel/claude-seo

    Crawls, maps, and scrapes an entire site through the Firecrawl MCP server for broken-link checks and content inventories.

    18k GitHub starsUsed in 1 repo~2k tokens
    Marketing & SEOAuto-check passed
  • Web Scraper

    sandbaseai/sandbase-skills

    Scrape web pages, crawl sites, extract structured data, and capture screenshots through SandBase.

    201 GitHub stars~746 tokensUpdated 12 days ago
    Data & AnalyticsAuto-check passed
  • SEO Geo

    ReScienceLab/opc-skills

    SEO & GEO (Generative Engine Optimization) for websites. An agent skill from ReScienceLab/opc-skills.

    1.8k GitHub starsUsed in 4 repos~2.1k tokens
    Marketing & SEOAuto-check passed
  • Evaluate Skill

    every-app/open-seo

    Test a candidate OpenSEO skill end to end by running fresh, isolated Codex sessions against the local backend and scoring the reports they save.

    23k GitHub stars~1.8k tokensUpdated yesterday
    Marketing & SEOAuto-check: notes

More from seranking/seo-skills

All 32 skills in this repo
  • SEO Google

    seranking/seo-skills

    Direct access to Google's own SEO data via Search Console (Search Analytics, URL Inspection, Sitemaps), PageSpeed Insights v5, CrUX field data with 25-week history, Indexing API v3, GA4 organic…

    160 GitHub stars~4.8k tokensUpdated 3 mo ago
    Auto-check passed
  • SEO API

    seranking/seo-skills

    SE Ranking API integration architect. An agent skill from seranking/seo-skills.

    160 GitHub stars~4.1k tokensUpdated 3 mo ago
    Auto-check passed
  • SEO Content Audit

    seranking/seo-skills

    E-E-A-T + CITE quality audit for an EXISTING piece of content.

    160 GitHub stars~3k tokensUpdated 3 mo ago
    Auto-check passed
  • SEO Content Brief

    seranking/seo-skills

    Generate a writer-ready SEO content brief from a target domain and topic.

    160 GitHub stars~2.5k tokensUpdated 3 mo ago
    Auto-check passed
  • SEO Drift

    seranking/seo-skills

    Capture an SEO baseline snapshot for a domain or URL, then on later runs compare the current state and surface regressions.

    160 GitHub stars~3.4k tokensUpdated 3 mo ago
    Auto-check passed
  • SEO Firecrawl

    seranking/seo-skills

    Ad-hoc web scraping, site mapping, and full-site crawling via Firecrawl MCP.

    160 GitHub stars~2.3k tokensUpdated 3 mo ago
    Auto-check passed

Categories

Questions about SEO Schema

What does SEO Schema do?

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). SEO Schema is an agent skill from seranking/seo-skills. 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).

When should I use SEO Schema?

SEO Schema fits situations like: the user asks for schema markup; structured data; schema validation; fix the schema on this page.

How do I install SEO Schema in Claude Code?

Run `npx skills add seranking/seo-skills --skill seo-schema -a claude-code`. Or copy the skill folder (skills/seo-schema in seranking/seo-skills) into .claude/skills/seo-schema in your project. Claude Code loads it when a task matches its description.

How do I install SEO Schema in Codex?

Run `npx skills add seranking/seo-skills --skill seo-schema -a codex`. Or copy the skill folder (skills/seo-schema in seranking/seo-skills) into .agents/skills/seo-schema in your project. Codex loads it when a task matches its description.

Can I use SEO Schema in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add seranking/seo-skills --skill seo-schema -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/seo-schema, .gemini/skills/seo-schema, .github/skills/seo-schema and .opencode/skills/seo-schema in your project.

What does SEO Schema need to run?

SKILL.md names no scripts, command-line tools or credentials: SEO Schema is instructions for the agent only.

Does SEO Schema access the network?

SKILL.md names 2 domains. In commands or code: search.google.com and schema.org; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is SEO Schema safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does SEO Schema use?

SEO Schema is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does SEO Schema use?

About 2.4k tokens (SKILL.md is roughly 9.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.8k tokens, read only when the agent opens those files.

What are the alternatives to SEO Schema?

Skills that share tags, products or a category with SEO Schema: SEO Checker (hanzili/hanzi-browse, 177 stars), SEO (Nexus-JPF/note-companion, 870 stars), Firecrawl Site Crawl Extension (AgriciDaniel/claude-seo, 18k stars) and Web Scraper (sandbaseai/sandbase-skills, 201 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains SEO Schema?

seranking (a GitHub organization) maintains it in seranking/seo-skills, which has 160 GitHub stars. The repository holds 32 skills in this directory. The repository was last updated on June 25, 2026.

Source: seranking/seo-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.