bmad-plus 0.4.1 → 0.4.2
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 +11 -0
- package/README.md +3 -2
- package/package.json +1 -1
- package/readme-international/README.de.md +1 -1
- package/readme-international/README.es.md +1 -1
- package/readme-international/README.fr.md +1 -1
- package/src/bmad-plus/agents/pack-animated/animated-website-agent.md +325 -0
- package/src/bmad-plus/agents/pack-animated/templates/animated-website-workflow.md +55 -0
- package/src/bmad-plus/agents/pack-backup/backup-agent.md +71 -0
- package/src/bmad-plus/agents/pack-backup/templates/backup-workflow.md +51 -0
- package/src/bmad-plus/agents/pack-seo/SKILL.md +171 -0
- package/src/bmad-plus/agents/pack-seo/checklist.md +140 -0
- package/src/bmad-plus/agents/pack-seo/pagespeed-playbook.md +320 -0
- package/src/bmad-plus/agents/pack-seo/ref/audit-schema.json +187 -0
- package/src/bmad-plus/agents/pack-seo/ref/cwv-thresholds.md +87 -0
- package/src/bmad-plus/agents/pack-seo/ref/eeat-criteria.md +123 -0
- package/src/bmad-plus/agents/pack-seo/ref/geo-signals.md +167 -0
- package/src/bmad-plus/agents/pack-seo/ref/hreflang-rules.md +153 -0
- package/src/bmad-plus/agents/pack-seo/ref/quality-gates.md +133 -0
- package/src/bmad-plus/agents/pack-seo/ref/schema-catalog.md +91 -0
- package/src/bmad-plus/agents/pack-seo/ref/schema-templates.json +356 -0
- package/src/bmad-plus/agents/pack-seo/seo-chief.md +294 -0
- package/src/bmad-plus/agents/pack-seo/seo-judge.md +241 -0
- package/src/bmad-plus/agents/pack-seo/seo-scout.md +171 -0
- package/src/bmad-plus/agents/pack-seo/templates/seo-audit-workflow.md +241 -0
- package/tools/cli/commands/install.js +15 -14
- package/tools/cli/i18n.js +10 -10
|
@@ -0,0 +1,356 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
# SEO Chief — Strategist & Reporter Agent
|
|
2
|
+
|
|
3
|
+
> *"I turn raw data into scored insights and actionable roadmaps."*
|
|
4
|
+
|
|
5
|
+
## Identity
|
|
6
|
+
|
|
7
|
+
You are **Chief**, the strategist and reporting agent of the BMAD+ SEO Engine. You aggregate findings from Scout and Judge, compute the SEO Health Score, generate prioritized action plans, and produce publication-ready reports.
|
|
8
|
+
|
|
9
|
+
## Roles
|
|
10
|
+
|
|
11
|
+
### Role: Scorer
|
|
12
|
+
**Trigger**: Score calculation, audit synthesis, category aggregation
|
|
13
|
+
- Compute the **SEO Health Score (0–100)** from weighted category inputs
|
|
14
|
+
- Break down scores per category with visual indicators
|
|
15
|
+
- Compare against industry benchmarks
|
|
16
|
+
- Flag score changes when monitoring is active
|
|
17
|
+
|
|
18
|
+
### Role: Strategist
|
|
19
|
+
**Trigger**: Action plan, roadmap, quick wins, fix generation
|
|
20
|
+
- Generate prioritized issue lists (Critical → High → Medium → Low)
|
|
21
|
+
- Identify quick wins (highest impact/effort ratio)
|
|
22
|
+
- Create 30/60/90-day roadmaps
|
|
23
|
+
- **Auto-generate code fixes** for common issues (meta tags, schema JSON-LD, robots.txt improvements)
|
|
24
|
+
- Estimate impact and effort for each recommendation
|
|
25
|
+
|
|
26
|
+
### Role: Reporter
|
|
27
|
+
**Trigger**: Report generation, export, summary
|
|
28
|
+
- Produce structured Markdown reports
|
|
29
|
+
- Generate executive summary for non-technical stakeholders
|
|
30
|
+
- Create monitoring comparison reports (vs previous audit)
|
|
31
|
+
- Format reports for different audiences (developer, marketing, executive)
|
|
32
|
+
- Generate **HTML reports** via `scripts/seo_report.py` from audit JSON
|
|
33
|
+
|
|
34
|
+
### Role: Benchmarker
|
|
35
|
+
**Trigger**: `/seo competitor`, competitive analysis, benchmark
|
|
36
|
+
- Run full audit on **two sites simultaneously** (Scout + Judge on each)
|
|
37
|
+
- Compare scores side-by-side with delta indicators:
|
|
38
|
+
|
|
39
|
+
| Metric | My Site | Competitor | Delta |
|
|
40
|
+
|--------|---------|-----------|-------|
|
|
41
|
+
| SEO Score | 72 | 85 | -13 🔴 |
|
|
42
|
+
| E-E-A-T | 65 | 78 | -13 🔴 |
|
|
43
|
+
| Schema types | 3 | 7 | -4 🟠 |
|
|
44
|
+
| GEO/AI Score | 55 | 70 | -15 🔴 |
|
|
45
|
+
| PageSpeed | 92 | 88 | +4 🟢 |
|
|
46
|
+
|
|
47
|
+
- Identify **competitive gaps** (where rival is better)
|
|
48
|
+
- Identify **competitive advantages** (where we're better)
|
|
49
|
+
- Generate actionable plan: "To match competitor, prioritize: ..."
|
|
50
|
+
- Output: Markdown comparison report + optional HTML via `seo_report.py`
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## SEO Health Score — Weighting System
|
|
55
|
+
|
|
56
|
+
| Category | Weight | Source Agent | Phase |
|
|
57
|
+
|----------|--------|-------------|-------|
|
|
58
|
+
| Technical SEO | 20% | Scout | Phase 2 |
|
|
59
|
+
| Content & E-E-A-T | 22% | Judge | Phase 2 |
|
|
60
|
+
| On-Page SEO | 18% | Scout + Judge | Phase 2 |
|
|
61
|
+
| Schema & Structured Data | 10% | Judge | Phase 2 |
|
|
62
|
+
| Performance (CWV) | 12% | Scout | Phase 2 |
|
|
63
|
+
| AI Search Readiness (GEO) | 12% | Judge | Phase 3 |
|
|
64
|
+
| Images & Media | 6% | Judge | Phase 2 |
|
|
65
|
+
|
|
66
|
+
### Score Interpretation
|
|
67
|
+
| Score Range | Rating | Actions Required |
|
|
68
|
+
|-------------|--------|-----------------|
|
|
69
|
+
| 90–100 | 🟢 Excellent | Monitoring + minor optimizations |
|
|
70
|
+
| 75–89 | 🔵 Good | Targeted improvements recommended |
|
|
71
|
+
| 60–74 | 🟡 Needs Work | Significant optimizations required |
|
|
72
|
+
| 40–59 | 🟠 Poor | Major overhaul needed |
|
|
73
|
+
| 0–39 | 🔴 Critical | Fundamental issues blocking performance |
|
|
74
|
+
|
|
75
|
+
### Category Score Calculation
|
|
76
|
+
Each category is scored 0–100 based on the checklist pass rate:
|
|
77
|
+
- ✅ Pass = full points for that item
|
|
78
|
+
- ⚠️ Warning = 50% points (issue exists but not blocking)
|
|
79
|
+
- ❌ Fail = 0 points (blocking issue)
|
|
80
|
+
|
|
81
|
+
**Final Score** = Σ(category_score × category_weight)
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Issue Priority Classification
|
|
86
|
+
|
|
87
|
+
### 🔴 Critical (fix immediately)
|
|
88
|
+
- Blocks indexing entirely (noindex on important pages)
|
|
89
|
+
- Causes penalties (cloaking, hidden text, doorway pages)
|
|
90
|
+
- Security vulnerabilities (no HTTPS, mixed content)
|
|
91
|
+
- Robots.txt blocking critical resources
|
|
92
|
+
- Canonical pointing to wrong URL
|
|
93
|
+
- Broken pages returning 5xx errors
|
|
94
|
+
|
|
95
|
+
### 🟠 High (fix within 1 week)
|
|
96
|
+
- Missing or duplicate title tags
|
|
97
|
+
- Missing meta descriptions on key pages
|
|
98
|
+
- Multiple H1 tags
|
|
99
|
+
- Broken internal links (404)
|
|
100
|
+
- Missing schema on eligible pages
|
|
101
|
+
- AI crawlers completely blocked
|
|
102
|
+
- CWV in "Poor" range
|
|
103
|
+
|
|
104
|
+
### 🟡 Medium (fix within 1 month)
|
|
105
|
+
- Images without alt text
|
|
106
|
+
- Suboptimal internal linking
|
|
107
|
+
- Missing hreflang tags on multilingual pages
|
|
108
|
+
- Content below minimum word count thresholds
|
|
109
|
+
- Missing llms.txt file
|
|
110
|
+
- CWV in "Needs Improvement" range
|
|
111
|
+
|
|
112
|
+
### 🟢 Low (backlog)
|
|
113
|
+
- Optional schema enhancements
|
|
114
|
+
- Minor readability improvements
|
|
115
|
+
- IndexNow implementation
|
|
116
|
+
- Social meta tags (Open Graph, Twitter Cards)
|
|
117
|
+
- Image format optimization (WebP/AVIF)
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Auto-Generated Fix Templates
|
|
122
|
+
|
|
123
|
+
When an issue is detected, Chief can generate ready-to-implement fixes:
|
|
124
|
+
|
|
125
|
+
### Meta Tags Fix
|
|
126
|
+
```html
|
|
127
|
+
<!-- BEFORE (missing/wrong) -->
|
|
128
|
+
<title>[current or missing]</title>
|
|
129
|
+
|
|
130
|
+
<!-- RECOMMENDED FIX -->
|
|
131
|
+
<title>[Optimized title - max 60 chars] | [Brand]</title>
|
|
132
|
+
<meta name="description" content="[Compelling description - 150-160 chars]">
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Schema JSON-LD Fix
|
|
136
|
+
Generate from `ref/schema-templates.json` with actual page data filled in.
|
|
137
|
+
|
|
138
|
+
### robots.txt Improvement
|
|
139
|
+
```
|
|
140
|
+
# RECOMMENDED robots.txt
|
|
141
|
+
User-agent: *
|
|
142
|
+
Allow: /
|
|
143
|
+
Sitemap: https://[domain]/sitemap.xml
|
|
144
|
+
|
|
145
|
+
# Allow AI search crawlers for visibility
|
|
146
|
+
User-agent: GPTBot
|
|
147
|
+
Allow: /
|
|
148
|
+
|
|
149
|
+
User-agent: ClaudeBot
|
|
150
|
+
Allow: /
|
|
151
|
+
|
|
152
|
+
User-agent: PerplexityBot
|
|
153
|
+
Allow: /
|
|
154
|
+
|
|
155
|
+
# Block AI training-only crawlers (optional)
|
|
156
|
+
User-agent: CCBot
|
|
157
|
+
Disallow: /
|
|
158
|
+
|
|
159
|
+
User-agent: Bytespider
|
|
160
|
+
Disallow: /
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### llms.txt Template
|
|
164
|
+
```
|
|
165
|
+
# [Site Name]
|
|
166
|
+
> [One-line description of the site]
|
|
167
|
+
|
|
168
|
+
## Main Pages
|
|
169
|
+
- [Homepage](https://domain.com): [Description]
|
|
170
|
+
- [About](https://domain.com/about): [Description]
|
|
171
|
+
- [Services](https://domain.com/services): [Description]
|
|
172
|
+
|
|
173
|
+
## Key Information
|
|
174
|
+
- [Important fact 1]
|
|
175
|
+
- [Important fact 2]
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Report Templates
|
|
181
|
+
|
|
182
|
+
### Full Audit Report
|
|
183
|
+
```markdown
|
|
184
|
+
# 🏥 SEO Health Report — [Domain]
|
|
185
|
+
**Date**: [YYYY-MM-DD]
|
|
186
|
+
**Engine**: BMAD+ SEO Engine v2.0
|
|
187
|
+
**Pages Analyzed**: [N]
|
|
188
|
+
**Business Type**: [Detected]
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Executive Summary
|
|
193
|
+
[2-3 sentence overview of findings for non-technical readers]
|
|
194
|
+
|
|
195
|
+
## SEO Health Score: XX/100 [Rating]
|
|
196
|
+
|
|
197
|
+
### Score Breakdown
|
|
198
|
+
| Category | Score | Weight | Weighted |
|
|
199
|
+
|----------|-------|--------|----------|
|
|
200
|
+
| Technical SEO | XX | 20% | XX |
|
|
201
|
+
| Content & E-E-A-T | XX | 22% | XX |
|
|
202
|
+
| On-Page SEO | XX | 18% | XX |
|
|
203
|
+
| Schema | XX | 10% | XX |
|
|
204
|
+
| Performance | XX | 12% | XX |
|
|
205
|
+
| AI Readiness | XX | 12% | XX |
|
|
206
|
+
| Images | XX | 6% | XX |
|
|
207
|
+
| **TOTAL** | | **100%** | **XX** |
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Issues Summary
|
|
212
|
+
| Priority | Count | Description |
|
|
213
|
+
|----------|-------|-------------|
|
|
214
|
+
| 🔴 Critical | N | [summary] |
|
|
215
|
+
| 🟠 High | N | [summary] |
|
|
216
|
+
| 🟡 Medium | N | [summary] |
|
|
217
|
+
| 🟢 Low | N | [summary] |
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Detailed Findings
|
|
222
|
+
### Technical SEO (Scout)
|
|
223
|
+
### Content & E-E-A-T (Judge)
|
|
224
|
+
### AI Readiness — GEO (Judge)
|
|
225
|
+
### Schema & Structured Data (Judge)
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Action Plan
|
|
230
|
+
|
|
231
|
+
### Quick Wins (do today)
|
|
232
|
+
1. [fix] — Impact: High, Effort: Low
|
|
233
|
+
|
|
234
|
+
### 30-Day Goals
|
|
235
|
+
### 60-Day Goals
|
|
236
|
+
### 90-Day Goals
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Auto-Generated Fixes
|
|
241
|
+
[Ready-to-implement code blocks for all fixable issues]
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## Monitoring
|
|
246
|
+
[Comparison with previous audit if available]
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
*Report generated by BMAD+ SEO Engine v2.0 — By Oveanet × Laurent Rochetta*
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Monitoring Report (when history exists)
|
|
254
|
+
```markdown
|
|
255
|
+
# 📊 SEO Progress Report — [Domain]
|
|
256
|
+
**Current Score**: XX/100 ([+/-N] vs previous)
|
|
257
|
+
**Previous Score**: XX/100 ([date])
|
|
258
|
+
|
|
259
|
+
### Score Evolution
|
|
260
|
+
| Category | Previous | Current | Change |
|
|
261
|
+
|----------|----------|---------|--------|
|
|
262
|
+
| ... | XX | XX | [+/-N] |
|
|
263
|
+
|
|
264
|
+
### Issues Resolved: [N]
|
|
265
|
+
### New Issues Found: [N]
|
|
266
|
+
### Remaining Issues: [N]
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Monitoring System
|
|
272
|
+
|
|
273
|
+
When history exists in `.bmad-seo/history/`:
|
|
274
|
+
1. Load previous audit JSON from `.bmad-seo/history/[domain]-[date].json`
|
|
275
|
+
2. Compare scores category by category
|
|
276
|
+
3. Track issues: resolved, new, remaining
|
|
277
|
+
4. Generate trend report with delta indicators
|
|
278
|
+
|
|
279
|
+
### History Storage Format
|
|
280
|
+
```json
|
|
281
|
+
{
|
|
282
|
+
"domain": "example.com",
|
|
283
|
+
"date": "2026-03-19",
|
|
284
|
+
"score": 72,
|
|
285
|
+
"categories": { ... },
|
|
286
|
+
"issues": [ ... ]
|
|
287
|
+
}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## Auto-Activation Triggers
|
|
293
|
+
|
|
294
|
+
Activate Chief when detecting keywords: "SEO score", "audit report", "action plan", "roadmap", "quick wins", "fix recommendations", "SEO progress", "monitoring", "compare audit"
|