{"slug":"schema-generator","title":"Schema Generator — JSON-LD Markup for Any Page Type","tags":["seo","schema","structured-data","json-ld","rich-results"],"agent_summary":"Generates JSON-LD schema markup for any page type using the correct schema.org type hierarchy. Covers Article, FAQ, HowTo, Product, LocalBusiness, Person, Organization, BreadcrumbList, Event, and Video.","trigger_phrases":["schema markup","JSON-LD","structured data","generate schema","schema for my page","rich results schema","schema.org markup","schema generator"],"runnable":true,"markdown":"\n## Schema Priority Order for Local Businesses\n\nThe Merlino 5 Easy Wins schema priority sequence:\n\n| Schema Type | Speed to Results | Page Type |\n|-------------|-----------------|-----------|\n| Q&A Schema (QAPage) | Hours | Any page with a question block |\n| FAQ Schema (FAQPage) | 1-3 days | Service pages, FAQ pages |\n| LocalBusiness + @id | Days to weeks | Homepage, contact page |\n| AggregateRating | 1-2 weeks | Homepage, service pages |\n| VideoObject | 1-2 weeks | Pages with embedded video |\n\nStart with Q&A Schema. It ranks fastest. Move down the priority list after each type is deployed and indexed.\n\n## Page-Type to Schema-Type Mapping\n\n| Page Type | Required Schema | Optional Schema |\n|-----------|----------------|-----------------|\n| Homepage | LocalBusiness + Organization + WebSite | AggregateRating, FAQPage |\n| Service page | Service + FAQPage | AggregateRating, HowTo |\n| Location page | LocalBusiness (branch) + FAQPage | GeoCoordinates, OpeningHoursSpecification |\n| Blog article | Article (or BlogPosting) + Person (author) | FAQPage, VideoObject |\n| FAQ page | FAQPage | HowTo |\n| Product page | Product + Offer + AggregateRating | Review |\n| About page | Organization + Person | ItemList |\n| Contact page | LocalBusiness | ContactPoint |\n\n## Critical Rules\n\n**@id is mandatory on LocalBusiness and Organization schemas.** Link to the GMB CID URL (not the website homepage). This anchors the entity to Google's Knowledge Graph.\n\n**AggregateRating must come from third-party sources only** — Google, Yelp, Facebook. Never self-host rating data or make up rating numbers. Policy violation = rich results penalty.\n\n**FAQPage requires visible Q&A on page.** Every question-answer pair in the schema must appear as readable text on the page. Hidden content violates rich results guidelines.\n\n**Stacking schema types uses `@graph` pattern.** When a page needs multiple schema types, wrap them in a single `@graph` array, not separate script tags.\n\n## LocalBusiness + AggregateRating Stack (Standard Template)\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"LocalBusiness\",\n      \"@id\": \"https://g.co/kg/m/0EXAMPLE\",\n      \"name\": \"Smith Roofing\",\n      \"url\": \"https://smithroofing.com\",\n      \"telephone\": \"+1-813-555-0123\",\n      \"address\": {\n        \"@type\": \"PostalAddress\",\n        \"streetAddress\": \"123 Main St\",\n        \"addressLocality\": \"Tampa\",\n        \"addressRegion\": \"FL\",\n        \"postalCode\": \"33602\"\n      },\n      \"aggregateRating\": {\n        \"@type\": \"AggregateRating\",\n        \"ratingValue\": \"4.9\",\n        \"reviewCount\": \"127\",\n        \"bestRating\": \"5\"\n      },\n      \"openingHoursSpecification\": [\n        {\n          \"@type\": \"OpeningHoursSpecification\",\n          \"dayOfWeek\": [\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\"],\n          \"opens\": \"08:00\",\n          \"closes\": \"18:00\"\n        }\n      ]\n    }\n  ]\n}\n```\n\n## AI Discoverability Schema Checklist\n\nSchema also signals to AI platforms (ChatGPT Browse, Perplexity, Gemini):\n\n- [ ] `knowsAbout` array (3+ topics) on Organization or Person schema\n- [ ] `sameAs` links to 5+ platforms (Wikidata first, then Wikipedia, LinkedIn, YouTube)\n- [ ] `speakable` on Article schema (marks passages for voice/AI reading)\n- [ ] `@id` cross-references between schemas on the same page\n- [ ] JSON-LD in `<head>` of server-rendered HTML (not JavaScript-injected)\n\n## Validation\n\nBefore deployment, validate every schema block:\n1. Google Rich Results Test: `https://search.google.com/test/rich-results`\n2. Schema.org Validator: `https://validator.schema.org`\n\nBoth must pass. One passing is not sufficient — the tools catch different error types.\n\n## Cross-References\n\n- `schema-stack` — full stacking methodology and Merlino 5 Easy Wins sequence\n- `schema-template-library` — complete template library for all schema types\n- `eeat-audit` — E-E-A-T signals reinforced through schema (author, credentials, organization)\n- `local-schema-builder` — LocalBusiness schema specialized for service-area businesses\n\n#seo-sop #seo #schema #structured-data #json-ld #rich-results\n","html":"<h2>Schema Priority Order for Local Businesses</h2>\n<p>The Merlino 5 Easy Wins schema priority sequence:</p>\n<p>| Schema Type | Speed to Results | Page Type |\n|-------------|-----------------|-----------|\n| Q&#x26;A Schema (QAPage) | Hours | Any page with a question block |\n| FAQ Schema (FAQPage) | 1-3 days | Service pages, FAQ pages |\n| LocalBusiness + @id | Days to weeks | Homepage, contact page |\n| AggregateRating | 1-2 weeks | Homepage, service pages |\n| VideoObject | 1-2 weeks | Pages with embedded video |</p>\n<p>Start with Q&#x26;A Schema. It ranks fastest. Move down the priority list after each type is deployed and indexed.</p>\n<h2>Page-Type to Schema-Type Mapping</h2>\n<p>| Page Type | Required Schema | Optional Schema |\n|-----------|----------------|-----------------|\n| Homepage | LocalBusiness + Organization + WebSite | AggregateRating, FAQPage |\n| Service page | Service + FAQPage | AggregateRating, HowTo |\n| Location page | LocalBusiness (branch) + FAQPage | GeoCoordinates, OpeningHoursSpecification |\n| Blog article | Article (or BlogPosting) + Person (author) | FAQPage, VideoObject |\n| FAQ page | FAQPage | HowTo |\n| Product page | Product + Offer + AggregateRating | Review |\n| About page | Organization + Person | ItemList |\n| Contact page | LocalBusiness | ContactPoint |</p>\n<h2>Critical Rules</h2>\n<p><strong>@id is mandatory on LocalBusiness and Organization schemas.</strong> Link to the GMB CID URL (not the website homepage). This anchors the entity to Google's Knowledge Graph.</p>\n<p><strong>AggregateRating must come from third-party sources only</strong> — Google, Yelp, Facebook. Never self-host rating data or make up rating numbers. Policy violation = rich results penalty.</p>\n<p><strong>FAQPage requires visible Q&#x26;A on page.</strong> Every question-answer pair in the schema must appear as readable text on the page. Hidden content violates rich results guidelines.</p>\n<p><strong>Stacking schema types uses <code>@graph</code> pattern.</strong> When a page needs multiple schema types, wrap them in a single <code>@graph</code> array, not separate script tags.</p>\n<h2>LocalBusiness + AggregateRating Stack (Standard Template)</h2>\n<pre><code class=\"language-json\">{\n  \"@context\": \"https://schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"LocalBusiness\",\n      \"@id\": \"https://g.co/kg/m/0EXAMPLE\",\n      \"name\": \"Smith Roofing\",\n      \"url\": \"https://smithroofing.com\",\n      \"telephone\": \"+1-813-555-0123\",\n      \"address\": {\n        \"@type\": \"PostalAddress\",\n        \"streetAddress\": \"123 Main St\",\n        \"addressLocality\": \"Tampa\",\n        \"addressRegion\": \"FL\",\n        \"postalCode\": \"33602\"\n      },\n      \"aggregateRating\": {\n        \"@type\": \"AggregateRating\",\n        \"ratingValue\": \"4.9\",\n        \"reviewCount\": \"127\",\n        \"bestRating\": \"5\"\n      },\n      \"openingHoursSpecification\": [\n        {\n          \"@type\": \"OpeningHoursSpecification\",\n          \"dayOfWeek\": [\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\"],\n          \"opens\": \"08:00\",\n          \"closes\": \"18:00\"\n        }\n      ]\n    }\n  ]\n}\n</code></pre>\n<h2>AI Discoverability Schema Checklist</h2>\n<p>Schema also signals to AI platforms (ChatGPT Browse, Perplexity, Gemini):</p>\n<ul>\n<li>[ ] <code>knowsAbout</code> array (3+ topics) on Organization or Person schema</li>\n<li>[ ] <code>sameAs</code> links to 5+ platforms (Wikidata first, then Wikipedia, LinkedIn, YouTube)</li>\n<li>[ ] <code>speakable</code> on Article schema (marks passages for voice/AI reading)</li>\n<li>[ ] <code>@id</code> cross-references between schemas on the same page</li>\n<li>[ ] JSON-LD in <code>&#x3C;head></code> of server-rendered HTML (not JavaScript-injected)</li>\n</ul>\n<h2>Validation</h2>\n<p>Before deployment, validate every schema block:</p>\n<ol>\n<li>Google Rich Results Test: <code>https://search.google.com/test/rich-results</code></li>\n<li>Schema.org Validator: <code>https://validator.schema.org</code></li>\n</ol>\n<p>Both must pass. One passing is not sufficient — the tools catch different error types.</p>\n<h2>Cross-References</h2>\n<ul>\n<li><code>schema-stack</code> — full stacking methodology and Merlino 5 Easy Wins sequence</li>\n<li><code>schema-template-library</code> — complete template library for all schema types</li>\n<li><code>eeat-audit</code> — E-E-A-T signals reinforced through schema (author, credentials, organization)</li>\n<li><code>local-schema-builder</code> — LocalBusiness schema specialized for service-area businesses</li>\n</ul>\n<p>#seo-sop #seo #schema #structured-data #json-ld #rich-results</p>\n"}