bmad-plus 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -1
- package/README.md +4 -2
- package/package.json +1 -1
- package/readme-international/README.de.md +10 -2
- package/readme-international/README.es.md +32 -9
- package/readme-international/README.fr.md +29 -6
- package/src/bmad-plus/packs/pack-seo/bmad-skill-manifest.yaml +13 -0
- package/src/bmad-plus/packs/pack-shield/SKILL.md +82 -0
- package/tools/bmad-plus-npx.js +3 -5
- package/tools/cli/commands/autoconfig.js +16 -6
- package/tools/cli/commands/doctor.js +28 -31
- package/tools/cli/commands/install.js +37 -228
- package/tools/cli/commands/scan.js +37 -35
- package/tools/cli/commands/update.js +13 -71
- package/tools/cli/i18n.js +92 -10
- package/tools/cli/lib/memory-init.js +114 -0
- package/tools/cli/lib/pack-copy.js +84 -0
- package/tools/cli/lib/packs.js +114 -0
- package/src/bmad-plus/agents/pack-animated/animated-website-agent.md +0 -325
- package/src/bmad-plus/agents/pack-animated/templates/animated-website-workflow.md +0 -55
- package/src/bmad-plus/agents/pack-backup/backup-agent.md +0 -71
- package/src/bmad-plus/agents/pack-backup/templates/backup-workflow.md +0 -51
- package/src/bmad-plus/agents/pack-seo/SKILL.md +0 -171
- package/src/bmad-plus/agents/pack-seo/checklist.md +0 -140
- package/src/bmad-plus/agents/pack-seo/pagespeed-playbook.md +0 -320
- package/src/bmad-plus/agents/pack-seo/ref/audit-schema.json +0 -187
- package/src/bmad-plus/agents/pack-seo/ref/cwv-thresholds.md +0 -87
- package/src/bmad-plus/agents/pack-seo/ref/eeat-criteria.md +0 -123
- package/src/bmad-plus/agents/pack-seo/ref/geo-signals.md +0 -167
- package/src/bmad-plus/agents/pack-seo/ref/hreflang-rules.md +0 -153
- package/src/bmad-plus/agents/pack-seo/ref/quality-gates.md +0 -133
- package/src/bmad-plus/agents/pack-seo/ref/schema-catalog.md +0 -91
- package/src/bmad-plus/agents/pack-seo/ref/schema-templates.json +0 -356
- package/src/bmad-plus/agents/pack-seo/seo-chief.md +0 -294
- package/src/bmad-plus/agents/pack-seo/seo-judge.md +0 -241
- package/src/bmad-plus/agents/pack-seo/seo-scout.md +0 -171
- package/src/bmad-plus/agents/pack-seo/templates/seo-audit-workflow.md +0 -241
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
# Schema.org — Type Catalog & Deprecation Status (March 2026)
|
|
2
|
-
|
|
3
|
-
> Author: Laurent Rochetta | BMAD+ SEO Engine v2.0 | Schema.org v29.4
|
|
4
|
-
|
|
5
|
-
## Format: Always JSON-LD
|
|
6
|
-
`<script type="application/ld+json">` — Google's explicit recommendation.
|
|
7
|
-
Content with schema has ~2.5× higher AI citation probability (Google/Microsoft, March 2025).
|
|
8
|
-
|
|
9
|
-
## Active — Recommend Freely
|
|
10
|
-
|
|
11
|
-
| Type | Use Case | Key Properties |
|
|
12
|
-
|------|----------|----------------|
|
|
13
|
-
| Organization | Company/brand | name, url, logo, contactPoint, sameAs |
|
|
14
|
-
| LocalBusiness | Physical location | name, address, telephone, openingHours, geo, priceRange |
|
|
15
|
-
| SoftwareApplication | Apps | name, operatingSystem, applicationCategory, offers |
|
|
16
|
-
| WebApplication | SaaS | name, applicationCategory, offers, featureList |
|
|
17
|
-
| Product | Products | name, image, description, sku, brand, offers, review |
|
|
18
|
-
| ProductGroup | Variants | name, productGroupID, variesBy, hasVariant |
|
|
19
|
-
| Offer | Pricing | price, priceCurrency, availability, url |
|
|
20
|
-
| Service | Services | name, provider, areaServed, description, offers |
|
|
21
|
-
| Article | Articles | headline, author, datePublished, dateModified, image, publisher |
|
|
22
|
-
| BlogPosting | Blog content | Same as Article + blog context |
|
|
23
|
-
| NewsArticle | News | Same as Article + news context |
|
|
24
|
-
| Review | Reviews | reviewRating, author, itemReviewed, reviewBody |
|
|
25
|
-
| AggregateRating | Ratings | ratingValue, reviewCount, bestRating |
|
|
26
|
-
| BreadcrumbList | Navigation | itemListElement with position, name, item |
|
|
27
|
-
| WebSite | Site-level | name, url, potentialAction (SearchAction) |
|
|
28
|
-
| WebPage | Page-level | name, description, datePublished, dateModified |
|
|
29
|
-
| Person | Authors/team | name, jobTitle, url, sameAs, image, worksFor |
|
|
30
|
-
| ProfilePage | Profiles | mainEntity (Person), name, sameAs |
|
|
31
|
-
| ContactPage | Contact | name, url |
|
|
32
|
-
| VideoObject | Video | name, description, thumbnailUrl, uploadDate, duration |
|
|
33
|
-
| ImageObject | Images | contentUrl, caption, creator |
|
|
34
|
-
| Event | Events | name, startDate, endDate, location, organizer |
|
|
35
|
-
| JobPosting | Jobs | title, description, datePosted, hiringOrganization |
|
|
36
|
-
| Course | Education | name, description, provider, hasCourseInstance |
|
|
37
|
-
| DiscussionForumPosting | Forums | headline, author, datePublished, text |
|
|
38
|
-
| Certification | Certifications | certificationIdentification, issuedBy (April 2025) |
|
|
39
|
-
| BroadcastEvent | Live streams | isLiveBroadcast, startDate, endDate |
|
|
40
|
-
| Clip | Video chapters | name, startOffset, endOffset, url |
|
|
41
|
-
| SeekToAction | Video seek | target with timestamp parameter |
|
|
42
|
-
| SoftwareSourceCode | Repos | codeRepository, programmingLanguage, license |
|
|
43
|
-
|
|
44
|
-
## Restricted — Specific Sites Only
|
|
45
|
-
|
|
46
|
-
| Type | Restriction | Since |
|
|
47
|
-
|------|------------|-------|
|
|
48
|
-
| FAQPage | Government & healthcare ONLY | Aug 2023 |
|
|
49
|
-
|
|
50
|
-
> FAQPage still benefits AI/LLM citation (ChatGPT, Perplexity) even without Google rich results. Existing FAQPage on commercial sites: Info priority, not Critical.
|
|
51
|
-
|
|
52
|
-
## Deprecated — NEVER Recommend
|
|
53
|
-
|
|
54
|
-
| Type | Since | Notes |
|
|
55
|
-
|------|-------|-------|
|
|
56
|
-
| HowTo | Sept 2023 | Rich results fully removed |
|
|
57
|
-
| SpecialAnnouncement | July 2025 | COVID-era, no longer processed |
|
|
58
|
-
| CourseInfo | June 2025 | Merged into Course |
|
|
59
|
-
| EstimatedSalary | June 2025 | No longer displayed |
|
|
60
|
-
| LearningVideo | June 2025 | Use VideoObject instead |
|
|
61
|
-
| ClaimReview | June 2025 | Fact-check markup discontinued |
|
|
62
|
-
| VehicleListing | June 2025 | Vehicle listings discontinued |
|
|
63
|
-
| Practice Problem | Late 2025 | Educational problems discontinued |
|
|
64
|
-
| Dataset | Late 2025 | Dataset Search discontinued |
|
|
65
|
-
|
|
66
|
-
## Recent Additions (2024–2026)
|
|
67
|
-
|
|
68
|
-
| Feature | When | Notes |
|
|
69
|
-
|---------|------|-------|
|
|
70
|
-
| Product Certification | April 2025 | Replaces EnergyConsumptionDetails |
|
|
71
|
-
| ProductGroup | 2025 | E-commerce variants |
|
|
72
|
-
| ProfilePage | 2025 | E-E-A-T author pages |
|
|
73
|
-
| DiscussionForumPosting | 2024 | Forum content |
|
|
74
|
-
| LoyaltyProgram | June 2025 | Member pricing |
|
|
75
|
-
| ConferenceEvent | Dec 2025 | Schema.org v29.4 |
|
|
76
|
-
| PerformingArtsEvent | Dec 2025 | Schema.org v29.4 |
|
|
77
|
-
|
|
78
|
-
## Validation Checklist
|
|
79
|
-
1. ✅ `@context` = `"https://schema.org"` (not http)
|
|
80
|
-
2. ✅ `@type` valid + non-deprecated
|
|
81
|
-
3. ✅ Required properties present
|
|
82
|
-
4. ✅ Correct data types
|
|
83
|
-
5. ✅ No placeholder text
|
|
84
|
-
6. ✅ Absolute URLs only
|
|
85
|
-
7. ✅ ISO 8601 dates
|
|
86
|
-
8. ✅ Valid image URLs
|
|
87
|
-
|
|
88
|
-
## E-Commerce Notes
|
|
89
|
-
- `returnPolicyCountry` required in MerchantReturnPolicy (March 2025)
|
|
90
|
-
- Content API for Shopping sunsets August 18, 2026 → migrate to Merchant API
|
|
91
|
-
- JS-injected Product schema may face delayed processing → include in server HTML
|
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta": {
|
|
3
|
-
"author": "Laurent Rochetta",
|
|
4
|
-
"engine": "BMAD+ SEO Engine v2.0",
|
|
5
|
-
"schema_org_version": "29.4",
|
|
6
|
-
"last_updated": "2026-03-19"
|
|
7
|
-
},
|
|
8
|
-
"templates": [
|
|
9
|
-
{
|
|
10
|
-
"type": "Organization",
|
|
11
|
-
"use_case": "Company/brand homepage",
|
|
12
|
-
"template": {
|
|
13
|
-
"@context": "https://schema.org",
|
|
14
|
-
"@type": "Organization",
|
|
15
|
-
"name": "[Company Name]",
|
|
16
|
-
"url": "[Website URL]",
|
|
17
|
-
"logo": "[Logo URL]",
|
|
18
|
-
"description": "[Company description]",
|
|
19
|
-
"foundingDate": "[YYYY]",
|
|
20
|
-
"contactPoint": {
|
|
21
|
-
"@type": "ContactPoint",
|
|
22
|
-
"telephone": "[Phone]",
|
|
23
|
-
"contactType": "customer service",
|
|
24
|
-
"availableLanguage": ["English", "French"]
|
|
25
|
-
},
|
|
26
|
-
"sameAs": [
|
|
27
|
-
"[Facebook URL]",
|
|
28
|
-
"[LinkedIn URL]",
|
|
29
|
-
"[Twitter URL]",
|
|
30
|
-
"[YouTube URL]"
|
|
31
|
-
]
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"type": "LocalBusiness",
|
|
36
|
-
"use_case": "Physical business location",
|
|
37
|
-
"template": {
|
|
38
|
-
"@context": "https://schema.org",
|
|
39
|
-
"@type": "LocalBusiness",
|
|
40
|
-
"name": "[Business Name]",
|
|
41
|
-
"url": "[Website URL]",
|
|
42
|
-
"image": "[Photo URL]",
|
|
43
|
-
"telephone": "[Phone]",
|
|
44
|
-
"priceRange": "[$$]",
|
|
45
|
-
"address": {
|
|
46
|
-
"@type": "PostalAddress",
|
|
47
|
-
"streetAddress": "[Street]",
|
|
48
|
-
"addressLocality": "[City]",
|
|
49
|
-
"addressRegion": "[State/Region]",
|
|
50
|
-
"postalCode": "[ZIP]",
|
|
51
|
-
"addressCountry": "[Country Code]"
|
|
52
|
-
},
|
|
53
|
-
"geo": {
|
|
54
|
-
"@type": "GeoCoordinates",
|
|
55
|
-
"latitude": "[Lat]",
|
|
56
|
-
"longitude": "[Long]"
|
|
57
|
-
},
|
|
58
|
-
"openingHoursSpecification": [
|
|
59
|
-
{
|
|
60
|
-
"@type": "OpeningHoursSpecification",
|
|
61
|
-
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
|
|
62
|
-
"opens": "09:00",
|
|
63
|
-
"closes": "18:00"
|
|
64
|
-
}
|
|
65
|
-
]
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
"type": "Article",
|
|
70
|
-
"use_case": "Blog posts, articles",
|
|
71
|
-
"template": {
|
|
72
|
-
"@context": "https://schema.org",
|
|
73
|
-
"@type": "Article",
|
|
74
|
-
"headline": "[Title - max 110 chars]",
|
|
75
|
-
"description": "[Summary]",
|
|
76
|
-
"author": {
|
|
77
|
-
"@type": "Person",
|
|
78
|
-
"name": "[Author Name]",
|
|
79
|
-
"url": "[Author Profile URL]"
|
|
80
|
-
},
|
|
81
|
-
"datePublished": "[YYYY-MM-DD]",
|
|
82
|
-
"dateModified": "[YYYY-MM-DD]",
|
|
83
|
-
"image": "[Featured Image URL]",
|
|
84
|
-
"publisher": {
|
|
85
|
-
"@type": "Organization",
|
|
86
|
-
"name": "[Publisher Name]",
|
|
87
|
-
"logo": {
|
|
88
|
-
"@type": "ImageObject",
|
|
89
|
-
"url": "[Logo URL]"
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
"mainEntityOfPage": {
|
|
93
|
-
"@type": "WebPage",
|
|
94
|
-
"@id": "[Page URL]"
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
"type": "Product",
|
|
100
|
-
"use_case": "E-commerce product pages",
|
|
101
|
-
"template": {
|
|
102
|
-
"@context": "https://schema.org",
|
|
103
|
-
"@type": "Product",
|
|
104
|
-
"name": "[Product Name]",
|
|
105
|
-
"image": "[Product Image URL]",
|
|
106
|
-
"description": "[Product Description]",
|
|
107
|
-
"sku": "[SKU]",
|
|
108
|
-
"brand": {
|
|
109
|
-
"@type": "Brand",
|
|
110
|
-
"name": "[Brand Name]"
|
|
111
|
-
},
|
|
112
|
-
"offers": {
|
|
113
|
-
"@type": "Offer",
|
|
114
|
-
"url": "[Product URL]",
|
|
115
|
-
"price": "[Price]",
|
|
116
|
-
"priceCurrency": "[Currency Code]",
|
|
117
|
-
"availability": "https://schema.org/InStock",
|
|
118
|
-
"seller": {
|
|
119
|
-
"@type": "Organization",
|
|
120
|
-
"name": "[Seller Name]"
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
"aggregateRating": {
|
|
124
|
-
"@type": "AggregateRating",
|
|
125
|
-
"ratingValue": "[4.5]",
|
|
126
|
-
"reviewCount": "[120]"
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
"type": "WebSite",
|
|
132
|
-
"use_case": "Site-level with sitelinks search box",
|
|
133
|
-
"template": {
|
|
134
|
-
"@context": "https://schema.org",
|
|
135
|
-
"@type": "WebSite",
|
|
136
|
-
"name": "[Site Name]",
|
|
137
|
-
"url": "[Homepage URL]",
|
|
138
|
-
"potentialAction": {
|
|
139
|
-
"@type": "SearchAction",
|
|
140
|
-
"target": {
|
|
141
|
-
"@type": "EntryPoint",
|
|
142
|
-
"urlTemplate": "[Search URL]?q={search_term_string}"
|
|
143
|
-
},
|
|
144
|
-
"query-input": "required name=search_term_string"
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
"type": "BreadcrumbList",
|
|
150
|
-
"use_case": "Navigation breadcrumbs",
|
|
151
|
-
"template": {
|
|
152
|
-
"@context": "https://schema.org",
|
|
153
|
-
"@type": "BreadcrumbList",
|
|
154
|
-
"itemListElement": [
|
|
155
|
-
{
|
|
156
|
-
"@type": "ListItem",
|
|
157
|
-
"position": 1,
|
|
158
|
-
"name": "Home",
|
|
159
|
-
"item": "[Homepage URL]"
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
"@type": "ListItem",
|
|
163
|
-
"position": 2,
|
|
164
|
-
"name": "[Category]",
|
|
165
|
-
"item": "[Category URL]"
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
"@type": "ListItem",
|
|
169
|
-
"position": 3,
|
|
170
|
-
"name": "[Current Page]"
|
|
171
|
-
}
|
|
172
|
-
]
|
|
173
|
-
}
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
"type": "Person",
|
|
177
|
-
"use_case": "Author/team member profiles (E-E-A-T)",
|
|
178
|
-
"template": {
|
|
179
|
-
"@context": "https://schema.org",
|
|
180
|
-
"@type": "Person",
|
|
181
|
-
"name": "[Full Name]",
|
|
182
|
-
"jobTitle": "[Job Title]",
|
|
183
|
-
"url": "[Profile URL]",
|
|
184
|
-
"image": "[Photo URL]",
|
|
185
|
-
"description": "[Professional bio]",
|
|
186
|
-
"worksFor": {
|
|
187
|
-
"@type": "Organization",
|
|
188
|
-
"name": "[Company Name]"
|
|
189
|
-
},
|
|
190
|
-
"sameAs": [
|
|
191
|
-
"[LinkedIn URL]",
|
|
192
|
-
"[Twitter URL]",
|
|
193
|
-
"[GitHub URL]"
|
|
194
|
-
]
|
|
195
|
-
}
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
"type": "Service",
|
|
199
|
-
"use_case": "Service business pages",
|
|
200
|
-
"template": {
|
|
201
|
-
"@context": "https://schema.org",
|
|
202
|
-
"@type": "Service",
|
|
203
|
-
"name": "[Service Name]",
|
|
204
|
-
"description": "[Service Description]",
|
|
205
|
-
"provider": {
|
|
206
|
-
"@type": "Organization",
|
|
207
|
-
"name": "[Provider Name]",
|
|
208
|
-
"url": "[Provider URL]"
|
|
209
|
-
},
|
|
210
|
-
"areaServed": {
|
|
211
|
-
"@type": "City",
|
|
212
|
-
"name": "[Service Area]"
|
|
213
|
-
},
|
|
214
|
-
"offers": {
|
|
215
|
-
"@type": "Offer",
|
|
216
|
-
"price": "[Starting Price]",
|
|
217
|
-
"priceCurrency": "[Currency]"
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
"type": "VideoObject",
|
|
223
|
-
"use_case": "Video content pages",
|
|
224
|
-
"template": {
|
|
225
|
-
"@context": "https://schema.org",
|
|
226
|
-
"@type": "VideoObject",
|
|
227
|
-
"name": "[Video Title]",
|
|
228
|
-
"description": "[Video Description]",
|
|
229
|
-
"thumbnailUrl": "[Thumbnail URL]",
|
|
230
|
-
"uploadDate": "[YYYY-MM-DD]",
|
|
231
|
-
"duration": "[PT1H30M]",
|
|
232
|
-
"contentUrl": "[Video File URL]",
|
|
233
|
-
"embedUrl": "[Embed URL]",
|
|
234
|
-
"publisher": {
|
|
235
|
-
"@type": "Organization",
|
|
236
|
-
"name": "[Publisher]"
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
},
|
|
240
|
-
{
|
|
241
|
-
"type": "Event",
|
|
242
|
-
"use_case": "Events and conferences",
|
|
243
|
-
"template": {
|
|
244
|
-
"@context": "https://schema.org",
|
|
245
|
-
"@type": "Event",
|
|
246
|
-
"name": "[Event Name]",
|
|
247
|
-
"description": "[Event Description]",
|
|
248
|
-
"startDate": "[YYYY-MM-DDTHH:MM]",
|
|
249
|
-
"endDate": "[YYYY-MM-DDTHH:MM]",
|
|
250
|
-
"location": {
|
|
251
|
-
"@type": "Place",
|
|
252
|
-
"name": "[Venue Name]",
|
|
253
|
-
"address": {
|
|
254
|
-
"@type": "PostalAddress",
|
|
255
|
-
"streetAddress": "[Street]",
|
|
256
|
-
"addressLocality": "[City]",
|
|
257
|
-
"addressCountry": "[Country]"
|
|
258
|
-
}
|
|
259
|
-
},
|
|
260
|
-
"organizer": {
|
|
261
|
-
"@type": "Organization",
|
|
262
|
-
"name": "[Organizer Name]",
|
|
263
|
-
"url": "[Organizer URL]"
|
|
264
|
-
},
|
|
265
|
-
"offers": {
|
|
266
|
-
"@type": "Offer",
|
|
267
|
-
"price": "[Price]",
|
|
268
|
-
"priceCurrency": "[Currency]",
|
|
269
|
-
"url": "[Ticket URL]",
|
|
270
|
-
"availability": "https://schema.org/InStock"
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
},
|
|
274
|
-
{
|
|
275
|
-
"type": "SoftwareApplication",
|
|
276
|
-
"use_case": "SaaS and app pages",
|
|
277
|
-
"template": {
|
|
278
|
-
"@context": "https://schema.org",
|
|
279
|
-
"@type": "SoftwareApplication",
|
|
280
|
-
"name": "[App Name]",
|
|
281
|
-
"description": "[App Description]",
|
|
282
|
-
"applicationCategory": "[Category]",
|
|
283
|
-
"operatingSystem": "[OS]",
|
|
284
|
-
"offers": {
|
|
285
|
-
"@type": "Offer",
|
|
286
|
-
"price": "[Price or 0]",
|
|
287
|
-
"priceCurrency": "[Currency]"
|
|
288
|
-
},
|
|
289
|
-
"aggregateRating": {
|
|
290
|
-
"@type": "AggregateRating",
|
|
291
|
-
"ratingValue": "[Rating]",
|
|
292
|
-
"ratingCount": "[Count]"
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
},
|
|
296
|
-
{
|
|
297
|
-
"type": "ProfilePage",
|
|
298
|
-
"use_case": "Author/creator profile pages (E-E-A-T)",
|
|
299
|
-
"template": {
|
|
300
|
-
"@context": "https://schema.org",
|
|
301
|
-
"@type": "ProfilePage",
|
|
302
|
-
"mainEntity": {
|
|
303
|
-
"@type": "Person",
|
|
304
|
-
"name": "[Author Name]",
|
|
305
|
-
"url": "[Profile URL]",
|
|
306
|
-
"description": "[Bio and expertise]",
|
|
307
|
-
"sameAs": ["[LinkedIn]", "[Twitter]"]
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
},
|
|
311
|
-
{
|
|
312
|
-
"type": "ProductGroup",
|
|
313
|
-
"use_case": "E-commerce product variants",
|
|
314
|
-
"template": {
|
|
315
|
-
"@context": "https://schema.org",
|
|
316
|
-
"@type": "ProductGroup",
|
|
317
|
-
"name": "[Product Name]",
|
|
318
|
-
"description": "[Group description]",
|
|
319
|
-
"productGroupID": "[Group ID]",
|
|
320
|
-
"variesBy": ["https://schema.org/size", "https://schema.org/color"],
|
|
321
|
-
"hasVariant": [
|
|
322
|
-
{
|
|
323
|
-
"@type": "Product",
|
|
324
|
-
"name": "[Variant Name]",
|
|
325
|
-
"sku": "[SKU]",
|
|
326
|
-
"color": "[Color]",
|
|
327
|
-
"size": "[Size]",
|
|
328
|
-
"offers": {
|
|
329
|
-
"@type": "Offer",
|
|
330
|
-
"price": "[Price]",
|
|
331
|
-
"priceCurrency": "[Currency]",
|
|
332
|
-
"availability": "https://schema.org/InStock"
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
]
|
|
336
|
-
}
|
|
337
|
-
},
|
|
338
|
-
{
|
|
339
|
-
"type": "Certification",
|
|
340
|
-
"use_case": "Product certifications (April 2025)",
|
|
341
|
-
"template": {
|
|
342
|
-
"@context": "https://schema.org",
|
|
343
|
-
"@type": "Product",
|
|
344
|
-
"name": "[Product Name]",
|
|
345
|
-
"hasCertification": {
|
|
346
|
-
"@type": "Certification",
|
|
347
|
-
"certificationIdentification": "[Certification Name]",
|
|
348
|
-
"issuedBy": {
|
|
349
|
-
"@type": "Organization",
|
|
350
|
-
"name": "[Issuing Organization]"
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
]
|
|
356
|
-
}
|