$npx -y skills add aitytech/agentkits-marketing --skill schema-markupWhen the user wants to add, fix, or optimize schema markup and structured data on their site. Also use when the user mentions "schema markup," "structured data," "JSON-LD," "rich snippets," "schema.org," "FAQ schema," "product schema," "review schema," or "breadcrumb schema." For
| 1 | # Schema Markup |
| 2 | |
| 3 | You are an expert in structured data and schema markup. Your goal is to implement schema.org markup that helps search engines understand content and enables rich results in search. |
| 4 | |
| 5 | ## Initial Assessment |
| 6 | |
| 7 | Before implementing schema, understand: |
| 8 | |
| 9 | 1. **Page Type** |
| 10 | - What kind of page is this? |
| 11 | - What's the primary content? |
| 12 | - What rich results are possible? |
| 13 | |
| 14 | 2. **Current State** |
| 15 | - Any existing schema? |
| 16 | - Errors in current implementation? |
| 17 | - Which rich results are already appearing? |
| 18 | |
| 19 | 3. **Goals** |
| 20 | - Which rich results are you targeting? |
| 21 | - What's the business value? |
| 22 | |
| 23 | --- |
| 24 | |
| 25 | ## Core Principles |
| 26 | |
| 27 | ### 1. Accuracy First |
| 28 | - Schema must accurately represent page content |
| 29 | - Don't markup content that doesn't exist |
| 30 | - Keep updated when content changes |
| 31 | |
| 32 | ### 2. Use JSON-LD |
| 33 | - Google recommends JSON-LD format |
| 34 | - Easier to implement and maintain |
| 35 | - Place in `<head>` or end of `<body>` |
| 36 | |
| 37 | ### 3. Follow Google's Guidelines |
| 38 | - Only use markup Google supports |
| 39 | - Avoid spam tactics |
| 40 | - Review eligibility requirements |
| 41 | |
| 42 | ### 4. Validate Everything |
| 43 | - Test before deploying |
| 44 | - Monitor Search Console |
| 45 | - Fix errors promptly |
| 46 | |
| 47 | --- |
| 48 | |
| 49 | ## Common Schema Types |
| 50 | |
| 51 | ### Organization |
| 52 | **Use for**: Company/brand homepage or about page |
| 53 | |
| 54 | **Required properties**: |
| 55 | - name |
| 56 | - url |
| 57 | |
| 58 | **Recommended properties**: |
| 59 | - logo |
| 60 | - sameAs (social profiles) |
| 61 | - contactPoint |
| 62 | |
| 63 | ```json |
| 64 | { |
| 65 | "@context": "https://schema.org", |
| 66 | "@type": "Organization", |
| 67 | "name": "Example Company", |
| 68 | "url": "https://example.com", |
| 69 | "logo": "https://example.com/logo.png", |
| 70 | "sameAs": [ |
| 71 | "https://twitter.com/example", |
| 72 | "https://linkedin.com/company/example", |
| 73 | "https://facebook.com/example" |
| 74 | ], |
| 75 | "contactPoint": { |
| 76 | "@type": "ContactPoint", |
| 77 | "telephone": "+1-555-555-5555", |
| 78 | "contactType": "customer service" |
| 79 | } |
| 80 | } |
| 81 | ``` |
| 82 | |
| 83 | ### WebSite (with SearchAction) |
| 84 | **Use for**: Homepage, enables sitelinks search box |
| 85 | |
| 86 | **Required properties**: |
| 87 | - name |
| 88 | - url |
| 89 | |
| 90 | **For search box**: |
| 91 | - potentialAction with SearchAction |
| 92 | |
| 93 | ```json |
| 94 | { |
| 95 | "@context": "https://schema.org", |
| 96 | "@type": "WebSite", |
| 97 | "name": "Example", |
| 98 | "url": "https://example.com", |
| 99 | "potentialAction": { |
| 100 | "@type": "SearchAction", |
| 101 | "target": { |
| 102 | "@type": "EntryPoint", |
| 103 | "urlTemplate": "https://example.com/search?q={search_term_string}" |
| 104 | }, |
| 105 | "query-input": "required name=search_term_string" |
| 106 | } |
| 107 | } |
| 108 | ``` |
| 109 | |
| 110 | ### Article / BlogPosting |
| 111 | **Use for**: Blog posts, news articles |
| 112 | |
| 113 | **Required properties**: |
| 114 | - headline |
| 115 | - image |
| 116 | - datePublished |
| 117 | - author |
| 118 | |
| 119 | **Recommended properties**: |
| 120 | - dateModified |
| 121 | - publisher |
| 122 | - description |
| 123 | - mainEntityOfPage |
| 124 | |
| 125 | ```json |
| 126 | { |
| 127 | "@context": "https://schema.org", |
| 128 | "@type": "Article", |
| 129 | "headline": "How to Implement Schema Markup", |
| 130 | "image": "https://example.com/image.jpg", |
| 131 | "datePublished": "2024-01-15T08:00:00+00:00", |
| 132 | "dateModified": "2024-01-20T10:00:00+00:00", |
| 133 | "author": { |
| 134 | "@type": "Person", |
| 135 | "name": "Jane Doe", |
| 136 | "url": "https://example.com/authors/jane" |
| 137 | }, |
| 138 | "publisher": { |
| 139 | "@type": "Organization", |
| 140 | "name": "Example Company", |
| 141 | "logo": { |
| 142 | "@type": "ImageObject", |
| 143 | "url": "https://example.com/logo.png" |
| 144 | } |
| 145 | }, |
| 146 | "description": "A complete guide to implementing schema markup...", |
| 147 | "mainEntityOfPage": { |
| 148 | "@type": "WebPage", |
| 149 | "@id": "https://example.com/schema-guide" |
| 150 | } |
| 151 | } |
| 152 | ``` |
| 153 | |
| 154 | ### Product |
| 155 | **Use for**: Product pages (e-commerce or SaaS) |
| 156 | |
| 157 | **Required properties**: |
| 158 | - name |
| 159 | - image |
| 160 | - offers (with price and availability) |
| 161 | |
| 162 | **Recommended properties**: |
| 163 | - description |
| 164 | - sku |
| 165 | - brand |
| 166 | - aggregateRating |
| 167 | - review |
| 168 | |
| 169 | ```json |
| 170 | { |
| 171 | "@context": "https://schema.org", |
| 172 | "@type": "Product", |
| 173 | "name": "Premium Widget", |
| 174 | "image": "https://example.com/widget.jpg", |
| 175 | "description": "Our best-selling widget for professionals", |
| 176 | "sku": "WIDGET-001", |
| 177 | "brand": { |
| 178 | "@type": "Brand", |
| 179 | "name": "Example Co" |
| 180 | }, |
| 181 | "offers": { |
| 182 | "@type": "Offer", |
| 183 | "url": "https://example.com/products/widget", |
| 184 | "priceCurrency": "USD", |
| 185 | "price": "99.99", |
| 186 | "availability": "https://schema.org/InStock", |
| 187 | "priceValidUntil": "2024-12-31" |
| 188 | }, |
| 189 | "aggregateRating": { |
| 190 | "@type": "AggregateRating", |
| 191 | "ratingValue": "4.8", |
| 192 | "reviewCount": "127" |
| 193 | } |
| 194 | } |
| 195 | ``` |
| 196 | |
| 197 | ### So |