@growthub/cli 0.3.50 → 0.3.53

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.
Files changed (38) hide show
  1. package/assets/worker-kits/growthub-geo-seo-v1/.env.example +12 -0
  2. package/assets/worker-kits/growthub-geo-seo-v1/QUICKSTART.md +138 -0
  3. package/assets/worker-kits/growthub-geo-seo-v1/brands/NEW-CLIENT.md +104 -0
  4. package/assets/worker-kits/growthub-geo-seo-v1/brands/_template/brand-kit.md +116 -0
  5. package/assets/worker-kits/growthub-geo-seo-v1/brands/growthub/brand-kit.md +117 -0
  6. package/assets/worker-kits/growthub-geo-seo-v1/bundles/growthub-geo-seo-v1.json +54 -0
  7. package/assets/worker-kits/growthub-geo-seo-v1/docs/geo-seo-fork-integration.md +244 -0
  8. package/assets/worker-kits/growthub-geo-seo-v1/docs/pdf-report-layer.md +139 -0
  9. package/assets/worker-kits/growthub-geo-seo-v1/docs/scoring-methodology.md +230 -0
  10. package/assets/worker-kits/growthub-geo-seo-v1/docs/subagent-dispatch.md +273 -0
  11. package/assets/worker-kits/growthub-geo-seo-v1/examples/citability-sample.md +155 -0
  12. package/assets/worker-kits/growthub-geo-seo-v1/examples/geo-audit-sample.md +126 -0
  13. package/assets/worker-kits/growthub-geo-seo-v1/examples/pdf-report-sample.md +207 -0
  14. package/assets/worker-kits/growthub-geo-seo-v1/examples/prospect-proposal-sample.md +184 -0
  15. package/assets/worker-kits/growthub-geo-seo-v1/growthub-meta/README.md +124 -0
  16. package/assets/worker-kits/growthub-geo-seo-v1/growthub-meta/kit-standard.md +116 -0
  17. package/assets/worker-kits/growthub-geo-seo-v1/kit.json +102 -0
  18. package/assets/worker-kits/growthub-geo-seo-v1/output/README.md +114 -0
  19. package/assets/worker-kits/growthub-geo-seo-v1/output-standards.md +143 -0
  20. package/assets/worker-kits/growthub-geo-seo-v1/runtime-assumptions.md +175 -0
  21. package/assets/worker-kits/growthub-geo-seo-v1/setup/check-deps.sh +80 -0
  22. package/assets/worker-kits/growthub-geo-seo-v1/setup/clone-fork.sh +56 -0
  23. package/assets/worker-kits/growthub-geo-seo-v1/setup/verify-env.mjs +152 -0
  24. package/assets/worker-kits/growthub-geo-seo-v1/skills.md +359 -0
  25. package/assets/worker-kits/growthub-geo-seo-v1/templates/brand-visibility-report.md +101 -0
  26. package/assets/worker-kits/growthub-geo-seo-v1/templates/citability-analysis.md +131 -0
  27. package/assets/worker-kits/growthub-geo-seo-v1/templates/client-proposal.md +172 -0
  28. package/assets/worker-kits/growthub-geo-seo-v1/templates/content-analysis.md +136 -0
  29. package/assets/worker-kits/growthub-geo-seo-v1/templates/crawler-access-report.md +115 -0
  30. package/assets/worker-kits/growthub-geo-seo-v1/templates/geo-audit-brief.md +114 -0
  31. package/assets/worker-kits/growthub-geo-seo-v1/templates/geo-score-summary.md +113 -0
  32. package/assets/worker-kits/growthub-geo-seo-v1/templates/llmstxt-plan.md +173 -0
  33. package/assets/worker-kits/growthub-geo-seo-v1/templates/remediation-roadmap.md +150 -0
  34. package/assets/worker-kits/growthub-geo-seo-v1/templates/schema-validation.md +177 -0
  35. package/assets/worker-kits/growthub-geo-seo-v1/templates/technical-foundations.md +108 -0
  36. package/assets/worker-kits/growthub-geo-seo-v1/validation-checklist.md +139 -0
  37. package/assets/worker-kits/growthub-geo-seo-v1/workers/geo-seo-operator/CLAUDE.md +320 -0
  38. package/package.json +1 -1
