@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.
- package/assets/worker-kits/growthub-geo-seo-v1/.env.example +12 -0
- package/assets/worker-kits/growthub-geo-seo-v1/QUICKSTART.md +138 -0
- package/assets/worker-kits/growthub-geo-seo-v1/brands/NEW-CLIENT.md +104 -0
- package/assets/worker-kits/growthub-geo-seo-v1/brands/_template/brand-kit.md +116 -0
- package/assets/worker-kits/growthub-geo-seo-v1/brands/growthub/brand-kit.md +117 -0
- package/assets/worker-kits/growthub-geo-seo-v1/bundles/growthub-geo-seo-v1.json +54 -0
- package/assets/worker-kits/growthub-geo-seo-v1/docs/geo-seo-fork-integration.md +244 -0
- package/assets/worker-kits/growthub-geo-seo-v1/docs/pdf-report-layer.md +139 -0
- package/assets/worker-kits/growthub-geo-seo-v1/docs/scoring-methodology.md +230 -0
- package/assets/worker-kits/growthub-geo-seo-v1/docs/subagent-dispatch.md +273 -0
- package/assets/worker-kits/growthub-geo-seo-v1/examples/citability-sample.md +155 -0
- package/assets/worker-kits/growthub-geo-seo-v1/examples/geo-audit-sample.md +126 -0
- package/assets/worker-kits/growthub-geo-seo-v1/examples/pdf-report-sample.md +207 -0
- package/assets/worker-kits/growthub-geo-seo-v1/examples/prospect-proposal-sample.md +184 -0
- package/assets/worker-kits/growthub-geo-seo-v1/growthub-meta/README.md +124 -0
- package/assets/worker-kits/growthub-geo-seo-v1/growthub-meta/kit-standard.md +116 -0
- package/assets/worker-kits/growthub-geo-seo-v1/kit.json +102 -0
- package/assets/worker-kits/growthub-geo-seo-v1/output/README.md +114 -0
- package/assets/worker-kits/growthub-geo-seo-v1/output-standards.md +143 -0
- package/assets/worker-kits/growthub-geo-seo-v1/runtime-assumptions.md +175 -0
- package/assets/worker-kits/growthub-geo-seo-v1/setup/check-deps.sh +80 -0
- package/assets/worker-kits/growthub-geo-seo-v1/setup/clone-fork.sh +56 -0
- package/assets/worker-kits/growthub-geo-seo-v1/setup/verify-env.mjs +152 -0
- package/assets/worker-kits/growthub-geo-seo-v1/skills.md +359 -0
- package/assets/worker-kits/growthub-geo-seo-v1/templates/brand-visibility-report.md +101 -0
- package/assets/worker-kits/growthub-geo-seo-v1/templates/citability-analysis.md +131 -0
- package/assets/worker-kits/growthub-geo-seo-v1/templates/client-proposal.md +172 -0
- package/assets/worker-kits/growthub-geo-seo-v1/templates/content-analysis.md +136 -0
- package/assets/worker-kits/growthub-geo-seo-v1/templates/crawler-access-report.md +115 -0
- package/assets/worker-kits/growthub-geo-seo-v1/templates/geo-audit-brief.md +114 -0
- package/assets/worker-kits/growthub-geo-seo-v1/templates/geo-score-summary.md +113 -0
- package/assets/worker-kits/growthub-geo-seo-v1/templates/llmstxt-plan.md +173 -0
- package/assets/worker-kits/growthub-geo-seo-v1/templates/remediation-roadmap.md +150 -0
- package/assets/worker-kits/growthub-geo-seo-v1/templates/schema-validation.md +177 -0
- package/assets/worker-kits/growthub-geo-seo-v1/templates/technical-foundations.md +108 -0
- package/assets/worker-kits/growthub-geo-seo-v1/validation-checklist.md +139 -0
- package/assets/worker-kits/growthub-geo-seo-v1/workers/geo-seo-operator/CLAUDE.md +320 -0
- 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
|
+
```
|