LICENSE.txt
MIT License - see repository root LICENSE file for complete terms. Copyright (c) 2026 AgriciDaniel https://github.com/AgriciDaniel/claude-seo
agricidaniel/claude-seo · GitHub
Detect, validate, and generate Schema.org structured data. JSON-LD format preferred. Use when user says "schema", "structured data", "rich results", "JSON-LD", or "markup".
프로젝트 폴더에서 아래 명령어를 실행하고, 설치할 에이전트를 선택하세요.
npx skills add agricidaniel/claude-seo --skill seo-schema설치 명령을 직접 실행해야 적용됩니다. 지원 에이전트와 필요한 권한·라이선스는 제작자의 안내를 확인하세요.
LICENSE.txtMIT License - see repository root LICENSE file for complete terms. Copyright (c) 2026 AgriciDaniel https://github.com/AgriciDaniel/claude-seo
references/deprecated-types-2024-2026.md# Deprecated Schema.org rich result types (2024–2026) Authoritative reference for every rich result Google retired during the 2024–2025 cleanup. Whenever a user asks for one of these, the `seo-schema` skill must explain that the type is deprecated and either redirect to an active alternative or note that no replacement exists. ## Retired June 12, 2025 Announced at [Simplifying our Search rich results](https://developers.google.com/search/blog/2025/06/simplifying-search-results) (developers.google.com/search/blog). | Type | Retired | Notes | |---|---|---| | **Vehicle Listing** (`@type: VehicleListing` / `Vehicle`) | June 2025 | No replacement. Google no longer renders dealer inventory rich cards. Use regular `Product` schema if the listing is sold online. | | **Claim Review** (`@type: ClaimReview`) | June 2025 | No replacement. The fact-check rich result was the main consumer of ClaimReview; without it, the markup has no SERP effect. ClaimReview *the vocabulary* is still in schema.org, but Google ignores it. | | **Estimated Salary** (`@type: EstimatedSalary` / `OccupationalAggregateRating`) | June 2025 | No replacement. `JobPosting` remains live for individual jobs. | | **Learning Video** | June 2025 | No replacement. The generic `VideoObject` rich result still renders. | | **Course Info carousel** | June 2025 | The carousel variant retired. The single-result `Course` rich card is still live. When asked for "Course Info", verify whether the user wants the carousel (dead) or the live single-result variant. | ## Retired July 31, 2025 | Type | Retired | Notes | |---|---|---| | **Special Announcement** (`@type: SpecialAnnouncement`) | July 2025 | The COVID-era emergency-info card was deprecated. No replacement. | ## Earlier (pre-v2 baseline) retirements These are listed for completeness so the LLM doesn't suggest them. | Type | Retired | Notes | |---|---|---| | **HowTo** (`@type: HowTo`) | September 2023 | Rich result removed from desktop and mobile. The vocabulary remains but produces no Google rich-result effect. Do not recommend HowTo for SERP benefit; any AI citation rationale is unconfirmed. | | **FAQ** (`@type: FAQPage`) | Aug 2023 (restricted); **May 7, 2026 (fully retired)** | Rich results fully retired for **all** sites on May 7, 2026, superseding the 2023 gov/health restriction. FAQ docs were removed 2026-06-15; Search Console API timing needs recheck. Flag existing FAQPage as Info (not Critical); any AI/LLM citation benefit is unconfirmed. Do **not** recommend removal or new FAQPage for SERP benefit. For genuine single-question pages, use `QAPage`. | ## Tooling-removal timeline (don't send users to dead validators) For **CourseInfo, EstimatedSalary, LearningVideo, SpecialAnnouncement, VehicleListing**: documentation was removed in **2025** (the type docs went away **2025-09-09**) and these types no longer produce rich results. Don't validate them in the Rich Results Test or expect Search Console reporting — those surfaces no longer cover them. **Practice Problem** is the type Google explicitly ties to the January-2026 sunset: it got a deprecation notice **2025-11-05**, with Rich Results Test, Search Console rich-result reporting, and appearance-filter support removed starting **January 2026**. **Dataset** is a separate case: **not discontinued** — Dataset markup is consumed only by **Dataset Search** (still live), not by Google Search rich results (clarified 2025-11-05). Don't advise removal as if it were killed. ## Replacement decision table When generating schema, prefer these alternatives: | Asked for | Replacement | |---|---| | `ClaimReview` | None — explain rich result is dead; suggest `Article` with `dateline` if news context. | | `EstimatedSalary` | `JobPosting` with `baseSalary` for specific roles. | | `LearningVideo` | `VideoObject` (still live). | | `Course Info` carousel | Single `Course` rich card (still live). | | `SpecialAnnouncement` | `Event` if time-bounded; otherwise `Article` or `WebPage`. | | `VehicleListing` | `Product` with vehicle-specific properties. | | `HowTo` (for SERP) | None — explain the rich result is dead. Suggest article structure with clear `<h2>` step headings if the goal is comprehension; ranking benefit is no longer schema-driven. | | `FAQPage` (for SERP) | None, rich results retired May 2026. Keep only if accurate for non-SERP consumers; use `QAPage` for genuine user-submitted Q&A pages. | ## Primary sources - Google retirement announcement (June 2025): https://developers.google.com/search/blog/2025/06/simplifying-search-results - Special Announcement deprecation (July 2025): https://developers.google.com/search/blog - HowTo retirement (September 2023): https://developers.google.com/search/blog/2023/08/howto-faq-changes - FAQ restriction (August 2023): https://developers.google.com/search/blog/2023/08/howto-faq-changes - FAQ rich result retirement (May 7, 2026): https://developers.google.com/search/docs/appearance/structured-data/faqpage Last verified against developers.google.com: 2026-05-25.
SKILL.md---
name: seo-schema
description: >
Detect, validate, and generate Schema.org structured data. JSON-LD format
preferred. Use when user says "schema", "structured data", "rich results",
"JSON-LD", or "markup".
user-invocable: true
argument-hint: "[url]"
license: MIT
metadata:
author: AgriciDaniel
version: "2.2.5"
category: seo
---
# Schema Markup Analysis & Generation
## Detection
1. Scan page source for JSON-LD `<script type="application/ld+json">`
2. Check for Microdata (`itemscope`, `itemprop`)
3. Check for RDFa (`typeof`, `property`)
4. Always recommend JSON-LD as primary format (Google's stated preference)
## Validation
- Check required properties per schema type
- Validate against Google's supported rich result types
- Test for common errors:
- Missing @context
- Invalid @type
- Wrong data types
- Placeholder text
- Relative URLs (should be absolute)
- Invalid date formats
- Flag deprecated types (see below)
## Schema Type Status (as of June 2026)
Read `../seo/references/schema-types.md` for the full list. Key rules:
### ACTIVE (recommend freely):
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
### VIDEO & SPECIALIZED (recommend freely):
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.
### NO RICH RESULTS, KEEP IF USEFUL:
- **FAQPage**: Google retired FAQ rich results for ALL sites on May 7, 2026 (supersedes the Aug 2023 gov/health restriction). No Google SERP rich-result benefit; flag existing FAQPage at Info (not Critical) rather than removal. For genuine user Q&A pages, use **QAPage**.
### DEPRECATED (never recommend):
- **HowTo**: Rich results removed September 2023
- **SpecialAnnouncement**: Deprecated July 31, 2025
- **CourseInfo, EstimatedSalary, LearningVideo**: Retired June 2025
- **ClaimReview**: Retired from rich results June 2025
- **VehicleListing**: Retired from rich results June 2025
- **Practice Problem**: Deprecation notice 2025-11-05; Search Console / Rich Results Test support removed 2026-01-06
- **Book Actions**: Deprecated/removed from Google rich results; do not recommend it for SERP features.
- Search Console / Rich Results Test / appearance-filter support for CourseInfo, EstimatedSalary, LearningVideo, SpecialAnnouncement, VehicleListing was removed 2025-09-09; Practice Problem support was removed 2026-01-06.
### Supported for Dataset Search only:
- **Dataset**: Not discontinued; consumed by Google Dataset Search, with no Google Search rich-result surface. Don't advise removal as if it were killed.
### Still supported (do not flag):
- QAPage (expanded comment-thread properties 2026-03-24), DiscussionForumPosting, Education Q&A (Quiz / `eduQuestionType=Flashcard`). For e-commerce, **hasAdultConsideration** (added 2026-05-20; value `https://schema.org/SexualContentConsideration`) is required for adult products. `Product.category` accepts `Text`, `CategoryCode`, or arrays mixing both.
## Generation
When generating schema for a page:
1. Identify page type from content analysis
2. Select appropriate schema type(s)
3. Generate valid JSON-LD with all required + recommended properties
4. Include only truthful, verifiable data. Use placeholders clearly marked for user to fill
5. Validate output before presenting
6. For review markup, reject fake reviews and undisclosed incentivized reviews.
An incentive must be clearly and prominently disclosed on the page.
## Common Schema Templates
### Organization
```json
{
"@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]"
]
}
```
### LocalBusiness
```json
{
"@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]"
}
}
```
### Article/BlogPosting
```json
{
"@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]"
}
}
}
```
## Output
- `SCHEMA-REPORT.md`: detection and validation results
- `generated-schema.json`: ready-to-use JSON-LD snippets
### Validation Results
| Schema | Type | Status | Issues |
|--------|------|--------|--------|
| ... | ... | ✅/⚠️/❌ | ... |
### Recommendations
- Missing schema opportunities
- Validation fixes needed
- Generated code for implementation
## Error Handling
| Scenario | Action |
|----------|--------|
| URL unreachable | Report connection error with status code. Suggest verifying URL and checking if the page requires authentication. |
| No schema markup found | Report that no JSON-LD, Microdata, or RDFa was detected. Recommend appropriate schema types based on page content analysis. |
| Invalid JSON-LD syntax | Parse and report specific syntax errors (missing brackets, trailing commas, unquoted keys). Provide corrected JSON-LD output. |
| Deprecated schema type detected | Flag the deprecated type with its retirement date. Recommend the current replacement type or advise removal if no replacement exists. |