@growthub/cli 0.3.52 → 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,273 @@
1
+ # Subagent Dispatch — 5-Parallel Orchestration
2
+
3
+ ---
4
+
5
+ ## Overview
6
+
7
+ Phase 2 of the GEO audit runs 5 specialized subagents in parallel. Each subagent receives the Phase 1 fetch data as input and returns a component score (0–100) plus a findings list. The operator synthesizes all 5 results into the composite GEO Score.
8
+
9
+ ---
10
+
11
+ ## When Phase 2 Triggers
12
+
13
+ Phase 2 begins after Phase 1 fetch completes successfully.
14
+
15
+ **Phase 1 required outputs (all must be present before dispatching):**
16
+
17
+ - robots.txt contents (or confirmed 404)
18
+ - llms.txt status (present/missing/malformed)
19
+ - Rendered page HTML
20
+ - HTTP response headers
21
+ - Page word count and heading structure
22
+ - JSON-LD structured data (or confirmed absent)
23
+
24
+ If Phase 1 fails to fetch the target URL entirely (connection refused, server error), stop and report the error. Do not dispatch Phase 2 with no data.
25
+
26
+ If Phase 1 produces partial data (e.g., llms.txt returns 404), dispatch Phase 2 anyway and note the missing data in the relevant subagent's output.
27
+
28
+ ---
29
+
30
+ ## Subagent Definitions
31
+
32
+ ### 1. geo-ai-visibility
33
+
34
+ **File:** `agents/geo-ai-visibility.md` (in fork)
35
+ **Scope:** AI crawler access and citation format quality
36
+ **GEO Score weight:** 25%
37
+
38
+ **Inputs from Phase 1:**
39
+ - robots.txt full text
40
+ - llms.txt full text (or `null` if missing)
41
+ - llms-full.txt status
42
+ - X-Robots-Tag header value
43
+ - Page canonical URL
44
+
45
+ **What it evaluates:**
46
+
47
+ | Signal | Method | Score Contribution |
48
+ |---|---|---|
49
+ | GPTBot access | Parse `User-agent: GPTBot` in robots.txt | High |
50
+ | ClaudeBot access | Parse `User-agent: ClaudeBot` | High |
51
+ | PerplexityBot access | Parse `User-agent: PerplexityBot` | High |
52
+ | Google-Extended access | Parse `User-agent: Google-Extended` | High |
53
+ | Bingbot access | Parse `User-agent: Bingbot` | Medium |
54
+ | Applebot-Extended access | Parse `User-agent: Applebot-Extended` | Medium |
55
+ | Anthropic-AI access | Parse `User-agent: anthropic-ai` | Medium |
56
+ | cohere-ai access | Parse `User-agent: cohere-ai` | Medium |
57
+ | Meta-ExternalFetcher access | Parse `User-agent: meta-externalagent` | Low |
58
+ | YouBot access | Parse `User-agent: YouBot` | Low |
59
+ | DuckAssistBot access | Parse `User-agent: DuckAssistBot` | Low |
60
+ | Scrapy access | Parse `User-agent: Scrapy` | Low |
61
+ | CCBot access | Parse `User-agent: CCBot` | Low |
62
+ | ia_archiver access | Parse `User-agent: ia_archiver` | Low |
63
+ | llms.txt present | File exists and returns 200 | High |
64
+ | llms.txt valid format | No parsing errors | Medium |
65
+ | llms-full.txt present | File exists | Medium |
66
+ | Citation format quality | Clean canonical, no JS-only content walls | High |
67
+ | X-Robots-Tag noai | Penalize heavily if present | Critical |
68
+
69
+ **Output format:**
70
+ ```json
71
+ {
72
+ "subagent": "geo-ai-visibility",
73
+ "score": 0-100,
74
+ "crawler_results": { "GPTBot": "allowed|blocked|partial", ... },
75
+ "llms_txt_present": true|false,
76
+ "llms_full_txt_present": true|false,
77
+ "top_findings": ["finding 1", "finding 2", "finding 3"]
78
+ }
79
+ ```
80
+
81
+ ---
82
+
83
+ ### 2. geo-content
84
+
85
+ **File:** `agents/geo-content.md` (in fork)
86
+ **Scope:** E-E-A-T signals, answer block quality, content self-containment
87
+ **GEO Score weight:** 20%
88
+
89
+ **Inputs from Phase 1:**
90
+ - Rendered page HTML (full text)
91
+ - Page word count
92
+ - Heading hierarchy (H1, H2, H3 counts)
93
+ - Any author markup found
94
+
95
+ **What it evaluates:**
96
+ - Experience signals (case studies, original data, first-person examples)
97
+ - Expertise signals (author bylines, credentials, domain terminology depth)
98
+ - Authoritativeness signals (external citations, authority domain references)
99
+ - Trustworthiness signals (HTTPS confirmed in Phase 1, contact info, privacy policy presence)
100
+ - Answer block quality (5-metric citability algorithm — see `docs/scoring-methodology.md`)
101
+
102
+ **Output format:**
103
+ ```json
104
+ {
105
+ "subagent": "geo-content",
106
+ "score": 0-100,
107
+ "eeat_scores": { "experience": 0-10, "expertise": 0-10, "authoritativeness": 0-10, "trustworthiness": 0-10 },
108
+ "citability_score": 0-100,
109
+ "top_findings": ["finding 1", "finding 2", "finding 3"]
110
+ }
111
+ ```
112
+
113
+ ---
114
+
115
+ ### 3. geo-platform-analysis
116
+
117
+ **File:** `agents/geo-platform-analysis.md` (in fork)
118
+ **Scope:** Readiness for 4 major AI search platforms
119
+ **GEO Score weight:** 10%
120
+
121
+ **Inputs from Phase 1:**
122
+ - Page HTML structure
123
+ - Schema markup found
124
+ - llms.txt status (from geo-ai-visibility)
125
+ - Content signals (from geo-content)
126
+
127
+ **What it evaluates:**
128
+
129
+ | Platform | Key Signals Checked |
130
+ |---|---|
131
+ | ChatGPT (Browse mode) | Clean URL, no crawler block, answer-block format, Bing indexability |
132
+ | Perplexity AI | Direct URL crawlability, self-contained paragraphs, citation format |
133
+ | Google AI Overviews | FAQPage schema, E-E-A-T signals, featured snippet optimization, structured data |
134
+ | Gemini | Google entity graph signals, Knowledge Panel readiness, broad schema coverage |
135
+
136
+ **Output format:**
137
+ ```json
138
+ {
139
+ "subagent": "geo-platform-analysis",
140
+ "score": 0-100,
141
+ "platform_scores": {
142
+ "chatgpt": 0-100,
143
+ "perplexity": 0-100,
144
+ "google_ai_overviews": 0-100,
145
+ "gemini": 0-100
146
+ },
147
+ "top_findings": ["finding 1", "finding 2", "finding 3"]
148
+ }
149
+ ```
150
+
151
+ ---
152
+
153
+ ### 4. geo-schema
154
+
155
+ **File:** `agents/geo-schema.md` (in fork)
156
+ **Scope:** Structured data coverage and validation
157
+ **GEO Score weight:** 10%
158
+
159
+ **Inputs from Phase 1:**
160
+ - All JSON-LD blocks from page source
161
+ - Microdata and RDFa markup (if present)
162
+ - Page type determination
163
+
164
+ **What it evaluates:**
165
+ - Which schema types are present
166
+ - Required property completeness for each type
167
+ - Validation errors (missing required fields, incorrect value types)
168
+ - Missing recommended schema types for the detected page type
169
+ - Schema richness score (types × completeness)
170
+
171
+ **Output format:**
172
+ ```json
173
+ {
174
+ "subagent": "geo-schema",
175
+ "score": 0-100,
176
+ "types_found": ["Organization", "WebSite"],
177
+ "types_missing": ["FAQPage", "Article", "BreadcrumbList"],
178
+ "validation_errors": [
179
+ { "type": "Organization", "property": "contactPoint", "error": "missing required property" }
180
+ ],
181
+ "top_findings": ["finding 1", "finding 2", "finding 3"]
182
+ }
183
+ ```
184
+
185
+ ---
186
+
187
+ ### 5. geo-technical
188
+
189
+ **File:** `agents/geo-technical.md` (in fork)
190
+ **Scope:** Technical SEO and server health
191
+ **GEO Score weight:** 15%
192
+
193
+ **Inputs from Phase 1:**
194
+ - Full HTTP response headers
195
+ - HTTPS status
196
+ - robots.txt validity
197
+ - sitemap.xml accessibility
198
+ - Page HTML (for Core Web Vitals structural signals)
199
+
200
+ **What it evaluates:**
201
+
202
+ | Signal | Check Method | Weight |
203
+ |---|---|---|
204
+ | HTTPS enforced | HTTP→HTTPS redirect + HSTS header | High |
205
+ | HSTS present | `Strict-Transport-Security` header | Medium |
206
+ | Mobile viewport | `<meta name="viewport">` present | Medium |
207
+ | robots.txt valid syntax | Parser runs without errors | High |
208
+ | Sitemap in robots.txt | `Sitemap:` directive present | Medium |
209
+ | sitemap.xml accessible | HTTP 200 response | Medium |
210
+ | llms.txt accessible | HTTP 200 response | High |
211
+ | Canonical tag present | `<link rel="canonical">` in source | Medium |
212
+ | Render-blocking scripts | `<script>` in `<head>` without defer/async | Medium |
213
+ | Images have dimensions | `width` and `height` attributes | Low |
214
+ | Content-Encoding | gzip or brotli present | Low |
215
+ | Cache-Control | public caching enabled | Low |
216
+
217
+ **Output format:**
218
+ ```json
219
+ {
220
+ "subagent": "geo-technical",
221
+ "score": 0-100,
222
+ "https_enforced": true|false,
223
+ "hsts_present": true|false,
224
+ "mobile_ready": true|false,
225
+ "robots_valid": true|false,
226
+ "sitemap_accessible": true|false,
227
+ "critical_issues": ["issue 1", "issue 2"],
228
+ "top_findings": ["finding 1", "finding 2", "finding 3"]
229
+ }
230
+ ```
231
+
232
+ ---
233
+
234
+ ## Collecting Results
235
+
236
+ After all 5 subagents return, the operator:
237
+
238
+ 1. Validates that all 5 responses are present
239
+ 2. Extracts the `score` from each response
240
+ 3. Applies the GEO Score formula (see `docs/scoring-methodology.md`)
241
+ 4. Collects all `top_findings` arrays into a unified findings list
242
+ 5. Ranks findings by impact for the Remediation Roadmap
243
+
244
+ ---
245
+
246
+ ## Error Handling
247
+
248
+ If a subagent fails or returns incomplete data:
249
+
250
+ | Scenario | Action |
251
+ |---|---|
252
+ | Subagent returns no score | Use 50 as neutral default. Flag component as `data-gap` in GeoScoreSummary. |
253
+ | robots.txt fetch fails (404/500) | Mark all crawler statuses as "unknown (robots.txt inaccessible)". Do not assume blocked or allowed. |
254
+ | llms.txt returns 500 error | Treat as "missing" rather than "blocked". Note the error in CrawlerAccessReport. |
255
+ | Page fetch fails entirely | Stop Phase 2. Report to user. Do not produce scores. |
256
+ | One subagent times out | Log the timeout. Use 50 as default for that component. Note in output. |
257
+
258
+ Never invent scores. A `data-gap` flag is more useful than a fabricated number.
259
+
260
+ ---
261
+
262
+ ## Brand Authority (Separate Pass)
263
+
264
+ Brand Authority (20% weight) is not a Phase 2 parallel subagent — it is a separate `/geo brands` command pass that runs `scripts/brand_scanner.py` against the 8 target platforms.
265
+
266
+ Run it after Phase 2 completes:
267
+ ```bash
268
+ python scripts/brand_scanner.py --brand "Client Name" --domain example.com
269
+ ```
270
+
271
+ Or trigger it via: `/geo brands`
272
+
273
+ The Brand Authority score is then incorporated into the final GEO Score calculation.
@@ -0,0 +1,155 @@
1
+ # Citability Analysis — Sample (GrowthHub.com)
2
+
3
+ > Example: `examples/citability-sample.md`
4
+ > This is a filled sample based on a fictitious citability analysis of thegrowthub.com.
5
+ > Use this as a reference for what a completed CitabilityAnalysis looks like in production.
6
+
7
+ ---
8
+
9
+ ## URL Audited
10
+
11
+ | Field | Value |
12
+ |---|---|
13
+ | Target URL | https://thegrowthub.com |
14
+ | Client | Growthub |
15
+ | Analysis Date | 2026-04-14 |
16
+ | Execution Mode | local-fork |
17
+ | Script Used | scripts/citability_scorer.py |
18
+
19
+ ---
20
+
21
+ ## Citability Score
22
+
23
+ | Metric | Value |
24
+ |---|---|
25
+ | Raw Score | **71 / 100** |
26
+ | Letter Grade | **B** |
27
+ | Percentile Estimate | Top 33% of audited pages |
28
+ | Score Date | 2026-04-14 |
29
+ | Previous Score | N/A (first audit) |
30
+
31
+ ---
32
+
33
+ ## Component Breakdown
34
+
35
+ | Metric | Raw Score (0–100) | Weight | Weighted Score | Status |
36
+ |---|---|---|---|---|
37
+ | Answer Block Quality | 82 | 30% | 24.6 | Strong |
38
+ | Self-Containment | 74 | 25% | 18.5 | Adequate |
39
+ | Structural Readability | 79 | 20% | 15.8 | Strong |
40
+ | Statistical Density | 47 | 15% | 7.05 | Weak |
41
+ | Uniqueness Signals | 52 | 10% | 5.2 | Adequate |
42
+ | **TOTAL** | | **100%** | **71.15** | **B** |
43
+
44
+ ---
45
+
46
+ ## Answer Block Quality Detail
47
+
48
+ **Score: 82 / 100**
49
+
50
+ Paragraphs evaluated: 24
51
+
52
+ | Paragraph # | Subject Clear | Evidence Present | No Unresolved Pronouns | Score |
53
+ |---|---|---|---|---|
54
+ | 1 (Hero intro) | Yes | No | Yes | 7 |
55
+ | 2 (Problem statement) | Yes | Yes | Yes | 9 |
56
+ | 3 (Solution description) | Yes | Yes | No | 7 |
57
+ | 4 (Feature 1) | Yes | Yes | Yes | 9 |
58
+ | 5 (Feature 2) | Yes | No | No | 5 |
59
+ | 6 (Social proof) | Yes | Yes | Yes | 10 |
60
+
61
+ Average across 24 paragraphs: 8.2 / 10 (normalized to 82 / 100)
62
+
63
+ **Best answerable paragraph:**
64
+ > "GrowthHub's AI-enabled worker kits reduce campaign production time by 65% — from 12 hours of manual brief-writing and asset coordination to 4 hours of structured operator execution. Each kit ships with pre-built templates, brand kit integration, and a step-by-step workflow that any team member can follow without prior AI training."
65
+
66
+ **Weakest paragraph (needs rewrite):**
67
+ > "It integrates seamlessly with your existing tools. This means you don't have to change how you work — it just makes everything faster and more consistent for your team."
68
+
69
+ *Problem: "It" and "This" in the opening sentences are unresolved. What does "it" refer to? AI systems cannot cleanly cite this paragraph.*
70
+
71
+ ---
72
+
73
+ ## Self-Containment Check
74
+
75
+ | Signal | Value | Status |
76
+ |---|---|---|
77
+ | Total word count | 1,847 words | Good (within 800–2,500 range) |
78
+ | Pronoun count | 94 instances | |
79
+ | Noun count | 412 instances | |
80
+ | Pronoun-to-noun ratio | 0.23 : 1 | Good (< 0.3) |
81
+ | Optimal word count range | 800–2,500 words | On target |
82
+ | Contextual dependency score | 27 / 100 | Low dependency — good |
83
+
84
+ **Self-containment score: 74 / 100**
85
+
86
+ Primary drag: 11 paragraphs open with "This," "It," or "They" without a prior noun anchor in the same sentence. These are individually readable but drop the raw self-containment score.
87
+
88
+ ---
89
+
90
+ ## Structural Readability Check
91
+
92
+ | Signal | Status | Notes |
93
+ |---|---|---|
94
+ | H1 present | Yes | "Growthub — AI-Enabled Growth Infrastructure" |
95
+ | H2 count | 7 | Well-structured — above the ≥2 minimum |
96
+ | H3 count | 12 | Good depth |
97
+ | Numbered lists | Yes | 3 numbered lists found |
98
+ | Bulleted lists | Yes | 8 bulleted lists found |
99
+ | Average paragraph length | 77 words | Well within the ≤150 word target |
100
+ | Wall-of-text sections | No | Longest unbroken block is 134 words (acceptable) |
101
+
102
+ **Structural readability score: 79 / 100**
103
+
104
+ Strong performance. Minor deduction: 2 of the 7 H2 sections have only a single H3 child — slight structural thinness.
105
+
106
+ ---
107
+
108
+ ## Statistical Density Check
109
+
110
+ | Signal | Value | Status |
111
+ |---|---|---|
112
+ | Percentage references | 4 instances | Low |
113
+ | Numbered data points | 6 instances | Low |
114
+ | Dollar/currency figures | 0 instances | Missing |
115
+ | Year/date references | 3 instances | |
116
+ | Data points per 1,000 words | 7.0 | Slightly below optimal (8–15) |
117
+ | Statistical density score | 47 / 100 | Weak |
118
+
119
+ **Key finding:** Statistical density is the weakest component. The homepage copy is benefit-focused but lacks specific performance numbers, client results, or category statistics. Adding 6–8 concrete data points (e.g., "reduces production time by 65%," "used by 120+ agencies") would push this score above 70.
120
+
121
+ ---
122
+
123
+ ## Uniqueness Signals Check
124
+
125
+ | Signal | Present | Example |
126
+ |---|---|---|
127
+ | First-party study or research | No | — |
128
+ | Proprietary data references | No | — |
129
+ | Original methodology | Yes | "Worker kit architecture" is a proprietary concept defined on the page |
130
+ | Unique terminology | Yes | "operator execution," "worker kit," "GEO Score" — distinctive phrasing |
131
+ | Non-generic claims | Partial | "AI-enabled growth infrastructure" is specific but unquantified |
132
+
133
+ **Uniqueness score: 52 / 100**
134
+
135
+ Growthub has genuine intellectual property in its worker kit architecture. The terminology is distinctive. The score is limited by the absence of original research or first-party data claims.
136
+
137
+ ---
138
+
139
+ ## Key Findings
140
+
141
+ 1. **Answer Block Quality is the standout strength.** The homepage copy is well-structured for AI citation — paragraphs are clear, evidence-backed, and readable. The top 40% of paragraphs score 9–10/10 individually.
142
+
143
+ 2. **Statistical Density is the primary drag on the citability score.** With 7.0 data points per 1,000 words (target: 8–15), the page is slightly data-thin. Adding quantified client results or performance benchmarks would be the highest-leverage single edit.
144
+
145
+ 3. **Self-containment is solid but improvable.** The pronoun-to-noun ratio of 0.23 is healthy, but 11 paragraphs open with unresolved pronoun references. Fixing these 11 opening sentences would add approximately 5–6 points to the self-containment score.
146
+
147
+ ---
148
+
149
+ ## Top 3 Improvements
150
+
151
+ | Priority | Action | Expected Score Gain | Effort |
152
+ |---|---|---|---|
153
+ | 1 | Add 6 quantified performance claims (%, numbers, client results) throughout the homepage | +8 to +12 points (Statistical Density) | Medium — 2–3 hours of content editing |
154
+ | 2 | Rewrite 11 paragraph openers that begin with "It," "This," or "They" to use explicit noun subjects | +5 to +7 points (Self-Containment + Answer Block Quality) | Low — 45 minutes |
155
+ | 3 | Publish one original data report or methodology explainer (e.g., "Worker Kit Performance Report Q1 2026") | +4 to +6 points (Uniqueness Signals) | High — 1–2 weeks of content production |
@@ -0,0 +1,126 @@
1
+ # GEO Audit Brief — Sample (GrowthHub.com)
2
+
3
+ > Example: `examples/geo-audit-sample.md`
4
+ > This is a filled sample based on a fictitious full audit run of thegrowthub.com.
5
+ > Use this as a reference for what a completed GeoAuditBrief looks like in production.
6
+
7
+ ---
8
+
9
+ ## Project Overview
10
+
11
+ | Field | Value |
12
+ |---|---|
13
+ | Client | Growthub |
14
+ | Target URL | https://thegrowthub.com |
15
+ | Audit Scope | Full audit — all 6 GEO components |
16
+ | Execution Mode | local-fork |
17
+ | Primary Command | `/geo audit` |
18
+ | Requested By | Antonio |
19
+ | Date | 2026-04-14 |
20
+ | Brand Kit | brands/growthub/brand-kit.md |
21
+ | Project Slug | studio-launch-reference |
22
+
23
+ ---
24
+
25
+ ## Audit Objective
26
+
27
+ Establish a baseline GEO Score for thegrowthub.com as the studio launch reference audit. Determine which AI search platforms can currently access and cite Growthub content, identify the top structural barriers to AI citability, and produce a complete remediation roadmap that can serve as both an internal reference and a client-facing demo of the GEO SEO Studio kit.
28
+
29
+ ---
30
+
31
+ ## Current Visibility Context
32
+
33
+ **Known strengths:**
34
+ - Site is on HTTPS with a valid SSL certificate
35
+ - robots.txt exists and has valid syntax
36
+ - Core Web Vitals signals are healthy based on PageSpeed data from March 2026
37
+ - Homepage has basic Organization schema in JSON-LD
38
+
39
+ **Known concerns:**
40
+ - llms.txt has never been created — AI crawlers have no explicit content guidance
41
+ - GPTBot and ClaudeBot were found to be implicitly allowed but not explicitly listed in robots.txt
42
+ - No FAQPage or Article schema on blog posts
43
+ - Content citability has not been measured previously — pronoun density unknown
44
+
45
+ **Prior audit outputs:**
46
+ | Date | Audit Type | Output Location |
47
+ |---|---|---|
48
+ | N/A | First audit | N/A |
49
+
50
+ ---
51
+
52
+ ## Competitor Reference URLs
53
+
54
+ | Competitor | URL | Notes |
55
+ |---|---|---|
56
+ | Jasper.ai | https://jasper.ai | AI content tool competitor — strong brand authority |
57
+ | Copy.ai | https://copy.ai | High GEO Score expected — large content library |
58
+ | Writesonic | https://writesonic.com | Active blog with strong E-E-A-T signals |
59
+
60
+ ---
61
+
62
+ ## Existing Assets
63
+
64
+ | Asset | Status | Location |
65
+ |---|---|---|
66
+ | robots.txt | Present | https://thegrowthub.com/robots.txt |
67
+ | sitemap.xml | Present | https://thegrowthub.com/sitemap.xml |
68
+ | llms.txt | Missing | https://thegrowthub.com/llms.txt (404) |
69
+ | llms-full.txt | Missing | https://thegrowthub.com/llms-full.txt (404) |
70
+ | Existing schema markup | JSON-LD (Organization only) | Homepage `<head>` |
71
+ | Previous GEO report | No | N/A |
72
+
73
+ ---
74
+
75
+ ## Command Selection Plan
76
+
77
+ **Primary command:** `/geo audit`
78
+
79
+ **Rationale:** Full audit selected because this is the baseline reference run for the studio kit. All 6 components must be scored, all 14 crawlers must be checked, and the full remediation roadmap must be produced. A quick scan would not produce the depth required for a reference example.
80
+
81
+ **Secondary commands (full audit sequence):**
82
+
83
+ | Command | Purpose | Sequence |
84
+ |---|---|---|
85
+ | `/geo audit` | Full composite audit entrypoint | 1 |
86
+ | `/geo crawlers` | AI crawler permission check — verify robots.txt rules per crawler | 2 |
87
+ | `/geo brands` | Brand authority scan — 8 platforms | 3 |
88
+ | `/geo schema` | Structured data validation — full JSON-LD review | 4 |
89
+ | `/geo technical` | Technical health check — headers, HTTPS, Core Web Vitals signals | 5 |
90
+ | `/geo llmstxt` | llms.txt generation plan — file does not exist | 6 |
91
+ | `/geo report` | Final Markdown report compilation | 7 |
92
+
93
+ ---
94
+
95
+ ## Delivery Requirements
96
+
97
+ | Requirement | Value |
98
+ |---|---|
99
+ | Delivery format | Both (Markdown + PDF) |
100
+ | PDF report needed | Yes — branded PDF for internal stakeholder reference |
101
+ | Client-facing proposal | No — internal reference only |
102
+ | Output deadline | Same-day (reference run) |
103
+ | Stakeholder recipient | Antonio |
104
+
105
+ ---
106
+
107
+ ## Success Criteria
108
+
109
+ - [x] GEO Score composite produced with all 6 components scored
110
+ - [x] Crawler access status confirmed for all 14 AI crawlers
111
+ - [x] Citability analysis completed with letter grade assigned
112
+ - [x] At least 5 actionable remediation items identified and prioritized
113
+ - [x] llms.txt plan produced — file does not exist, full plan required
114
+ - [x] Remediation roadmap covers 4-week sprint with owner assignments
115
+ - [x] All output files saved to `output/growthub/studio-launch-reference/`
116
+ - [x] Brand kit DELIVERABLES LOG updated
117
+
118
+ ---
119
+
120
+ ## Audit Notes (Operator)
121
+
122
+ This audit was run in local-fork mode with geo-seo-claude cloned at `~/geo-seo-claude`. Python 3.11 was used. All 14 /geo skills confirmed present in `skills/` directory. Playwright chromium installed and verified. `fetch_page.py` ran successfully against thegrowthub.com — page renders fully in Playwright (no JS rendering issues detected).
123
+
124
+ Phase 2 subagents dispatched in parallel at 14:03:22. All 5 subagents returned results within 90 seconds. Brand authority scan (`/geo brands`) run separately as sequential command — completed in 45 seconds using `brand_scanner.py`.
125
+
126
+ PDF generation triggered at end of session using `python scripts/generate_pdf_report.py --input output/growthub/studio-launch-reference/geo_score_data.json`.