--- name: schema-markup description: Generate Schema.org structured data (JSON-LD) for any page type. Use when the user says "schema markup", "structured data", "JSON-LD", "rich snippets", "rich results", "FAQ schema", "product schema", "article schema", "breadcrumb schema", "organization schema", "how-to schema", "review schema", or asks about structured data for SEO. --- # Schema Markup Generator Skill You are an expert in Schema.org structured data and Google's rich results requirements. Generate valid, complete JSON-LD markup that maximizes eligibility for Google rich results. ## Supported Schema Types This skill supports the following schema types. When the user asks for schema, determine which type(s) are appropriate based on the page content. ### 1. Article / BlogPosting / NewsArticle **Use for:** Blog posts, news articles, editorial content **Rich result:** Article carousel, headline in search ```json { "@context": "https://schema.org", "@type": "Article", "headline": "Your Article Title (max 110 characters)", "description": "Brief description of the article (max 160 characters)", "image": [ "https://example.com/image-16x9.jpg", "https://example.com/image-4x3.jpg", "https://example.com/image-1x1.jpg" ], "datePublished": "2025-01-15T08:00:00+00:00", "dateModified": "2025-01-20T10:30:00+00:00", "author": [{ "@type": "Person", "name": "Author Name", "url": "https://example.com/author/name", "jobTitle": "Senior Editor", "sameAs": [ "https://twitter.com/authorhandle", "https://linkedin.com/in/authorname" ] }], "publisher": { "@type": "Organization", "name": "Publisher Name", "logo": { "@type": "ImageObject", "url": "https://example.com/logo.png", "width": 600, "height": 60 } }, "mainEntityOfPage": { "@type": "WebPage", "@id": "https://example.com/article-url" }, "wordCount": 2500, "articleSection": "Technology", "keywords": ["keyword1", "keyword2", "keyword3"], "isAccessibleForFree": true } ``` **Google requirements:** - `headline` is required (max 110 characters) - `image` is required (provide 3 aspect ratios: 16:9, 4:3, 1:1; each > 696px wide) - `datePublished` is required (ISO 8601 format) - `author.name` is required - For `NewsArticle`, also add `dateline` if applicable - For `BlogPosting`, `@type` changes to `"BlogPosting"` --- ### 2. Product **Use for:** Product pages, e-commerce listings **Rich result:** Product snippet with price, availability, reviews ```json { "@context": "https://schema.org", "@type": "Product", "name": "Product Name", "description": "Product description", "image": [ "https://example.com/product-1.jpg", "https://example.com/product-2.jpg" ], "sku": "SKU-12345", "mpn": "MPN-67890", "gtin13": "0123456789012", "brand": { "@type": "Brand", "name": "Brand Name" }, "offers": { "@type": "Offer", "url": "https://example.com/product", "priceCurrency": "USD", "price": "99.99", "priceValidUntil": "2025-12-31", "availability": "https://schema.org/InStock", "itemCondition": "https://schema.org/NewCondition", "seller": { "@type": "Organization", "name": "Seller Name" }, "shippingDetails": { "@type": "OfferShippingDetails", "shippingRate": { "@type": "MonetaryAmount", "value": "0", "currency": "USD" }, "deliveryTime": { "@type": "ShippingDeliveryTime", "handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "DAY" }, "transitTime": { "@type": "QuantitativeValue", "minValue": 1, "maxValue": 5, "unitCode": "DAY" } }, "shippingDestination": { "@type": "DefinedRegion", "addressCountry": "US" } }, "hasMerchantReturnPolicy": { "@type": "MerchantReturnPolicy", "applicableCountry": "US", "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow", "merchantReturnDays": 30, "returnMethod": "https://schema.org/ReturnByMail", "returnFees": "https://schema.org/FreeReturn" } }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.5", "bestRating": "5", "ratingCount": "142" }, "review": [{ "@type": "Review", "author": { "@type": "Person", "name": "Reviewer Name" }, "datePublished": "2025-01-10", "reviewBody": "Review text here", "reviewRating": { "@type": "Rating", "ratingValue": "5", "bestRating": "5" } }] } ``` **Google requirements:** - `name` is required - `offers`, `review`, or `aggregateRating` - at least one required - `offers.price` and `offers.priceCurrency` required if offers present - `offers.availability` must use Schema.org enum values - As of 2024, `shippingDetails` and `hasMerchantReturnPolicy` are recommended for merchant listings --- ### 3. FAQPage **Use for:** FAQ sections, Q&A pages **Rich result:** Expandable FAQ in search results ```json { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "What is the first question?", "acceptedAnswer": { "@type": "Answer", "text": "

The answer with HTML formatting allowed. You can include links.

" } }, { "@type": "Question", "name": "What is the second question?", "acceptedAnswer": { "@type": "Answer", "text": "Plain text answers also work." } } ] } ``` **Google requirements:** - Each `Question` must have exactly one `acceptedAnswer` - Answer `text` can include HTML: `

` through `

`, `
`, `
    `, `