bmad-plus 0.12.1 → 0.12.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 +612 -580
- package/README.md +90 -115
- package/osint-agent-package/agents/osint-investigator.md +12 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/SKILL.md +491 -482
- package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/dossier-template.md +126 -126
- package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/lawful-basis-record.md +48 -48
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/content-extraction.md +100 -100
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/gdpr-osint.md +48 -48
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/platforms.md +130 -130
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/psychoprofile.md +69 -69
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/tools.md +281 -281
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/mcp-client.py +136 -136
- package/package.json +104 -91
- package/readme-international/README.de.md +596 -594
- package/readme-international/README.es.md +613 -611
- package/readme-international/README.fr.md +611 -609
- package/src/bmad-plus/agents/agent-shadow/SKILL.md +18 -0
- package/src/bmad-plus/data/role-triggers.yaml +52 -0
- package/src/bmad-plus/module.yaml +283 -283
- package/src/bmad-plus/packs/pack-animated/animated-website-agent.md +325 -325
- package/src/bmad-plus/packs/pack-animated/templates/animated-website-workflow.md +55 -55
- package/src/bmad-plus/packs/pack-backup/backup-agent.md +71 -71
- package/src/bmad-plus/packs/pack-backup/templates/backup-workflow.md +51 -51
- package/src/bmad-plus/packs/pack-dev-studio/README.md +162 -162
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/analyst-agent.md +73 -73
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/document-project.md +61 -61
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/domain-research.md +95 -95
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/market-research.md +95 -95
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/prfaq.md +134 -134
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/product-brief.md +80 -80
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/tech-writer-agent.md +73 -73
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/technical-research.md +95 -95
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/architect-agent.md +73 -73
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-architecture.md +73 -73
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-epics-stories.md +92 -92
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/generate-project-context.md +80 -80
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/implementation-readiness.md +90 -90
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01-init.md +153 -153
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01b-continue.md +173 -173
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-02-context.md +224 -224
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-03-starter.md +329 -329
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-04-decisions.md +318 -318
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-05-patterns.md +359 -359
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-06-structure.md +379 -379
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-07-validation.md +361 -361
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-08-complete.md +81 -81
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/checkpoint-preview.md +67 -67
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-01-gather-context.md +85 -85
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-02-review.md +35 -35
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-03-triage.md +49 -49
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-04-present.md +131 -131
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review.md +89 -89
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/correct-course.md +300 -300
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/create-story.md +428 -428
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-agent.md +73 -73
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story-checklist.md +80 -80
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story.md +484 -484
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/investigate.md +193 -193
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/qa-e2e-tests.md +175 -175
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/quick-dev.md +110 -110
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/retrospective.md +1511 -1511
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-planning.md +298 -298
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-status.md +296 -296
- package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-prd.md +29 -29
- package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-ux-design.md +74 -74
- package/src/bmad-plus/packs/pack-dev-studio/categories/planning/edit-prd.md +29 -29
- package/src/bmad-plus/packs/pack-dev-studio/categories/planning/pm-agent.md +73 -73
- package/src/bmad-plus/packs/pack-dev-studio/categories/planning/prd.md +89 -89
- package/src/bmad-plus/packs/pack-dev-studio/categories/planning/ux-designer-agent.md +73 -73
- package/src/bmad-plus/packs/pack-dev-studio/categories/planning/validate-prd.md +29 -29
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/advanced-elicitation.md +141 -141
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/adversarial-review.md +37 -37
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/bmad-help.md +75 -75
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/brainstorming.md +6 -6
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/customize.md +110 -110
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/distillator.md +176 -176
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/edge-case-hunter.md +67 -67
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-prose.md +86 -86
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-structure.md +179 -179
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/index-docs.md +66 -66
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/party-mode.md +127 -127
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/shard-doc.md +105 -105
- package/src/bmad-plus/packs/pack-dev-studio/dev-studio-orchestrator.md +120 -120
- package/src/bmad-plus/packs/pack-dev-studio/shared/architecture-decision-template.md +12 -12
- package/src/bmad-plus/packs/pack-dev-studio/shared/bwml-spec.md +328 -328
- package/src/bmad-plus/packs/pack-dev-studio/shared/module-help.csv +32 -32
- package/src/bmad-plus/packs/pack-dev-studio/upstream-sync.yaml +81 -81
- package/src/bmad-plus/packs/pack-seo/SKILL.md +171 -171
- package/src/bmad-plus/packs/pack-seo/checklist.md +140 -140
- package/src/bmad-plus/packs/pack-seo/pagespeed-playbook.md +320 -320
- package/src/bmad-plus/packs/pack-seo/ref/audit-schema.json +187 -187
- package/src/bmad-plus/packs/pack-seo/ref/cwv-thresholds.md +87 -87
- package/src/bmad-plus/packs/pack-seo/ref/eeat-criteria.md +123 -123
- package/src/bmad-plus/packs/pack-seo/ref/geo-signals.md +167 -167
- package/src/bmad-plus/packs/pack-seo/ref/hreflang-rules.md +153 -153
- package/src/bmad-plus/packs/pack-seo/ref/quality-gates.md +133 -133
- package/src/bmad-plus/packs/pack-seo/ref/schema-catalog.md +91 -91
- package/src/bmad-plus/packs/pack-seo/ref/schema-templates.json +356 -356
- package/src/bmad-plus/packs/pack-seo/requirements.txt +17 -0
- package/src/bmad-plus/packs/pack-seo/scripts/seo_apis.py +456 -0
- package/src/bmad-plus/packs/pack-seo/scripts/seo_crawl.py +359 -0
- package/src/bmad-plus/packs/pack-seo/scripts/seo_fetch.py +304 -0
- package/src/bmad-plus/packs/pack-seo/scripts/seo_parse.py +255 -0
- package/src/bmad-plus/packs/pack-seo/scripts/seo_report.py +410 -0
- package/src/bmad-plus/packs/pack-seo/scripts/seo_screenshot.py +202 -0
- package/src/bmad-plus/packs/pack-seo/seo-chief.md +294 -294
- package/src/bmad-plus/packs/pack-seo/seo-judge.md +241 -241
- package/src/bmad-plus/packs/pack-seo/seo-scout.md +171 -171
- package/src/bmad-plus/packs/pack-seo/templates/seo-audit-workflow.md +241 -241
- package/src/bmad-plus/packs/pack-shield/README.md +6 -6
- package/src/bmad-plus/packs/pack-shield/SKILL.md +2 -2
- package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/csrd-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/section508-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/wcag-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/ai-governance/eu-ai-act-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/ai-governance/iso42001-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/ai-governance/nist-ai-rmf-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/cis-controls-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/ism-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/iso27001-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nis2-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nist-800-53-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nist-csf-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/defense-export/cmmc-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/defense-export/ear-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/defense-export/itar-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/defense-export/tsa-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/dora-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/fedramp-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/hipaa-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/pci-dss-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/soc2-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/swift-csp-agent.md +11 -11
- package/src/bmad-plus/packs/pack-shield/shield-orchestrator.md +1 -1
- package/tools/build/check-counts.js +628 -0
- package/tools/build/generated-adapters/.codex/AGENTS.md +1 -1
- package/tools/build/generated-adapters/.cursor/rules/bmad-plus.mdc +1 -1
- package/tools/build/generated-adapters/.opencode/AGENTS.md +1 -1
- package/tools/build/generated-adapters/AGENTS.md +1 -1
- package/tools/build/generated-adapters/CLAUDE.md +1 -1
- package/tools/build/generated-adapters/CONVENTIONS.md +1 -1
- package/tools/build/generated-adapters/GEMINI.md +1 -1
- package/tools/cli/commands/autoconfig.js +470 -470
- package/tools/cli/commands/doctor.js +233 -233
- package/tools/cli/commands/install.js +598 -501
- package/tools/cli/commands/memory-journal-cmd.js +311 -311
- package/tools/cli/commands/memory.js +195 -195
- package/tools/cli/commands/scan.js +348 -348
- package/tools/cli/commands/uninstall.js +101 -101
- package/tools/cli/commands/update.js +134 -134
- package/tools/cli/i18n.js +845 -845
- package/tools/cli/lib/README-memory-journal.md +125 -125
- package/tools/cli/lib/ide-config.js +267 -259
- package/tools/cli/lib/python-provision.js +508 -508
- package/tools/cli/lib/stack-detect.js +102 -102
- package/tools/cli/lib/validate.js +50 -50
|
@@ -1,140 +1,140 @@
|
|
|
1
|
-
# SEO/GEO 360° Audit Checklist
|
|
2
|
-
|
|
3
|
-
## Usage
|
|
4
|
-
Use this checklist as a template for any website audit. Copy it to your project's output folder and check items as you go.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 1. Technical SEO
|
|
9
|
-
- [ ] `robots.txt` exists and is correctly configured
|
|
10
|
-
- [ ] `sitemap.xml` exists with all pages, `lastmod`, `changefreq`, `priority`
|
|
11
|
-
- [ ] Sitemap includes `xhtml:link` hreflang alternates (if multilingual)
|
|
12
|
-
- [ ] Canonical URLs present on all pages
|
|
13
|
-
- [ ] Hreflang tags for each language variant
|
|
14
|
-
- [ ] Meta robots: `index, follow, max-image-preview:large, max-snippet:-1`
|
|
15
|
-
- [ ] HTTPS enforced
|
|
16
|
-
- [ ] No render-blocking resources (fonts preloaded, CSS inlined or local)
|
|
17
|
-
- [ ] Mobile viewport meta tag present
|
|
18
|
-
- [ ] Favicon present (SVG preferred, fallback PNG)
|
|
19
|
-
- [ ] 404 error page exists
|
|
20
|
-
- [ ] Page load time < 3 seconds
|
|
21
|
-
|
|
22
|
-
## 2. On-Page SEO
|
|
23
|
-
- [ ] `<title>` tag: 50-60 chars, contains primary keyword, unique per page
|
|
24
|
-
- [ ] `<meta description>`: 150-160 chars, contains CTA, unique per page
|
|
25
|
-
- [ ] `<meta keywords>`: relevant long-tail keywords
|
|
26
|
-
- [ ] `<meta author>`: present
|
|
27
|
-
- [ ] Single `<h1>` per page, descriptive, keyword-rich
|
|
28
|
-
- [ ] Logical H2-H6 hierarchy
|
|
29
|
-
- [ ] Images: `alt` tags, `width`/`height`, `loading="lazy"`, WebP format
|
|
30
|
-
- [ ] Internal linking between pages
|
|
31
|
-
- [ ] External links: `rel="noopener"` on `target="_blank"`
|
|
32
|
-
- [ ] Content length adequate (300+ words for landing pages)
|
|
33
|
-
|
|
34
|
-
## 3. Schema.org / Structured Data
|
|
35
|
-
- [ ] Primary schema type (Organization/LocalBusiness/ProfessionalService)
|
|
36
|
-
- [ ] Service schema for each service offered
|
|
37
|
-
- [ ] FAQPage schema with real Q&As (minimum 5 questions)
|
|
38
|
-
- [ ] WebPage schema (datePublished, dateModified, inLanguage)
|
|
39
|
-
- [ ] BreadcrumbList schema
|
|
40
|
-
- [ ] Person schema for founder/team (if applicable)
|
|
41
|
-
- [ ] Review/AggregateRating schema (if applicable)
|
|
42
|
-
- [ ] Validated with Google Rich Results Test
|
|
43
|
-
|
|
44
|
-
## 4. GEO (Generative Engine Optimization)
|
|
45
|
-
- [ ] `llms.txt` file at site root with structured business info
|
|
46
|
-
- [ ] Content uses clear headings with question-based format
|
|
47
|
-
- [ ] FAQ section with expandable answers
|
|
48
|
-
- [ ] Concise, factual content per section (answers visible without interaction)
|
|
49
|
-
- [ ] AI crawlers allowed in `robots.txt`:
|
|
50
|
-
- [ ] GPTBot
|
|
51
|
-
- [ ] ChatGPT-User
|
|
52
|
-
- [ ] PerplexityBot
|
|
53
|
-
- [ ] ClaudeBot
|
|
54
|
-
- [ ] Google-Extended
|
|
55
|
-
- [ ] Content freshness: `dateModified` in schema, visible update dates
|
|
56
|
-
- [ ] E-E-A-T signals: author credentials, "About" info, LinkedIn links
|
|
57
|
-
- [ ] Tested queries in ChatGPT, Perplexity, and Gemini
|
|
58
|
-
|
|
59
|
-
## 5. Local SEO
|
|
60
|
-
- [ ] Geo meta tags: `geo.region`, `geo.placename`, `geo.position`, `ICBM`
|
|
61
|
-
- [ ] NAP (Name, Address, Phone/Email) in footer
|
|
62
|
-
- [ ] `<address>` HTML element used
|
|
63
|
-
- [ ] Schema includes `geo` (GeoCoordinates), `areaServed`, `address`
|
|
64
|
-
- [ ] Google Business Profile created and optimized
|
|
65
|
-
- [ ] Local keywords in title, description, and H1
|
|
66
|
-
- [ ] Citations on directories (Pages Jaunes, Google Maps, etc.)
|
|
67
|
-
|
|
68
|
-
## 6. Accessibility
|
|
69
|
-
- [ ] Skip navigation link
|
|
70
|
-
- [ ] `aria-hidden="true"` on decorative SVGs and elements
|
|
71
|
-
- [ ] `aria-label` on `<section>` and `<nav>` elements
|
|
72
|
-
- [ ] `aria-pressed` on toggle buttons
|
|
73
|
-
- [ ] Color contrast WCAG AA (4.5:1 minimum)
|
|
74
|
-
- [ ] Keyboard-navigable form elements
|
|
75
|
-
- [ ] `<html lang>` attribute set correctly (dynamic for multilingual)
|
|
76
|
-
- [ ] `prefers-reduced-motion` media query support
|
|
77
|
-
|
|
78
|
-
## 7. Social & Sharing
|
|
79
|
-
- [ ] Open Graph: `og:title`, `og:description`, `og:image`, `og:url`, `og:type`
|
|
80
|
-
- [ ] `og:site_name` present
|
|
81
|
-
- [ ] `og:locale` with `og:locale:alternate` for other languages
|
|
82
|
-
- [ ] `og:image` dimensions 1200×630px
|
|
83
|
-
- [ ] Twitter Card: `twitter:card` (summary_large_image)
|
|
84
|
-
- [ ] Social preview tested with sharing debugger tools
|
|
85
|
-
|
|
86
|
-
## 8. Multilingual SEO (if applicable)
|
|
87
|
-
- [ ] `<html lang>` dynamic based on selected language
|
|
88
|
-
- [ ] Bilingual `<title>` and `<meta description>` (via server-side logic)
|
|
89
|
-
- [ ] Hreflang tags for each page × each language
|
|
90
|
-
- [ ] `x-default` hreflang set
|
|
91
|
-
- [ ] Schema.org `description` in correct language
|
|
92
|
-
- [ ] OG tags in correct language (`og:locale`)
|
|
93
|
-
- [ ] Sitemap includes hreflang alternates per URL
|
|
94
|
-
- [ ] Language preference persisted (localStorage/cookie)
|
|
95
|
-
- [ ] Auto-detection of browser language (`navigator.language`)
|
|
96
|
-
- [ ] Legal pages (Privacy, Terms) translated
|
|
97
|
-
|
|
98
|
-
## 9. Content & Keywords
|
|
99
|
-
- [ ] Primary keyword identified per page
|
|
100
|
-
- [ ] Long-tail keyword variants in content
|
|
101
|
-
- [ ] Location-based keywords (city, region, country)
|
|
102
|
-
- [ ] Service-specific keywords
|
|
103
|
-
- [ ] Competitor keyword gap analysis
|
|
104
|
-
- [ ] Content matches search intent (informational, transactional, navigational)
|
|
105
|
-
|
|
106
|
-
## 10. PageSpeed 100% — Performance Perfection Loop
|
|
107
|
-
> Reference: See `pagespeed-playbook.md` for complete technique catalog with code examples.
|
|
108
|
-
|
|
109
|
-
### Performance (Impact-Ordered)
|
|
110
|
-
- [ ] Self-hosted fonts (woff2) — no Google CDN
|
|
111
|
-
- [ ] Font preload with `fetchpriority="high"` for critical weight
|
|
112
|
-
- [ ] `font-display: swap` on all `@font-face` rules
|
|
113
|
-
- [ ] ALL CSS inlined in production HTML (zero render-blocking)
|
|
114
|
-
- [ ] `.htaccess` cache headers: 1yr for static assets, 1hr for HTML
|
|
115
|
-
- [ ] Gzip/Brotli compression enabled (mod_deflate)
|
|
116
|
-
- [ ] ALL `<img>` tags have explicit `width` and `height` attributes
|
|
117
|
-
- [ ] Below-fold images have `loading="lazy"`
|
|
118
|
-
- [ ] LCP image has `fetchpriority="high"`
|
|
119
|
-
- [ ] Third-party scripts use `async defer`
|
|
120
|
-
- [ ] CLS = 0 (no layout shifts during load)
|
|
121
|
-
|
|
122
|
-
### Accessibility (WCAG AA)
|
|
123
|
-
- [ ] ALL text/background combos ≥ 4.5:1 contrast ratio
|
|
124
|
-
- [ ] White text on orange backgrounds replaced with dark text (#1a0800)
|
|
125
|
-
- [ ] Dim/muted text on dark backgrounds brightened to ≥ #a0b0b8
|
|
126
|
-
- [ ] Badge text with transparency backgrounds ≥ #d4dde3
|
|
127
|
-
- [ ] Checked: CTA buttons, active nav states, badges, footer, form labels, tags
|
|
128
|
-
|
|
129
|
-
### Best Practices
|
|
130
|
-
- [ ] No console errors from own code
|
|
131
|
-
- [ ] Third-party console errors documented as known limitations
|
|
132
|
-
- [ ] All external links have `rel="noopener noreferrer"`
|
|
133
|
-
- [ ] All resources loaded over HTTPS
|
|
134
|
-
|
|
135
|
-
### Anti-Patterns (NEVER DO)
|
|
136
|
-
- [ ] ❌ Never use `media="print" onload` for CSS (causes CLS 0.936)
|
|
137
|
-
- [ ] ❌ Never load fonts from external CDN without local fallback
|
|
138
|
-
- [ ] ❌ Never leave `<img>` tags without width/height dimensions
|
|
139
|
-
- [ ] ❌ Never fix contrast issues one at a time (batch ALL at once)
|
|
140
|
-
|
|
1
|
+
# SEO/GEO 360° Audit Checklist
|
|
2
|
+
|
|
3
|
+
## Usage
|
|
4
|
+
Use this checklist as a template for any website audit. Copy it to your project's output folder and check items as you go.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. Technical SEO
|
|
9
|
+
- [ ] `robots.txt` exists and is correctly configured
|
|
10
|
+
- [ ] `sitemap.xml` exists with all pages, `lastmod`, `changefreq`, `priority`
|
|
11
|
+
- [ ] Sitemap includes `xhtml:link` hreflang alternates (if multilingual)
|
|
12
|
+
- [ ] Canonical URLs present on all pages
|
|
13
|
+
- [ ] Hreflang tags for each language variant
|
|
14
|
+
- [ ] Meta robots: `index, follow, max-image-preview:large, max-snippet:-1`
|
|
15
|
+
- [ ] HTTPS enforced
|
|
16
|
+
- [ ] No render-blocking resources (fonts preloaded, CSS inlined or local)
|
|
17
|
+
- [ ] Mobile viewport meta tag present
|
|
18
|
+
- [ ] Favicon present (SVG preferred, fallback PNG)
|
|
19
|
+
- [ ] 404 error page exists
|
|
20
|
+
- [ ] Page load time < 3 seconds
|
|
21
|
+
|
|
22
|
+
## 2. On-Page SEO
|
|
23
|
+
- [ ] `<title>` tag: 50-60 chars, contains primary keyword, unique per page
|
|
24
|
+
- [ ] `<meta description>`: 150-160 chars, contains CTA, unique per page
|
|
25
|
+
- [ ] `<meta keywords>`: relevant long-tail keywords
|
|
26
|
+
- [ ] `<meta author>`: present
|
|
27
|
+
- [ ] Single `<h1>` per page, descriptive, keyword-rich
|
|
28
|
+
- [ ] Logical H2-H6 hierarchy
|
|
29
|
+
- [ ] Images: `alt` tags, `width`/`height`, `loading="lazy"`, WebP format
|
|
30
|
+
- [ ] Internal linking between pages
|
|
31
|
+
- [ ] External links: `rel="noopener"` on `target="_blank"`
|
|
32
|
+
- [ ] Content length adequate (300+ words for landing pages)
|
|
33
|
+
|
|
34
|
+
## 3. Schema.org / Structured Data
|
|
35
|
+
- [ ] Primary schema type (Organization/LocalBusiness/ProfessionalService)
|
|
36
|
+
- [ ] Service schema for each service offered
|
|
37
|
+
- [ ] FAQPage schema with real Q&As (minimum 5 questions)
|
|
38
|
+
- [ ] WebPage schema (datePublished, dateModified, inLanguage)
|
|
39
|
+
- [ ] BreadcrumbList schema
|
|
40
|
+
- [ ] Person schema for founder/team (if applicable)
|
|
41
|
+
- [ ] Review/AggregateRating schema (if applicable)
|
|
42
|
+
- [ ] Validated with Google Rich Results Test
|
|
43
|
+
|
|
44
|
+
## 4. GEO (Generative Engine Optimization)
|
|
45
|
+
- [ ] `llms.txt` file at site root with structured business info
|
|
46
|
+
- [ ] Content uses clear headings with question-based format
|
|
47
|
+
- [ ] FAQ section with expandable answers
|
|
48
|
+
- [ ] Concise, factual content per section (answers visible without interaction)
|
|
49
|
+
- [ ] AI crawlers allowed in `robots.txt`:
|
|
50
|
+
- [ ] GPTBot
|
|
51
|
+
- [ ] ChatGPT-User
|
|
52
|
+
- [ ] PerplexityBot
|
|
53
|
+
- [ ] ClaudeBot
|
|
54
|
+
- [ ] Google-Extended
|
|
55
|
+
- [ ] Content freshness: `dateModified` in schema, visible update dates
|
|
56
|
+
- [ ] E-E-A-T signals: author credentials, "About" info, LinkedIn links
|
|
57
|
+
- [ ] Tested queries in ChatGPT, Perplexity, and Gemini
|
|
58
|
+
|
|
59
|
+
## 5. Local SEO
|
|
60
|
+
- [ ] Geo meta tags: `geo.region`, `geo.placename`, `geo.position`, `ICBM`
|
|
61
|
+
- [ ] NAP (Name, Address, Phone/Email) in footer
|
|
62
|
+
- [ ] `<address>` HTML element used
|
|
63
|
+
- [ ] Schema includes `geo` (GeoCoordinates), `areaServed`, `address`
|
|
64
|
+
- [ ] Google Business Profile created and optimized
|
|
65
|
+
- [ ] Local keywords in title, description, and H1
|
|
66
|
+
- [ ] Citations on directories (Pages Jaunes, Google Maps, etc.)
|
|
67
|
+
|
|
68
|
+
## 6. Accessibility
|
|
69
|
+
- [ ] Skip navigation link
|
|
70
|
+
- [ ] `aria-hidden="true"` on decorative SVGs and elements
|
|
71
|
+
- [ ] `aria-label` on `<section>` and `<nav>` elements
|
|
72
|
+
- [ ] `aria-pressed` on toggle buttons
|
|
73
|
+
- [ ] Color contrast WCAG AA (4.5:1 minimum)
|
|
74
|
+
- [ ] Keyboard-navigable form elements
|
|
75
|
+
- [ ] `<html lang>` attribute set correctly (dynamic for multilingual)
|
|
76
|
+
- [ ] `prefers-reduced-motion` media query support
|
|
77
|
+
|
|
78
|
+
## 7. Social & Sharing
|
|
79
|
+
- [ ] Open Graph: `og:title`, `og:description`, `og:image`, `og:url`, `og:type`
|
|
80
|
+
- [ ] `og:site_name` present
|
|
81
|
+
- [ ] `og:locale` with `og:locale:alternate` for other languages
|
|
82
|
+
- [ ] `og:image` dimensions 1200×630px
|
|
83
|
+
- [ ] Twitter Card: `twitter:card` (summary_large_image)
|
|
84
|
+
- [ ] Social preview tested with sharing debugger tools
|
|
85
|
+
|
|
86
|
+
## 8. Multilingual SEO (if applicable)
|
|
87
|
+
- [ ] `<html lang>` dynamic based on selected language
|
|
88
|
+
- [ ] Bilingual `<title>` and `<meta description>` (via server-side logic)
|
|
89
|
+
- [ ] Hreflang tags for each page × each language
|
|
90
|
+
- [ ] `x-default` hreflang set
|
|
91
|
+
- [ ] Schema.org `description` in correct language
|
|
92
|
+
- [ ] OG tags in correct language (`og:locale`)
|
|
93
|
+
- [ ] Sitemap includes hreflang alternates per URL
|
|
94
|
+
- [ ] Language preference persisted (localStorage/cookie)
|
|
95
|
+
- [ ] Auto-detection of browser language (`navigator.language`)
|
|
96
|
+
- [ ] Legal pages (Privacy, Terms) translated
|
|
97
|
+
|
|
98
|
+
## 9. Content & Keywords
|
|
99
|
+
- [ ] Primary keyword identified per page
|
|
100
|
+
- [ ] Long-tail keyword variants in content
|
|
101
|
+
- [ ] Location-based keywords (city, region, country)
|
|
102
|
+
- [ ] Service-specific keywords
|
|
103
|
+
- [ ] Competitor keyword gap analysis
|
|
104
|
+
- [ ] Content matches search intent (informational, transactional, navigational)
|
|
105
|
+
|
|
106
|
+
## 10. PageSpeed 100% — Performance Perfection Loop
|
|
107
|
+
> Reference: See `pagespeed-playbook.md` for complete technique catalog with code examples.
|
|
108
|
+
|
|
109
|
+
### Performance (Impact-Ordered)
|
|
110
|
+
- [ ] Self-hosted fonts (woff2) — no Google CDN
|
|
111
|
+
- [ ] Font preload with `fetchpriority="high"` for critical weight
|
|
112
|
+
- [ ] `font-display: swap` on all `@font-face` rules
|
|
113
|
+
- [ ] ALL CSS inlined in production HTML (zero render-blocking)
|
|
114
|
+
- [ ] `.htaccess` cache headers: 1yr for static assets, 1hr for HTML
|
|
115
|
+
- [ ] Gzip/Brotli compression enabled (mod_deflate)
|
|
116
|
+
- [ ] ALL `<img>` tags have explicit `width` and `height` attributes
|
|
117
|
+
- [ ] Below-fold images have `loading="lazy"`
|
|
118
|
+
- [ ] LCP image has `fetchpriority="high"`
|
|
119
|
+
- [ ] Third-party scripts use `async defer`
|
|
120
|
+
- [ ] CLS = 0 (no layout shifts during load)
|
|
121
|
+
|
|
122
|
+
### Accessibility (WCAG AA)
|
|
123
|
+
- [ ] ALL text/background combos ≥ 4.5:1 contrast ratio
|
|
124
|
+
- [ ] White text on orange backgrounds replaced with dark text (#1a0800)
|
|
125
|
+
- [ ] Dim/muted text on dark backgrounds brightened to ≥ #a0b0b8
|
|
126
|
+
- [ ] Badge text with transparency backgrounds ≥ #d4dde3
|
|
127
|
+
- [ ] Checked: CTA buttons, active nav states, badges, footer, form labels, tags
|
|
128
|
+
|
|
129
|
+
### Best Practices
|
|
130
|
+
- [ ] No console errors from own code
|
|
131
|
+
- [ ] Third-party console errors documented as known limitations
|
|
132
|
+
- [ ] All external links have `rel="noopener noreferrer"`
|
|
133
|
+
- [ ] All resources loaded over HTTPS
|
|
134
|
+
|
|
135
|
+
### Anti-Patterns (NEVER DO)
|
|
136
|
+
- [ ] ❌ Never use `media="print" onload` for CSS (causes CLS 0.936)
|
|
137
|
+
- [ ] ❌ Never load fonts from external CDN without local fallback
|
|
138
|
+
- [ ] ❌ Never leave `<img>` tags without width/height dimensions
|
|
139
|
+
- [ ] ❌ Never fix contrast issues one at a time (batch ALL at once)
|
|
140
|
+
|