schema-architect — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited schema-architect (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Generate valid, comprehensive JSON-LD structured data that earns rich results and optimizes pages for AI-driven search engines. This is one of the plugin's highest-utility skills — Claude reliably produces valid, typed JSON-LD from observable page content.
Reference: See schema-types-guide.md for the full schema.org type catalog.Works identically on current Opus / Sonnet / Haiku models. Schema generation is a well-defined structured output task all three models handle reliably.
Analyze the target page and map it to one or more schema types.
| Page Kind | Primary Schema Types |
|---|---|
| Homepage | Organization + WebSite + BreadcrumbList |
| Blog post | Article / BlogPosting + BreadcrumbList + FAQPage (if Q&A present) |
| Product page | Product + BreadcrumbList + Review / AggregateRating |
| Service page | Service + Organization + BreadcrumbList |
| FAQ page | FAQPage + BreadcrumbList |
| How-to guide | HowTo + BreadcrumbList |
| Author / team | ProfilePage + Person |
| Contact page | LocalBusiness / Organization + ContactPoint |
| Event page | Event + BreadcrumbList |
| Recipe | Recipe + BreadcrumbList |
| Video page | VideoObject + BreadcrumbList |
| Job listing | JobPosting + Organization |
Steps:
Populate every schema property from real page data. Never invent or use placeholder values such as "Lorem ipsum" or "example.com".
Extract the following where available:
<time>, meta tags, CMSfields).
Collect url, width, height, and caption when present.
brand, condition, reviews, aggregate rating.
time.
performer, ticket URL, offers.
content URL or embed URL.
organization, salary, location.
If a required property cannot be found on the page, flag it in the output and recommend the user add the missing content.
Generate complete JSON-LD wrapped in <script type="application/ld+json">.
author as a full Person objectinside Article, not a plain string).
YYYY-MM-DDTHH:MM:SSZ or with offset).width/height when known.@graph to combine multiple types in a single script block when theyshare the same page context.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Extracted page title", // Required -- max 110 chars
"image": [
"https://example.com/images/hero.jpg" // Required -- at least one
],
"datePublished": "2026-01-15T08:00:00Z", // Required -- ISO 8601
"dateModified": "2026-03-10T12:30:00Z", // Recommended
"author": { // Required -- nest as Person
"@type": "Person",
"name": "Author Name",
"url": "https://example.com/author"
},
"publisher": { // Recommended
"@type": "Organization",
"name": "Site Name",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"description": "Extracted meta description", // Recommended
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/article-slug"
}
}
</script>Provide two versions of every schema block:
Add inline comments (//) explaining what each property does and why it matters for rich results.
After generating schema for the current page, identify additional schema types that could unlock rich result features the page is not yet using.
Deprecation check first (see references/schema-types-guide.md): Google retired HowTo rich results (2023) and FAQ rich results entirely (May 2026), plus Book Actions, Course Info, ClaimReview, Estimated Salary, Learning Video, Special Announcement, and Vehicle Listing (June 2025). Still recommend FAQPage/HowTo markup where the content fits — as AI-parsing aids — but never present them as rich-result opportunities.
| Rich Result Feature | Schema Required | Visual Benefit |
|---|---|---|
| Review stars | Review / AggregateRating | Star rating in snippet |
| Price & availability | Product + Offer | Price badge in results |
| Event dates | Event | Date/time + location in SERP |
| Recipe card | Recipe | Image, rating, cook time card |
| Video thumbnail | VideoObject | Video preview in results |
| Breadcrumb trail | BreadcrumbList | URL path replaced with breadcrumbs |
| Sitelinks searchbox | WebSite + SearchAction | Search box on branded queries |
| Speakable | Speakable (on Article) | Content read by voice assistants and AI |
For each opportunity found:
Run every generated schema block through these checks before delivering it.
@type.BlogPosting over Article whenapplicable, LocalBusiness subtype over generic LocalBusiness).
https://).@context is set to "https://schema.org".Recommend the user paste the final markup into:
(note: no longer reports FAQ — support removed June 2026)
(also run the bundled scripts/validate-jsonld.py for a deterministic local check)
deployment for errors or warnings.
Provide copy-paste implementation instructions tailored to the user's stack.
// app/blog/[slug]/page.tsx
export default function BlogPost({ params }) {
const jsonLd = { /* generated schema object */ };
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={
{ __html: JSON.stringify(jsonLd) }
}
/>
{/* page content */}
</>
);
}Use Next.js metadata.other or a dedicated head component as alternatives.
Create a reusable component:
function JsonLd({ data }: { data: Record<string, unknown> }) {
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={
{ __html: JSON.stringify(data) }
}
/>
);
}Render <JsonLd data={schema} /> inside the page component. For SSR frameworks (Remix, Gatsby), place it in the document head.
generate most types. Add custom schema via their "Custom Schema" UI.
wp_head action in functions.php or paste the<script> block directly into a Custom HTML block in the editor.
Place the <script type="application/ld+json"> block immediately before </head> or at the end of <body>. Both locations are valid; <head> is conventional.
<script type="application/ld+json">...</script> block.when managing schema across many pages.
These schema types are critical for visibility in AI-powered search engines, LLM-driven answers, and voice assistants.
| Schema Type | AEO Impact |
|---|---|
FAQPage | LLMs extract Q&A pairs directly as answers. High citation rate. |
HowTo | Step-by-step content is highly citable by AI summaries. |
Organization | Defines the brand entity; helps AI attribute information correctly. |
Product | Enables AI-driven product recommendations and comparisons. |
Speakable | Explicitly marks sections for voice assistants and AI reading. |
Review / AggregateRating | AI uses ratings to rank recommendations and surface trust signals. |
FAQPage schema with visible FAQ content on the page.Google penalizes FAQ schema that does not match rendered content.
Use CSS selectors or xpath to identify speakable blocks.
injection) so AI engines consistently associate content with the brand.
captures the process and the FAQ captures common follow-up questions.
Every response from Schema Architect must include:
// inline comments.AI search visibility.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.