{"id":"29f122f8-b436-48b2-ac31-3492d5c5b53b","entityType":"agent","slug":"clawhub-aaron-he-zhu-schema-markup-generator","name":"Schema Markup Generator","canonicalUrl":"https://www.xpersona.co/agent/clawhub-aaron-he-zhu-schema-markup-generator","canonicalPath":"/agent/clawhub-aaron-he-zhu-schema-markup-generator","generatedAt":"2026-10-09T23:52:51.964Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"description":"Generates structured data markup (Schema.org JSON-LD) to enable rich results in search engines including FAQ snippets, How-To cards, Product listings, Review... Skill: Schema Markup Generator Owner: aaron-he-zhu Summary: Generates structured data markup (Schema.org JSON-LD) to enable rich results in search engines including FAQ snippets, How-To cards, Product listings, Review... Tags: latest:2.0.0 Version history: v2.0.0 | 2026-02-14T04:17:28.548Z | auto **Version 2.0.0 – Major update: Adds triggers/metadata, clarifies usage, and links to SEO skills library** - Added trigger","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1K downloads reported by the source. Last updated 4/15/2026.","installCommand":"clawhub skill install kn73qjxwmbna25qq8q051epqt980sys5:schema-markup-generator","sourceUrl":"https://clawhub.ai/aaron-he-zhu/schema-markup-generator","homepage":"https://clawhub.ai/aaron-he-zhu/schema-markup-generator","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/aaron-he-zhu/schema-markup-generator","kind":"source"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Generates structured data markup (Schema.org JSON-LD) to enable rich results in search engines including FAQ snippets, How-To cards, Product listings, Review..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"stars":null,"forks":null,"downloads":1002,"packageName":null,"latestVersion":"2.0.0","tractionLabel":"1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-03-01T00:57:02.942Z","emptyReason":null},"lastUpdatedAt":"2026-04-15T00:45:39.800Z","lastCrawledAt":"2026-03-01T00:57:02.942Z","lastIndexedAt":null,"nextCrawlAt":"2026-03-02T00:57:02.942Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.0","createdAt":"2026-02-14T04:17:28.548Z","changelog":"**Version 2.0.0 – Major update: Adds triggers/metadata, clarifies usage, and links to SEO skills library** - Added triggers and tags in metadata to detect common SEO/schema requests. - Expanded description to clarify when to use and related skills for meta tags and technical SEO. - Introduced author attribution, license, and explicit version metadata. - Linked to the full SEO & GEO Skills Library and provided usage context within a broader skill set. - No changes to operational workflow or markup examples.","fileCount":4,"zipByteSize":16758},{"version":"0.1.2","createdAt":"2026-02-11T15:36:07.108Z","changelog":"- Updated skill manifest: added \"geo-relevance\" and removed version field from SKILL.md. - No functional or workflow changes to the schema generation instructions. - Content and usage documentation remain unchanged.","fileCount":4,"zipByteSize":16125},{"version":"0.1.1","createdAt":"2026-02-10T16:02:12.012Z","changelog":"- Added skill version metadata (version: \"1.0\") to SKILL.md. - No other user-facing changes or functionality updates; documentation content remains unchanged.","fileCount":null,"zipByteSize":null},{"version":"0.1.0","createdAt":"2026-02-08T14:03:30.966Z","changelog":"Initial release—generate Schema.org structured data markup in JSON-LD. - Supports FAQ, How-To, Product, Article, Local Business, Organization, Review/Rating, and more. - Recommends schema types based on content and maps user content to schema properties. - Offers step-by-step instructions for generation and validation of markup. - Provides eligibility analysis for common rich result types (FAQ, How-To, Product, etc.). - Works with both web-crawled data and manual user inputs.","fileCount":null,"zipByteSize":null}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install kn73qjxwmbna25qq8q051epqt980sys5:schema-markup-generator","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-aaron-he-zhu-schema-markup-generator/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-aaron-he-zhu-schema-markup-generator/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-aaron-he-zhu-schema-markup-generator/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-aaron-he-zhu-schema-markup-generator/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-aaron-he-zhu-schema-markup-generator/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-aaron-he-zhu-schema-markup-generator/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T23:52:51.961Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-aaron-he-zhu-schema-markup-generator/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-aaron-he-zhu-schema-markup-generator/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-aaron-he-zhu-schema-markup-generator/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-aaron-he-zhu-schema-markup-generator/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"readme":"Skill: Schema Markup Generator\n\nOwner: aaron-he-zhu\n\nSummary: Generates structured data markup (Schema.org JSON-LD) to enable rich results in search engines including FAQ snippets, How-To cards, Product listings, Review...\n\nTags: latest:2.0.0\n\nVersion history:\n\nv2.0.0 | 2026-02-14T04:17:28.548Z | auto\n\n**Version 2.0.0 – Major update: Adds triggers/metadata, clarifies usage, and links to SEO skills library**\n\n- Added triggers and tags in metadata to detect common SEO/schema requests.\n- Expanded description to clarify when to use and related skills for meta tags and technical SEO.\n- Introduced author attribution, license, and explicit version metadata.\n- Linked to the full SEO & GEO Skills Library and provided usage context within a broader skill set.\n- No changes to operational workflow or markup examples.\n\nv0.1.2 | 2026-02-11T15:36:07.108Z | auto\n\n- Updated skill manifest: added \"geo-relevance\" and removed version field from SKILL.md.\n- No functional or workflow changes to the schema generation instructions. \n- Content and usage documentation remain unchanged.\n\nv0.1.1 | 2026-02-10T16:02:12.012Z | auto\n\n- Added skill version metadata (version: \"1.0\") to SKILL.md.\n- No other user-facing changes or functionality updates; documentation content remains unchanged.\n\nv0.1.0 | 2026-02-08T14:03:30.966Z | auto\n\nInitial release—generate Schema.org structured data markup in JSON-LD.\n\n- Supports FAQ, How-To, Product, Article, Local Business, Organization, Review/Rating, and more.\n- Recommends schema types based on content and maps user content to schema properties.\n- Offers step-by-step instructions for generation and validation of markup.\n- Provides eligibility analysis for common rich result types (FAQ, How-To, Product, etc.).\n- Works with both web-crawled data and manual user inputs.\n\nArchive index:\n\nArchive v2.0.0: 4 files, 16758 bytes\n\nFiles: references/schema-templates.md (14832b), references/validation-guide.md (12412b), SKILL.md (25169b), _meta.json (142b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: schema-markup-generator\ndescription: 'Use when the user asks to \"add schema markup\", \"generate structured data\", \"JSON-LD\", \"rich snippets\", \"FAQ schema\", \"add FAQ rich results\", \"I want star ratings in Google\", \"product markup\", or \"recipe schema\". Generates structured data markup (Schema.org JSON-LD) to enable rich results in search engines including FAQ snippets, How-To cards, Product listings, Reviews, and more. For meta tag optimization, see meta-tags-optimizer. For broader technical SEO, see technical-seo-checker.'\nlicense: Apache-2.0\nmetadata:\n  author: aaron-he-zhu\n  version: \"2.0.0\"\n  geo-relevance: \"medium\"\n  tags:\n    - seo\n    - schema markup\n    - structured data\n    - json-ld\n    - rich results\n    - rich snippets\n    - faq schema\n    - how-to schema\n    - product schema\n  triggers:\n    - \"add schema markup\"\n    - \"generate structured data\"\n    - \"JSON-LD\"\n    - \"rich snippets\"\n    - \"FAQ schema\"\n    - \"schema.org\"\n    - \"structured data markup\"\n    - \"add FAQ rich results\"\n    - \"I want star ratings in Google\"\n    - \"product markup\"\n    - \"recipe schema\"\n---\n\n# Schema Markup Generator\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** · 20 skills for SEO + GEO · Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** · [keyword-research](../../research/keyword-research/) · [competitor-analysis](../../research/competitor-analysis/) · [serp-analysis](../../research/serp-analysis/) · [content-gap-analysis](../../research/content-gap-analysis/)\n\n**Build** · [seo-content-writer](../seo-content-writer/) · [geo-content-optimizer](../geo-content-optimizer/) · [meta-tags-optimizer](../meta-tags-optimizer/) · **schema-markup-generator**\n\n**Optimize** · [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) · [technical-seo-checker](../../optimize/technical-seo-checker/) · [internal-linking-optimizer](../../optimize/internal-linking-optimizer/) · [content-refresher](../../optimize/content-refresher/)\n\n**Monitor** · [rank-tracker](../../monitor/rank-tracker/) · [backlink-analyzer](../../monitor/backlink-analyzer/) · [performance-reporter](../../monitor/performance-reporter/) · [alert-manager](../../monitor/alert-manager/)\n\n**Cross-cutting** · [content-quality-auditor](../../cross-cutting/content-quality-auditor/) · [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) · [entity-optimizer](../../cross-cutting/entity-optimizer/) · [memory-management](../../cross-cutting/memory-management/)\n\n</details>\n\nThis skill creates Schema.org structured data markup in JSON-LD format to help search engines understand your content and enable rich results in SERPs.\n\n## When to Use This Skill\n\n- Adding FAQ schema for expanded SERP presence\n- Creating How-To schema for step-by-step content\n- Adding Product schema for e-commerce pages\n- Implementing Article schema for blog posts\n- Adding Local Business schema for location pages\n- Creating Review/Rating schema\n- Implementing Organization schema for brand presence\n- Any page where rich results would improve visibility\n\n## What This Skill Does\n\n1. **Schema Type Selection**: Recommends appropriate schema types\n2. **JSON-LD Generation**: Creates valid structured data markup\n3. **Property Mapping**: Maps your content to schema properties\n4. **Validation Guidance**: Ensures schema meets requirements\n5. **Nested Schema**: Handles complex, multi-type schemas\n6. **Rich Result Eligibility**: Identifies which rich results you can target\n\n## How to Use\n\n### Generate Schema for Content\n\n```\nGenerate schema markup for this [content type]: [content/URL]\n```\n\n```\nCreate FAQ schema for these questions and answers: [Q&A list]\n```\n\n### Specific Schema Types\n\n```\nCreate Product schema for [product name] with [details]\n```\n\n```\nGenerate LocalBusiness schema for [business name and details]\n```\n\n### Audit Existing Schema\n\n```\nReview and improve this schema markup: [existing schema]\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~web crawler connected:**\nAutomatically crawl and extract page content (visible text, headings, lists, tables), existing schema markup, page metadata, and structured content elements that map to schema properties.\n\n**With manual data only:**\nAsk the user to provide:\n1. Page URL or full HTML content\n2. Page type (article, product, FAQ, how-to, local business, etc.)\n3. Specific data needed for schema (prices, dates, author info, Q&A pairs, etc.)\n4. Current schema markup (if optimizing existing)\n\nProceed with the full workflow using provided data. Note in the output which data is from automated extraction vs. user-provided data.\n\n## Instructions\n\nWhen a user requests schema markup:\n\n1. **Identify Content Type and Rich Result Opportunity**\n\n   Reference the [CORE-EEAT Benchmark](../../references/core-eeat-benchmark.md) item **O05 (Schema Markup)** for content-type to schema mapping:\n\n   ```markdown\n   ### CORE-EEAT Schema Mapping (O05)\n\n   | Content Type | Required Schema | Conditional Schema |\n   |-------------|----------------|--------------------|\n   | Blog (guides) | Article, Breadcrumb | FAQ, HowTo |\n   | Blog (tools) | Article, Breadcrumb | FAQ, Review |\n   | Blog (insights) | Article, Breadcrumb | FAQ |\n   | Alternative | Comparison*, Breadcrumb, FAQ | AggregateRating |\n   | Best-of | ItemList, Breadcrumb, FAQ | AggregateRating per tool |\n   | Use-case | WebPage, Breadcrumb, FAQ | — |\n   | FAQ | FAQPage, Breadcrumb | — |\n   | Landing | SoftwareApplication, Breadcrumb, FAQ | WebPage |\n   | Testimonial | Review, Breadcrumb | FAQ, Person |\n\n   *Use the mapping above to ensure schema type matches content type (CORE-EEAT O05: Pass criteria).*\n   ```\n\n   ```markdown\n   ### Schema Analysis\n\n   **Content Type**: [blog/product/FAQ/how-to/local business/etc.]\n   **Page URL**: [URL]\n\n   **Eligible Rich Results**:\n   \n   | Rich Result Type | Eligibility | Impact |\n   |------------------|-------------|--------|\n   | FAQ | ✅/❌ | High - Expands SERP presence |\n   | How-To | ✅/❌ | Medium - Shows steps in SERP |\n   | Product | ✅/❌ | High - Shows price, availability |\n   | Review | ✅/❌ | High - Shows star ratings |\n   | Article | ✅/❌ | Medium - Shows publish date, author |\n   | Breadcrumb | ✅/❌ | Medium - Shows navigation path |\n   | Video | ✅/❌ | High - Shows video thumbnail |\n   \n   **Recommended Schema Types**:\n   1. [Primary schema type] - [reason]\n   2. [Secondary schema type] - [reason]\n   ```\n\n2. **Generate FAQ Schema**\n\n   ```markdown\n   ### FAQ Schema (FAQPage)\n   \n   **Requirements**:\n   - Minimum 2 Q&A pairs\n   - Questions must be complete questions\n   - Answers should be comprehensive\n   - Must match visible page content\n   \n   **Generated Schema**:\n   \n   ```json\n   {\n     \"@context\": \"https://schema.org\",\n     \"@type\": \"FAQPage\",\n     \"mainEntity\": [\n       {\n         \"@type\": \"Question\",\n         \"name\": \"[Question 1 - exactly as shown on page]\",\n         \"acceptedAnswer\": {\n           \"@type\": \"Answer\",\n           \"text\": \"[Complete answer text]\"\n         }\n       },\n       {\n         \"@type\": \"Question\",\n         \"name\": \"[Question 2]\",\n         \"acceptedAnswer\": {\n           \"@type\": \"Answer\",\n           \"text\": \"[Complete answer text]\"\n         }\n       }\n     ]\n   }\n   ```\n   \n   **Rich Result Preview**:\n   ```\n   [Page Title]\n   [URL]\n   [Meta Description]\n   \n   ▼ Question 1?\n     [Answer preview...]\n   ▼ Question 2?\n     [Answer preview...]\n   ```\n   ```\n\n3. **Generate How-To Schema**\n\n   ```markdown\n   ### How-To Schema (HowTo)\n   \n   **Requirements**:\n   - Clear step-by-step instructions\n   - Each step must have text\n   - Optional: images, videos, time, supplies\n   \n   **Generated Schema**:\n   \n   ```json\n   {\n     \"@context\": \"https://schema.org\",\n     \"@type\": \"HowTo\",\n     \"name\": \"[How-to title]\",\n     \"description\": \"[Brief description of what this teaches]\",\n     \"totalTime\": \"PT[X]M\",\n     \"estimatedCost\": {\n       \"@type\": \"MonetaryAmount\",\n       \"currency\": \"USD\",\n       \"value\": \"[cost]\"\n     },\n     \"supply\": [\n       {\n         \"@type\": \"HowToSupply\",\n         \"name\": \"[Supply item 1]\"\n       }\n     ],\n     \"tool\": [\n       {\n         \"@type\": \"HowToTool\",\n         \"name\": \"[Tool 1]\"\n       }\n     ],\n     \"step\": [\n       {\n         \"@type\": \"HowToStep\",\n         \"name\": \"[Step 1 title]\",\n         \"text\": \"[Step 1 detailed instructions]\",\n         \"url\": \"[URL]#step1\",\n         \"image\": \"[Step 1 image URL]\"\n       },\n       {\n         \"@type\": \"HowToStep\",\n         \"name\": \"[Step 2 title]\",\n         \"text\": \"[Step 2 detailed instructions]\",\n         \"url\": \"[URL]#step2\",\n         \"image\": \"[Step 2 image URL]\"\n       }\n     ]\n   }\n   ```\n   ```\n\n4. **Generate Article Schema**\n\n   ```markdown\n   ### Article Schema\n   \n   **Schema Type Options**:\n   - `Article` - General articles\n   - `BlogPosting` - Blog posts\n   - `NewsArticle` - News content\n   - `TechArticle` - Technical documentation\n   \n   **Generated Schema**:\n   \n   ```json\n   {\n     \"@context\": \"https://schema.org\",\n     \"@type\": \"Article\",\n     \"headline\": \"[Article title - max 110 chars]\",\n     \"description\": \"[Article summary]\",\n     \"image\": [\n       \"[Image URL 1 - 1200px wide]\",\n       \"[Image URL 2 - 4:3 ratio]\",\n       \"[Image URL 3 - 16:9 ratio]\"\n     ],\n     \"datePublished\": \"[ISO 8601 date: 2024-01-15T08:00:00+00:00]\",\n     \"dateModified\": \"[ISO 8601 date]\",\n     \"author\": {\n       \"@type\": \"Person\",\n       \"name\": \"[Author Name]\",\n       \"url\": \"[Author profile URL]\"\n     },\n     \"publisher\": {\n       \"@type\": \"Organization\",\n       \"name\": \"[Publisher Name]\",\n       \"logo\": {\n         \"@type\": \"ImageObject\",\n         \"url\": \"[Logo URL - 60px high max]\"\n       }\n     },\n     \"mainEntityOfPage\": {\n       \"@type\": \"WebPage\",\n       \"@id\": \"[Canonical URL]\"\n     }\n   }\n   ```\n   ```\n\n5. **Generate Product Schema**\n\n   ```markdown\n   ### Product Schema\n   \n   **Requirements for Rich Results**:\n   - Name (required)\n   - Image (required)\n   - Offers with price (for price rich results)\n   - AggregateRating (for star ratings)\n   - Review (for review snippets)\n   \n   **Generated Schema**:\n   \n   ```json\n   {\n     \"@context\": \"https://schema.org\",\n     \"@type\": \"Product\",\n     \"name\": \"[Product Name]\",\n     \"image\": [\n       \"[Product image URL 1]\",\n       \"[Product image URL 2]\"\n     ],\n     \"description\": \"[Product description]\",\n     \"sku\": \"[SKU]\",\n     \"mpn\": \"[Manufacturer Part Number]\",\n     \"brand\": {\n       \"@type\": \"Brand\",\n       \"name\": \"[Brand Name]\"\n     },\n     \"offers\": {\n       \"@type\": \"Offer\",\n       \"url\": \"[Product URL]\",\n       \"priceCurrency\": \"USD\",\n       \"price\": \"[Price]\",\n       \"priceValidUntil\": \"[Date]\",\n       \"availability\": \"https://schema.org/InStock\",\n       \"seller\": {\n         \"@type\": \"Organization\",\n         \"name\": \"[Seller Name]\"\n       }\n     },\n     \"aggregateRating\": {\n       \"@type\": \"AggregateRating\",\n       \"ratingValue\": \"[4.5]\",\n       \"reviewCount\": \"[89]\"\n     },\n     \"review\": {\n       \"@type\": \"Review\",\n       \"reviewRating\": {\n         \"@type\": \"Rating\",\n         \"ratingValue\": \"[5]\"\n       },\n       \"author\": {\n         \"@type\": \"Person\",\n         \"name\": \"[Reviewer Name]\"\n       },\n       \"reviewBody\": \"[Review text]\"\n     }\n   }\n   ```\n   ```\n\n6. **Generate Local Business Schema**\n\n   ```markdown\n   ### LocalBusiness Schema\n   \n   **Generated Schema**:\n   \n   ```json\n   {\n     \"@context\": \"https://schema.org\",\n     \"@type\": \"[LocalBusiness/Restaurant/Store/etc.]\",\n     \"name\": \"[Business Name]\",\n     \"image\": \"[Business image URL]\",\n     \"@id\": \"[Business URL]\",\n     \"url\": \"[Website URL]\",\n     \"telephone\": \"[Phone number]\",\n     \"priceRange\": \"[$$]\",\n     \"address\": {\n       \"@type\": \"PostalAddress\",\n       \"streetAddress\": \"[Street Address]\",\n       \"addressLocality\": \"[City]\",\n       \"addressRegion\": \"[State]\",\n       \"postalCode\": \"[ZIP]\",\n       \"addressCountry\": \"US\"\n     },\n     \"geo\": {\n       \"@type\": \"GeoCoordinates\",\n       \"latitude\": [latitude],\n       \"longitude\": [longitude]\n     },\n     \"openingHoursSpecification\": [\n       {\n         \"@type\": \"OpeningHoursSpecification\",\n         \"dayOfWeek\": [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\"],\n         \"opens\": \"09:00\",\n         \"closes\": \"17:00\"\n       }\n     ],\n     \"aggregateRating\": {\n       \"@type\": \"AggregateRating\",\n       \"ratingValue\": \"[4.5]\",\n       \"reviewCount\": \"[123]\"\n     }\n   }\n   ```\n   ```\n\n7. **Generate Organization Schema**\n\n   ```markdown\n   ### Organization Schema\n   \n   **Generated Schema**:\n   \n   ```json\n   {\n     \"@context\": \"https://schema.org\",\n     \"@type\": \"Organization\",\n     \"name\": \"[Organization Name]\",\n     \"url\": \"[Website URL]\",\n     \"logo\": \"[Logo URL]\",\n     \"sameAs\": [\n       \"[Facebook URL]\",\n       \"[Twitter URL]\",\n       \"[LinkedIn URL]\",\n       \"[Instagram URL]\"\n     ],\n     \"contactPoint\": {\n       \"@type\": \"ContactPoint\",\n       \"telephone\": \"[Phone]\",\n       \"contactType\": \"customer service\",\n       \"availableLanguage\": [\"English\"]\n     }\n   }\n   ```\n   ```\n\n8. **Generate Breadcrumb Schema**\n\n   ```markdown\n   ### BreadcrumbList Schema\n   \n   **Generated Schema**:\n   \n   ```json\n   {\n     \"@context\": \"https://schema.org\",\n     \"@type\": \"BreadcrumbList\",\n     \"itemListElement\": [\n       {\n         \"@type\": \"ListItem\",\n         \"position\": 1,\n         \"name\": \"Home\",\n         \"item\": \"[Homepage URL]\"\n       },\n       {\n         \"@type\": \"ListItem\",\n         \"position\": 2,\n         \"name\": \"[Category Name]\",\n         \"item\": \"[Category URL]\"\n       },\n       {\n         \"@type\": \"ListItem\",\n         \"position\": 3,\n         \"name\": \"[Page Name]\",\n         \"item\": \"[Page URL]\"\n       }\n     ]\n   }\n   ```\n   ```\n\n9. **Combine Multiple Schema Types**\n\n   ```markdown\n   ### Combined Schema Implementation\n   \n   For pages needing multiple schema types:\n   \n   ```json\n   <script type=\"application/ld+json\">\n   [\n     {\n       \"@context\": \"https://schema.org\",\n       \"@type\": \"Article\",\n       \"headline\": \"[Article title]\",\n       \"author\": { \"@type\": \"Person\", \"name\": \"[Author name]\" }\n     },\n     {\n       \"@context\": \"https://schema.org\",\n       \"@type\": \"FAQPage\",\n       \"mainEntity\": [{ \"@type\": \"Question\", \"name\": \"[Question]\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"[Answer]\" } }]\n     },\n     {\n       \"@context\": \"https://schema.org\",\n       \"@type\": \"BreadcrumbList\",\n       \"itemListElement\": [{ \"@type\": \"ListItem\", \"position\": 1, \"name\": \"Home\", \"item\": \"[URL]\" }]\n     }\n   ]\n   </script>\n   ```\n   ```\n\n10. **Provide Implementation and Validation**\n\n    ```markdown\n    ## Implementation Guide\n\n    ### Adding Schema to Your Page\n\n    **Option 1: In HTML <head>**\n    ```html\n    <head>\n      <script type=\"application/ld+json\">\n        [Your JSON-LD schema here]\n      </script>\n    </head>\n    ```\n\n    **Option 2: Before closing </body>**\n    ```html\n      <script type=\"application/ld+json\">\n        [Your JSON-LD schema here]\n      </script>\n    </body>\n    ```\n\n    ### Validation Steps\n\n    1. **~~schema validator**\n       - Test your live URL or paste code\n       - Check for errors and warnings\n\n    2. **Schema.org Validator**\n       - URL: https://validator.schema.org/\n       - Validates against Schema.org spec\n\n    3. **~~search console**\n       - Monitor rich results in ~~search console\n       - Check Enhancements reports for issues\n\n    ### Validation Checklist\n\n    - [ ] JSON syntax is valid (no trailing commas)\n    - [ ] All required properties present\n    - [ ] URLs are absolute, not relative\n    - [ ] Dates are in ISO 8601 format\n    - [ ] Content matches visible page content\n    - [ ] No policy violations\n    ```\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Page URL or content provided\n- [ ] Schema type appropriate for content (Article for blog, Product for e-commerce, etc.)\n- [ ] All required data available (author, dates, prices, etc. depending on schema type)\n- [ ] Content eligibility for rich results confirmed\n\n### Output Validation\n- [ ] JSON syntax validates (no trailing commas, proper quotes)\n- [ ] All required properties present for chosen schema type\n- [ ] URLs are absolute, not relative\n- [ ] Dates in ISO 8601 format (YYYY-MM-DDTHH:MM:SS+00:00)\n- [ ] Schema content matches visible page content exactly\n- [ ] Passes ~~schema validator with no errors\n- [ ] Source of each data point clearly stated (~~web crawler extraction, user-provided, or manual entry)\n\n## Example\n\n**User**: \"Generate FAQ schema for a page about SEO with 3 questions\"\n\n**Output**:\n\n```markdown\n## FAQ Schema for SEO Page\n\n### Schema Markup\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is SEO?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"SEO (Search Engine Optimization) is the practice of optimizing websites and content to rank higher in search engine results pages (SERPs). It involves technical optimizations, content creation, and link building to increase organic visibility and drive qualified traffic to your website.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How long does SEO take to work?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"SEO typically takes 3-6 months to show significant results, though this varies based on competition, domain authority, and effort invested. New websites may take 6-12 months, while established sites with existing authority can see improvements in 1-3 months for less competitive keywords.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is SEO better than paid advertising?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"SEO and paid advertising serve different purposes. SEO provides sustainable, long-term traffic without per-click costs but takes time to build. Paid advertising delivers immediate results but stops when you stop paying. Most successful businesses use both: paid ads for immediate leads and SEO for long-term growth.\"\n      }\n    }\n  ]\n}\n```\n\n### Implementation\n\n```html\n<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is SEO?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"SEO (Search Engine Optimization) is the practice of optimizing websites and content to rank higher in search engine results pages (SERPs). It involves technical optimizations, content creation, and link building to increase organic visibility and drive qualified traffic to your website.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How long does SEO take to work?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"SEO typically takes 3-6 months to show significant results, though this varies based on competition, domain authority, and effort invested. New websites may take 6-12 months, while established sites with existing authority can see improvements in 1-3 months for less competitive keywords.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is SEO better than paid advertising?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"SEO and paid advertising serve different purposes. SEO provides sustainable, long-term traffic without per-click costs but takes time to build. Paid advertising delivers immediate results but stops when you stop paying. Most successful businesses use both: paid ads for immediate leads and SEO for long-term growth.\"\n      }\n    }\n  ]\n}\n</script>\n```\n\n### Validation\n\nTest with ~~schema validator\n\n### SERP Preview\n\n```\nSEO Guide: Complete Beginner's Tutorial\nyoursite.com/seo-guide/\nLearn SEO from scratch with our comprehensive guide...\n\n▼ What is SEO?\n  SEO (Search Engine Optimization) is the practice of optimizing...\n▼ How long does SEO take to work?\n  SEO typically takes 3-6 months to show significant results...\n▼ Is SEO better than paid advertising?\n  SEO and paid advertising serve different purposes...\n```\n```\n\n## Schema Type Quick Reference\n\n| Content Type | Schema Type | Key Properties |\n|--------------|-------------|----------------|\n| Blog Post | BlogPosting/Article | headline, datePublished, author |\n| Product | Product | name, price, availability |\n| FAQ | FAQPage | Question, Answer |\n| How-To | HowTo | step, totalTime |\n| Local Business | LocalBusiness | address, geo, openingHours |\n| Recipe | Recipe | ingredients, cookTime |\n| Event | Event | startDate, location |\n| Video | VideoObject | uploadDate, duration |\n| Course | Course | provider, name |\n| Review | Review | itemReviewed, ratingValue |\n\n## Tips for Success\n\n1. **Match visible content** - Schema must reflect what users see\n2. **Don't spam** - Only add schema for relevant content\n3. **Keep updated** - Update dates and prices when they change\n4. **Test thoroughly** - Validate before deploying\n5. **Monitor Search Console** - Watch for errors and warnings\n\n## Schema Type Decision Tree\n\n### When to Use Which Schema\n\n| Your Content | Primary Schema | Add If Applicable | Rich Result Eligibility |\n|-------------|---------------|-------------------|----------------------|\n| Blog post / article | Article | FAQ, HowTo, Speakable | Article carousel, FAQ rich result |\n| Product page | Product | Review, Offer, AggregateRating | Product snippet with price/rating |\n| Service page | Service | FAQ, LocalBusiness | Service snippet |\n| How-to guide | HowTo | Article, FAQ | How-to rich result with steps |\n| FAQ page | FAQPage | Article | FAQ accordion in SERP |\n| Recipe | Recipe | Video, AggregateRating | Recipe carousel |\n| Event | Event | Offer, Organization | Event snippet with date/location |\n| Video | VideoObject | Article | Video carousel, key moments |\n| Local business | LocalBusiness | Review, OpeningHoursSpecification | Local pack, knowledge panel |\n| Person/author | Person | Organization | Knowledge panel |\n| Organization | Organization | ContactPoint, Logo | Knowledge panel |\n| Course | Course | Organization | Course rich result |\n| Job posting | JobPosting | Organization | Google for Jobs listing |\n| Breadcrumb | BreadcrumbList | (Always add alongside other schema) | Breadcrumb trail in SERP |\n| Software/App | SoftwareApplication | Review, Offer | App snippet |\n\n### Industry-Specific Schema Recommendations\n\n| Industry | Essential Schema | High-Value Additions |\n|----------|-----------------|---------------------|\n| E-commerce | Product, BreadcrumbList, Organization | AggregateRating, FAQ, Review |\n| SaaS | SoftwareApplication, FAQPage, Organization | HowTo, VideoObject, Review |\n| Local Services | LocalBusiness, Service | FAQ, Review, Event |\n| Publishing/Media | Article, Person, Organization | FAQ, Speakable, VideoObject |\n| Education | Course, Organization | FAQ, HowTo, Event |\n| Healthcare | MedicalWebPage, Organization | FAQ, Physician, MedicalClinic |\n| Real Estate | RealEstateListing, Organization | LocalBusiness, FAQ |\n| Restaurants | Restaurant, Menu | Review, Event, FAQ |\n\n### Schema Implementation Priority\n\n| Priority | Schema Types | Why |\n|----------|-------------|-----|\n| P0 -- Always | Organization, BreadcrumbList, WebSite (SearchAction) | Foundation for all sites |\n| P1 -- Content | Article, FAQPage, HowTo | Direct rich result eligibility |\n| P2 -- Commercial | Product, Review, AggregateRating, Offer | Revenue-impacting rich results |\n| P3 -- Authority | Person, SameAs, Speakable | E-E-A-T signals, AI citation |\n| P4 -- Specialized | Industry-specific types | Niche rich results |\n\n### Schema Validation Quick Reference\n\n| Issue | Impact | Fix |\n|-------|--------|-----|\n| Missing required property | Schema ignored by Google | Add all required fields (check schema.org) |\n| Invalid date format | Warning, may lose rich result | Use ISO 8601: \"2026-02-11\" |\n| Incorrect @type | Schema misinterpreted | Match @type exactly to schema.org |\n| Self-referencing sameAs | Warning | sameAs should link to EXTERNAL profiles |\n| Missing image for Article | Loses article rich result | Add image property with valid URL |\n| Review without itemReviewed | Review not connected | Nest review inside Product/Service/etc. |\n\n## Reference Materials\n\n- [Schema Templates](./references/schema-templates.md) - Copy-ready JSON-LD templates for all schema types\n- [Validation Guide](./references/validation-guide.md) - Common errors, required properties, testing workflow\n\n## Related Skills\n\n- [seo-content-writer](../seo-content-writer/) — Create content worth marking up\n- [geo-content-optimizer](../geo-content-optimizer/) — Optimize FAQ content\n- [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) — Audit existing schema\n- [technical-seo-checker](../../optimize/technical-seo-checker/) — Technical validation\n- [entity-optimizer](../../cross-cutting/entity-optimizer/) — Entity audit informs Organization, Person, Product schema\n- [meta-tags-optimizer](../meta-tags-optimizer/) — Optimize meta tags alongside structured data\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn73qjxwmbna25qq8q051epqt980sys5\",\n  \"slug\": \"schema-markup-generator\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1771042648548\n}\n\nFile v2.0.0:references/schema-templates.md\n\n# Schema.org JSON-LD Templates\n\nComplete, copy-ready structured data templates for all major schema types. Customize the bracketed values to match your content.\n\n## FAQPage Schema\n\nFor pages with frequently asked questions. Minimum 2 Q&A pairs required.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"[Question text - exactly as shown on page]\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"[Complete answer text - must match visible content]\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"[Question 2]\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"[Answer 2]\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"[Question 3]\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"[Answer 3]\"\n      }\n    }\n  ]\n}\n```\n\n**Requirements**: Questions must be complete questions, answers must be comprehensive, content must match visible page content.\n\n---\n\n## HowTo Schema\n\nFor step-by-step instructional content.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"HowTo\",\n  \"name\": \"[How-to title - what will users learn]\",\n  \"description\": \"[Brief description of what this tutorial teaches]\",\n  \"image\": {\n    \"@type\": \"ImageObject\",\n    \"url\": \"[Main image URL]\",\n    \"height\": \"[height in pixels]\",\n    \"width\": \"[width in pixels]\"\n  },\n  \"totalTime\": \"PT[X]H[Y]M\",\n  \"estimatedCost\": {\n    \"@type\": \"MonetaryAmount\",\n    \"currency\": \"USD\",\n    \"value\": \"[estimated cost or 0]\"\n  },\n  \"supply\": [\n    {\n      \"@type\": \"HowToSupply\",\n      \"name\": \"[Supply item 1]\"\n    },\n    {\n      \"@type\": \"HowToSupply\",\n      \"name\": \"[Supply item 2]\"\n    }\n  ],\n  \"tool\": [\n    {\n      \"@type\": \"HowToTool\",\n      \"name\": \"[Tool 1]\"\n    },\n    {\n      \"@type\": \"HowToTool\",\n      \"name\": \"[Tool 2]\"\n    }\n  ],\n  \"step\": [\n    {\n      \"@type\": \"HowToStep\",\n      \"position\": 1,\n      \"name\": \"[Step 1 title]\",\n      \"text\": \"[Step 1 detailed instructions]\",\n      \"url\": \"[Page URL]#step1\",\n      \"image\": \"[Step 1 image URL - optional]\"\n    },\n    {\n      \"@type\": \"HowToStep\",\n      \"position\": 2,\n      \"name\": \"[Step 2 title]\",\n      \"text\": \"[Step 2 detailed instructions]\",\n      \"url\": \"[Page URL]#step2\",\n      \"image\": \"[Step 2 image URL - optional]\"\n    },\n    {\n      \"@type\": \"HowToStep\",\n      \"position\": 3,\n      \"name\": \"[Step 3 title]\",\n      \"text\": \"[Step 3 detailed instructions]\",\n      \"url\": \"[Page URL]#step3\",\n      \"image\": \"[Step 3 image URL - optional]\"\n    }\n  ]\n}\n```\n\n**Time format**: PT[X]H[Y]M where X = hours, Y = minutes. Example: PT1H30M = 1 hour 30 minutes.\n\n---\n\n## Article / BlogPosting / NewsArticle Schema\n\nFor blog posts, articles, and news content.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"BlogPosting\",\n  \"headline\": \"[Article title - max 110 characters for best display]\",\n  \"description\": \"[Article summary or excerpt]\",\n  \"image\": [\n    \"[Featured image URL - 1200px wide recommended]\",\n    \"[Alternative image URL - 4:3 ratio]\",\n    \"[Alternative image URL - 16:9 ratio]\"\n  ],\n  \"datePublished\": \"[ISO 8601 date: 2024-01-15T08:00:00+00:00]\",\n  \"dateModified\": \"[ISO 8601 date - same as published if never modified]\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"[Author Full Name]\",\n    \"url\": \"[Author profile URL]\",\n    \"jobTitle\": \"[Author job title - optional]\"\n  },\n  \"publisher\": {\n    \"@type\": \"Organization\",\n    \"name\": \"[Publisher/Company Name]\",\n    \"logo\": {\n      \"@type\": \"ImageObject\",\n      \"url\": \"[Publisher logo URL - max 600px wide, 60px high]\",\n      \"width\": \"[width]\",\n      \"height\": \"[height]\"\n    }\n  },\n  \"mainEntityOfPage\": {\n    \"@type\": \"WebPage\",\n    \"@id\": \"[Canonical URL of this article]\"\n  },\n  \"articleBody\": \"[Full article text - optional but recommended]\",\n  \"wordCount\": \"[word count - optional]\"\n}\n```\n\n**Type variants**: Use `Article` for general articles, `BlogPosting` for blog posts, `NewsArticle` for news content, `TechArticle` for technical documentation.\n\n---\n\n## Product Schema\n\nFor e-commerce product pages.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"[Product Name]\",\n  \"image\": [\n    \"[Product image URL 1]\",\n    \"[Product image URL 2]\",\n    \"[Product image URL 3]\"\n  ],\n  \"description\": \"[Product description]\",\n  \"sku\": \"[SKU code]\",\n  \"mpn\": \"[Manufacturer Part Number - optional]\",\n  \"brand\": {\n    \"@type\": \"Brand\",\n    \"name\": \"[Brand Name]\"\n  },\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"url\": \"[Product page URL]\",\n    \"priceCurrency\": \"USD\",\n    \"price\": \"[Price as number: 29.99]\",\n    \"priceValidUntil\": \"[Date price is valid until: 2024-12-31]\",\n    \"availability\": \"https://schema.org/InStock\",\n    \"seller\": {\n      \"@type\": \"Organization\",\n      \"name\": \"[Seller/Store Name]\"\n    },\n    \"shippingDetails\": {\n      \"@type\": \"OfferShippingDetails\",\n      \"shippingRate\": {\n        \"@type\": \"MonetaryAmount\",\n        \"value\": \"[shipping cost]\",\n        \"currency\": \"USD\"\n      },\n      \"shippingDestination\": {\n        \"@type\": \"DefinedRegion\",\n        \"addressCountry\": \"US\"\n      }\n    }\n  },\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"[4.5]\",\n    \"reviewCount\": \"[89]\",\n    \"bestRating\": \"5\",\n    \"worstRating\": \"1\"\n  },\n  \"review\": [\n    {\n      \"@type\": \"Review\",\n      \"reviewRating\": {\n        \"@type\": \"Rating\",\n        \"ratingValue\": \"[5]\",\n        \"bestRating\": \"5\"\n      },\n      \"author\": {\n        \"@type\": \"Person\",\n        \"name\": \"[Reviewer Name]\"\n      },\n      \"reviewBody\": \"[Review text]\",\n      \"datePublished\": \"[Review date: 2024-01-15]\"\n    }\n  ]\n}\n```\n\n**Availability options**: `InStock`, `OutOfStock`, `PreOrder`, `Discontinued`, `LimitedAvailability`, `OnlineOnly`, `InStoreOnly`, `SoldOut`\n\n---\n\n## LocalBusiness Schema\n\nFor local business pages with physical locations.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"LocalBusiness\",\n  \"name\": \"[Business Name]\",\n  \"image\": \"[Business image or logo URL]\",\n  \"@id\": \"[Business page URL]\",\n  \"url\": \"[Website URL]\",\n  \"telephone\": \"[Phone number: +1-555-555-5555]\",\n  \"priceRange\": \"[$$$ or price range like $10-$50]\",\n  \"address\": {\n    \"@type\": \"PostalAddress\",\n    \"streetAddress\": \"[Street address]\",\n    \"addressLocality\": \"[City]\",\n    \"addressRegion\": \"[State/Province]\",\n    \"postalCode\": \"[ZIP/Postal code]\",\n    \"addressCountry\": \"US\"\n  },\n  \"geo\": {\n    \"@type\": \"GeoCoordinates\",\n    \"latitude\": \"[latitude as number: 40.7128]\",\n    \"longitude\": \"[longitude as number: -74.0060]\"\n  },\n  \"openingHoursSpecification\": [\n    {\n      \"@type\": \"OpeningHoursSpecification\",\n      \"dayOfWeek\": [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\"],\n      \"opens\": \"09:00\",\n      \"closes\": \"17:00\"\n    },\n    {\n      \"@type\": \"OpeningHoursSpecification\",\n      \"dayOfWeek\": \"Saturday\",\n      \"opens\": \"10:00\",\n      \"closes\": \"15:00\"\n    }\n  ],\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"[4.5]\",\n    \"reviewCount\": \"[123]\"\n  },\n  \"servesCuisine\": \"[Cuisine type - for restaurants only]\"\n}\n```\n\n**Type variants**: Use more specific types when applicable: `Restaurant`, `Store`, `AutoRepair`, `HealthAndBeautyBusiness`, `LegalService`, etc.\n\n---\n\n## Organization Schema\n\nFor brand/company homepage.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"[Organization Name]\",\n  \"url\": \"[Website URL]\",\n  \"logo\": \"[Logo URL - recommended 112x112px or larger]\",\n  \"description\": \"[Company description]\",\n  \"sameAs\": [\n    \"[Facebook URL]\",\n    \"[Twitter URL]\",\n    \"[LinkedIn URL]\",\n    \"[Instagram URL]\",\n    \"[YouTube URL]\"\n  ],\n  \"contactPoint\": {\n    \"@type\": \"ContactPoint\",\n    \"telephone\": \"[Phone number]\",\n    \"contactType\": \"customer service\",\n    \"email\": \"[Email address]\",\n    \"availableLanguage\": [\"English\", \"Spanish\"],\n    \"areaServed\": \"US\"\n  },\n  \"founder\": {\n    \"@type\": \"Person\",\n    \"name\": \"[Founder name - optional]\"\n  },\n  \"foundingDate\": \"[YYYY-MM-DD - optional]\",\n  \"address\": {\n    \"@type\": \"PostalAddress\",\n    \"streetAddress\": \"[Street address]\",\n    \"addressLocality\": \"[City]\",\n    \"addressRegion\": \"[State]\",\n    \"postalCode\": \"[ZIP]\",\n    \"addressCountry\": \"US\"\n  }\n}\n```\n\n---\n\n## BreadcrumbList Schema\n\nFor navigation breadcrumbs.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"BreadcrumbList\",\n  \"itemListElement\": [\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 1,\n      \"name\": \"Home\",\n      \"item\": \"[Homepage URL]\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 2,\n      \"name\": \"[Category Name]\",\n      \"item\": \"[Category URL]\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 3,\n      \"name\": \"[Subcategory Name]\",\n      \"item\": \"[Subcategory URL]\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 4,\n      \"name\": \"[Current Page Name]\",\n      \"item\": \"[Current Page URL]\"\n    }\n  ]\n}\n```\n\n**Important**: Position numbers must be sequential starting from 1. Last item should be the current page.\n\n---\n\n## VideoObject Schema\n\nFor video content.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"VideoObject\",\n  \"name\": \"[Video title]\",\n  \"description\": \"[Video description]\",\n  \"thumbnailUrl\": \"[Video thumbnail URL - minimum 160x90px]\",\n  \"uploadDate\": \"[ISO 8601 date: 2024-01-15T08:00:00+00:00]\",\n  \"duration\": \"PT[X]M[Y]S\",\n  \"contentUrl\": \"[Video file URL]\",\n  \"embedUrl\": \"[Video embed URL]\",\n  \"interactionStatistic\": {\n    \"@type\": \"InteractionCounter\",\n    \"interactionType\": { \"@type\": \"WatchAction\" },\n    \"userInteractionCount\": \"[view count]\"\n  }\n}\n```\n\n**Duration format**: PT[X]M[Y]S where X = minutes, Y = seconds. Example: PT5M30S = 5 minutes 30 seconds.\n\n---\n\n## Event Schema\n\nFor events, conferences, concerts, etc.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Event\",\n  \"name\": \"[Event Name]\",\n  \"description\": \"[Event description]\",\n  \"image\": \"[Event image URL]\",\n  \"startDate\": \"[ISO 8601 date: 2024-06-15T19:00:00-05:00]\",\n  \"endDate\": \"[ISO 8601 date: 2024-06-15T22:00:00-05:00]\",\n  \"eventStatus\": \"https://schema.org/EventScheduled\",\n  \"eventAttendanceMode\": \"https://schema.org/OfflineEventAttendanceMode\",\n  \"location\": {\n    \"@type\": \"Place\",\n    \"name\": \"[Venue Name]\",\n    \"address\": {\n      \"@type\": \"PostalAddress\",\n      \"streetAddress\": \"[Street address]\",\n      \"addressLocality\": \"[City]\",\n      \"addressRegion\": \"[State]\",\n      \"postalCode\": \"[ZIP]\",\n      \"addressCountry\": \"US\"\n    }\n  },\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"url\": \"[Ticket purchase URL]\",\n    \"price\": \"[ticket price]\",\n    \"priceCurrency\": \"USD\",\n    \"availability\": \"https://schema.org/InStock\",\n    \"validFrom\": \"[Sale start date]\"\n  },\n  \"organizer\": {\n    \"@type\": \"Organization\",\n    \"name\": \"[Organizer name]\",\n    \"url\": \"[Organizer website]\"\n  }\n}\n```\n\n**Event status options**: `EventScheduled`, `EventCancelled`, `EventPostponed`, `EventRescheduled`, `EventMovedOnline`\n\n**Attendance mode**: `OfflineEventAttendanceMode`, `OnlineEventAttendanceMode`, `MixedEventAttendanceMode`\n\n---\n\n## Course Schema\n\nFor online courses and educational content.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Course\",\n  \"name\": \"[Course Name]\",\n  \"description\": \"[Course description]\",\n  \"provider\": {\n    \"@type\": \"Organization\",\n    \"name\": \"[Provider name]\",\n    \"sameAs\": \"[Provider URL]\"\n  },\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"category\": \"Paid\",\n    \"price\": \"[price]\",\n    \"priceCurrency\": \"USD\"\n  },\n  \"hasCourseInstance\": {\n    \"@type\": \"CourseInstance\",\n    \"courseMode\": \"online\",\n    \"courseWorkload\": \"PT[X]H\",\n    \"instructor\": {\n      \"@type\": \"Person\",\n      \"name\": \"[Instructor name]\"\n    }\n  }\n}\n```\n\n---\n\n## Recipe Schema\n\nFor cooking recipes.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Recipe\",\n  \"name\": \"[Recipe name]\",\n  \"image\": \"[Recipe image URL]\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"[Author name]\"\n  },\n  \"datePublished\": \"[ISO 8601 date]\",\n  \"description\": \"[Recipe description]\",\n  \"prepTime\": \"PT[X]M\",\n  \"cookTime\": \"PT[X]M\",\n  \"totalTime\": \"PT[X]M\",\n  \"recipeYield\": \"[Servings: e.g., '4 servings']\",\n  \"recipeCategory\": \"[Category: e.g., 'Dinner']\",\n  \"recipeCuisine\": \"[Cuisine: e.g., 'Italian']\",\n  \"keywords\": \"[comma, separated, keywords]\",\n  \"nutrition\": {\n    \"@type\": \"NutritionInformation\",\n    \"calories\": \"[calories per serving]\"\n  },\n  \"recipeIngredient\": [\n    \"[Ingredient 1 with quantity]\",\n    \"[Ingredient 2 with quantity]\",\n    \"[Ingredient 3 with quantity]\"\n  ],\n  \"recipeInstructions\": [\n    {\n      \"@type\": \"HowToStep\",\n      \"text\": \"[Step 1 instructions]\"\n    },\n    {\n      \"@type\": \"HowToStep\",\n      \"text\": \"[Step 2 instructions]\"\n    }\n  ],\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"[4.5]\",\n    \"reviewCount\": \"[number of reviews]\"\n  }\n}\n```\n\n---\n\n## SoftwareApplication Schema\n\nFor software, apps, and tools.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"SoftwareApplication\",\n  \"name\": \"[Software name]\",\n  \"operatingSystem\": \"[Windows, macOS, iOS, Android, Web]\",\n  \"applicationCategory\": \"BusinessApplication\",\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"price\": \"[price or 0 for free]\",\n    \"priceCurrency\": \"USD\"\n  },\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"[4.5]\",\n    \"reviewCount\": \"[number of reviews]\"\n  },\n  \"screenshot\": \"[Screenshot URL - optional]\",\n  \"softwareVersion\": \"[version number]\",\n  \"fileSize\": \"[file size with units: e.g., '50MB']\",\n  \"datePublished\": \"[Release date]\",\n  \"downloadUrl\": \"[Download URL - optional]\"\n}\n```\n\n---\n\n## Multiple Schema Types (Combined Array)\n\nTo include multiple schema types on one page, wrap them in an array:\n\n```html\n<script type=\"application/ld+json\">\n[\n  {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"Article\",\n    \"headline\": \"[Article title]\",\n    \"author\": {\n      \"@type\": \"Person\",\n      \"name\": \"[Author]\"\n    }\n  },\n  {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"FAQPage\",\n    \"mainEntity\": [\n      {\n        \"@type\": \"Question\",\n        \"name\": \"[Question]\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"[Answer]\"\n        }\n      }\n    ]\n  },\n  {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"BreadcrumbList\",\n    \"itemListElement\": [\n      {\n        \"@type\": \"ListItem\",\n        \"position\": 1,\n        \"name\": \"Home\",\n        \"item\": \"[URL]\"\n      }\n    ]\n  }\n]\n</script>\n```\n\n---\n\n## Implementation Notes\n\n- Always validate schema at https://validator.schema.org/ and https://search.google.com/test/rich-results\n- Remove bracketed placeholders and replace with actual content\n- Use absolute URLs, not relative paths\n- Dates must be in ISO 8601 format\n- Schema must match visible page content (Google policy requirement)\n- No trailing commas in JSON (invalid syntax)\n\nFile v2.0.0:references/validation-guide.md\n\n# Schema Markup Validation Guide\n\nComplete reference for validating, testing, and troubleshooting structured data.\n\n## Validation Tools\n\n### Google Rich Results Test\n- **URL**: https://search.google.com/test/rich-results\n- **Purpose**: Check if your schema is eligible for Google rich results\n- **Tests**: Live URL or code snippet\n- **Output**: Errors, warnings, eligible rich result types\n\n### Schema.org Validator\n- **URL**: https://validator.schema.org/\n- **Purpose**: Validate against official Schema.org specification\n- **Tests**: URL, code snippet, or microdata\n- **Output**: Technical validation errors\n\n### Google Search Console\n- **Location**: Search Console → Enhancements section\n- **Purpose**: Monitor rich results performance and errors at scale\n- **Reports**: Rich results status, coverage, issues over time\n\n---\n\n## Common JSON-LD Syntax Errors\n\n### Trailing Commas\n\n**Error**: Invalid JSON syntax\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"Title\",  ← Trailing comma here\n}\n```\n\n**Fix**: Remove the comma after the last property\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"Title\"\n}\n```\n\n### Missing Required Quotes\n\n**Error**: Property names must be quoted\n```json\n{\n  @context: \"https://schema.org\"\n}\n```\n\n**Fix**: Quote all property names\n```json\n{\n  \"@context\": \"https://schema.org\"\n}\n```\n\n### Incorrect Date Format\n\n**Error**: Invalid date format\n```json\n{\n  \"datePublished\": \"01/15/2024\"\n}\n```\n\n**Fix**: Use ISO 8601 format\n```json\n{\n  \"datePublished\": \"2024-01-15T08:00:00+00:00\"\n}\n```\n\n### Relative URLs Instead of Absolute\n\n**Error**: Relative URLs are not allowed\n```json\n{\n  \"image\": \"/images/photo.jpg\"\n}\n```\n\n**Fix**: Use absolute URLs\n```json\n{\n  \"image\": \"https://example.com/images/photo.jpg\"\n}\n```\n\n### Incorrect Array Syntax\n\n**Error**: Multiple values not in array\n```json\n{\n  \"image\": \"url1.jpg\", \"url2.jpg\"\n}\n```\n\n**Fix**: Use array brackets for multiple values\n```json\n{\n  \"image\": [\"url1.jpg\", \"url2.jpg\"]\n}\n```\n\n---\n\n## Required vs Recommended Properties\n\n### FAQPage Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | Must be \"FAQPage\" |\n| mainEntity | Required | Array of Question objects |\n| Question.name | Required | The question text |\n| Answer.text | Required | The answer text |\n\n**Minimum**: 2 Q&A pairs\n\n### HowTo Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | Must be \"HowTo\" |\n| name | Required | Title of the how-to |\n| step | Required | Array of HowToStep objects |\n| step.text | Required | Step instructions |\n| image | Recommended | Improves visibility |\n| totalTime | Recommended | Shows duration in results |\n| supply | Recommended | Lists materials needed |\n| tool | Recommended | Lists tools needed |\n\n**Minimum**: 2 steps with text\n\n### Article Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | Article/BlogPosting/NewsArticle |\n| headline | Required | Max 110 characters |\n| image | Required | Minimum 1200px wide |\n| datePublished | Required | ISO 8601 format |\n| author | Required | Person or Organization |\n| publisher | Required | Organization with logo |\n| publisher.logo | Required | Max 600px wide, 60px high |\n| dateModified | Recommended | Update when content changes |\n| description | Recommended | Improves display |\n\n### Product Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | Must be \"Product\" |\n| name | Required | Product name |\n| image | Required | Product images |\n| description | Recommended | Product description |\n| offers | Recommended | Required for price display |\n| offers.price | Recommended | Required for price display |\n| offers.priceCurrency | Recommended | Required for price display |\n| offers.availability | Recommended | Stock status |\n| aggregateRating | Recommended | Required for star ratings |\n| review | Recommended | Individual reviews |\n| sku | Recommended | Product identifier |\n| brand | Recommended | Brand information |\n\n### LocalBusiness Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | LocalBusiness or subtype |\n| name | Required | Business name |\n| address | Required | PostalAddress object |\n| address.streetAddress | Required | Street address |\n| address.addressLocality | Required | City |\n| address.addressRegion | Required | State/province |\n| address.postalCode | Required | ZIP/postal code |\n| address.addressCountry | Required | Country code |\n| geo | Recommended | Latitude/longitude |\n| telephone | Recommended | Phone number |\n| openingHoursSpecification | Recommended | Business hours |\n| priceRange | Recommended | Price range indicator |\n| aggregateRating | Recommended | Customer ratings |\n\n### Organization Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | Must be \"Organization\" |\n| name | Required | Organization name |\n| url | Required | Website URL |\n| logo | Recommended | Brand logo |\n| sameAs | Recommended | Social media profiles |\n| contactPoint | Recommended | Contact information |\n\n---\n\n## Google Rich Result Eligibility Requirements\n\n### FAQ Rich Results\n\n**Eligibility checklist**:\n- [ ] Minimum 2 Q&A pairs\n- [ ] Questions are actual questions (contain \"?\")\n- [ ] Answers are complete and comprehensive\n- [ ] Content matches visible page content exactly\n- [ ] Not a forum or Q&A page where users can submit answers\n- [ ] Not advertising or promotional in nature\n- [ ] Not for medical, legal, or financial advice without proper E-E-A-T\n\n**Ineligible content**:\n- Medical advice without credentials\n- Legal advice\n- Product/service comparisons that are promotional\n- User-generated Q&A (use QAPage instead)\n\n### How-To Rich Results\n\n**Eligibility checklist**:\n- [ ] Minimum 2 steps with clear instructions\n- [ ] Complete process from start to finish\n- [ ] Each step has meaningful text (not just a title)\n- [ ] Not advertising or promotional\n- [ ] Not harmful or dangerous content\n- [ ] Steps are actionable and practical\n\n**Ineligible content**:\n- Single-step processes\n- Recipes (use Recipe schema instead)\n- Promotional tutorials\n\n### Product Rich Results\n\n**For price display**:\n- [ ] Valid Product schema\n- [ ] `offers` with `price` property\n- [ ] `priceCurrency` specified\n- [ ] `availability` status\n\n**For review stars**:\n- [ ] Valid `aggregateRating` OR individual `review`\n- [ ] Minimum 1 review for individual review display\n- [ ] Honest, unbiased reviews (not paid/incentivized)\n\n**For product markup**:\n- [ ] `name` property present\n- [ ] At least one `image`\n- [ ] Valid product type (not person, organization, etc.)\n\n### Article Rich Results\n\n**Eligibility checklist**:\n- [ ] Valid Article/BlogPosting/NewsArticle schema\n- [ ] High-quality, original content\n- [ ] Proper `publisher` with valid logo\n- [ ] Valid `author` information\n- [ ] Images meet size requirements (1200px wide)\n- [ ] Not short-form content (minimum ~300 words)\n\n---\n\n## Testing Workflow\n\n### Initial Implementation\n\n1. **Add schema to development/staging environment**\n2. **Validate syntax at validator.schema.org**\n   - Paste code or test URL\n   - Fix all errors before proceeding\n3. **Test at Google Rich Results Test**\n   - Check for Google-specific issues\n   - Verify eligible rich result types\n4. **Visual inspection**\n   - View page source to confirm schema is present\n   - Check JSON formatting in browser\n\n### Pre-Launch Testing\n\n1. **Test on staging URL with Rich Results Test**\n2. **Verify all required properties present**\n3. **Confirm content matches visible page content**\n4. **Check for policy violations**\n5. **Test multiple schema types if combining**\n6. **Validate images are accessible and meet size requirements**\n\n### Post-Launch Monitoring\n\n1. **Submit sitemap to Google Search Console**\n2. **Monitor Enhancements reports**\n   - Check for validation errors\n   - Watch for policy violations\n   - Track rich result impressions\n3. **Re-test pages if content changes**\n4. **Update `dateModified` when updating content**\n5. **Fix errors within 30 days to avoid rich result removal**\n\n---\n\n## Common Policy Violations\n\n### Content Mismatch\n\n**Violation**: Schema content doesn't match visible page content\n\n**Example**: FAQ schema includes Q&A pairs not visible on page\n\n**Fix**: Ensure all structured data reflects actual page content exactly\n\n### Deceptive Content\n\n**Violation**: Schema contains misleading information\n\n**Example**: Product reviews that are fake or incentivized\n\n**Fix**: Only include genuine, verifiable information\n\n### Spammy Markup\n\n**Violation**: Excessive or irrelevant schema\n\n**Example**: Adding Product schema to every blog post\n\n**Fix**: Only use schema types relevant to page content\n\n### Hidden Content\n\n**Violation**: Schema references content hidden from users\n\n**Example**: FAQ answers only in schema, not visible on page\n\n**Fix**: Make all schema content visible to users\n\n### Promotional Content in FAQ\n\n**Violation**: Using FAQ schema for promotional purposes\n\n**Example**: Questions like \"Why is [Brand] the best?\"\n\n**Fix**: Use neutral, informational questions\n\n---\n\n## Debugging Common Issues\n\n### Schema Not Appearing in Rich Results Test\n\n**Possible causes**:\n- JSON syntax error (validate at validator.schema.org)\n- Schema in incorrect location (should be in `<head>` or `<body>`)\n- Script tag missing `type=\"application/ld+json\"`\n- Content served dynamically after page load (bot can't see it)\n\n**Debug steps**:\n1. View page source (not inspect element)\n2. Search for `\"@type\"`\n3. Copy JSON to validator.schema.org\n4. Fix syntax errors\n\n### Rich Results Not Showing in Search\n\n**Possible causes**:\n- Schema is new (can take days/weeks to appear)\n- Page not indexed by Google\n- Schema has errors in Search Console\n- Content doesn't meet quality guidelines\n- Competition for rich results is high\n\n**Debug steps**:\n1. Check Search Console → Enhancements\n2. Use URL Inspection tool to request indexing\n3. Verify schema passes Rich Results Test\n4. Check for manual actions\n\n### Warnings vs Errors\n\n**Errors** (must fix):\n- Invalid syntax\n- Missing required properties\n- Invalid property values\n- Schema type doesn't exist\n\n**Warnings** (should fix when possible):\n- Missing recommended properties\n- Suboptimal property values\n- Non-standard extensions\n- Property not recognized for this type\n\n---\n\n## Schema Maintenance Checklist\n\n### Monthly\n- [ ] Check Search Console for new errors\n- [ ] Verify rich results are still appearing\n- [ ] Update `dateModified` on changed content\n\n### Quarterly\n- [ ] Audit all schema implementations\n- [ ] Test key pages with Rich Results Test\n- [ ] Update any outdated information (prices, dates, etc.)\n- [ ] Check for new schema types relevant to your content\n\n### After Content Changes\n- [ ] Update schema to match new content\n- [ ] Update `dateModified` timestamp\n- [ ] Re-validate with Rich Results Test\n- [ ] Request re-indexing in Search Console if major changes\n\n### After Site Migration\n- [ ] Verify schema preserved on new URLs\n- [ ] Update all absolute URLs in schema\n- [ ] Submit new sitemap\n- [ ] Monitor for errors in new domain's Search Console\n\n---\n\n## Quick Reference: Error Messages and Fixes\n\n| Error Message | Cause | Fix |\n|---------------|-------|-----|\n| \"Missing required field\" | Required property not included | Add the required property |\n| \"Invalid date format\" | Date not in ISO 8601 | Use format: 2024-01-15T08:00:00+00:00 |\n| \"URL is not absolute\" | Relative URL used | Add full URL with https:// |\n| \"Unexpected token\" | JSON syntax error | Check for missing quotes, brackets, commas |\n| \"This markup is not eligible for rich results\" | Schema type or content doesn't qualify | Review eligibility requirements |\n| \"Image too small\" | Image doesn't meet size requirements | Use image at least 1200px wide |\n| \"The attribute price is required\" | Product missing price | Add offers.price property |\n| \"Logo must be 600x60 or smaller\" | Publisher logo too large | Resize logo to meet requirements |\n\n---\n\n## Resources\n\n- **Schema.org Documentation**: https://schema.org/\n- **Google Search Central**: https://developers.google.com/search/docs/appearance/structured-data\n- **Rich Results Test**: https://search.google.com/test/rich-results\n- **Schema Validator**: https://validator.schema.org/\n- **JSON-LD Playground**: https://json-ld.org/playground/\n\nArchive v0.1.2: 4 files, 16125 bytes\n\nFiles: references/schema-templates.md (14832b), references/validation-guide.md (12412b), SKILL.md (22827b), _meta.json (142b)\n\nFile v0.1.2:SKILL.md\n\n---\nname: schema-markup-generator\ndescription: Generates structured data markup (Schema.org JSON-LD) to enable rich results in search engines including FAQ snippets, How-To cards, Product listings, Reviews, and more.\ngeo-relevance: \"medium\"\n---\n\n# Schema Markup Generator\n\nThis skill creates Schema.org structured data markup in JSON-LD format to help search engines understand your content and enable rich results in SERPs.\n\n## When to Use This Skill\n\n- Adding FAQ schema for expanded SERP presence\n- Creating How-To schema for step-by-step content\n- Adding Product schema for e-commerce pages\n- Implementing Article schema for blog posts\n- Adding Local Business schema for location pages\n- Creating Review/Rating schema\n- Implementing Organization schema for brand presence\n- Any page where rich results would improve visibility\n\n## What This Skill Does\n\n1. **Schema Type Selection**: Recommends appropriate schema types\n2. **JSON-LD Generation**: Creates valid structured data markup\n3. **Property Mapping**: Maps your content to schema properties\n4. **Validation Guidance**: Ensures schema meets requirements\n5. **Nested Schema**: Handles complex, multi-type schemas\n6. **Rich Result Eligibility**: Identifies which rich results you can target\n\n## How to Use\n\n### Generate Schema for Content\n\n```\nGenerate schema markup for this [content type]: [content/URL]\n```\n\n```\nCreate FAQ schema for these questions and answers: [Q&A list]\n```\n\n### Specific Schema Types\n\n```\nCreate Product schema for [product name] with [details]\n```\n\n```\nGenerate LocalBusiness schema for [business name and details]\n```\n\n### Audit Existing Schema\n\n```\nReview and improve this schema markup: [existing schema]\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~web crawler connected:**\nAutomatically crawl and extract page content (visible text, headings, lists, tables), existing schema markup, page metadata, and structured content elements that map to schema properties.\n\n**With manual data only:**\nAsk the user to provide:\n1. Page URL or full HTML content\n2. Page type (article, product, FAQ, how-to, local business, etc.)\n3. Specific data needed for schema (prices, dates, author info, Q&A pairs, etc.)\n4. Current schema markup (if optimizing existing)\n\nProceed with the full workflow using provided data. Note in the output which data is from automated extraction vs. user-provided data.\n\n## Instructions\n\nWhen a user requests schema markup:\n\n1. **Identify Content Type and Rich Result Opportunity**\n\n   Reference the [CORE-EEAT Benchmark](../../references/core-eeat-benchmark.md) item **O05 (Schema Markup)** for content-type to schema mapping:\n\n   ```markdown\n   ### CORE-EEAT Schema Mapping (O05)\n\n   | Content Type | Required Schema | Conditional Schema |\n   |-------------|----------------|--------------------|\n   | Blog (guides) | Article, Breadcrumb | FAQ, HowTo |\n   | Blog (tools) | Article, Breadcrumb | FAQ, Review |\n   | Blog (insights) | Article, Breadcrumb | FAQ |\n   | Alternative | Comparison*, Breadcrumb, FAQ | AggregateRating |\n   | Best-of | ItemList, Breadcrumb, FAQ | AggregateRating per tool |\n   | Use-case | WebPage, Breadcrumb, FAQ | — |\n   | FAQ | FAQPage, Breadcrumb | — |\n   | Landing | SoftwareApplication, Breadcrumb, FAQ | WebPage |\n   | Testimonial | Review, Breadcrumb | FAQ, Person |\n\n   *Use the mapping above to ensure schema type matches content type (CORE-EEAT O05: Pass criteria).*\n   ```\n\n   ```markdown\n   ### Schema Analysis\n\n   **Content Type**: [blog/product/FAQ/how-to/local business/etc.]\n   **Page URL**: [URL]\n\n   **Eligible Rich Results**:\n   \n   | Rich Result Type | Eligibility | Impact |\n   |------------------|-------------|--------|\n   | FAQ | ✅/❌ | High - Expands SERP presence |\n   | How-To | ✅/❌ | Medium - Shows steps in SERP |\n   | Product | ✅/❌ | High - Shows price, availability |\n   | Review | ✅/❌ | High - Shows star ratings |\n   | Article | ✅/❌ | Medium - Shows publish date, author |\n   | Breadcrumb | ✅/❌ | Medium - Shows navigation path |\n   | Video | ✅/❌ | High - Shows video thumbnail |\n   \n   **Recommended Schema Types**:\n   1. [Primary schema type] - [reason]\n   2. [Secondary schema type] - [reason]\n   ```\n\n2. **Generate FAQ Schema**\n\n   ```markdown\n   ### FAQ Schema (FAQPage)\n   \n   **Requirements**:\n   - Minimum 2 Q&A pairs\n   - Questions must be complete questions\n   - Answers should be comprehensive\n   - Must match visible page content\n   \n   **Generated Schema**:\n   \n   ```json\n   {\n     \"@context\": \"https://schema.org\",\n     \"@type\": \"FAQPage\",\n     \"mainEntity\": [\n       {\n         \"@type\": \"Question\",\n         \"name\": \"[Question 1 - exactly as shown on page]\",\n         \"acceptedAnswer\": {\n           \"@type\": \"Answer\",\n           \"text\": \"[Complete answer text]\"\n         }\n       },\n       {\n         \"@type\": \"Question\",\n         \"name\": \"[Question 2]\",\n         \"acceptedAnswer\": {\n           \"@type\": \"Answer\",\n           \"text\": \"[Complete answer text]\"\n         }\n       }\n     ]\n   }\n   ```\n   \n   **Rich Result Preview**:\n   ```\n   [Page Title]\n   [URL]\n   [Meta Description]\n   \n   ▼ Question 1?\n     [Answer preview...]\n   ▼ Question 2?\n     [Answer preview...]\n   ```\n   ```\n\n3. **Generate How-To Schema**\n\n   ```markdown\n   ### How-To Schema (HowTo)\n   \n   **Requirements**:\n   - Clear step-by-step instructions\n   - Each step must have text\n   - Optional: images, videos, time, supplies\n   \n   **Generated Schema**:\n   \n   ```json\n   {\n     \"@context\": \"https://schema.org\",\n     \"@type\": \"HowTo\",\n     \"name\": \"[How-to title]\",\n     \"description\": \"[Brief description of what this teaches]\",\n     \"totalTime\": \"PT[X]M\",\n     \"estimatedCost\": {\n       \"@type\": \"MonetaryAmount\",\n       \"currency\": \"USD\",\n       \"value\": \"[cost]\"\n     },\n     \"supply\": [\n       {\n         \"@type\": \"HowToSupply\",\n         \"name\": \"[Supply item 1]\"\n       }\n     ],\n     \"tool\": [\n       {\n         \"@type\": \"HowToTool\",\n         \"name\": \"[Tool 1]\"\n       }\n     ],\n     \"step\": [\n       {\n         \"@type\": \"HowToStep\",\n         \"name\": \"[Step 1 title]\",\n         \"text\": \"[Step 1 detailed instructions]\",\n         \"url\": \"[URL]#step1\",\n         \"image\": \"[Step 1 image URL]\"\n       },\n       {\n         \"@type\": \"HowToStep\",\n         \"name\": \"[Step 2 title]\",\n         \"text\": \"[Step 2 detailed instructions]\",\n         \"url\": \"[URL]#step2\",\n         \"image\": \"[Step 2 image URL]\"\n       }\n     ]\n   }\n   ```\n   ```\n\n4. **Generate Article Schema**\n\n   ```markdown\n   ### Article Schema\n   \n   **Schema Type Options**:\n   - `Article` - General articles\n   - `BlogPosting` - Blog posts\n   - `NewsArticle` - News content\n   - `TechArticle` - Technical documentation\n   \n   **Generated Schema**:\n   \n   ```json\n   {\n     \"@context\": \"https://schema.org\",\n     \"@type\": \"Article\",\n     \"headline\": \"[Article title - max 110 chars]\",\n     \"description\": \"[Article summary]\",\n     \"image\": [\n       \"[Image URL 1 - 1200px wide]\",\n       \"[Image URL 2 - 4:3 ratio]\",\n       \"[Image URL 3 - 16:9 ratio]\"\n     ],\n     \"datePublished\": \"[ISO 8601 date: 2024-01-15T08:00:00+00:00]\",\n     \"dateModified\": \"[ISO 8601 date]\",\n     \"author\": {\n       \"@type\": \"Person\",\n       \"name\": \"[Author Name]\",\n       \"url\": \"[Author profile URL]\"\n     },\n     \"publisher\": {\n       \"@type\": \"Organization\",\n       \"name\": \"[Publisher Name]\",\n       \"logo\": {\n         \"@type\": \"ImageObject\",\n         \"url\": \"[Logo URL - 60px high max]\"\n       }\n     },\n     \"mainEntityOfPage\": {\n       \"@type\": \"WebPage\",\n       \"@id\": \"[Canonical URL]\"\n     }\n   }\n   ```\n   ```\n\n5. **Generate Product Schema**\n\n   ```markdown\n   ### Product Schema\n   \n   **Requirements for Rich Results**:\n   - Name (required)\n   - Image (required)\n   - Offers with price (for price rich results)\n   - AggregateRating (for star ratings)\n   - Review (for review snippets)\n   \n   **Generated Schema**:\n   \n   ```json\n   {\n     \"@context\": \"https://schema.org\",\n     \"@type\": \"Product\",\n     \"name\": \"[Product Name]\",\n     \"image\": [\n       \"[Product image URL 1]\",\n       \"[Product image URL 2]\"\n     ],\n     \"description\": \"[Product description]\",\n     \"sku\": \"[SKU]\",\n     \"mpn\": \"[Manufacturer Part Number]\",\n     \"brand\": {\n       \"@type\": \"Brand\",\n       \"name\": \"[Brand Name]\"\n     },\n     \"offers\": {\n       \"@type\": \"Offer\",\n       \"url\": \"[Product URL]\",\n       \"priceCurrency\": \"USD\",\n       \"price\": \"[Price]\",\n       \"priceValidUntil\": \"[Date]\",\n       \"availability\": \"https://schema.org/InStock\",\n       \"seller\": {\n         \"@type\": \"Organization\",\n         \"name\": \"[Seller Name]\"\n       }\n     },\n     \"aggregateRating\": {\n       \"@type\": \"AggregateRating\",\n       \"ratingValue\": \"[4.5]\",\n       \"reviewCount\": \"[89]\"\n     },\n     \"review\": {\n       \"@type\": \"Review\",\n       \"reviewRating\": {\n         \"@type\": \"Rating\",\n         \"ratingValue\": \"[5]\"\n       },\n       \"author\": {\n         \"@type\": \"Person\",\n         \"name\": \"[Reviewer Name]\"\n       },\n       \"reviewBody\": \"[Review text]\"\n     }\n   }\n   ```\n   ```\n\n6. **Generate Local Business Schema**\n\n   ```markdown\n   ### LocalBusiness Schema\n   \n   **Generated Schema**:\n   \n   ```json\n   {\n     \"@context\": \"https://schema.org\",\n     \"@type\": \"[LocalBusiness/Restaurant/Store/etc.]\",\n     \"name\": \"[Business Name]\",\n     \"image\": \"[Business image URL]\",\n     \"@id\": \"[Business URL]\",\n     \"url\": \"[Website URL]\",\n     \"telephone\": \"[Phone number]\",\n     \"priceRange\": \"[$$]\",\n     \"address\": {\n       \"@type\": \"PostalAddress\",\n       \"streetAddress\": \"[Street Address]\",\n       \"addressLocality\": \"[City]\",\n       \"addressRegion\": \"[State]\",\n       \"postalCode\": \"[ZIP]\",\n       \"addressCountry\": \"US\"\n     },\n     \"geo\": {\n       \"@type\": \"GeoCoordinates\",\n       \"latitude\": [latitude],\n       \"longitude\": [longitude]\n     },\n     \"openingHoursSpecification\": [\n       {\n         \"@type\": \"OpeningHoursSpecification\",\n         \"dayOfWeek\": [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\"],\n         \"opens\": \"09:00\",\n         \"closes\": \"17:00\"\n       }\n     ],\n     \"aggregateRating\": {\n       \"@type\": \"AggregateRating\",\n       \"ratingValue\": \"[4.5]\",\n       \"reviewCount\": \"[123]\"\n     }\n   }\n   ```\n   ```\n\n7. **Generate Organization Schema**\n\n   ```markdown\n   ### Organization Schema\n   \n   **Generated Schema**:\n   \n   ```json\n   {\n     \"@context\": \"https://schema.org\",\n     \"@type\": \"Organization\",\n     \"name\": \"[Organization Name]\",\n     \"url\": \"[Website URL]\",\n     \"logo\": \"[Logo URL]\",\n     \"sameAs\": [\n       \"[Facebook URL]\",\n       \"[Twitter URL]\",\n       \"[LinkedIn URL]\",\n       \"[Instagram URL]\"\n     ],\n     \"contactPoint\": {\n       \"@type\": \"ContactPoint\",\n       \"telephone\": \"[Phone]\",\n       \"contactType\": \"customer service\",\n       \"availableLanguage\": [\"English\"]\n     }\n   }\n   ```\n   ```\n\n8. **Generate Breadcrumb Schema**\n\n   ```markdown\n   ### BreadcrumbList Schema\n   \n   **Generated Schema**:\n   \n   ```json\n   {\n     \"@context\": \"https://schema.org\",\n     \"@type\": \"BreadcrumbList\",\n     \"itemListElement\": [\n       {\n         \"@type\": \"ListItem\",\n         \"position\": 1,\n         \"name\": \"Home\",\n         \"item\": \"[Homepage URL]\"\n       },\n       {\n         \"@type\": \"ListItem\",\n         \"position\": 2,\n         \"name\": \"[Category Name]\",\n         \"item\": \"[Category URL]\"\n       },\n       {\n         \"@type\": \"ListItem\",\n         \"position\": 3,\n         \"name\": \"[Page Name]\",\n         \"item\": \"[Page URL]\"\n       }\n     ]\n   }\n   ```\n   ```\n\n9. **Combine Multiple Schema Types**\n\n   ```markdown\n   ### Combined Schema Implementation\n   \n   For pages needing multiple schema types:\n   \n   ```json\n   <script type=\"application/ld+json\">\n   [\n     {\n       \"@context\": \"https://schema.org\",\n       \"@type\": \"Article\",\n       \"headline\": \"[Article title]\",\n       \"author\": { \"@type\": \"Person\", \"name\": \"[Author name]\" }\n     },\n     {\n       \"@context\": \"https://schema.org\",\n       \"@type\": \"FAQPage\",\n       \"mainEntity\": [{ \"@type\": \"Question\", \"name\": \"[Question]\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"[Answer]\" } }]\n     },\n     {\n       \"@context\": \"https://schema.org\",\n       \"@type\": \"BreadcrumbList\",\n       \"itemListElement\": [{ \"@type\": \"ListItem\", \"position\": 1, \"name\": \"Home\", \"item\": \"[URL]\" }]\n     }\n   ]\n   </script>\n   ```\n   ```\n\n10. **Provide Implementation and Validation**\n\n    ```markdown\n    ## Implementation Guide\n\n    ### Adding Schema to Your Page\n\n    **Option 1: In HTML <head>**\n    ```html\n    <head>\n      <script type=\"application/ld+json\">\n        [Your JSON-LD schema here]\n      </script>\n    </head>\n    ```\n\n    **Option 2: Before closing </body>**\n    ```html\n      <script type=\"application/ld+json\">\n        [Your JSON-LD schema here]\n      </script>\n    </body>\n    ```\n\n    ### Validation Steps\n\n    1. **~~schema validator**\n       - Test your live URL or paste code\n       - Check for errors and warnings\n\n    2. **Schema.org Validator**\n       - URL: https://validator.schema.org/\n       - Validates against Schema.org spec\n\n    3. **~~search console**\n       - Monitor rich results in ~~search console\n       - Check Enhancements reports for issues\n\n    ### Validation Checklist\n\n    - [ ] JSON syntax is valid (no trailing commas)\n    - [ ] All required properties present\n    - [ ] URLs are absolute, not relative\n    - [ ] Dates are in ISO 8601 format\n    - [ ] Content matches visible page content\n    - [ ] No policy violations\n    ```\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Page URL or content provided\n- [ ] Schema type appropriate for content (Article for blog, Product for e-commerce, etc.)\n- [ ] All required data available (author, dates, prices, etc. depending on schema type)\n- [ ] Content eligibility for rich results confirmed\n\n### Output Validation\n- [ ] JSON syntax validates (no trailing commas, proper quotes)\n- [ ] All required properties present for chosen schema type\n- [ ] URLs are absolute, not relative\n- [ ] Dates in ISO 8601 format (YYYY-MM-DDTHH:MM:SS+00:00)\n- [ ] Schema content matches visible page content exactly\n- [ ] Passes ~~schema validator with no errors\n- [ ] Source of each data point clearly stated (~~web crawler extraction, user-provided, or manual entry)\n\n## Example\n\n**User**: \"Generate FAQ schema for a page about SEO with 3 questions\"\n\n**Output**:\n\n```markdown\n## FAQ Schema for SEO Page\n\n### Schema Markup\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is SEO?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"SEO (Search Engine Optimization) is the practice of optimizing websites and content to rank higher in search engine results pages (SERPs). It involves technical optimizations, content creation, and link building to increase organic visibility and drive qualified traffic to your website.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How long does SEO take to work?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"SEO typically takes 3-6 months to show significant results, though this varies based on competition, domain authority, and effort invested. New websites may take 6-12 months, while established sites with existing authority can see improvements in 1-3 months for less competitive keywords.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is SEO better than paid advertising?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"SEO and paid advertising serve different purposes. SEO provides sustainable, long-term traffic without per-click costs but takes time to build. Paid advertising delivers immediate results but stops when you stop paying. Most successful businesses use both: paid ads for immediate leads and SEO for long-term growth.\"\n      }\n    }\n  ]\n}\n```\n\n### Implementation\n\n```html\n<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is SEO?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"SEO (Search Engine Optimization) is the practice of optimizing websites and content to rank higher in search engine results pages (SERPs). It involves technical optimizations, content creation, and link building to increase organic visibility and drive qualified traffic to your website.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How long does SEO take to work?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"SEO typically takes 3-6 months to show significant results, though this varies based on competition, domain authority, and effort invested. New websites may take 6-12 months, while established sites with existing authority can see improvements in 1-3 months for less competitive keywords.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is SEO better than paid advertising?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"SEO and paid advertising serve different purposes. SEO provides sustainable, long-term traffic without per-click costs but takes time to build. Paid advertising delivers immediate results but stops when you stop paying. Most successful businesses use both: paid ads for immediate leads and SEO for long-term growth.\"\n      }\n    }\n  ]\n}\n</script>\n```\n\n### Validation\n\nTest with ~~schema validator\n\n### SERP Preview\n\n```\nSEO Guide: Complete Beginner's Tutorial\nyoursite.com/seo-guide/\nLearn SEO from scratch with our comprehensive guide...\n\n▼ What is SEO?\n  SEO (Search Engine Optimization) is the practice of optimizing...\n▼ How long does SEO take to work?\n  SEO typically takes 3-6 months to show significant results...\n▼ Is SEO better than paid advertising?\n  SEO and paid advertising serve different purposes...\n```\n```\n\n## Schema Type Quick Reference\n\n| Content Type | Schema Type | Key Properties |\n|--------------|-------------|----------------|\n| Blog Post | BlogPosting/Article | headline, datePublished, author |\n| Product | Product | name, price, availability |\n| FAQ | FAQPage | Question, Answer |\n| How-To | HowTo | step, totalTime |\n| Local Business | LocalBusiness | address, geo, openingHours |\n| Recipe | Recipe | ingredients, cookTime |\n| Event | Event | startDate, location |\n| Video | VideoObject | uploadDate, duration |\n| Course | Course | provider, name |\n| Review | Review | itemReviewed, ratingValue |\n\n## Tips for Success\n\n1. **Match visible content** - Schema must reflect what users see\n2. **Don't spam** - Only add schema for relevant content\n3. **Keep updated** - Update dates and prices when they change\n4. **Test thoroughly** - Validate before deploying\n5. **Monitor Search Console** - Watch for errors and warnings\n\n## Schema Type Decision Tree\n\n### When to Use Which Schema\n\n| Your Content | Primary Schema | Add If Applicable | Rich Result Eligibility |\n|-------------|---------------|-------------------|----------------------|\n| Blog post / article | Article | FAQ, HowTo, Speakable | Article carousel, FAQ rich result |\n| Product page | Product | Review, Offer, AggregateRating | Product snippet with price/rating |\n| Service page | Service | FAQ, LocalBusiness | Service snippet |\n| How-to guide | HowTo | Article, FAQ | How-to rich result with steps |\n| FAQ page | FAQPage | Article | FAQ accordion in SERP |\n| Recipe | Recipe | Video, AggregateRating | Recipe carousel |\n| Event | Event | Offer, Organization | Event snippet with date/location |\n| Video | VideoObject | Article | Video carousel, key moments |\n| Local business | LocalBusiness | Review, OpeningHoursSpecification | Local pack, knowledge panel |\n| Person/author | Person | Organization | Knowledge panel |\n| Organization | Organization | ContactPoint, Logo | Knowledge panel |\n| Course | Course | Organization | Course rich result |\n| Job posting | JobPosting | Organization | Google for Jobs listing |\n| Breadcrumb | BreadcrumbList | (Always add alongside other schema) | Breadcrumb trail in SERP |\n| Software/App | SoftwareApplication | Review, Offer | App snippet |\n\n### Industry-Specific Schema Recommendations\n\n| Industry | Essential Schema | High-Value Additions |\n|----------|-----------------|---------------------|\n| E-commerce | Product, BreadcrumbList, Organization | AggregateRating, FAQ, Review |\n| SaaS | SoftwareApplication, FAQPage, Organization | HowTo, VideoObject, Review |\n| Local Services | LocalBusiness, Service | FAQ, Review, Event |\n| Publishing/Media | Article, Person, Organization | FAQ, Speakable, VideoObject |\n| Education | Course, Organization | FAQ, HowTo, Event |\n| Healthcare | MedicalWebPage, Organization | FAQ, Physician, MedicalClinic |\n| Real Estate | RealEstateListing, Organization | LocalBusiness, FAQ |\n| Restaurants | Restaurant, Menu | Review, Event, FAQ |\n\n### Schema Implementation Priority\n\n| Priority | Schema Types | Why |\n|----------|-------------|-----|\n| P0 -- Always | Organization, BreadcrumbList, WebSite (SearchAction) | Foundation for all sites |\n| P1 -- Content | Article, FAQPage, HowTo | Direct rich result eligibility |\n| P2 -- Commercial | Product, Review, AggregateRating, Offer | Revenue-impacting rich results |\n| P3 -- Authority | Person, SameAs, Speakable | E-E-A-T signals, AI citation |\n| P4 -- Specialized | Industry-specific types | Niche rich results |\n\n### Schema Validation Quick Reference\n\n| Issue | Impact | Fix |\n|-------|--------|-----|\n| Missing required property | Schema ignored by Google | Add all required fields (check schema.org) |\n| Invalid date format | Warning, may lose rich result | Use ISO 8601: \"2026-02-11\" |\n| Incorrect @type | Schema misinterpreted | Match @type exactly to schema.org |\n| Self-referencing sameAs | Warning | sameAs should link to EXTERNAL profiles |\n| Missing image for Article | Loses article rich result | Add image property with valid URL |\n| Review without itemReviewed | Review not connected | Nest review inside Product/Service/etc. |\n\n## Reference Materials\n\n- [Schema Templates](./references/schema-templates.md) - Copy-ready JSON-LD templates for all schema types\n- [Validation Guide](./references/validation-guide.md) - Common errors, required properties, testing workflow\n\n## Related Skills\n\n- [seo-content-writer](../seo-content-writer/) — Create content worth marking up\n- [geo-content-optimizer](../geo-content-optimizer/) — Optimize FAQ content\n- [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) — Audit existing schema\n- [technical-seo-checker](../../optimize/technical-seo-checker/) — Technical validation\n- [entity-optimizer](../../cross-cutting/entity-optimizer/) — Entity audit informs Organization, Person, Product schema\n- [meta-tags-optimizer](../meta-tags-optimizer/) — Optimize meta tags alongside structured data\n\nFile v0.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn73qjxwmbna25qq8q051epqt980sys5\",\n  \"slug\": \"schema-markup-generator\",\n  \"version\": \"0.1.2\",\n  \"publishedAt\": 1770824167108\n}\n\nFile v0.1.2:references/schema-templates.md\n\n# Schema.org JSON-LD Templates\n\nComplete, copy-ready structured data templates for all major schema types. Customize the bracketed values to match your content.\n\n## FAQPage Schema\n\nFor pages with frequently asked questions. Minimum 2 Q&A pairs required.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"[Question text - exactly as shown on page]\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"[Complete answer text - must match visible content]\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"[Question 2]\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"[Answer 2]\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"[Question 3]\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"[Answer 3]\"\n      }\n    }\n  ]\n}\n```\n\n**Requirements**: Questions must be complete questions, answers must be comprehensive, content must match visible page content.\n\n---\n\n## HowTo Schema\n\nFor step-by-step instructional content.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"HowTo\",\n  \"name\": \"[How-to title - what will users learn]\",\n  \"description\": \"[Brief description of what this tutorial teaches]\",\n  \"image\": {\n    \"@type\": \"ImageObject\",\n    \"url\": \"[Main image URL]\",\n    \"height\": \"[height in pixels]\",\n    \"width\": \"[width in pixels]\"\n  },\n  \"totalTime\": \"PT[X]H[Y]M\",\n  \"estimatedCost\": {\n    \"@type\": \"MonetaryAmount\",\n    \"currency\": \"USD\",\n    \"value\": \"[estimated cost or 0]\"\n  },\n  \"supply\": [\n    {\n      \"@type\": \"HowToSupply\",\n      \"name\": \"[Supply item 1]\"\n    },\n    {\n      \"@type\": \"HowToSupply\",\n      \"name\": \"[Supply item 2]\"\n    }\n  ],\n  \"tool\": [\n    {\n      \"@type\": \"HowToTool\",\n      \"name\": \"[Tool 1]\"\n    },\n    {\n      \"@type\": \"HowToTool\",\n      \"name\": \"[Tool 2]\"\n    }\n  ],\n  \"step\": [\n    {\n      \"@type\": \"HowToStep\",\n      \"position\": 1,\n      \"name\": \"[Step 1 title]\",\n      \"text\": \"[Step 1 detailed instructions]\",\n      \"url\": \"[Page URL]#step1\",\n      \"image\": \"[Step 1 image URL - optional]\"\n    },\n    {\n      \"@type\": \"HowToStep\",\n      \"position\": 2,\n      \"name\": \"[Step 2 title]\",\n      \"text\": \"[Step 2 detailed instructions]\",\n      \"url\": \"[Page URL]#step2\",\n      \"image\": \"[Step 2 image URL - optional]\"\n    },\n    {\n      \"@type\": \"HowToStep\",\n      \"position\": 3,\n      \"name\": \"[Step 3 title]\",\n      \"text\": \"[Step 3 detailed instructions]\",\n      \"url\": \"[Page URL]#step3\",\n      \"image\": \"[Step 3 image URL - optional]\"\n    }\n  ]\n}\n```\n\n**Time format**: PT[X]H[Y]M where X = hours, Y = minutes. Example: PT1H30M = 1 hour 30 minutes.\n\n---\n\n## Article / BlogPosting / NewsArticle Schema\n\nFor blog posts, articles, and news content.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"BlogPosting\",\n  \"headline\": \"[Article title - max 110 characters for best display]\",\n  \"description\": \"[Article summary or excerpt]\",\n  \"image\": [\n    \"[Featured image URL - 1200px wide recommended]\",\n    \"[Alternative image URL - 4:3 ratio]\",\n    \"[Alternative image URL - 16:9 ratio]\"\n  ],\n  \"datePublished\": \"[ISO 8601 date: 2024-01-15T08:00:00+00:00]\",\n  \"dateModified\": \"[ISO 8601 date - same as published if never modified]\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"[Author Full Name]\",\n    \"url\": \"[Author profile URL]\",\n    \"jobTitle\": \"[Author job title - optional]\"\n  },\n  \"publisher\": {\n    \"@type\": \"Organization\",\n    \"name\": \"[Publisher/Company Name]\",\n    \"logo\": {\n      \"@type\": \"ImageObject\",\n      \"url\": \"[Publisher logo URL - max 600px wide, 60px high]\",\n      \"width\": \"[width]\",\n      \"height\": \"[height]\"\n    }\n  },\n  \"mainEntityOfPage\": {\n    \"@type\": \"WebPage\",\n    \"@id\": \"[Canonical URL of this article]\"\n  },\n  \"articleBody\": \"[Full article text - optional but recommended]\",\n  \"wordCount\": \"[word count - optional]\"\n}\n```\n\n**Type variants**: Use `Article` for general articles, `BlogPosting` for blog posts, `NewsArticle` for news content, `TechArticle` for technical documentation.\n\n---\n\n## Product Schema\n\nFor e-commerce product pages.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"[Product Name]\",\n  \"image\": [\n    \"[Product image URL 1]\",\n    \"[Product image URL 2]\",\n    \"[Product image URL 3]\"\n  ],\n  \"description\": \"[Product description]\",\n  \"sku\": \"[SKU code]\",\n  \"mpn\": \"[Manufacturer Part Number - optional]\",\n  \"brand\": {\n    \"@type\": \"Brand\",\n    \"name\": \"[Brand Name]\"\n  },\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"url\": \"[Product page URL]\",\n    \"priceCurrency\": \"USD\",\n    \"price\": \"[Price as number: 29.99]\",\n    \"priceValidUntil\": \"[Date price is valid until: 2024-12-31]\",\n    \"availability\": \"https://schema.org/InStock\",\n    \"seller\": {\n      \"@type\": \"Organization\",\n      \"name\": \"[Seller/Store Name]\"\n    },\n    \"shippingDetails\": {\n      \"@type\": \"OfferShippingDetails\",\n      \"shippingRate\": {\n        \"@type\": \"MonetaryAmount\",\n        \"value\": \"[shipping cost]\",\n        \"currency\": \"USD\"\n      },\n      \"shippingDestination\": {\n        \"@type\": \"DefinedRegion\",\n        \"addressCountry\": \"US\"\n      }\n    }\n  },\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"[4.5]\",\n    \"reviewCount\": \"[89]\",\n    \"bestRating\": \"5\",\n    \"worstRating\": \"1\"\n  },\n  \"review\": [\n    {\n      \"@type\": \"Review\",\n      \"reviewRating\": {\n        \"@type\": \"Rating\",\n        \"ratingValue\": \"[5]\",\n        \"bestRating\": \"5\"\n      },\n      \"author\": {\n        \"@type\": \"Person\",\n        \"name\": \"[Reviewer Name]\"\n      },\n      \"reviewBody\": \"[Review text]\",\n      \"datePublished\": \"[Review date: 2024-01-15]\"\n    }\n  ]\n}\n```\n\n**Availability options**: `InStock`, `OutOfStock`, `PreOrder`, `Discontinued`, `LimitedAvailability`, `OnlineOnly`, `InStoreOnly`, `SoldOut`\n\n---\n\n## LocalBusiness Schema\n\nFor local business pages with physical locations.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"LocalBusiness\",\n  \"name\": \"[Business Name]\",\n  \"image\": \"[Business image or logo URL]\",\n  \"@id\": \"[Business page URL]\",\n  \"url\": \"[Website URL]\",\n  \"telephone\": \"[Phone number: +1-555-555-5555]\",\n  \"priceRange\": \"[$$$ or price range like $10-$50]\",\n  \"address\": {\n    \"@type\": \"PostalAddress\",\n    \"streetAddress\": \"[Street address]\",\n    \"addressLocality\": \"[City]\",\n    \"addressRegion\": \"[State/Province]\",\n    \"postalCode\": \"[ZIP/Postal code]\",\n    \"addressCountry\": \"US\"\n  },\n  \"geo\": {\n    \"@type\": \"GeoCoordinates\",\n    \"latitude\": \"[latitude as number: 40.7128]\",\n    \"longitude\": \"[longitude as number: -74.0060]\"\n  },\n  \"openingHoursSpecification\": [\n    {\n      \"@type\": \"OpeningHoursSpecification\",\n      \"dayOfWeek\": [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\"],\n      \"opens\": \"09:00\",\n      \"closes\": \"17:00\"\n    },\n    {\n      \"@type\": \"OpeningHoursSpecification\",\n      \"dayOfWeek\": \"Saturday\",\n      \"opens\": \"10:00\",\n      \"closes\": \"15:00\"\n    }\n  ],\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"[4.5]\",\n    \"reviewCount\": \"[123]\"\n  },\n  \"servesCuisine\": \"[Cuisine type - for restaurants only]\"\n}\n```\n\n**Type variants**: Use more specific types when applicable: `Restaurant`, `Store`, `AutoRepair`, `HealthAndBeautyBusiness`, `LegalService`, etc.\n\n---\n\n## Organization Schema\n\nFor brand/company homepage.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"[Organization Name]\",\n  \"url\": \"[Website URL]\",\n  \"logo\": \"[Logo URL - recommended 112x112px or larger]\",\n  \"description\": \"[Company description]\",\n  \"sameAs\": [\n    \"[Facebook URL]\",\n    \"[Twitter URL]\",\n    \"[LinkedIn URL]\",\n    \"[Instagram URL]\",\n    \"[YouTube URL]\"\n  ],\n  \"contactPoint\": {\n    \"@type\": \"ContactPoint\",\n    \"telephone\": \"[Phone number]\",\n    \"contactType\": \"customer service\",\n    \"email\": \"[Email address]\",\n    \"availableLanguage\": [\"English\", \"Spanish\"],\n    \"areaServed\": \"US\"\n  },\n  \"founder\": {\n    \"@type\": \"Person\",\n    \"name\": \"[Founder name - optional]\"\n  },\n  \"foundingDate\": \"[YYYY-MM-DD - optional]\",\n  \"address\": {\n    \"@type\": \"PostalAddress\",\n    \"streetAddress\": \"[Street address]\",\n    \"addressLocality\": \"[City]\",\n    \"addressRegion\": \"[State]\",\n    \"postalCode\": \"[ZIP]\",\n    \"addressCountry\": \"US\"\n  }\n}\n```\n\n---\n\n## BreadcrumbList Schema\n\nFor navigation breadcrumbs.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"BreadcrumbList\",\n  \"itemListElement\": [\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 1,\n      \"name\": \"Home\",\n      \"item\": \"[Homepage URL]\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 2,\n      \"name\": \"[Category Name]\",\n      \"item\": \"[Category URL]\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 3,\n      \"name\": \"[Subcategory Name]\",\n      \"item\": \"[Subcategory URL]\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 4,\n      \"name\": \"[Current Page Name]\",\n      \"item\": \"[Current Page URL]\"\n    }\n  ]\n}\n```\n\n**Important**: Position numbers must be sequential starting from 1. Last item should be the current page.\n\n---\n\n## VideoObject Schema\n\nFor video content.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"VideoObject\",\n  \"name\": \"[Video title]\",\n  \"description\": \"[Video description]\",\n  \"thumbnailUrl\": \"[Video thumbnail URL - minimum 160x90px]\",\n  \"uploadDate\": \"[ISO 8601 date: 2024-01-15T08:00:00+00:00]\",\n  \"duration\": \"PT[X]M[Y]S\",\n  \"contentUrl\": \"[Video file URL]\",\n  \"embedUrl\": \"[Video embed URL]\",\n  \"interactionStatistic\": {\n    \"@type\": \"InteractionCounter\",\n    \"interactionType\": { \"@type\": \"WatchAction\" },\n    \"userInteractionCount\": \"[view count]\"\n  }\n}\n```\n\n**Duration format**: PT[X]M[Y]S where X = minutes, Y = seconds. Example: PT5M30S = 5 minutes 30 seconds.\n\n---\n\n## Event Schema\n\nFor events, conferences, concerts, etc.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Event\",\n  \"name\": \"[Event Name]\",\n  \"description\": \"[Event description]\",\n  \"image\": \"[Event image URL]\",\n  \"startDate\": \"[ISO 8601 date: 2024-06-15T19:00:00-05:00]\",\n  \"endDate\": \"[ISO 8601 date: 2024-06-15T22:00:00-05:00]\",\n  \"eventStatus\": \"https://schema.org/EventScheduled\",\n  \"eventAttendanceMode\": \"https://schema.org/OfflineEventAttendanceMode\",\n  \"location\": {\n    \"@type\": \"Place\",\n    \"name\": \"[Venue Name]\",\n    \"address\": {\n      \"@type\": \"PostalAddress\",\n      \"streetAddress\": \"[Street address]\",\n      \"addressLocality\": \"[City]\",\n      \"addressRegion\": \"[State]\",\n      \"postalCode\": \"[ZIP]\",\n      \"addressCountry\": \"US\"\n    }\n  },\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"url\": \"[Ticket purchase URL]\",\n    \"price\": \"[ticket price]\",\n    \"priceCurrency\": \"USD\",\n    \"availability\": \"https://schema.org/InStock\",\n    \"validFrom\": \"[Sale start date]\"\n  },\n  \"organizer\": {\n    \"@type\": \"Organization\",\n    \"name\": \"[Organizer name]\",\n    \"url\": \"[Organizer website]\"\n  }\n}\n```\n\n**Event status options**: `EventScheduled`, `EventCancelled`, `EventPostponed`, `EventRescheduled`, `EventMovedOnline`\n\n**Attendance mode**: `OfflineEventAttendanceMode`, `OnlineEventAttendanceMode`, `MixedEventAttendanceMode`\n\n---\n\n## Course Schema\n\nFor online courses and educational content.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Course\",\n  \"name\": \"[Course Name]\",\n  \"description\": \"[Course description]\",\n  \"provider\": {\n    \"@type\": \"Organization\",\n    \"name\": \"[Provider name]\",\n    \"sameAs\": \"[Provider URL]\"\n  },\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"category\": \"Paid\",\n    \"price\": \"[price]\",\n    \"priceCurrency\": \"USD\"\n  },\n  \"hasCourseInstance\": {\n    \"@type\": \"CourseInstance\",\n    \"courseMode\": \"online\",\n    \"courseWorkload\": \"PT[X]H\",\n    \"instructor\": {\n      \"@type\": \"Person\",\n      \"name\": \"[Instructor name]\"\n    }\n  }\n}\n```\n\n---\n\n## Recipe Schema\n\nFor cooking recipes.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Recipe\",\n  \"name\": \"[Recipe name]\",\n  \"image\": \"[Recipe image URL]\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"[Author name]\"\n  },\n  \"datePublished\": \"[ISO 8601 date]\",\n  \"description\": \"[Recipe description]\",\n  \"prepTime\": \"PT[X]M\",\n  \"cookTime\": \"PT[X]M\",\n  \"totalTime\": \"PT[X]M\",\n  \"recipeYield\": \"[Servings: e.g., '4 servings']\",\n  \"recipeCategory\": \"[Category: e.g., 'Dinner']\",\n  \"recipeCuisine\": \"[Cuisine: e.g., 'Italian']\",\n  \"keywords\": \"[comma, separated, keywords]\",\n  \"nutrition\": {\n    \"@type\": \"NutritionInformation\",\n    \"calories\": \"[calories per serving]\"\n  },\n  \"recipeIngredient\": [\n    \"[Ingredient 1 with quantity]\",\n    \"[Ingredient 2 with quantity]\",\n    \"[Ingredient 3 with quantity]\"\n  ],\n  \"recipeInstructions\": [\n    {\n      \"@type\": \"HowToStep\",\n      \"text\": \"[Step 1 instructions]\"\n    },\n    {\n      \"@type\": \"HowToStep\",\n      \"text\": \"[Step 2 instructions]\"\n    }\n  ],\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"[4.5]\",\n    \"reviewCount\": \"[number of reviews]\"\n  }\n}\n```\n\n---\n\n## SoftwareApplication Schema\n\nFor software, apps, and tools.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"SoftwareApplication\",\n  \"name\": \"[Software name]\",\n  \"operatingSystem\": \"[Windows, macOS, iOS, Android, Web]\",\n  \"applicationCategory\": \"BusinessApplication\",\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"price\": \"[price or 0 for free]\",\n    \"priceCurrency\": \"USD\"\n  },\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"[4.5]\",\n    \"reviewCount\": \"[number of reviews]\"\n  },\n  \"screenshot\": \"[Screenshot URL - optional]\",\n  \"softwareVersion\": \"[version number]\",\n  \"fileSize\": \"[file size with units: e.g., '50MB']\",\n  \"datePublished\": \"[Release date]\",\n  \"downloadUrl\": \"[Download URL - optional]\"\n}\n```\n\n---\n\n## Multiple Schema Types (Combined Array)\n\nTo include multiple schema types on one page, wrap them in an array:\n\n```html\n<script type=\"application/ld+json\">\n[\n  {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"Article\",\n    \"headline\": \"[Article title]\",\n    \"author\": {\n      \"@type\": \"Person\",\n      \"name\": \"[Author]\"\n    }\n  },\n  {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"FAQPage\",\n    \"mainEntity\": [\n      {\n        \"@type\": \"Question\",\n        \"name\": \"[Question]\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"[Answer]\"\n        }\n      }\n    ]\n  },\n  {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"BreadcrumbList\",\n    \"itemListElement\": [\n      {\n        \"@type\": \"ListItem\",\n        \"position\": 1,\n        \"name\": \"Home\",\n        \"item\": \"[URL]\"\n      }\n    ]\n  }\n]\n</script>\n```\n\n---\n\n## Implementation Notes\n\n- Always validate schema at https://validator.schema.org/ and https://search.google.com/test/rich-results\n- Remove bracketed placeholders and replace with actual content\n- Use absolute URLs, not relative paths\n- Dates must be in ISO 8601 format\n- Schema must match visible page content (Google policy requirement)\n- No trailing commas in JSON (invalid syntax)\n\nFile v0.1.2:references/validation-guide.md\n\n# Schema Markup Validation Guide\n\nComplete reference for validating, testing, and troubleshooting structured data.\n\n## Validation Tools\n\n### Google Rich Results Test\n- **URL**: https://search.google.com/test/rich-results\n- **Purpose**: Check if your schema is eligible for Google rich results\n- **Tests**: Live URL or code snippet\n- **Output**: Errors, warnings, eligible rich result types\n\n### Schema.org Validator\n- **URL**: https://validator.schema.org/\n- **Purpose**: Validate against official Schema.org specification\n- **Tests**: URL, code snippet, or microdata\n- **Output**: Technical validation errors\n\n### Google Search Console\n- **Location**: Search Console → Enhancements section\n- **Purpose**: Monitor rich results performance and errors at scale\n- **Reports**: Rich results status, coverage, issues over time\n\n---\n\n## Common JSON-LD Syntax Errors\n\n### Trailing Commas\n\n**Error**: Invalid JSON syntax\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"Title\",  ← Trailing comma here\n}\n```\n\n**Fix**: Remove the comma after the last property\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"Title\"\n}\n```\n\n### Missing Required Quotes\n\n**Error**: Property names must be quoted\n```json\n{\n  @context: \"https://schema.org\"\n}\n```\n\n**Fix**: Quote all property names\n```json\n{\n  \"@context\": \"https://schema.org\"\n}\n```\n\n### Incorrect Date Format\n\n**Error**: Invalid date format\n```json\n{\n  \"datePublished\": \"01/15/2024\"\n}\n```\n\n**Fix**: Use ISO 8601 format\n```json\n{\n  \"datePublished\": \"2024-01-15T08:00:00+00:00\"\n}\n```\n\n### Relative URLs Instead of Absolute\n\n**Error**: Relative URLs are not allowed\n```json\n{\n  \"image\": \"/images/photo.jpg\"\n}\n```\n\n**Fix**: Use absolute URLs\n```json\n{\n  \"image\": \"https://example.com/images/photo.jpg\"\n}\n```\n\n### Incorrect Array Syntax\n\n**Error**: Multiple values not in array\n```json\n{\n  \"image\": \"url1.jpg\", \"url2.jpg\"\n}\n```\n\n**Fix**: Use array brackets for multiple values\n```json\n{\n  \"image\": [\"url1.jpg\", \"url2.jpg\"]\n}\n```\n\n---\n\n## Required vs Recommended Properties\n\n### FAQPage Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | Must be \"FAQPage\" |\n| mainEntity | Required | Array of Question objects |\n| Question.name | Required | The question text |\n| Answer.text | Required | The answer text |\n\n**Minimum**: 2 Q&A pairs\n\n### HowTo Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | Must be \"HowTo\" |\n| name | Required | Title of the how-to |\n| step | Required | Array of HowToStep objects |\n| step.text | Required | Step instructions |\n| image | Recommended | Improves visibility |\n| totalTime | Recommended | Shows duration in results |\n| supply | Recommended | Lists materials needed |\n| tool | Recommended | Lists tools needed |\n\n**Minimum**: 2 steps with text\n\n### Article Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | Article/BlogPosting/NewsArticle |\n| headline | Required | Max 110 characters |\n| image | Required | Minimum 1200px wide |\n| datePublished | Required | ISO 8601 format |\n| author | Required | Person or Organization |\n| publisher | Required | Organization with logo |\n| publisher.logo | Required | Max 600px wide, 60px high |\n| dateModified | Recommended | Update when content changes |\n| description | Recommended | Improves display |\n\n### Product Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | Must be \"Product\" |\n| name | Required | Product name |\n| image | Required | Product images |\n| description | Recommended | Product description |\n| offers | Recommended | Required for price display |\n| offers.price | Recommended | Required for price display |\n| offers.priceCurrency | Recommended | Required for price display |\n| offers.availability | Recommended | Stock status |\n| aggregateRating | Recommended | Required for star ratings |\n| review | Recommended | Individual reviews |\n| sku | Recommended | Product identifier |\n| brand | Recommended | Brand information |\n\n### LocalBusiness Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | LocalBusiness or subtype |\n| name | Required | Business name |\n| address | Required | PostalAddress object |\n| address.streetAddress | Required | Street address |\n| address.addressLocality | Required | City |\n| address.addressRegion | Required | State/province |\n| address.postalCode | Required | ZIP/postal code |\n| address.addressCountry | Required | Country code |\n| geo | Recommended | Latitude/longitude |\n| telephone | Recommended | Phone number |\n| openingHoursSpecification | Recommended | Business hours |\n| priceRange | Recommended | Price range indicator |\n| aggregateRating | Recommended | Customer ratings |\n\n### Organization Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | Must be \"Organization\" |\n| name | Required | Organization name |\n| url | Required | Website URL |\n| logo | Recommended | Brand logo |\n| sameAs | Recommended | Social media profiles |\n| contactPoint | Recommended | Contact information |\n\n---\n\n## Google Rich Result Eligibility Requirements\n\n### FAQ Rich Results\n\n**Eligibility checklist**:\n- [ ] Minimum 2 Q&A pairs\n- [ ] Questions are actual questions (contain \"?\")\n- [ ] Answers are complete and comprehensive\n- [ ] Content matches visible page content exactly\n- [ ] Not a forum or Q&A page where users can submit answers\n- [ ] Not advertising or promotional in nature\n- [ ] Not for medical, legal, or financial advice without proper E-E-A-T\n\n**Ineligible content**:\n- Medical advice without credentials\n- Legal advice\n- Product/service comparisons that are promotional\n- User-generated Q&A (use QAPage instead)\n\n### How-To Rich Results\n\n**Eligibility checklist**:\n- [ ] Minimum 2 steps with clear instructions\n- [ ] Complete process from start to finish\n- [ ] Each step has meaningful text (not just a title)\n- [ ] Not advertising or promotional\n- [ ] Not harmful or dangerous content\n- [ ] Steps are actionable and practical\n\n**Ineligible content**:\n- Single-step processes\n- Recipes (use Recipe schema instead)\n- Promotional tutorials\n\n### Product Rich Results\n\n**For price display**:\n- [ ] Valid Product schema\n- [ ] `offers` with `price` property\n- [ ] `priceCurrency` specified\n- [ ] `availability` status\n\n**For review stars**:\n- [ ] Valid `aggregateRating` OR individual `review`\n- [ ] Minimum 1 review for individual review display\n- [ ] Honest, unbiased reviews (not paid/incentivized)\n\n**For product markup**:\n- [ ] `name` property present\n- [ ] At least one `image`\n- [ ] Valid product type (not person, organization, etc.)\n\n### Article Rich Results\n\n**Eligibility checklist**:\n- [ ] Valid Article/BlogPosting/NewsArticle schema\n- [ ] High-quality, original content\n- [ ] Proper `publisher` with valid logo\n- [ ] Valid `author` information\n- [ ] Images meet size requirements (1200px wide)\n- [ ] Not short-form content (minimum ~300 words)\n\n---\n\n## Testing Workflow\n\n### Initial Implementation\n\n1. **Add schema to development/staging environment**\n2. **Validate syntax at validator.schema.org**\n   - Paste code or test URL\n   - Fix all errors before proceeding\n3. **Test at Google Rich Results Test**\n   - Check for Google-specific issues\n   - Verify eligible rich result types\n4. **Visual inspection**\n   - View page source to confirm schema is present\n   - Check JSON formatting in browser\n\n### Pre-Launch Testing\n\n1. **Test on staging URL with Rich Results Test**\n2. **Verify all required properties present**\n3. **Confirm content matches visible page content**\n4. **Check for policy violations**\n5. **Test multiple schema types if combining**\n6. **Validate images are accessible and meet size requirements**\n\n### Post-Launch Monitoring\n\n1. **Submit sitemap to Google Search Console**\n2. **Monitor Enhancements reports**\n   - Check for validation errors\n   - Watch for policy violations\n   - Track rich result impressions\n3. **Re-test pages if content changes**\n4. **Update `dateModified` when updating content**\n5. **Fix errors within 30 days to avoid rich result removal**\n\n---\n\n## Common Policy Violations\n\n### Content Mismatch\n\n**Violation**: Schema content doesn't match visible page content\n\n**Example**: FAQ schema includes Q&A pairs not visible on page\n\n**Fix**: Ensure all structured data reflects actual page content exactly\n\n### Deceptive Content\n\n**Violation**: Schema contains misleading information\n\n**Example**: Product reviews that are fake or incentivized\n\n**Fix**: Only include genuine, verifiable information\n\n### Spammy Markup\n\n**Violation**: Excessive or irrelevant schema\n\n**Example**: Adding Product schema to every blog post\n\n**Fix**: Only use schema types relevant to page content\n\n### Hidden Content\n\n**Violation**: Schema references content hidden from users\n\n**Example**: FAQ answers only in schema, not visible on page\n\n**Fix**: Make all schema content visible to users\n\n### Promotional Content in FAQ\n\n**Violation**: Using FAQ schema for promotional purposes\n\n**Example**: Questions like \"Why is [Brand] the best?\"\n\n**Fix**: Use neutral, informational questions\n\n---\n\n## Debugging Common Issues\n\n### Schema Not Appearing in Rich Results Test\n\n**Possible causes**:\n- JSON syntax error (validate at validator.schema.org)\n- Schema in incorrect location (should be in `<head>` or `<body>`)\n- Script tag missing `type=\"application/ld+json\"`\n- Content served dynamically after page load (bot can't see it)\n\n**Debug steps**:\n1. View page source (not inspect element)\n2. Search for `\"@type\"`\n3. Copy JSON to validator.schema.org\n4. Fix syntax errors\n\n### Rich Results Not Showing in Search\n\n**Possible causes**:\n- Schema is new (can take days/weeks to appear)\n- Page not indexed by Google\n- Schema has errors in Search Console\n- Content doesn't meet quality guidelines\n- Competition for rich results is high\n\n**Debug steps**:\n1. Check Search Console → Enhancements\n2. Use URL Inspection tool to request indexing\n3. Verify schema passes Rich Results Test\n4. Check for manual actions\n\n### Warnings vs Errors\n\n**Errors** (must fix):\n- Invalid syntax\n- Missing required properties\n- Invalid property values\n- Schema type doesn't exist\n\n**Warnings** (should fix when possible):\n- Missing recommended properties\n- Suboptimal property values\n- Non-standard extensions\n- Property not recognized for this type\n\n---\n\n## Schema Maintenance Checklist\n\n### Monthly\n- [ ] Check Search Console for new errors\n- [ ] Verify rich results are still appearing\n- [ ] Update `dateModified` on changed content\n\n### Quarterly\n- [ ] Audit all schema implementations\n- [ ] Test key pages with Rich Results Test\n- [ ] Update any outdated information (prices, dates, etc.)\n- [ ] Check for new schema types relevant to your content\n\n### After Content Changes\n- [ ] Update schema to match new content\n- [ ] Update `dateModified` timestamp\n- [ ] Re-validate with Rich Results Test\n- [ ] Request re-indexing in Search Console if major changes\n\n### After Site Migration\n- [ ] Verify schema preserved on new URLs\n- [ ] Update all absolute URLs in schema\n- [ ] Submit new sitemap\n- [ ] Monitor for errors in new domain's Search Console\n\n---\n\n## Quick Reference: Error Messages and Fixes\n\n| Error Message | Cause | Fix |\n|---------------|-------|-----|\n| \"Missing required field\" | Required property not included | Add the required property |\n| \"Invalid date format\" | Date not in ISO 8601 | Use format: 2024-01-15T08:00:00+00:00 |\n| \"URL is not absolute\" | Relative URL used | Add full URL with https:// |\n| \"Unexpected token\" | JSON syntax error | Check for missing quotes, brackets, commas |\n| \"This markup is not eligible for rich results\" | Schema type or content doesn't qualify | Review eligibility requirements |\n| \"Image too small\" | Image doesn't meet size requirements | Use image at least 1200px wide |\n| \"The attribute price is required\" | Product missing price | Add offers.price property |\n| \"Logo must be 600x60 or smaller\" | Publisher logo too large | Resize logo to meet requirements |\n\n---\n\n## Resources\n\n- **Schema.org Documentation**: https://schema.org/\n- **Google Search Central**: https://developers.google.com/search/docs/appearance/structured-data\n- **Rich Results Test**: https://search.google.com/test/rich-results\n- **Schema Validator**: https://validator.schema.org/\n- **JSON-LD Playground**: https://json-ld.org/playground/","readmeExcerpt":"Skill: Schema Markup Generator Owner: aaron-he-zhu Summary: Generates structured data markup (Schema.org JSON-LD) to enable rich results in search engines including FAQ snippets, How-To cards, Product listings, Review... Tags: latest:2.0.0 Version history: v2.0.0 | 2026-02-14T04:17:28.548Z | auto **Version 2.0.0 – Major update: Adds triggers/metadata, clarifies usage, and links to SEO skills library** - Added trigger","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"Generate schema markup for this [content type]: [content/URL]"},{"language":"text","snippet":"Create FAQ schema for these questions and answers: [Q&A list]"},{"language":"text","snippet":"Create Product schema for [product name] with [details]"},{"language":"text","snippet":"Generate LocalBusiness schema for [business name and details]"},{"language":"text","snippet":"Review and improve this schema markup: [existing schema]"},{"language":"markdown","snippet":"### CORE-EEAT Schema Mapping (O05)\n\n   | Content Type | Required Schema | Conditional Schema |\n   |-------------|----------------|--------------------|\n   | Blog (guides) | Article, Breadcrumb | FAQ, HowTo |\n   | Blog (tools) | Article, Breadcrumb | FAQ, Review |\n   | Blog (insights) | Article, Breadcrumb | FAQ |\n   | Alternative | Comparison*, Breadcrumb, FAQ | AggregateRating |\n   | Best-of | ItemList, Breadcrumb, FAQ | AggregateRating per tool |\n   | Use-case | WebPage, Breadcrumb, FAQ | — |\n   | FAQ | FAQPage, Breadcrumb | — |\n   | Landing | SoftwareApplication, Breadcrumb, FAQ | WebPage |\n   | Testimonial | Review, Breadcrumb | FAQ, Person |\n\n   *Use the mapping above to ensure schema type matches content type (CORE-EEAT O05: Pass criteria).*"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: schema-markup-generator\ndescription: 'Use when the user asks to \"add schema markup\", \"generate structured data\", \"JSON-LD\", \"rich snippets\", \"FAQ schema\", \"add FAQ rich results\", \"I want star ratings in Google\", \"product markup\", or \"recipe schema\". Generates structured data markup (Schema.org JSON-LD) to enable rich results in search engines including FAQ snippets, How-To cards, Product listings, Reviews, and more. For meta tag optimization, see meta-tags-optimizer. For broader technical SEO, see technical-seo-checker.'\nlicense: Apache-2.0\nmetadata:\n  author: aaron-he-zhu\n  version: \"2.0.0\"\n  geo-relevance: \"medium\"\n  tags:\n    - seo\n    - schema markup\n    - structured data\n    - json-ld\n    - rich results\n    - rich snippets\n    - faq schema\n    - how-to schema\n    - product schema\n  triggers:\n    - \"add schema markup\"\n    - \"generate structured data\"\n    - \"JSON-LD\"\n    - \"rich snippets\"\n    - \"FAQ schema\"\n    - \"schema.org\"\n    - \"structured data markup\"\n    - \"add FAQ rich results\"\n    - \"I want star ratings in Google\"\n    - \"product markup\"\n    - \"recipe schema\"\n---\n\n# Schema Markup Generator\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** · 20 skills for SEO + GEO · Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** · [keyword-research](../../research/keyword-research/) · [competitor-analysis](../../research/competitor-analysis/) · [serp-analysis](../../research/serp-analysis/) · [content-gap-analysis](../../research/content-gap-analysis/)\n\n**Build** · [seo-content-writer](../seo-content-writer/) · [geo-content-optimizer](../geo-content-optimizer/) · [meta-tags-optimizer](../meta-tags-optimizer/) · **schema-markup-generator**\n\n**Optimize** · [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) · [technical-seo-checker](../../optimize/technical-seo-checker/) · [internal-linking-optimizer](../../optimize/internal-linking-optimizer/) · [content-refresher](../../optimize/content-refresher/)\n\n**Monitor** · [rank-tracker](../../monitor/rank-tracker/) · [backlink-analyzer](../../monitor/backlink-analyzer/) · [performance-reporter](../../monitor/performance-reporter/) · [alert-manager](../../monitor/alert-manager/)\n\n**Cross-cutting** · [content-quality-auditor](../../cross-cutting/content-quality-auditor/) · [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) · [entity-optimizer](../../cross-cutting/entity-optimizer/) · [memory-management](../../cross-cutting/memory-management/)\n\n</details>\n\nThis skill creates Schema.org structured data markup in JSON-LD format to help search engines understand your content and enable rich results in SERPs.\n\n## When to Use This Skill\n\n- Adding FAQ schema for expanded SERP presence\n- Creating How-To schema for step-by-step content\n- Adding Product schema for e-commerce pages\n- Implementing Article schema for blog posts\n- Adding Local Business schema for locat"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn73qjxwmbna25qq8q051epqt980sys5\",\n  \"slug\": \"schema-markup-generator\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1771042648548\n}"},{"path":"references/schema-templates.md","content":"# Schema.org JSON-LD Templates\n\nComplete, copy-ready structured data templates for all major schema types. Customize the bracketed values to match your content.\n\n## FAQPage Schema\n\nFor pages with frequently asked questions. Minimum 2 Q&A pairs required.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"[Question text - exactly as shown on page]\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"[Complete answer text - must match visible content]\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"[Question 2]\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"[Answer 2]\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"[Question 3]\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"[Answer 3]\"\n      }\n    }\n  ]\n}\n```\n\n**Requirements**: Questions must be complete questions, answers must be comprehensive, content must match visible page content.\n\n---\n\n## HowTo Schema\n\nFor step-by-step instructional content.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"HowTo\",\n  \"name\": \"[How-to title - what will users learn]\",\n  \"description\": \"[Brief description of what this tutorial teaches]\",\n  \"image\": {\n    \"@type\": \"ImageObject\",\n    \"url\": \"[Main image URL]\",\n    \"height\": \"[height in pixels]\",\n    \"width\": \"[width in pixels]\"\n  },\n  \"totalTime\": \"PT[X]H[Y]M\",\n  \"estimatedCost\": {\n    \"@type\": \"MonetaryAmount\",\n    \"currency\": \"USD\",\n    \"value\": \"[estimated cost or 0]\"\n  },\n  \"supply\": [\n    {\n      \"@type\": \"HowToSupply\",\n      \"name\": \"[Supply item 1]\"\n    },\n    {\n      \"@type\": \"HowToSupply\",\n      \"name\": \"[Supply item 2]\"\n    }\n  ],\n  \"tool\": [\n    {\n      \"@type\": \"HowToTool\",\n      \"name\": \"[Tool 1]\"\n    },\n    {\n      \"@type\": \"HowToTool\",\n      \"name\": \"[Tool 2]\"\n    }\n  ],\n  \"step\": [\n    {\n      \"@type\": \"HowToStep\",\n      \"position\": 1,\n      \"name\": \"[Step 1 title]\",\n      \"text\": \"[Step 1 detailed instructions]\",\n      \"url\": \"[Page URL]#step1\",\n      \"image\": \"[Step 1 image URL - optional]\"\n    },\n    {\n      \"@type\": \"HowToStep\",\n      \"position\": 2,\n      \"name\": \"[Step 2 title]\",\n      \"text\": \"[Step 2 detailed instructions]\",\n      \"url\": \"[Page URL]#step2\",\n      \"image\": \"[Step 2 image URL - optional]\"\n    },\n    {\n      \"@type\": \"HowToStep\",\n      \"position\": 3,\n      \"name\": \"[Step 3 title]\",\n      \"text\": \"[Step 3 detailed instructions]\",\n      \"url\": \"[Page URL]#step3\",\n      \"image\": \"[Step 3 image URL - optional]\"\n    }\n  ]\n}\n```\n\n**Time format**: PT[X]H[Y]M where X = hours, Y = minutes. Example: PT1H30M = 1 hour 30 minutes.\n\n---\n\n## Article / BlogPosting / NewsArticle Schema\n\nFor blog posts, articles, and news content.\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"BlogPosting\",\n  \"headline\": \"[Article title - max 110 characters for best display]\",\n  \"description\": \"[Article summary or excerpt]\",\n  \"image\": [\n    \"[Featured image UR"},{"path":"references/validation-guide.md","content":"# Schema Markup Validation Guide\n\nComplete reference for validating, testing, and troubleshooting structured data.\n\n## Validation Tools\n\n### Google Rich Results Test\n- **URL**: https://search.google.com/test/rich-results\n- **Purpose**: Check if your schema is eligible for Google rich results\n- **Tests**: Live URL or code snippet\n- **Output**: Errors, warnings, eligible rich result types\n\n### Schema.org Validator\n- **URL**: https://validator.schema.org/\n- **Purpose**: Validate against official Schema.org specification\n- **Tests**: URL, code snippet, or microdata\n- **Output**: Technical validation errors\n\n### Google Search Console\n- **Location**: Search Console → Enhancements section\n- **Purpose**: Monitor rich results performance and errors at scale\n- **Reports**: Rich results status, coverage, issues over time\n\n---\n\n## Common JSON-LD Syntax Errors\n\n### Trailing Commas\n\n**Error**: Invalid JSON syntax\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"Title\",  ← Trailing comma here\n}\n```\n\n**Fix**: Remove the comma after the last property\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"Title\"\n}\n```\n\n### Missing Required Quotes\n\n**Error**: Property names must be quoted\n```json\n{\n  @context: \"https://schema.org\"\n}\n```\n\n**Fix**: Quote all property names\n```json\n{\n  \"@context\": \"https://schema.org\"\n}\n```\n\n### Incorrect Date Format\n\n**Error**: Invalid date format\n```json\n{\n  \"datePublished\": \"01/15/2024\"\n}\n```\n\n**Fix**: Use ISO 8601 format\n```json\n{\n  \"datePublished\": \"2024-01-15T08:00:00+00:00\"\n}\n```\n\n### Relative URLs Instead of Absolute\n\n**Error**: Relative URLs are not allowed\n```json\n{\n  \"image\": \"/images/photo.jpg\"\n}\n```\n\n**Fix**: Use absolute URLs\n```json\n{\n  \"image\": \"https://example.com/images/photo.jpg\"\n}\n```\n\n### Incorrect Array Syntax\n\n**Error**: Multiple values not in array\n```json\n{\n  \"image\": \"url1.jpg\", \"url2.jpg\"\n}\n```\n\n**Fix**: Use array brackets for multiple values\n```json\n{\n  \"image\": [\"url1.jpg\", \"url2.jpg\"]\n}\n```\n\n---\n\n## Required vs Recommended Properties\n\n### FAQPage Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | Must be \"FAQPage\" |\n| mainEntity | Required | Array of Question objects |\n| Question.name | Required | The question text |\n| Answer.text | Required | The answer text |\n\n**Minimum**: 2 Q&A pairs\n\n### HowTo Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | Must be \"HowTo\" |\n| name | Required | Title of the how-to |\n| step | Required | Array of HowToStep objects |\n| step.text | Required | Step instructions |\n| image | Recommended | Improves visibility |\n| totalTime | Recommended | Shows duration in results |\n| supply | Recommended | Lists materials needed |\n| tool | Recommended | Lists tools needed |\n\n**Minimum**: 2 steps with text\n\n### Article Schema\n\n| Property | Status | Notes |\n|----------|--------|-------|\n| @type | Required | Article/BlogPosting/NewsArticle |\n| headline | R"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Generates structured data markup (Schema.org JSON-LD) to enable rich results in search engines including FAQ snippets, How-To cards, Product listings, Review... Skill: Schema Markup Generator Owner: aaron-he-zhu Summary: Generates structured data markup (Schema.org JSON-LD) to enable rich results in search engines including FAQ snippets, How-To cards, Product listings, Review... Tags: latest:2.0.0 Version history: v2.0.0 | 2026-02-14T04:17:28.548Z | auto **Version 2.0.0 – Major update: Adds triggers/metadata, clarifies usage, and links to SEO skills library** - Added trigger","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1144,"uniquenessScore":46,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T23:52:51.964Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}