@@ -0,0 +1,113 @@
1
+ # GEO Score Summary
2
+
3
+ > Template: `templates/geo-score-summary.md`
4
+ > Save output to: `output/<client-slug>/<project-slug>/GeoScoreSummary_v<N>_<YYYYMMDD>.md`
5
+
6
+ ---
7
+
8
+ ## URL Audited
9
+
10
+ | Field | Value |
11
+ |---|---|
12
+ | Target URL | <!-- https://... --> |
13
+ | Client | <!-- client_name --> |
14
+ | Audit Date | <!-- YYYY-MM-DD --> |
15
+ | Execution Mode | <!-- local-fork / agent-only --> |
16
+ | Audit Scope | <!-- full / quick / specific --> |
17
+
18
+ ---
19
+
20
+ ## Overall GEO Score
21
+
22
+ ```
23
+ ╔══════════════════════════════╗
24
+ ║ GEO SCORE: ── / 100 ║
25
+ ║ GRADE: ─ ║
26
+ ╚══════════════════════════════╝
27
+ ```
28
+
29
+ | Field | Value |
30
+ |---|---|
31
+ | Composite Score | <!-- N / 100 --> |
32
+ | Letter Grade | <!-- A / B / C / D / F --> |
33
+ | Previous Score | <!-- N/A or previous score + date --> |
34
+ | Score Change | <!-- +N / -N / no change --> |
35
+
36
+ ---
37
+
38
+ ## Component Scores
39
+
40
+ | Component | Raw Score (0–100) | Weight | Weighted Contribution | Grade | Status |
41
+ |---|---|---|---|---|---|
42
+ | AI Citability & Visibility | <!-- N --> | 25% | <!-- N × 0.25 = N --> | <!-- A/B/C/D/F --> | <!-- strong / adequate / weak / data-gap --> |
43
+ | Brand Authority | <!-- N --> | 20% | <!-- N × 0.20 = N --> | <!-- A/B/C/D/F --> | <!-- strong / adequate / weak / data-gap --> |
44
+ | Content Quality & E-E-A-T | <!-- N --> | 20% | <!-- N × 0.20 = N --> | <!-- A/B/C/D/F --> | <!-- strong / adequate / weak / data-gap --> |
45
+ | Technical Foundations | <!-- N --> | 15% | <!-- N × 0.15 = N --> | <!-- A/B/C/D/F --> | <!-- strong / adequate / weak / data-gap --> |
46
+ | Structured Data | <!-- N --> | 10% | <!-- N × 0.10 = N --> | <!-- A/B/C/D/F --> | <!-- strong / adequate / weak / data-gap --> |
47
+ | Platform Optimization | <!-- N --> | 10% | <!-- N × 0.10 = N --> | <!-- A/B/C/D/F --> | <!-- strong / adequate / weak / data-gap --> |
48
+ | **COMPOSITE TOTAL** | | **100%** | **<!-- sum -->** | **<!-- grade -->** | |
49
+
50
+ ---
51
+
52
+ ## Score Narrative
53
+
54
+ <!-- 3–5 sentence summary grounding the score in actual findings.
55
+
56
+ Example: "thegrowthub.com scores 68/100 (C) on the GEO Score. The site's strongest component is Technical Foundations (82/100) — HTTPS is enforced, robots.txt is valid, and Core Web Vitals signals are healthy. The primary drag is AI Citability & Visibility (51/100), driven by a missing llms.txt and blanket GPTBot block in robots.txt. Brand Authority is moderate (66/100) — LinkedIn and Twitter/X presence is established, but Wikipedia and GitHub presence is missing. Fixing the crawler access issues alone is projected to add 8–12 points to the composite score." -->
57
+
58
+ ---
59
+
60
+ ## Component Score Visualization
61
+
62
+ ```
63
+ AI Citability & Visibility [██████████░░░░░░░░░░] <!-- N -->%
64
+ Brand Authority [████████████░░░░░░░░] <!-- N -->%
65
+ Content Quality & E-E-A-T [██████████████░░░░░░] <!-- N -->%
66
+ Technical Foundations [████████████████░░░░] <!-- N -->%
67
+ Structured Data [████████░░░░░░░░░░░░] <!-- N -->%
68
+ Platform Optimization [██████████░░░░░░░░░░] <!-- N -->%
69
+ ```
70
+
71
+ ---
72
+
73
+ ## Benchmark Comparison
74
+
75
+ | Metric | This Site | Category Average | Top Quartile |
76
+ |---|---|---|---|
77
+ | Overall GEO Score | <!-- N --> | 58 | 81 |
78
+ | AI Citability | <!-- N --> | 54 | 78 |
79
+ | Crawler Access (of 14) | <!-- N / 14 --> | 9 / 14 | 13 / 14 |
80
+ | Schema Types Present | <!-- N --> | 3 | 7 |
81
+ | llms.txt Present | <!-- yes / no --> | 22% of sites | 100% |
82
+
83
+ > Benchmark figures are based on geo-seo-claude audit data across audited sites. Category average represents the operator's current client portfolio baseline.
84
+
85
+ ---
86
+
87
+ ## Priority Recommendations
88
+
89
+ These are the top 3 actions ranked by expected GEO Score impact:
90
+
91
+ | Rank | Action | Affected Component | Expected Score Gain |
92
+ |---|---|---|---|
93
+ | 1 | <!-- Specific action grounded in findings --> | <!-- Component --> | +<!-- N --> points |
94
+ | 2 | <!-- Specific action grounded in findings --> | <!-- Component --> | +<!-- N --> points |
95
+ | 3 | <!-- Specific action grounded in findings --> | <!-- Component --> | +<!-- N --> points |
96
+
97
+ **Projected score after top 3 actions:** <!-- N --> / 100 (<!-- grade -->)
98
+
99
+ ---
100
+
101
+ ## What This Score Means
102
+
103
+ <!-- Paste the appropriate interpretation from docs/scoring-methodology.md based on grade.
104
+ For grade C: "Moderate visibility. You are not capturing significant AI-referred traffic yet. A full remediation roadmap is recommended." -->
105
+
106
+ ---
107
+
108
+ ## Next Steps
109
+
110
+ - [ ] Review full Remediation Roadmap: `output/<client-slug>/<project-slug>/RemediationRoadmap_v<N>_<YYYYMMDD>.md`
111
+ - [ ] Review Crawler Access Report for specific crawler fixes
112
+ - [ ] Review llms.txt Plan for implementation instructions
113
+ - [ ] Schedule rescore after remediation sprint (recommended: 30 days)
@@ -0,0 +1,173 @@
1
+ # llms.txt Plan
2
+
3
+ > Template: `templates/llmstxt-plan.md`
4
+ > Save output to: `output/<client-slug>/<project-slug>/LlmstxtPlan_v<N>_<YYYYMMDD>.md`
5
+
6
+ ---
7
+
8
+ ## Domain
9
+
10
+ | Field | Value |
11
+ |---|---|
12
+ | Domain | <!-- https://domain.com --> |
13
+ | Client | <!-- client_name --> |
14
+ | Plan Date | <!-- YYYY-MM-DD --> |
15
+ | Execution Mode | <!-- local-fork / agent-only --> |
16
+ | Auto-generation available | <!-- yes (use scripts/llmstxt_generator.py) / no (manual) --> |
17
+
18
+ ---
19
+
20
+ ## Current Status
21
+
22
+ | File | Status | URL Checked | Notes |
23
+ |---|---|---|---|
24
+ | `llms.txt` | <!-- exists / missing / malformed --> | `https://domain.com/llms.txt` | <!-- contents summary if exists --> |
25
+ | `llms-full.txt` | <!-- exists / missing --> | `https://domain.com/llms-full.txt` | <!-- contents summary if exists --> |
26
+
27
+ **Current llms.txt contents (if present):**
28
+
29
+ ```
30
+ <!-- Paste current llms.txt here, or mark as "File not found" -->
31
+ ```
32
+
33
+ ---
34
+
35
+ ## Why llms.txt Matters
36
+
37
+ `llms.txt` is a plain-text file that signals to AI language model crawlers which content on your site is intended to be read, indexed, and cited by AI systems. It follows the pattern of `robots.txt` but is specifically designed for LLM training and retrieval systems.
38
+
39
+ Sites without `llms.txt` rely on AI crawlers interpreting `robots.txt` rules only — missing an opportunity to explicitly surface high-quality content for AI citation.
40
+
41
+ ---
42
+
43
+ ## Proposed llms.txt
44
+
45
+ ```
46
+ # llms.txt for <!-- domain.com -->
47
+ # Generated: <!-- YYYY-MM-DD -->
48
+ # Documentation: https://llmstxt.org
49
+
50
+ # === Allowed for all AI systems ===
51
+ User-agent: *
52
+
53
+ # Primary content for AI training and citation
54
+ Allow: /blog/
55
+ Allow: /resources/
56
+ Allow: /case-studies/
57
+ Allow: /documentation/
58
+ Allow: /about/
59
+ Allow: /services/
60
+
61
+ # === Explicitly disallow private or non-content paths ===
62
+ Disallow: /admin/
63
+ Disallow: /checkout/
64
+ Disallow: /account/
65
+ Disallow: /api/
66
+ Disallow: /wp-admin/
67
+ Disallow: /search/
68
+
69
+ # === Content description ===
70
+ # Site-name: <!-- Client Name -->
71
+ # Site-description: <!-- One sentence describing what the site is about -->
72
+ # Primary-language: en
73
+ # Content-types: articles, guides, case studies, product documentation
74
+ # Last-updated: <!-- YYYY-MM-DD -->
75
+ ```
76
+
77
+ ---
78
+
79
+ ## Proposed llms-full.txt
80
+
81
+ `llms-full.txt` is an extended version that provides AI systems with a structured content index — similar to a sitemap but optimized for LLM retrieval.
82
+
83
+ ```
84
+ # llms-full.txt for <!-- domain.com -->
85
+ # Generated: <!-- YYYY-MM-DD -->
86
+ # Full content index for AI language model retrieval
87
+
88
+ ## Site Overview
89
+ - Name: <!-- Client Name -->
90
+ - Domain: <!-- https://domain.com -->
91
+ - Primary Service: <!-- one-line description -->
92
+ - Industry: <!-- industry category -->
93
+ - Language: English
94
+
95
+ ## Primary Content Categories
96
+
97
+ ### Blog / Articles
98
+ - <!-- https://domain.com/blog/ --> — All blog posts and articles
99
+ - <!-- https://domain.com/blog/category-1/ --> — <!-- Category description -->
100
+ - <!-- https://domain.com/blog/category-2/ --> — <!-- Category description -->
101
+
102
+ ### Resources
103
+ - <!-- https://domain.com/resources/ --> — Guides, whitepapers, tools
104
+ - <!-- https://domain.com/resources/guide-1/ --> — <!-- Guide title and description -->
105
+
106
+ ### Services / Products
107
+ - <!-- https://domain.com/services/ --> — Service overview
108
+ - <!-- https://domain.com/services/service-1/ --> — <!-- Service name and description -->
109
+ - <!-- https://domain.com/services/service-2/ --> — <!-- Service name and description -->
110
+
111
+ ### About / Trust
112
+ - <!-- https://domain.com/about/ --> — Company background and team
113
+ - <!-- https://domain.com/case-studies/ --> — Client case studies and results
114
+
115
+ ## Contact
116
+ - <!-- support@domain.com -->
117
+
118
+ ## Sitemap
119
+ - <!-- https://domain.com/sitemap.xml -->
120
+ ```
121
+
122
+ ---
123
+
124
+ ## Implementation Steps
125
+
126
+ | Step | Action | Owner | Tool | Estimated Time |
127
+ |---|---|---|---|---|
128
+ | 1 | Create `llms.txt` file at domain root | <!-- Dev / Content --> | Text editor | 15 min |
129
+ | 2 | Verify file is accessible at `https://domain.com/llms.txt` | <!-- Dev --> | curl or browser | 5 min |
130
+ | 3 | Create `llms-full.txt` with content index | <!-- Content --> | Text editor / generator | 30 min |
131
+ | 4 | Verify `llms-full.txt` accessible | <!-- Dev --> | curl or browser | 5 min |
132
+ | 5 | Add `llms.txt` reference in robots.txt | <!-- Dev --> | Text editor | 5 min |
133
+ | 6 | Re-run crawler access check to confirm access | <!-- Operator --> | `/geo crawlers` | 10 min |
134
+ | 7 | Set calendar reminder to update llms-full.txt monthly | <!-- Owner --> | Calendar | 2 min |
135
+
136
+ ---
137
+
138
+ ## robots.txt Addition
139
+
140
+ Add this line to `robots.txt` to surface `llms.txt` to AI crawlers:
141
+
142
+ ```
143
+ # AI Content Access
144
+ LLMs-txt: https://<!-- domain.com -->/llms.txt
145
+ ```
146
+
147
+ ---
148
+
149
+ ## Auto-generation Command Reference
150
+
151
+ If the geo-seo-claude fork is available, generate `llms.txt` automatically:
152
+
153
+ ```bash
154
+ # Generate llms.txt from sitemap
155
+ python scripts/llmstxt_generator.py --domain https://domain.com --from-sitemap
156
+
157
+ # Generate llms-full.txt with content index
158
+ python scripts/llmstxt_generator.py --domain https://domain.com --full
159
+
160
+ # Preview without writing files
161
+ python scripts/llmstxt_generator.py --domain https://domain.com --dry-run
162
+ ```
163
+
164
+ ---
165
+
166
+ ## Maintenance Schedule
167
+
168
+ | Task | Frequency | Trigger |
169
+ |---|---|---|
170
+ | Update `llms-full.txt` content index | Monthly | New content published |
171
+ | Verify `llms.txt` is still accessible | Weekly (automated) | robots.txt or server change |
172
+ | Review disallow rules | Quarterly | New product areas or pages |
173
+ | Re-run `/geo crawlers` after any change | On change | Any robots.txt or llms.txt edit |
@@ -0,0 +1,150 @@
1
+ # Remediation Roadmap
2
+
3
+ > Template: `templates/remediation-roadmap.md`
4
+ > Save output to: `output/<client-slug>/<project-slug>/RemediationRoadmap_v<N>_<YYYYMMDD>.md`
5
+
6
+ ---
7
+
8
+ ## Client / URL
9
+
10
+ | Field | Value |
11
+ |---|---|
12
+ | Client | <!-- client_name --> |
13
+ | Target URL | <!-- https://... --> |
14
+ | Roadmap Date | <!-- YYYY-MM-DD --> |
15
+ | Roadmap Owner | <!-- account_owner --> |
16
+ | Overall GEO Score Before | <!-- N / 100 (Grade) --> |
17
+ | Target GEO Score | <!-- N / 100 (Grade) --> |
18
+ | Timeline | <!-- 4-week sprint starting YYYY-MM-DD --> |
19
+
20
+ ---
21
+
22
+ ## Current vs. Target Score
23
+
24
+ | Component | Current Score | Target Score | Gap |
25
+ |---|---|---|---|
26
+ | AI Citability & Visibility | <!-- N --> | <!-- N --> | <!-- +N --> |
27
+ | Brand Authority | <!-- N --> | <!-- N --> | <!-- +N --> |
28
+ | Content Quality & E-E-A-T | <!-- N --> | <!-- N --> | <!-- +N --> |
29
+ | Technical Foundations | <!-- N --> | <!-- N --> | <!-- +N --> |
30
+ | Structured Data | <!-- N --> | <!-- N --> | <!-- +N --> |
31
+ | Platform Optimization | <!-- N --> | <!-- N --> | <!-- +N --> |
32
+ | **Composite GEO Score** | **<!-- N -->** | **<!-- N -->** | **<!-- +N -->** |
33
+
34
+ ---
35
+
36
+ ## Priority Matrix
37
+
38
+ Issues are ranked by Impact × Urgency:
39
+
40
+ | ID | Issue | Component | Impact | Urgency | Priority |
41
+ |---|---|---|---|---|---|
42
+ | R01 | <!-- issue description --> | <!-- component --> | <!-- High / Med / Low --> | <!-- Immediate / Sprint / Backlog --> | P0 |
43
+ | R02 | <!-- issue description --> | <!-- component --> | <!-- High / Med / Low --> | <!-- Immediate / Sprint / Backlog --> | P0 |
44
+ | R03 | <!-- issue description --> | <!-- component --> | <!-- High / Med / Low --> | <!-- Immediate / Sprint / Backlog --> | P1 |
45
+ | R04 | <!-- issue description --> | <!-- component --> | <!-- High / Med / Low --> | <!-- Immediate / Sprint / Backlog --> | P1 |
46
+ | R05 | <!-- issue description --> | <!-- component --> | <!-- High / Med / Low --> | <!-- Immediate / Sprint / Backlog --> | P2 |
47
+ | R06 | <!-- issue description --> | <!-- component --> | <!-- High / Med / Low --> | <!-- Immediate / Sprint / Backlog --> | P2 |
48
+ | R07 | <!-- issue description --> | <!-- component --> | <!-- High / Med / Low --> | <!-- Immediate / Sprint / Backlog --> | P3 |
49
+
50
+ ---
51
+
52
+ ## 4-Week Sprint Plan
53
+
54
+ ### Week 1 — Technical Unblocking and Crawler Access
55
+
56
+ | # | Action | Issue ID | Owner | Expected Score Impact | Priority |
57
+ |---|---|---|---|---|---|
58
+ | 1.1 | <!-- e.g., Remove GPTBot block from robots.txt --> | R01 | <!-- Dev --> | +<!-- N --> pts (AI Citability) | P0 |
59
+ | 1.2 | <!-- e.g., Create llms.txt at domain root --> | R02 | <!-- Dev / Content --> | +<!-- N --> pts (AI Citability) | P0 |
60
+ | 1.3 | <!-- e.g., Add Sitemap directive to robots.txt --> | R03 | <!-- Dev --> | +<!-- N --> pts (Technical) | P1 |
61
+ | 1.4 | <!-- e.g., Enforce HTTPS redirect from HTTP --> | R04 | <!-- Dev --> | +<!-- N --> pts (Technical) | P1 |
62
+ | 1.5 | <!-- e.g., Add Organization schema to homepage --> | R05 | <!-- Dev --> | +<!-- N --> pts (Structured Data) | P1 |
63
+
64
+ **Week 1 projected score gain:** +<!-- N --> points (<!-- current → new -->)
65
+
66
+ ---
67
+
68
+ ### Week 2 — Schema and Content Infrastructure
69
+
70
+ | # | Action | Issue ID | Owner | Expected Score Impact | Priority |
71
+ |---|---|---|---|---|---|
72
+ | 2.1 | <!-- e.g., Add FAQPage schema to top 3 service pages --> | R06 | <!-- Dev --> | +<!-- N --> pts (Structured Data) | P1 |
73
+ | 2.2 | <!-- e.g., Add Article schema to all blog posts --> | R07 | <!-- Dev --> | +<!-- N --> pts (Structured Data) | P2 |
74
+ | 2.3 | <!-- e.g., Rewrite top 5 pages' intro paragraphs for answer-block quality --> | R08 | <!-- Content --> | +<!-- N --> pts (Content) | P2 |
75
+ | 2.4 | <!-- e.g., Add statistical data to 3 thin service pages --> | R09 | <!-- Content --> | +<!-- N --> pts (Content) | P2 |
76
+ | 2.5 | <!-- e.g., Add author byline and bio to all blog posts --> | R10 | <!-- Content --> | +<!-- N --> pts (E-E-A-T) | P2 |
77
+
78
+ **Week 2 projected score gain:** +<!-- N --> points
79
+
80
+ ---
81
+
82
+ ### Week 3 — E-E-A-T Depth and Citability Optimization
83
+
84
+ | # | Action | Issue ID | Owner | Expected Score Impact | Priority |
85
+ |---|---|---|---|---|---|
86
+ | 3.1 | <!-- e.g., Publish original research study or data report --> | R11 | <!-- Content --> | +<!-- N --> pts (E-E-A-T) | P2 |
87
+ | 3.2 | <!-- e.g., Add llms-full.txt with content index --> | R12 | <!-- Content / Dev --> | +<!-- N --> pts (AI Citability) | P2 |
88
+ | 3.3 | <!-- e.g., Reduce pronoun-to-noun ratio on 5 key pages --> | R13 | <!-- Content --> | +<!-- N --> pts (Citability) | P2 |
89
+ | 3.4 | <!-- e.g., Add 3 external authority citations per blog post --> | R14 | <!-- Content --> | +<!-- N --> pts (E-E-A-T) | P2 |
90
+ | 3.5 | <!-- e.g., Implement BreadcrumbList schema site-wide --> | R15 | <!-- Dev --> | +<!-- N --> pts (Structured Data) | P2 |
91
+
92
+ **Week 3 projected score gain:** +<!-- N --> points
93
+
94
+ ---
95
+
96
+ ### Week 4 — Brand Authority and Platform Seeding
97
+
98
+ | # | Action | Issue ID | Owner | Expected Score Impact | Priority |
99
+ |---|---|---|---|---|---|
100
+ | 4.1 | <!-- e.g., Create and optimize LinkedIn company page --> | R16 | <!-- Marketing --> | +<!-- N --> pts (Brand Authority) | P3 |
101
+ | 4.2 | <!-- e.g., Answer 5 Quora questions in target niche --> | R17 | <!-- Marketing --> | +<!-- N --> pts (Brand Authority) | P3 |
102
+ | 4.3 | <!-- e.g., Post original thread on HackerNews or Reddit --> | R18 | <!-- Marketing --> | +<!-- N --> pts (Brand Authority) | P3 |
103
+ | 4.4 | <!-- e.g., Set up monthly GEO rescore monitoring --> | R19 | <!-- Operator --> | Baseline maintenance | P3 |
104
+ | 4.5 | <!-- e.g., Run /geo audit rescore and compare to baseline --> | R20 | <!-- Operator --> | Measurement | P3 |
105
+
106
+ **Week 4 projected score gain:** +<!-- N --> points
107
+
108
+ ---
109
+
110
+ ## Quick Wins (This Week — Under 2 Hours Each)
111
+
112
+ These items require minimal effort and have immediate score impact:
113
+
114
+ - [ ] **Remove GPTBot block from robots.txt** — unblocks ChatGPT indexing immediately
115
+ - [ ] **Add Sitemap directive to robots.txt** — 5-minute fix, improves Technical score
116
+ - [ ] **Create a basic llms.txt** — 15-minute task, signals AI-crawler intent
117
+ - [ ] **Add Organization JSON-LD to homepage** — copy from Schema Validation report code snippet
118
+ - [ ] **Verify llms.txt is accessible** — `curl https://domain.com/llms.txt`
119
+
120
+ ---
121
+
122
+ ## Medium-Term Actions (Weeks 2–3)
123
+
124
+ - Schema deployment across all primary page types
125
+ - Content rewrites targeting citability metrics (answer blocks, statistical density)
126
+ - E-E-A-T improvements: author bios, external citations, original data
127
+
128
+ ---
129
+
130
+ ## Strategic Actions (Week 4+)
131
+
132
+ - Brand authority platform seeding (LinkedIn, Quora, Reddit, HackerNews)
133
+ - Original research publication for uniqueness signals
134
+ - Monthly rescore loop using `/geo audit` to track improvements
135
+
136
+ ---
137
+
138
+ ## Estimated Score After Full Roadmap
139
+
140
+ | Component | Before | After | Change |
141
+ |---|---|---|---|
142
+ | AI Citability & Visibility | <!-- N --> | <!-- N --> | <!-- +N --> |
143
+ | Brand Authority | <!-- N --> | <!-- N --> | <!-- +N --> |
144
+ | Content Quality & E-E-A-T | <!-- N --> | <!-- N --> | <!-- +N --> |
145
+ | Technical Foundations | <!-- N --> | <!-- N --> | <!-- +N --> |
146
+ | Structured Data | <!-- N --> | <!-- N --> | <!-- +N --> |
147
+ | Platform Optimization | <!-- N --> | <!-- N --> | <!-- +N --> |
148
+ | **Composite GEO Score** | **<!-- N (Grade) -->** | **<!-- N (Grade) -->** | **<!-- +N -->** |
149
+
150
+ **Rescore date:** <!-- YYYY-MM-DD (30 days from roadmap start) -->
@@ -0,0 +1,177 @@
1
+ # Schema Validation Report
2
+
3
+ > Template: `templates/schema-validation.md`
4
+ > Save output to: `output/<client-slug>/<project-slug>/SchemaValidation_v<N>_<YYYYMMDD>.md`
5
+
6
+ ---
7
+
8
+ ## URL Analyzed
9
+
10
+ | Field | Value |
11
+ |---|---|
12
+ | Target URL | <!-- https://... --> |
13
+ | Client | <!-- client_name --> |
14
+ | Page Type | <!-- homepage / article / product / local business / other --> |
15
+ | Analysis Date | <!-- YYYY-MM-DD --> |
16
+ | Execution Mode | <!-- local-fork / agent-only --> |
17
+ | Schema Format Found | <!-- JSON-LD / Microdata / RDFa / none --> |
18
+
19
+ ---
20
+
21
+ ## Schema Types Found
22
+
23
+ | Schema Type | Format | Count | Location | Complete? |
24
+ |---|---|---|---|---|
25
+ | <!-- e.g., Organization --> | <!-- JSON-LD --> | <!-- N --> | <!-- <head> / inline --> | <!-- yes / partial / no --> |
26
+ | <!-- e.g., WebSite --> | <!-- JSON-LD --> | <!-- N --> | <!-- <head> / inline --> | <!-- yes / partial / no --> |
27
+ | <!-- e.g., Article --> | <!-- JSON-LD --> | <!-- N --> | <!-- <head> / inline --> | <!-- yes / partial / no --> |
28
+ | <!-- e.g., BreadcrumbList --> | <!-- JSON-LD --> | <!-- N --> | <!-- <head> / inline --> | <!-- yes / partial / no --> |
29
+ | <!-- e.g., FAQPage --> | <!-- JSON-LD --> | <!-- N --> | <!-- <head> / inline --> | <!-- yes / partial / no --> |
30
+ | <!-- e.g., HowTo --> | <!-- JSON-LD --> | <!-- N --> | <!-- <head> / inline --> | <!-- yes / partial / no --> |
31
+ | <!-- e.g., Product --> | <!-- JSON-LD --> | <!-- N --> | <!-- <head> / inline --> | <!-- yes / partial / no --> |
32
+ | <!-- e.g., LocalBusiness --> | <!-- JSON-LD --> | <!-- N --> | <!-- <head> / inline --> | <!-- yes / partial / no --> |
33
+
34
+ **Total schema types found:** <!-- N -->
35
+
36
+ ---
37
+
38
+ ## Raw Schema Markup
39
+
40
+ ```json
41
+ // Paste JSON-LD block(s) found on the page, or mark as "No JSON-LD found"
42
+ ```
43
+
44
+ ---
45
+
46
+ ## Validation Errors
47
+
48
+ | Schema Type | Property | Error Type | Severity | Notes |
49
+ |---|---|---|---|---|
50
+ | <!-- e.g., Organization --> | <!-- e.g., `url` --> | <!-- Missing required / Incorrect type / Invalid value --> | <!-- Critical / Warning / Info --> | <!-- description of the error --> |
51
+ | <!-- schema type --> | <!-- property --> | <!-- error type --> | <!-- severity --> | <!-- notes --> |
52
+ | <!-- schema type --> | <!-- property --> | <!-- error type --> | <!-- severity --> | <!-- notes --> |
53
+
54
+ **Total errors found:** <!-- N critical / N warnings / N info -->
55
+
56
+ ---
57
+
58
+ ## Missing Recommended Schema Types
59
+
60
+ | Schema Type | Why It Matters | Page Type It Applies To | Priority |
61
+ |---|---|---|---|
62
+ | Organization | Required for brand entity graph — enables Knowledge Panel signals | Homepage | P0 |
63
+ | WebSite | Enables Sitelinks search box in Google; signals site structure to AI | Homepage | P0 |
64
+ | FAQPage | Directly feeds Google AI Overviews and Perplexity answer blocks | FAQ / Service pages | P1 |
65
+ | Article | Required for Google News inclusion and AI content citation | Blog posts | P1 |
66
+ | BreadcrumbList | Improves AI understanding of site hierarchy | All pages | P1 |
67
+ | HowTo | Direct AI-citable structured content for how-to queries | Tutorial pages | P2 |
68
+ | Product | Required for e-commerce AI visibility | Product pages | P2 |
69
+ | LocalBusiness | Required for local AI search and map packs | Location pages | P2 |
70
+ | SpeakableSpecification | Signals to Google which content is suitable for voice / AI reading | Articles | P3 |
71
+
72
+ > Note: Only list types that apply to this site's actual page types. Remove rows that don't apply.
73
+
74
+ ---
75
+
76
+ ## Schema Coverage Score
77
+
78
+ | Metric | Value | Notes |
79
+ |---|---|---|
80
+ | Schema types present | <!-- N --> | |
81
+ | Schema types with no errors | <!-- N --> | |
82
+ | Schema types with errors | <!-- N --> | |
83
+ | Coverage completeness | <!-- N% --> | <!-- types complete / total types found --> |
84
+ | Schema score | <!-- 0–100 --> | |
85
+
86
+ ---
87
+
88
+ ## Implementation Priority Table
89
+
90
+ | Priority | Schema Type | Action | Effort | Expected Impact |
91
+ |---|---|---|---|---|
92
+ | P0 | <!-- type --> | <!-- Add / Fix / Remove --> | <!-- Low / Medium / High --> | <!-- Critical / High --> |
93
+ | P0 | <!-- type --> | <!-- Add / Fix / Remove --> | <!-- Low / Medium / High --> | <!-- Critical / High --> |
94
+ | P1 | <!-- type --> | <!-- Add / Fix / Remove --> | <!-- Low / Medium / High --> | <!-- High --> |
95
+ | P1 | <!-- type --> | <!-- Add / Fix / Remove --> | <!-- Low / Medium / High --> | <!-- High --> |
96
+ | P2 | <!-- type --> | <!-- Add / Fix / Remove --> | <!-- Low / Medium / High --> | <!-- Medium --> |
97
+ | P3 | <!-- type --> | <!-- Add / Fix / Remove --> | <!-- Low / Medium / High --> | <!-- Low --> |
98
+
99
+ ---
100
+
101
+ ## Code Snippets: Recommended Additions
102
+
103
+ ### Organization (add to homepage `<head>`)
104
+
105
+ ```json
106
+ {
107
+ "@context": "https://schema.org",
108
+ "@type": "Organization",
109
+ "name": "<!-- Company Name -->",
110
+ "url": "<!-- https://domain.com -->",
111
+ "logo": "<!-- https://domain.com/logo.png -->",
112
+ "sameAs": [
113
+ "<!-- https://twitter.com/handle -->",
114
+ "<!-- https://linkedin.com/company/slug -->",
115
+ "<!-- https://github.com/org -->"
116
+ ],
117
+ "contactPoint": {
118
+ "@type": "ContactPoint",
119
+ "contactType": "customer support",
120
+ "email": "<!-- support@domain.com -->"
121
+ }
122
+ }
123
+ ```
124
+
125
+ ### FAQPage (add to FAQ or service pages)
126
+
127
+ ```json
128
+ {
129
+ "@context": "https://schema.org",
130
+ "@type": "FAQPage",
131
+ "mainEntity": [
132
+ {
133
+ "@type": "Question",
134
+ "name": "<!-- Question 1? -->",
135
+ "acceptedAnswer": {
136
+ "@type": "Answer",
137
+ "text": "<!-- Answer 1. Be specific and self-contained. -->"
138
+ }
139
+ },
140
+ {
141
+ "@type": "Question",
142
+ "name": "<!-- Question 2? -->",
143
+ "acceptedAnswer": {
144
+ "@type": "Answer",
145
+ "text": "<!-- Answer 2. Be specific and self-contained. -->"
146
+ }
147
+ }
148
+ ]
149
+ }
150
+ ```
151
+
152
+ ### Article (add to blog post pages)
153
+
154
+ ```json
155
+ {
156
+ "@context": "https://schema.org",
157
+ "@type": "Article",
158
+ "headline": "<!-- Article title -->",
159
+ "author": {
160
+ "@type": "Person",
161
+ "name": "<!-- Author Name -->",
162
+ "url": "<!-- https://domain.com/author/slug -->"
163
+ },
164
+ "datePublished": "<!-- YYYY-MM-DD -->",
165
+ "dateModified": "<!-- YYYY-MM-DD -->",
166
+ "publisher": {
167
+ "@type": "Organization",
168
+ "name": "<!-- Company Name -->",
169
+ "logo": {
170
+ "@type": "ImageObject",
171
+ "url": "<!-- https://domain.com/logo.png -->"
172
+ }
173
+ },
174
+ "image": "<!-- https://domain.com/article-image.jpg -->",
175
+ "description": "<!-- 155-character description -->"
176
+ }
177
+ ```