# SEO Schema

> Detect, validate, and generate Schema.org structured data (JSON-LD) — type coverage (Organization, WebSite, Article, Product, FAQ, LocalBusiness, and more) and required-field completeness. Use when the user asks about schema, structured data, JSON-LD, or rich results.

- Skill: `freeautomation-tech/seo-schema` (Agent Skill)
- Install (CLI): `npx skillmds@latest add freeautomation-tech/seo-schema`
- Raw SKILL.md: https://api.skillmd.com/api/skills/freeautomation-tech/seo-schema/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: FreeAutomation-Tech (https://skillmd.com/u/freeautomation-tech)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/freeautomation-tech/seo-schema

---


# Schema (Structured Data)

Detect, validate, and generate Schema.org JSON-LD markup.

## Procedure

1. **Detect and validate** the structured data already on the page:

   ```python
   from seo_kit.crawler.page_fetcher import fetch_page, parse_html
   from seo_kit.schema.validator import extract_json_ld, validate_schema

   _, html, _, _ = fetch_page("<url>")
   page = parse_html(html, "<url>")
   blocks = extract_json_ld(html)          # raw JSON-LD blocks
   result = validate_schema(page, html)    # coverage + completeness
   print(result.to_dict())
   ```

2. **Report coverage:** which schema types are present (Article, Product,
   FAQPage, Organization...) and which required fields are missing.

3. **Generate missing schema.** When a type is missing or incomplete, write
   valid JSON-LD and give the user ready-to-paste `<script>` tags. Reference
   the recommended fields from the audit output.

4. **Apply** by suggesting the user add the `<script type="application/ld+json">`
   block to the page `<head>` (or by editing the file if the user provides it).

## Common types and required fields

| Type | Required |
|------|----------|
| Organization | name |
| WebSite | name, url |
| Article | headline, author, datePublished |
| Product | name, offers |
| FAQPage | mainEntity |
| LocalBusiness | name, address |
| BreadcrumbList | itemListElement |

## Notes

- Only JSON-LD is detected. Other formats (microdata, RDFa) are not scanned.
- Inspired by [AgriciDaniel/claude-seo](https://github.com/AgriciDaniel/claude-seo)
  and [seranking/seo-skills](https://github.com/seranking/seo-skills) (both MIT).

