{"id":"27058ee7-2af5-4f1c-b453-5587946d7eea","shortId":"WBRdu8","kind":"skill","title":"structured-data","tagline":"Schema.org Structured Data Reference — JSON-LD examples for every major schema type, rich results eligibility, testing tools, and implementation patterns","description":"# Schema.org Structured Data Reference\n\nComplete reference for Schema.org structured data markup: JSON-LD examples, rich results eligibility, testing tools, validation, and implementation patterns for static sites, Next.js, React, and WordPress.\n\nFull docs: https://cogny.com/docs/structured-data-reference\n\n## Usage\n\n```\n/structured-data                          # Full reference overview\n/structured-data Product                  # Show Product schema example\n/structured-data FAQPage                  # Show FAQPage example\n/structured-data LocalBusiness            # Show LocalBusiness example\n/structured-data validate                 # Testing and validation guide\n/structured-data best-practices           # Schema best practices\n/structured-data rich-results             # Rich results eligibility table\n```\n\n## Instructions\n\nYou are a Schema.org structured data expert. Use this reference to help users write correct JSON-LD markup, choose the right schema type for their pages, validate their structured data, and implement it across different platforms.\n\nWhen the user asks a question, find the relevant section below and provide precise, actionable answers with ready-to-use JSON-LD examples.\n\nIf the user provides a specific schema type or topic as an argument, focus on that area. Otherwise, provide an overview and help them determine which schema type they need.\n\nWhen Search Console MCP tools are available, use them to:\n- Check which pages have rich results via `tool_get_search_analytics` (filter by search appearance)\n- Inspect specific URLs for structured data issues via `tool_inspect_url`\n- List properties to identify which sites to audit via `tool_list_properties`\n\n---\n\n## What Structured Data Does\n\nStructured data is machine-readable markup that tells search engines, voice assistants, and AI systems exactly what your page content means. You declare it explicitly using the Schema.org vocabulary.\n\n**Benefits:**\n- **Rich results** — star ratings, prices, FAQ accordions, how-to steps, event listings in Google Search\n- **Knowledge panels** — branded panels for organizations, people, and products\n- **Voice search** — direct answers in Google Assistant and other voice interfaces\n- **AI citations** — LLMs and AI search engines (Google AI Overviews, Bing Copilot, Perplexity) use structured data to surface and attribute information\n\n## Formats\n\nThree formats exist. Google explicitly recommends JSON-LD.\n\n### JSON-LD (Recommended)\n\n```html\n<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"Example Corp\"\n}\n</script>\n```\n\n**Why JSON-LD:** Decoupled from HTML, injectable by JS frameworks, easy to validate, no layout risk.\n\n### Microdata\n\nInline HTML attributes (`itemscope`, `itemtype`, `itemprop`). Use only in legacy systems that cannot add `<script>` tags.\n\n### RDFa\n\nInline attributes (`vocab`, `typeof`, `property`). Rare on the web — more common in XML/SVG contexts.\n\n**Bottom line:** Use JSON-LD for all new implementations.\n\n## Schema Types with JSON-LD Examples\n\n### Organization\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"Cogny AI\",\n  \"url\": \"https://cogny.com\",\n  \"logo\": \"https://cogny.com/images/logo.png\",\n  \"sameAs\": [\n    \"https://twitter.com/cognyai\",\n    \"https://linkedin.com/company/cogny\",\n    \"https://github.com/cognyai\"\n  ],\n  \"contactPoint\": {\n    \"@type\": \"ContactPoint\",\n    \"telephone\": \"+46-8-123-4567\",\n    \"contactType\": \"customer service\",\n    \"availableLanguage\": [\"English\", \"Swedish\"]\n  },\n  \"foundingDate\": \"2023\",\n  \"numberOfEmployees\": {\n    \"@type\": \"QuantitativeValue\",\n    \"value\": 15\n  }\n}\n```\n\n**Required:** `name` | **Recommended:** `url`, `logo`, `sameAs`, `contactPoint`\n**Rich result:** Knowledge panel\n\n### LocalBusiness\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"LocalBusiness\",\n  \"name\": \"Nordic Coffee Roasters\",\n  \"image\": \"https://example.com/photos/storefront.jpg\",\n  \"url\": \"https://nordiccoffee.se\",\n  \"telephone\": \"+46-8-765-4321\",\n  \"priceRange\": \"$$\",\n  \"address\": {\n    \"@type\": \"PostalAddress\",\n    \"streetAddress\": \"Drottninggatan 45\",\n    \"addressLocality\": \"Stockholm\",\n    \"addressRegion\": \"Stockholm\",\n    \"postalCode\": \"111 21\",\n    \"addressCountry\": \"SE\"\n  },\n  \"geo\": {\n    \"@type\": \"GeoCoordinates\",\n    \"latitude\": 59.3293,\n    \"longitude\": 18.0686\n  },\n  \"openingHoursSpecification\": [\n    {\n      \"@type\": \"OpeningHoursSpecification\",\n      \"dayOfWeek\": [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\"],\n      \"opens\": \"07:00\",\n      \"closes\": \"18:00\"\n    },\n    {\n      \"@type\": \"OpeningHoursSpecification\",\n      \"dayOfWeek\": [\"Saturday\", \"Sunday\"],\n      \"opens\": \"09:00\",\n      \"closes\": \"16:00\"\n    }\n  ]\n}\n```\n\n**Required:** `name`, `address` | **Recommended:** `geo`, `openingHoursSpecification`, `telephone`, `priceRange`, `image`\n**Rich result:** Local pack, knowledge panel with map/hours/phone\n\n### Product\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"Wireless Noise-Cancelling Headphones\",\n  \"image\": [\n    \"https://example.com/photos/headphones-front.jpg\",\n    \"https://example.com/photos/headphones-side.jpg\"\n  ],\n  \"description\": \"Premium wireless headphones with active noise cancellation, 30-hour battery life, and multipoint Bluetooth connectivity.\",\n  \"sku\": \"WH-1000XM5\",\n  \"brand\": {\n    \"@type\": \"Brand\",\n    \"name\": \"AudioTech\"\n  },\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"url\": \"https://example.com/headphones-wh1000xm5\",\n    \"priceCurrency\": \"USD\",\n    \"price\": \"349.99\",\n    \"priceValidUntil\": \"2025-12-31\",\n    \"availability\": \"https://schema.org/InStock\",\n    \"itemCondition\": \"https://schema.org/NewCondition\",\n    \"seller\": {\n      \"@type\": \"Organization\",\n      \"name\": \"AudioTech Store\"\n    }\n  },\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"4.7\",\n    \"bestRating\": \"5\",\n    \"reviewCount\": \"2847\"\n  }\n}\n```\n\n**Required for rich results:** `name`, `image`, `offers` (with `price`, `priceCurrency`, `availability`)\n**Recommended:** `sku`, `brand`, `aggregateRating`, `description`\n**Rich result:** Product snippet with price, availability, star rating\n\n### FAQPage\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is structured data?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Structured data is machine-readable markup added to HTML pages that helps search engines understand your content. It uses the Schema.org vocabulary and is typically implemented in JSON-LD format.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Does structured data improve SEO rankings?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Structured data does not directly affect rankings. However, it enables rich results that significantly improve click-through rates, which can indirectly improve performance through higher engagement signals.\"\n      }\n    }\n  ]\n}\n```\n\n**Required:** `mainEntity` array with `Question` items containing `acceptedAnswer`\n**Rich result:** Expandable FAQ accordion (up to 10 questions)\n\n### HowTo\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"HowTo\",\n  \"name\": \"How to Implement JSON-LD Structured Data\",\n  \"description\": \"A step-by-step guide to adding Schema.org JSON-LD structured data to your website.\",\n  \"totalTime\": \"PT15M\",\n  \"estimatedCost\": {\n    \"@type\": \"MonetaryAmount\",\n    \"currency\": \"USD\",\n    \"value\": \"0\"\n  },\n  \"tool\": [\n    { \"@type\": \"HowToTool\", \"name\": \"Text editor or CMS\" },\n    { \"@type\": \"HowToTool\", \"name\": \"Google Rich Results Test\" }\n  ],\n  \"step\": [\n    {\n      \"@type\": \"HowToStep\",\n      \"name\": \"Choose your schema type\",\n      \"text\": \"Identify the primary content type of your page and look up the required properties at schema.org.\",\n      \"url\": \"https://example.com/guide#step1\",\n      \"image\": \"https://example.com/images/step1.png\"\n    },\n    {\n      \"@type\": \"HowToStep\",\n      \"name\": \"Write the JSON-LD block\",\n      \"text\": \"Create a JSON-LD script block with @context, @type, and all required properties.\",\n      \"url\": \"https://example.com/guide#step2\",\n      \"image\": \"https://example.com/images/step2.png\"\n    },\n    {\n      \"@type\": \"HowToStep\",\n      \"name\": \"Insert into your page\",\n      \"text\": \"Place the script tag in the head or body of your HTML document.\",\n      \"url\": \"https://example.com/guide#step3\",\n      \"image\": \"https://example.com/images/step3.png\"\n    },\n    {\n      \"@type\": \"HowToStep\",\n      \"name\": \"Validate with testing tools\",\n      \"text\": \"Run your page through the Google Rich Results Test and Schema Markup Validator.\",\n      \"url\": \"https://example.com/guide#step4\",\n      \"image\": \"https://example.com/images/step4.png\"\n    }\n  ]\n}\n```\n\n**Required:** `name`, `step` (with `text` each) | **Recommended:** `image` per step, `totalTime`, `tool`\n**Rich result:** Numbered step-by-step instructions with images\n\n### Article / BlogPosting\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"BlogPosting\",\n  \"headline\": \"Complete Guide to Schema.org Structured Data\",\n  \"description\": \"Learn how to implement structured data markup to earn rich results in Google Search.\",\n  \"image\": [\n    \"https://example.com/images/guide-16x9.jpg\",\n    \"https://example.com/images/guide-4x3.jpg\",\n    \"https://example.com/images/guide-1x1.jpg\"\n  ],\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"Anna Lindqvist\",\n    \"url\": \"https://example.com/authors/anna-lindqvist\"\n  },\n  \"publisher\": {\n    \"@type\": \"Organization\",\n    \"name\": \"Example Publishing\",\n    \"logo\": { \"@type\": \"ImageObject\", \"url\": \"https://example.com/logo.png\" }\n  },\n  \"datePublished\": \"2025-01-15\",\n  \"dateModified\": \"2025-02-10\",\n  \"mainEntityOfPage\": {\n    \"@type\": \"WebPage\",\n    \"@id\": \"https://example.com/guides/structured-data\"\n  }\n}\n```\n\nUse `Article` for news, `BlogPosting` for blogs, `NewsArticle` for Google News publishers.\n\n**Required:** `headline`, `image`, `datePublished`, `author`\n**Rich result:** Article carousel, Top Stories (NewsArticle), author/date in results\n\n### BreadcrumbList\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"BreadcrumbList\",\n  \"itemListElement\": [\n    { \"@type\": \"ListItem\", \"position\": 1, \"name\": \"Home\", \"item\": \"https://example.com/\" },\n    { \"@type\": \"ListItem\", \"position\": 2, \"name\": \"Docs\", \"item\": \"https://example.com/docs\" },\n    { \"@type\": \"ListItem\", \"position\": 3, \"name\": \"Structured Data\", \"item\": \"https://example.com/docs/structured-data\" }\n  ]\n}\n```\n\n**Required:** `itemListElement` with `position`, `name`, `item`\n**Rich result:** Breadcrumb trail replaces URL in search results\n\n### Review / AggregateRating\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"Cloud Analytics Platform\",\n  \"review\": [\n    {\n      \"@type\": \"Review\",\n      \"reviewRating\": { \"@type\": \"Rating\", \"ratingValue\": \"5\", \"bestRating\": \"5\" },\n      \"author\": { \"@type\": \"Person\", \"name\": \"Erik Johansson\" },\n      \"reviewBody\": \"Transformed our data pipeline. The BigQuery integration is seamless.\",\n      \"datePublished\": \"2025-01-20\"\n    }\n  ],\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"4.8\",\n    \"bestRating\": \"5\",\n    \"ratingCount\": \"312\",\n    \"reviewCount\": \"189\"\n  }\n}\n```\n\nReviews must be nested inside the item they review — standalone Review markup without context will not generate rich results.\n\n**Required:** `ratingValue`, `bestRating`, `author` (Review); `ratingValue`, `ratingCount` (AggregateRating)\n**Rich result:** Star rating snippet\n\n### Event\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Event\",\n  \"name\": \"Nordic Growth Marketing Summit 2025\",\n  \"description\": \"Two-day conference on performance marketing and AI-driven analytics.\",\n  \"startDate\": \"2025-09-15T09:00:00+02:00\",\n  \"endDate\": \"2025-09-16T17:00:00+02:00\",\n  \"eventStatus\": \"https://schema.org/EventScheduled\",\n  \"eventAttendanceMode\": \"https://schema.org/OfflineEventAttendanceMode\",\n  \"location\": {\n    \"@type\": \"Place\",\n    \"name\": \"Stockholm Waterfront Congress Centre\",\n    \"address\": {\n      \"@type\": \"PostalAddress\",\n      \"streetAddress\": \"Nils Ericsons Plan 4\",\n      \"addressLocality\": \"Stockholm\",\n      \"postalCode\": \"111 64\",\n      \"addressCountry\": \"SE\"\n    }\n  },\n  \"performer\": { \"@type\": \"Organization\", \"name\": \"Cogny AI\" },\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"url\": \"https://example.com/tickets\",\n    \"price\": \"4999\",\n    \"priceCurrency\": \"SEK\",\n    \"availability\": \"https://schema.org/InStock\",\n    \"validFrom\": \"2025-03-01T00:00:00+01:00\"\n  },\n  \"organizer\": { \"@type\": \"Organization\", \"name\": \"Growth Hackers Stockholm\", \"url\": \"https://growthhackers.se\" },\n  \"image\": \"https://example.com/images/summit-2025.jpg\"\n}\n```\n\n**Required:** `name`, `startDate`, `location` | **Recommended:** `endDate`, `offers`, `performer`, `eventStatus`, `image`\n**Rich result:** Event listing with date/location/ticket; event pack in SERP\n\n### VideoObject\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"VideoObject\",\n  \"name\": \"How to Set Up GA4 BigQuery Export\",\n  \"description\": \"Step-by-step tutorial for connecting GA4 to BigQuery.\",\n  \"thumbnailUrl\": \"https://example.com/thumbnails/ga4-setup.jpg\",\n  \"uploadDate\": \"2025-01-10\",\n  \"duration\": \"PT12M30S\",\n  \"contentUrl\": \"https://example.com/videos/ga4-setup.mp4\",\n  \"embedUrl\": \"https://youtube.com/embed/abc123\",\n  \"interactionStatistic\": {\n    \"@type\": \"InteractionCounter\",\n    \"interactionType\": { \"@type\": \"WatchAction\" },\n    \"userInteractionCount\": 15420\n  }\n}\n```\n\n**Required:** `name`, `thumbnailUrl`, `uploadDate` | **Recommended:** `description`, `duration`, `contentUrl` or `embedUrl`\n**Rich result:** Video carousel, video thumbnail in search results\n\n### SoftwareApplication\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"SoftwareApplication\",\n  \"name\": \"Cogny Analytics Platform\",\n  \"operatingSystem\": \"Web\",\n  \"applicationCategory\": \"BusinessApplication\",\n  \"description\": \"AI-powered analytics platform for automated growth insights.\",\n  \"offers\": { \"@type\": \"Offer\", \"price\": \"99\", \"priceCurrency\": \"USD\" },\n  \"aggregateRating\": { \"@type\": \"AggregateRating\", \"ratingValue\": \"4.8\", \"ratingCount\": \"156\" },\n  \"screenshot\": \"https://example.com/images/dashboard.png\"\n}\n```\n\n**Required:** `name`, `offers` (with `price`, `priceCurrency`) | **Recommended:** `operatingSystem`, `applicationCategory`, `aggregateRating`\n**Rich result:** Software snippet with rating and price\n\n### Course\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Course\",\n  \"name\": \"Advanced BigQuery for Marketing Analytics\",\n  \"description\": \"Learn to write efficient BigQuery SQL for GA4 data, build attribution models, and create automated reporting.\",\n  \"provider\": { \"@type\": \"Organization\", \"name\": \"Cogny Academy\", \"sameAs\": \"https://cogny.com/academy\" },\n  \"courseCode\": \"BQ-301\",\n  \"hasCourseInstance\": {\n    \"@type\": \"CourseInstance\",\n    \"courseMode\": \"online\",\n    \"courseSchedule\": {\n      \"@type\": \"Schedule\",\n      \"repeatFrequency\": \"P1W\",\n      \"startDate\": \"2025-03-01\",\n      \"endDate\": \"2025-04-15\"\n    }\n  },\n  \"offers\": { \"@type\": \"Offer\", \"price\": \"499\", \"priceCurrency\": \"USD\", \"category\": \"Paid\" }\n}\n```\n\n**Required:** `name`, `description`, `provider` | **Recommended:** `offers`, `hasCourseInstance`\n**Rich result:** Course listing with provider and enrollment info\n\n### JobPosting\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"JobPosting\",\n  \"title\": \"Senior Growth Engineer\",\n  \"description\": \"Build and optimize marketing analytics infrastructure including BigQuery pipelines, A/B testing, and automated reporting.\",\n  \"datePosted\": \"2025-02-01\",\n  \"validThrough\": \"2025-04-01T23:59:59+01:00\",\n  \"employmentType\": \"FULL_TIME\",\n  \"hiringOrganization\": {\n    \"@type\": \"Organization\",\n    \"name\": \"Cogny AI\",\n    \"sameAs\": \"https://cogny.com\",\n    \"logo\": \"https://cogny.com/images/logo.png\"\n  },\n  \"jobLocation\": {\n    \"@type\": \"Place\",\n    \"address\": {\n      \"@type\": \"PostalAddress\",\n      \"addressLocality\": \"Stockholm\",\n      \"addressRegion\": \"Stockholm\",\n      \"addressCountry\": \"SE\"\n    }\n  },\n  \"jobLocationType\": \"TELECOMMUTE\",\n  \"baseSalary\": {\n    \"@type\": \"MonetaryAmount\",\n    \"currency\": \"SEK\",\n    \"value\": { \"@type\": \"QuantitativeValue\", \"minValue\": 55000, \"maxValue\": 75000, \"unitText\": \"MONTH\" }\n  },\n  \"applicantLocationRequirements\": { \"@type\": \"Country\", \"name\": \"Sweden\" }\n}\n```\n\n**Required:** `title`, `description`, `datePosted`, `hiringOrganization`, `jobLocation`\n**Recommended:** `validThrough`, `employmentType`, `baseSalary`, `jobLocationType`\n**Rich result:** Google Jobs listing with salary, location, apply button\n\n## Testing and Validation\n\n### Google Rich Results Test\n\n**URL:** https://search.google.com/test/rich-results\n\nTest individual pages or code snippets for rich result eligibility. Shows detected types, validation errors, and warnings.\n\n### Schema Markup Validator\n\n**URL:** https://validator.schema.org\n\nValidates against the full Schema.org specification — catches structural errors the Rich Results Test may miss.\n\n### Google Search Console Rich Results Report\n\n**Location:** Search Console > Enhancements > [specific rich result type]\n\nAggregate data across your site: valid pages, error counts, specific error types. Updated daily.\n\n### Common Validation Errors\n\n| Error | Cause | Fix |\n|-------|-------|-----|\n| `Missing field \"image\"` | Product/Article missing image | Add `image` with valid crawlable URL |\n| `Invalid URL in field \"url\"` | Relative URL | Use fully qualified URLs (`https://...`) |\n| `Missing field \"author\"` | Article/Review missing author | Add `author` as Person or Organization with `name` |\n| `Invalid value in field \"price\"` | Currency symbol in price | Use numeric value only (`\"349.99\"` not `\"$349.99\"`) |\n| `Invalid enum for \"availability\"` | Plain text instead of URL | Use `https://schema.org/InStock`, not `\"In Stock\"` |\n| `Array expected, single value` | Single image instead of array | Wrap in array: `\"image\": [\"https://...\"]` |\n| `datePublished is in the future` | Date set ahead of publish | Set to actual publication date |\n\n## Best Practices\n\n### One Primary Schema Type per Page\n\nMatch the primary schema type to the page purpose. Product pages use Product, blog posts use BlogPosting, FAQ pages use FAQPage. Combine with BreadcrumbList as a complementary type.\n\n### Nesting vs. @graph\n\nNest when there is a parent-child relationship (Product > Offer). Use `@graph` for independent entities on the same page:\n\n```json\n{\n  \"@context\": \"https://schema.org\",\n  \"@graph\": [\n    { \"@type\": \"BreadcrumbList\", \"itemListElement\": [...] },\n    { \"@type\": \"Product\", \"name\": \"Widget\", \"offers\": {...} }\n  ]\n}\n```\n\n### Required vs. Recommended Properties\n\nRequired properties must be present for the rich result to appear. Recommended properties improve quality and appearance. Always include both.\n\n### Avoiding Spammy Markup\n\n- Do not fabricate reviews or ratings\n- Schema properties must match visible page content\n- Do not add schema for hidden content\n- Do not mismatch schema type and page purpose\n- Self-serving reviews without genuine third-party data trigger manual actions\n\nGoogle manual actions for structured data spam can remove all rich results from your entire domain.\n\n### Keeping Schema in Sync\n\nGenerate structured data from the same data source as page content. Include schema updates in your CMS publishing workflow. Audit quarterly or after major site changes.\n\n## Rich Results Eligibility\n\n| Schema Type | Rich Result | SERP Appearance |\n|-------------|-------------|-----------------|\n| `Product` | Product snippet | Price, availability, stars |\n| `FAQPage` | FAQ accordion | Expandable Q&A in results |\n| `HowTo` | How-to steps | Numbered steps with images |\n| `Article` / `BlogPosting` | Article result | Author, date, thumbnail |\n| `NewsArticle` | Top Stories | Carousel at top of results |\n| `BreadcrumbList` | Breadcrumb trail | Replaces URL with nav path |\n| `Review` / `AggregateRating` | Review snippet | Star rating below listing |\n| `Event` | Event listing | Date, location, tickets |\n| `VideoObject` | Video result | Thumbnail, duration |\n| `LocalBusiness` | Local pack | Map, hours, phone |\n| `JobPosting` | Google Jobs | Salary, location, apply |\n| `SoftwareApplication` | Software result | Rating, price |\n| `Course` | Course listing | Provider, enrollment |\n| `Organization` | Knowledge panel | Logo, social links |\n\n## Implementation Patterns\n\n### Static HTML\n\n```html\n<head>\n  <script type=\"application/ld+json\">\n  { \"@context\": \"https://schema.org\", \"@type\": \"Product\", ... }\n  </script>\n</head>\n```\n\n### Next.js (App Router)\n\n```tsx\nexport default function ProductPage({ product }) {\n  const jsonLd = {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"Product\",\n    name: product.name,\n    image: product.images,\n    offers: {\n      \"@type\": \"Offer\",\n      price: product.price,\n      priceCurrency: product.currency,\n      availability: product.inStock\n        ? \"https://schema.org/InStock\"\n        : \"https://schema.org/OutOfStock\",\n    },\n  };\n  return (\n    <>\n      <script\n        type=\"application/ld+json\"\n        dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}\n      />\n      {/* content */}\n    </>\n  );\n}\n```\n\n### WordPress\n\nUse Yoast SEO, Rank Math, or Schema Pro plugins. For custom implementation:\n\n```php\nadd_action('wp_head', function() {\n    if (is_singular('product')) {\n        $product = get_post();\n        $price = get_post_meta($product->ID, '_price', true);\n        $schema = [\n            '@context' => 'https://schema.org',\n            '@type' => 'Product',\n            'name' => $product->post_title,\n            'offers' => [\n                '@type' => 'Offer',\n                'price' => $price,\n                'priceCurrency' => 'USD',\n                'availability' => 'https://schema.org/InStock',\n            ],\n        ];\n        echo '<script type=\"application/ld+json\">' . json_encode($schema) . '</script>';\n    }\n});\n```\n\n### Dynamic CMS Pattern\n\n```typescript\nfunction generateProductSchema(cmsData: CMSProduct): object {\n  return {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"Product\",\n    name: cmsData.title,\n    image: cmsData.media.map(m => m.url),\n    offers: {\n      \"@type\": \"Offer\",\n      price: cmsData.variants[0].price.toString(),\n      priceCurrency: cmsData.currency,\n      availability: cmsData.inStock\n        ? \"https://schema.org/InStock\"\n        : \"https://schema.org/OutOfStock\",\n    },\n  };\n}\n```\n\nKey principle: generate structured data from the same data source that populates the page, never hardcode separately.\n\n## Resources\n\n- **Schema.org Full Vocabulary:** https://schema.org/docs/full.html\n- **Google Rich Results Gallery:** https://developers.google.com/search/docs/appearance/structured-data/search-gallery\n- **Google Rich Results Test:** https://search.google.com/test/rich-results\n- **Schema Markup Validator:** https://validator.schema.org\n- **Full Cogny Docs:** https://cogny.com/docs/structured-data-reference","tags":["structured","data","claude","code","marketing","skills","cognyai","agent-skills","ai-agents","claude-code","claude-skills","cluade-mcp"],"capabilities":["skill","source-cognyai","skill-structured-data","topic-agent-skills","topic-ai-agents","topic-claude-code","topic-claude-skills","topic-cluade-mcp","topic-cursor","topic-geo","topic-growth-hacking","topic-llm","topic-marketing","topic-mcp","topic-seo"],"categories":["claude-code-marketing-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cognyai/claude-code-marketing-skills/structured-data","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cognyai/claude-code-marketing-skills","source_repo":"https://github.com/cognyai/claude-code-marketing-skills","install_from":"skills.sh"}},"qualityScore":"0.471","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 42 github stars · SKILL.md body (23,114 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-01T06:56:27.714Z","embedding":null,"createdAt":"2026-04-18T22:23:42.145Z","updatedAt":"2026-05-01T06:56:27.714Z","lastSeenAt":"2026-05-01T06:56:27.714Z","tsv":"'/docs/full.html':478 '/docs/structured-data-reference':60,502 '/instock':413,451 '/outofstock':416,454 '/search/docs/appearance/structured-data/search-gallery':485 '/structured-data':62,66,72,77,82,88,95 '/test/rich-results':492 '0':443 'accordion':285 'across':138 'action':155 'add':382 'ai':262,315,319,323 'analyt':216 'answer':156,307 'app':384 'appear':220 'area':182 'argument':178 'ask':144 'assist':260,310 'attribut':334,371 'audit':239 'avail':202,409,447 'benefit':278 'best':90,93 'best-practic':89 'bing':325 'brand':297 'cannot':381 'check':206 'choos':123 'citat':316 'cms':419 'cmsdata':424 'cmsdata.currency':446 'cmsdata.instock':448 'cmsdata.media.map':435 'cmsdata.title':433 'cmsdata.variants':442 'cmsproduct':425 'cogni':498 'cogny.com':59,501 'cogny.com/docs/structured-data-reference':58,500 'complet':29 'consol':198 'const':392 'content':268 'context':394,428 'copilot':326 'correct':118 'data':3,6,27,34,109,134,226,246,249,330,459,463 'declar':271 'decoupl':355 'default':388 'determin':190 'developers.google.com':484 'developers.google.com/search/docs/appearance/structured-data/search-gallery':483 'differ':139 'direct':306 'doc':57,499 'dynam':418 'easi':362 'elig':19,42,101 'engin':258,321 'event':290 'everi':13 'exact':264 'exampl':11,39,71,76,81,165 'exist':339 'expert':110 'explicit':273,341 'export':387 'faq':284 'faqpag':73,75 'filter':217 'find':147 'focus':179 'format':336,338 'framework':361 'full':56,63,474,497 'function':389,422 'galleri':482 'generat':457 'generateproductschema':423 'get':214 'googl':293,309,322,340,479,486 'guid':87 'hardcod':470 'help':115,188 'how-to':286 'html':350,357,370 'identifi':235 'imag':400,434 'implement':23,47,136 'inform':335 'inject':358 'inlin':369 'inspect':221,230 'instruct':103 'interfac':314 'issu':227 'itemprop':374 'itemscop':372 'itemtyp':373 'js':360 'json':9,37,120,163,344,347,353 'json-ld':8,36,119,162,343,346,352 'jsonld':393 'key':455 'knowledg':295 'layout':366 'ld':10,38,121,164,345,348,354 'legaci':378 'list':232,242,291 'llms':317 'localbusi':78,80 'm':436 'm.url':437 'machin':252 'machine-read':251 'major':14 'markup':35,122,254,494 'mcp':199 'mean':269 'microdata':368 'name':398,432 'need':195 'never':469 'next.js':52,383 'object':426 'offer':402,404,438,440 'organ':300 'otherwis':183 'overview':65,186,324 'page':130,208,267,468 'panel':296,298 'pattern':24,48,420 'peopl':301 'perplex':327 'platform':140 'popul':466 'practic':91,94 'precis':154 'price':283,405,441 'price.tostring':444 'pricecurr':407,445 'principl':456 'product':67,69,303,391,397,431 'product.currency':408 'product.images':401 'product.instock':410 'product.name':399 'product.price':406 'productpag':390 'properti':233,243 'provid':153,169,184 'question':146 'rate':282 'react':53 'readabl':253 'readi':159 'ready-to-us':158 'recommend':342,349 'refer':7,28,30,64,113 'relev':149 'resourc':472 'result':18,41,98,100,211,280,481,488 'return':417,427 'rich':17,40,97,99,210,279,480,487 'rich-result':96 'right':125 'risk':367 'router':385 'schema':15,70,92,126,172,192,493 'schema.org':4,25,32,107,276,395,412,415,429,450,453,473,477 'schema.org/docs/full.html':476 'schema.org/instock':411,449 'schema.org/outofstock':414,452 'search':197,215,219,257,294,305,320 'search.google.com':491 'search.google.com/test/rich-results':490 'section':150 'separ':471 'show':68,74,79 'site':51,237 'skill' 'skill-structured-data' 'sourc':464 'source-cognyai' 'specif':171,222 'star':281 'static':50 'step':289 'structur':2,5,26,33,108,133,225,245,248,329,458 'structured-data':1 'surfac':332 'system':263,379 'tabl':102 'tell':256 'test':20,43,84,489 'three':337 'tool':21,44,200,213,229,241 'topic':175 'topic-agent-skills' 'topic-ai-agents' 'topic-claude-code' 'topic-claude-skills' 'topic-cluade-mcp' 'topic-cursor' 'topic-geo' 'topic-growth-hacking' 'topic-llm' 'topic-marketing' 'topic-mcp' 'topic-seo' 'tsx':386 'type':16,127,173,193,396,403,430,439 'typescript':421 'url':223,231 'usag':61 'use':111,161,203,274,328,375 'user':116,143,168 'valid':45,83,86,131,364,495 'validator.schema.org':496 'via':212,228,240 'vocabulari':277,475 'voic':259,304,313 'wordpress':55 'write':117","prices":[{"id":"cedf9362-9bef-4310-8707-25b7e1102993","listingId":"27058ee7-2af5-4f1c-b453-5587946d7eea","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cognyai","category":"claude-code-marketing-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:23:42.145Z"}],"sources":[{"listingId":"27058ee7-2af5-4f1c-b453-5587946d7eea","source":"github","sourceId":"cognyai/claude-code-marketing-skills/structured-data","sourceUrl":"https://github.com/cognyai/claude-code-marketing-skills/tree/main/skills/structured-data","isPrimary":false,"firstSeenAt":"2026-04-18T22:23:42.145Z","lastSeenAt":"2026-05-01T06:56:27.714Z"}],"details":{"listingId":"27058ee7-2af5-4f1c-b453-5587946d7eea","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cognyai","slug":"structured-data","github":{"repo":"cognyai/claude-code-marketing-skills","stars":42,"topics":["agent-skills","ai-agents","claude-code","claude-skills","cluade-mcp","cursor","geo","growth-hacking","llm","marketing","mcp","seo","vibe","windsurf"],"license":null,"html_url":"https://github.com/cognyai/claude-code-marketing-skills","pushed_at":"2026-04-29T13:43:50Z","description":"Marketing skills for Claude Code — SEO audits and implementation, ad analysis, ad optimization. Free skills need no account. $9/mo for live Search Console, Bing & LinkedIn data.","skill_md_sha":"a6376c7bb64e856ffa4e58655062794241863a6b","skill_md_path":"skills/structured-data/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cognyai/claude-code-marketing-skills/tree/main/skills/structured-data"},"layout":"multi","source":"github","category":"claude-code-marketing-skills","frontmatter":{"name":"structured-data","description":"Schema.org Structured Data Reference — JSON-LD examples for every major schema type, rich results eligibility, testing tools, and implementation patterns"},"skills_sh_url":"https://skills.sh/cognyai/claude-code-marketing-skills/structured-data"},"updatedAt":"2026-05-01T06:56:27.714Z"}}