@hanzlaa/rcode 4.3.3 → 4.4.1
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/CONTRIBUTING.md +1 -1
- package/README.md +28 -5
- package/cli/doctor.js +21 -3
- package/cli/generate-command-skills.cjs +1 -1
- package/cli/index.js +5 -1
- package/cli/install.js +7 -9
- package/cli/postinstall.js +22 -2
- package/cli/uninstall.js +48 -6
- package/dist/rcode.js +202 -203
- package/package.json +13 -23
- package/rcode/agents/rcode-codebase-mapper.md +12 -0
- package/rcode/agents/rcode-phase-researcher.md +13 -0
- package/rcode/agents/rcode-project-researcher.md +32 -0
- package/rcode/agents/rcode-roadmapper.md +15 -0
- package/rcode/agents/rules/planner/common-patterns.md +40 -0
- package/rcode/bin/lib/roadmap.cjs +184 -11
- package/rcode/bin/rcode-hooks.cjs +102 -151
- package/rcode/bin/rcode-tools.cjs +669 -55
- package/rcode/commands/lazy.md +10 -0
- package/rcode/data/intent-table.json +87 -0
- package/rcode/modules/seo.yaml +22 -0
- package/rcode/references/project-types.yaml +75 -0
- package/rcode/references/verb-dictionary.md +1 -1
- package/rcode/skills/SKILLS_INDEX.md +18 -1
- package/rcode/skills/actions/1-analysis/rcode-prfaq/SKILL.md +1 -1
- package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/SKILL.md +4 -21
- package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/templates/heartbeat.sh +0 -0
- package/rcode/skills/actions/4-implementation/rcode-scaffold-project/SKILL.md +60 -1
- package/rcode/skills/core/rcode-init/scripts/__pycache__/rcode_init.cpython-38.pyc +0 -0
- package/rcode/skills/core/rcode-init/scripts/tests/__pycache__/test_rcode_init.cpython-38.pyc +0 -0
- package/rcode/skills/seo/module.yaml +20 -0
- package/rcode/skills/seo/on-page-seo-auditor/SKILL.md +308 -0
- package/rcode/skills/seo/on-page-seo-auditor/references/audit-example.md +109 -0
- package/rcode/skills/seo/on-page-seo-auditor/references/audit-templates.md +427 -0
- package/rcode/skills/seo/on-page-seo-auditor/references/bulk-audit-playbook.md +116 -0
- package/rcode/skills/seo/on-page-seo-auditor/references/scoring-rubric.md +525 -0
- package/rcode/skills/seo/rank-and-rent-local-seo/SKILL.md +94 -0
- package/rcode/skills/seo/rank-and-rent-local-seo/rules/city-matrix-and-pages.md +76 -0
- package/rcode/skills/seo/rank-and-rent-local-seo/rules/monetization.md +70 -0
- package/rcode/skills/seo/rank-and-rent-local-seo/rules/niche-selection.md +60 -0
- package/rcode/skills/seo/rank-and-rent-local-seo/rules/subniche-discovery.md +66 -0
- package/rcode/skills/seo/rank-and-rent-local-seo/templates/service-city-page.md +36 -0
- package/rcode/skills/seo/rank-and-rent-local-seo/templates/subniche-research-prompt.md +34 -0
- package/rcode/skills/seo/seo-audit/SKILL.md +412 -0
- package/rcode/skills/seo/seo-audit/evals/evals.json +136 -0
- package/rcode/skills/seo/seo-audit/references/ai-writing-detection.md +200 -0
- package/rcode/skills/seo/seo-content-factory/SKILL.md +130 -0
- package/rcode/skills/seo/seo-content-factory/rules/agents.md +80 -0
- package/rcode/skills/seo/seo-content-factory/rules/herdr-wave-mapping.md +80 -0
- package/rcode/skills/seo/seo-content-factory/rules/pipeline.md +102 -0
- package/rcode/skills/seo/seo-content-factory/rules/programmatic-pages.md +107 -0
- package/rcode/skills/seo/seo-content-factory/rules/quality-gates.md +68 -0
- package/rcode/skills/seo/seo-content-factory/rules/weekly-cadence.md +61 -0
- package/rcode/skills/seo/seo-content-factory/templates/BACKLOG.md +23 -0
- package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/01-funnel-A1-A4.md +63 -0
- package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/02-fanout-editorial-A5-A6-A8.md +28 -0
- package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/03-fanout-programmatic-A7-A6-A8.md +25 -0
- package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/04-loop-A9-A10.md +34 -0
- package/rcode/skills/seo/seo-content-factory/templates/article.mdx +39 -0
- package/rcode/skills/seo/seo-content-factory/templates/cluster.schema.json +52 -0
- package/rcode/skills/seo/seo-content-factory/templates/content-brief.md +51 -0
- package/rcode/skills/seo/seo-content-factory/templates/jsonld-builders.ts +49 -0
- package/rcode/skills/seo/seo-content-factory/templates/keywords.csv +13 -0
- package/rcode/skills/seo/seo-content-factory/templates/programmatic-page.tsx +58 -0
- package/rcode/skills/seo/seo-content-writer/SKILL.md +263 -0
- package/rcode/skills/seo/seo-content-writer/references/content-structure-templates.md +875 -0
- package/rcode/skills/seo/seo-content-writer/references/instructions-detail.md +239 -0
- package/rcode/skills/seo/seo-content-writer/references/seo-writing-checklist.md +250 -0
- package/rcode/skills/seo/seo-content-writer/references/title-formulas.md +339 -0
- package/rcode/skills/seo/seo-growth-orchestrator/SKILL.md +79 -0
- package/rcode/skills/seo/seo-growth-orchestrator/rules/backlinks.md +29 -0
- package/rcode/skills/seo/seo-growth-orchestrator/rules/content-engine.md +27 -0
- package/rcode/skills/seo/seo-growth-orchestrator/rules/dos-and-donts.md +40 -0
- package/rcode/skills/seo/seo-growth-orchestrator/rules/goals-protocol.md +34 -0
- package/rcode/skills/seo/seo-growth-orchestrator/rules/local-seo-stack.md +35 -0
- package/rcode/skills/seo/seo-growth-orchestrator/rules/mrr-sprint.md +27 -0
- package/rcode/skills/seo/seo-growth-orchestrator/rules/tools.md +19 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/backlink-research.md +29 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/goal-protocol.md +35 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/local-citations.md +24 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/local-city-pages.md +27 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/local-gbp-categories.md +23 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/local-gsc-goldmine.md +27 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/local-review-mining.md +26 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-30day-plan.md +19 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-cut.md +13 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-opportunity-finder.md +17 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-role-model.md +18 -0
- package/rcode/skills/seo/seo-site-builder/SKILL.md +149 -0
- package/rcode/skills/seo/seo-site-builder/rules/01-niche-discovery.md +64 -0
- package/rcode/skills/seo/seo-site-builder/rules/02-deep-research.md +164 -0
- package/rcode/skills/seo/seo-site-builder/rules/03-keyword-strategy.md +82 -0
- package/rcode/skills/seo/seo-site-builder/rules/04-content-plan.md +173 -0
- package/rcode/skills/seo/seo-site-builder/rules/05-site-build.md +187 -0
- package/rcode/skills/seo/seo-site-builder/rules/06-yolo.md +127 -0
- package/rcode/skills/seo/seo-site-builder/templates/article-stub.mdx +62 -0
- package/rcode/skills/seo/seo-site-builder/templates/image-prompt.md +97 -0
- package/rcode/skills/seo/seo-site-builder/templates/keyword-export.md +45 -0
- package/rcode/skills/seo/seo-site-builder/templates/niche-scorecard.md +28 -0
- package/rcode/skills/seo/technical-seo-checker/SKILL.md +329 -0
- package/rcode/skills/seo/technical-seo-checker/references/bulk-audit-playbook.md +118 -0
- package/rcode/skills/seo/technical-seo-checker/references/ecommerce-platform-patterns.md +166 -0
- package/rcode/skills/seo/technical-seo-checker/references/http-status-codes.md +705 -0
- package/rcode/skills/seo/technical-seo-checker/references/llm-crawler-handling.md +257 -0
- package/rcode/skills/seo/technical-seo-checker/references/pre-migration-playbook.md +137 -0
- package/rcode/skills/seo/technical-seo-checker/references/robots-txt-reference.md +717 -0
- package/rcode/skills/seo/technical-seo-checker/references/technical-audit-example.md +169 -0
- package/rcode/skills/seo/technical-seo-checker/references/technical-audit-templates.md +436 -0
- package/rcode/templates/settings-hooks.json +4 -0
- package/rcode/workflows/do.md +16 -0
- package/rcode/workflows/execute-sprint.md +22 -0
- package/rcode/workflows/execute.md +17 -3
- package/rcode/workflows/help.md +0 -2
- package/rcode/workflows/new-milestone.md +21 -9
- package/rcode/workflows/new-project-create-roadmap.md +2 -0
- package/rcode/workflows/new-project-roadmap.md +2 -0
- package/rcode/workflows/new-project.md +3 -0
- package/rcode/workflows/plan.md +15 -2
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# City Matrix & Pages
|
|
2
|
+
|
|
3
|
+
How to turn chosen subniches into a programmatic subniche × city page set that ranks for local long-tail intent.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
The asset is volume of well-targeted pages: one winnable subniche replicated across many cities. This rule defines the matrix, how to build pages with existing skills, and the quality bar that keeps them out of thin-content penalties.
|
|
7
|
+
|
|
8
|
+
## Rules
|
|
9
|
+
|
|
10
|
+
### Define the matrix
|
|
11
|
+
|
|
12
|
+
**Subniche × city**
|
|
13
|
+
Rows = your 5–10 chosen subniches. Columns = target cities. Start with cities a real buyer already wants (a buyer's city list is gold — build those first). One subniche × 100 cities = 100 pages.
|
|
14
|
+
|
|
15
|
+
**Start narrow, then widen**
|
|
16
|
+
Build one subniche fully across the priority cities before adding the next subniche. Depth ranks; breadth-without-depth doesn't.
|
|
17
|
+
|
|
18
|
+
### Build with the existing skills (don't hand-roll)
|
|
19
|
+
|
|
20
|
+
**Generate**
|
|
21
|
+
`seo-site-builder` for the page framework/templating; `seo-content-factory` for the per-page copy. Each page targets `<subniche> <city>` and its near-me / emergency variants.
|
|
22
|
+
|
|
23
|
+
**Localize**
|
|
24
|
+
`geo-content-optimizer` + `entity-optimizer` for genuine local relevance — city landmarks, neighborhoods, service-area language, NAP. Avoid pure {city} token-swap pages.
|
|
25
|
+
|
|
26
|
+
**Structure & markup**
|
|
27
|
+
`schema-markup-generator` for LocalBusiness/Service JSON-LD. `internal-linking-optimizer` to silo: subniche hub → city pages, and cross-link related subniches.
|
|
28
|
+
|
|
29
|
+
**QA every page**
|
|
30
|
+
`on-page-seo-auditor` (title/H1/intent match) + `technical-seo-checker` (indexability, speed, mobile). No page ships unaudited.
|
|
31
|
+
|
|
32
|
+
See `templates/service-city-page.md` for the page skeleton.
|
|
33
|
+
|
|
34
|
+
### Domains & map pack
|
|
35
|
+
|
|
36
|
+
**Exact-match domains**
|
|
37
|
+
Because everyone chases the head term, subniche EMDs are often available cheap (e.g. a `basementfloodingcleanup<city>.com` for ~$10). Grab them where it fits the strategy.
|
|
38
|
+
|
|
39
|
+
**GBP where allowed**
|
|
40
|
+
A Google Business Profile / map-pack listing helps where the niche permits. In spam-heavy niches it's hard — then rely on mass long-tail organic. Multiple subniche sites can also be used to dominate the 3-pack in one area (advanced).
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
|
|
44
|
+
### Example: Build order
|
|
45
|
+
```
|
|
46
|
+
Subniche: basement flooding cleanup
|
|
47
|
+
Cities (buyer-supplied): Dallas, Houston, Austin, Phoenix, Atlanta, Las Vegas, ...
|
|
48
|
+
1. Build hub page + all city pages for THIS subniche (geo + schema + silo + QA)
|
|
49
|
+
2. rank-tracker on the set
|
|
50
|
+
3. Only then start subniche #2
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Example: Page pipeline
|
|
54
|
+
```
|
|
55
|
+
seo-site-builder → seo-content-factory → geo-content-optimizer/entity-optimizer
|
|
56
|
+
→ schema-markup-generator → internal-linking-optimizer
|
|
57
|
+
→ on-page-seo-auditor + technical-seo-checker → publish → rank-tracker
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Anti-Patterns
|
|
61
|
+
|
|
62
|
+
### Token-swap doorway pages
|
|
63
|
+
**Problem**: Identical page with only `{city}` changed → thin/doorway content, penalized.
|
|
64
|
+
**Instead**: Localize meaningfully (geo skill), vary intent sections, keep each page genuinely useful.
|
|
65
|
+
|
|
66
|
+
### Publish-and-forget
|
|
67
|
+
**Problem**: 100 pages live, none tracked, no idea what ranks.
|
|
68
|
+
**Instead**: `rank-tracker` from day one; double down on the subniche/city cells that move.
|
|
69
|
+
|
|
70
|
+
## Related
|
|
71
|
+
- `subniche-discovery.md` — supplies the rows
|
|
72
|
+
- `monetization.md` — what the ranked pages are for
|
|
73
|
+
- `templates/service-city-page.md` — page skeleton
|
|
74
|
+
|
|
75
|
+
## Changelog
|
|
76
|
+
- 2026-06-22: Initial version.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Monetization
|
|
2
|
+
|
|
3
|
+
How a ranked local-service site turns into recurring income, and the math that tells you when it's worth scaling.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
Pages without a payment path are a hobby. Decide *how you get paid* before scaling pages, and use the call math to set realistic expectations.
|
|
7
|
+
|
|
8
|
+
## Rules
|
|
9
|
+
|
|
10
|
+
### Pick a payment model
|
|
11
|
+
|
|
12
|
+
**Rent the site (flat monthly)**
|
|
13
|
+
Lease the ranked site to one local business for a fixed monthly fee. Simplest recurring revenue; you keep the asset.
|
|
14
|
+
|
|
15
|
+
**Pay-per-call / per-lead**
|
|
16
|
+
Forward calls/leads and bill per qualified call ($200–$1,500 in high-ticket niches). Higher upside, needs call tracking and a billing agreement.
|
|
17
|
+
|
|
18
|
+
**Own lead-gen brokerage**
|
|
19
|
+
Sell the same area's leads to multiple buyers, or auction them. Most operational; highest ceiling.
|
|
20
|
+
|
|
21
|
+
### Validate the buyer first
|
|
22
|
+
|
|
23
|
+
**A buyer's city list is the best signal**
|
|
24
|
+
If a business already says "I'll pay for calls in Dallas, Houston, Austin…", build *those* cities first. You're filling known demand, not guessing.
|
|
25
|
+
|
|
26
|
+
**Confirm willingness to pay before mass-building**
|
|
27
|
+
One LOI / verbal from a buyer de-risks the whole build. Don't build 500 pages on spec when 50 pages for a confirmed buyer pays the bills.
|
|
28
|
+
|
|
29
|
+
### Run the math
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
monthly income ≈ pages_ranked × calls_per_page_per_month × close_rate × $_per_call
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Field lowball example: 100 cities, ~1 call every other month each ≈ 50 calls/month.
|
|
36
|
+
Conservative: 10 calls/month × $300 ≈ $3,000/month from ONE built-out niche.
|
|
37
|
+
This is per niche — additional niches/subniches stack.
|
|
38
|
+
|
|
39
|
+
## Examples
|
|
40
|
+
|
|
41
|
+
### Example: De-risked launch
|
|
42
|
+
```
|
|
43
|
+
Buyer: "pay $300/call in Dallas, Houston, Austin, Phoenix, Atlanta"
|
|
44
|
+
→ build basement-flooding-cleanup × those 5 cities first
|
|
45
|
+
→ track calls → bill per call → reinvest into next subniche
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Example: Freedom-number framing
|
|
49
|
+
```
|
|
50
|
+
Target: replace $4,000/mo job income.
|
|
51
|
+
At $300/call → ~14 calls/month needed.
|
|
52
|
+
Plan city/subniche count backward from that, not "rank everything".
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Anti-Patterns
|
|
56
|
+
|
|
57
|
+
### Build first, monetize "later"
|
|
58
|
+
**Problem**: Hundreds of pages, no buyer, no tracking — an unsold asset.
|
|
59
|
+
**Instead**: Line up a buyer or a clear model before Phase 3 scaling.
|
|
60
|
+
|
|
61
|
+
### No call tracking
|
|
62
|
+
**Problem**: Can't prove call volume → can't charge per call or justify rent.
|
|
63
|
+
**Instead**: Call tracking from launch; the data is the sales pitch.
|
|
64
|
+
|
|
65
|
+
## Related
|
|
66
|
+
- `niche-selection.md` — lead value is set here
|
|
67
|
+
- `city-matrix-and-pages.md` — buyer's cities drive the build order
|
|
68
|
+
|
|
69
|
+
## Changelog
|
|
70
|
+
- 2026-06-22: Initial version.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Niche Selection
|
|
2
|
+
|
|
3
|
+
How to pick a local-service niche where the leads are worth enough to make rank-and-rent profitable.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
The niche decides everything downstream. A high-value niche forgives mediocre execution; a low-value one punishes great execution. Choose on evidence (lead value), not interest.
|
|
7
|
+
|
|
8
|
+
## Rules
|
|
9
|
+
|
|
10
|
+
### Lead value first
|
|
11
|
+
|
|
12
|
+
**High-CPC = high lead value**
|
|
13
|
+
Pull head-term CPC with `keyword-research` / Google Keyword Planner. A high CPC means businesses already pay a lot to acquire one call — so an organically-ranked call is worth the same to them, for free. Examples seen in the field: `water remediation near me` ~$320 CPC, `water damage restoration` ~$88–$150.
|
|
14
|
+
|
|
15
|
+
**Ticket size**
|
|
16
|
+
Favor niches where one job is worth four or five figures (water damage $7k–$35k, roofing, mold, foundation, personal injury). Big ticket → buyers happily pay $200–$1,500 per qualified call.
|
|
17
|
+
|
|
18
|
+
**Emergency / urgent intent**
|
|
19
|
+
Emergency niches convert fast and tolerate thinner pages because intent is overwhelming ("near me", "emergency", "24 hour"). Urgency beats deliberation.
|
|
20
|
+
|
|
21
|
+
### Competition reality check
|
|
22
|
+
|
|
23
|
+
**The head term is a trap**
|
|
24
|
+
The main keyword (`<niche> <city>`) is saturated with ads and exact-match-domain incumbents. Note it for value evidence; do **not** make it your entry point — that's what `subniche-discovery.md` solves.
|
|
25
|
+
|
|
26
|
+
**Spammy-niche caveat**
|
|
27
|
+
Some high-value niches (water damage, locksmith) are GBP-spam heavy, so map-pack entry is hard. That's fine — the play is mass long-tail organic pages, not fighting the 3-pack head-on.
|
|
28
|
+
|
|
29
|
+
## Examples
|
|
30
|
+
|
|
31
|
+
### Example: Qualifying "water damage restoration"
|
|
32
|
+
```
|
|
33
|
+
keyword-research → head CPC $88–$320, big ticket ($7k–$35k), emergency intent → QUALIFIES on value.
|
|
34
|
+
serp-analysis → head term = ads + EMD incumbents → DO NOT enter on head term.
|
|
35
|
+
Decision: pick niche, proceed to subniche discovery.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Example: Candidate scan
|
|
39
|
+
```
|
|
40
|
+
Run keyword-research across: water damage, mold remediation, roofing repair,
|
|
41
|
+
foundation repair, towing, locksmith, junk removal, personal injury.
|
|
42
|
+
Rank by (CPC × ticket × urgency). Shortlist top 2–3.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Anti-Patterns
|
|
46
|
+
|
|
47
|
+
### Chasing volume over value
|
|
48
|
+
**Problem**: Picking a high-volume, low-CPC niche (generic "cleaning services") — lots of traffic, cheap leads, hard to monetize.
|
|
49
|
+
**Instead**: Pick fewer, high-value calls. 10 calls at $300 beats 200 calls at $5.
|
|
50
|
+
|
|
51
|
+
### Picking on personal interest
|
|
52
|
+
**Problem**: "I like fitness, I'll do gym SEO" — leads barely monetize.
|
|
53
|
+
**Instead**: Let CPC/ticket evidence choose. You're building an asset, not a hobby.
|
|
54
|
+
|
|
55
|
+
## Related
|
|
56
|
+
- `subniche-discovery.md` — once the niche is chosen, find the winnable wedge
|
|
57
|
+
- `monetization.md` — confirm a buyer exists for these leads before scaling
|
|
58
|
+
|
|
59
|
+
## Changelog
|
|
60
|
+
- 2026-06-22: Initial version (derived from rank-and-rent field methodology).
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Subniche Discovery
|
|
2
|
+
|
|
3
|
+
How to find the long-tail subniches inside a chosen niche that big competitors ignore — the winnable wedge.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
Everyone ranks for the head term, so nobody wins it cheaply. The money is in high-intent subniches the incumbents never built pages for. This rule finds and ranks them.
|
|
7
|
+
|
|
8
|
+
## Rules
|
|
9
|
+
|
|
10
|
+
### Manual mining (do this even if you also use AI)
|
|
11
|
+
|
|
12
|
+
**Keyword Planner scoop**
|
|
13
|
+
Seed the niche in Google Keyword Planner; it returns hundreds of variations (800+ is common). Add a second seed to expand further. Download the full set — it's the raw material for subniche grouping.
|
|
14
|
+
|
|
15
|
+
**Competitor service menus**
|
|
16
|
+
Open the top-ranking sites in big cities (Dallas, Miami, LA, NYC). Their homepage/service nav lists every subniche they bothered to build: flood damage, structural damage, pipe break, plumbing leak, wet insulation, sewage cleanup, etc. They did the grouping work — copy the map, then find what they *skipped*.
|
|
17
|
+
|
|
18
|
+
**SERP surfaces**
|
|
19
|
+
Mine People Also Ask, People Also Search For, and Reddit/forum threads via `serp-analysis`. These reveal how real searchers phrase the problem ("basement flooded what do I do") before they know the industry term.
|
|
20
|
+
|
|
21
|
+
### AI subniche pass
|
|
22
|
+
|
|
23
|
+
**Run the consultant prompt**
|
|
24
|
+
Use `templates/subniche-research-prompt.md`: "Act as a specialist SEO consultant for a [niche] company. We want to dominate long-tail high-intent searches. Identify 10 subniches ignored by bigger companies." It returns named subniches plus angle ideas (before/after case studies, pairing with ads, etc.).
|
|
25
|
+
|
|
26
|
+
**Reconcile with the gap analysis**
|
|
27
|
+
Feed manual + AI candidates into `content-gap-analysis` to confirm which subniches the ranking competitors have **no** dedicated page for. Those are the targets.
|
|
28
|
+
|
|
29
|
+
### Select and rank
|
|
30
|
+
|
|
31
|
+
Pick **5–10** subniches scored on: intent (emergency > research), competitor absence, exact-match-domain availability, and volume (some is fine; high intent beats high volume).
|
|
32
|
+
|
|
33
|
+
## Examples
|
|
34
|
+
|
|
35
|
+
### Example: Water damage subniches that surface
|
|
36
|
+
```
|
|
37
|
+
emergency water extraction · basement flooding cleanup · sump pump failure cleanup
|
|
38
|
+
sewage backup / black water cleanup · burst pipe water damage · appliance leak cleanup
|
|
39
|
+
ceiling water damage from upstairs leak · plumbing overflow cleanup · wet insulation removal
|
|
40
|
+
→ score each, keep top 5–10 with weakest competitor coverage.
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Example: Pipeline
|
|
44
|
+
```
|
|
45
|
+
keyword-research (scoop) ─┐
|
|
46
|
+
competitor-analysis ──────┤→ candidate list → content-gap-analysis → ranked 5–10 subniches
|
|
47
|
+
AI consultant prompt ─────┘
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Anti-Patterns
|
|
51
|
+
|
|
52
|
+
### Going straight for the head term
|
|
53
|
+
**Problem**: Building `water damage restoration <city>` pages — months and money against entrenched incumbents.
|
|
54
|
+
**Instead**: Start with a single winnable subniche (`basement flooding cleanup`) and expand by city.
|
|
55
|
+
|
|
56
|
+
### Boiling the ocean
|
|
57
|
+
**Problem**: Targeting all 30 subniches at once → none rank.
|
|
58
|
+
**Instead**: One subniche fully built across cities (90/91 rule), then add the next.
|
|
59
|
+
|
|
60
|
+
## Related
|
|
61
|
+
- `niche-selection.md` — must be done first
|
|
62
|
+
- `city-matrix-and-pages.md` — turn chosen subniches into pages
|
|
63
|
+
- `templates/subniche-research-prompt.md` — the AI prompt
|
|
64
|
+
|
|
65
|
+
## Changelog
|
|
66
|
+
- 2026-06-22: Initial version.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Service × City Page Skeleton
|
|
2
|
+
|
|
3
|
+
Page structure for one `{subniche}` in one `{city}`. Generate the framework with `seo-site-builder` and the copy with `seo-content-factory`; this is the target shape, not a token-swap template. Each page must be meaningfully localized (see `city-matrix-and-pages.md`).
|
|
4
|
+
|
|
5
|
+
## Target query
|
|
6
|
+
`{subniche} {city}` + variants: `{subniche} near me`, `emergency {subniche} {city}`, `24 hour {subniche} {city}`.
|
|
7
|
+
|
|
8
|
+
## Skeleton
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
H1: {Subniche} in {City} — {Emergency/24-Hour} Service
|
|
12
|
+
|
|
13
|
+
[Hero] one-line promise + click-to-call + service-area ({City} + neighborhoods)
|
|
14
|
+
|
|
15
|
+
H2: When you need {subniche} (symptoms / triggers, problem-aware language)
|
|
16
|
+
H2: Our {subniche} process (steps; reassures + builds intent)
|
|
17
|
+
H2: Why {City} homeowners call us
|
|
18
|
+
- local references: neighborhoods, common local causes (climate, housing stock)
|
|
19
|
+
- NAP / service-area block
|
|
20
|
+
H2: Before & after / case study (the conversion angle from subniche research)
|
|
21
|
+
H2: FAQ (seeded from People Also Ask for this subniche)
|
|
22
|
+
[CTA] click-to-call + lead form (call tracking number)
|
|
23
|
+
|
|
24
|
+
Schema: LocalBusiness + Service (via schema-markup-generator)
|
|
25
|
+
Internal links: → {subniche} hub, → related subniches in {City}, → other cities for {subniche}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Quality gates (before publish)
|
|
29
|
+
- Title/H1 match the `{subniche} {city}` intent exactly (`on-page-seo-auditor`).
|
|
30
|
+
- Genuinely localized — not just `{city}` swapped (`geo-content-optimizer`).
|
|
31
|
+
- Indexable, fast, mobile-clean (`technical-seo-checker`).
|
|
32
|
+
- Tracked from launch (`rank-tracker`).
|
|
33
|
+
|
|
34
|
+
## Variables
|
|
35
|
+
- `{subniche}` — from `subniche-discovery.md`
|
|
36
|
+
- `{city}` — from the buyer-driven city list in `monetization.md`
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Subniche Research Prompt
|
|
2
|
+
|
|
3
|
+
Drop-in AI prompt to surface ignored, high-intent subniches for a chosen local-service niche. Pair its output with `content-gap-analysis` to confirm competitor absence.
|
|
4
|
+
|
|
5
|
+
## Prompt
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Act as a specialist SEO consultant for a {NICHE} company operating in the US.
|
|
9
|
+
|
|
10
|
+
Goal: dominate long-tail, high-intent local searches that the big national
|
|
11
|
+
and franchise competitors ignore.
|
|
12
|
+
|
|
13
|
+
Identify 10 overlooked subniches within {NICHE} that:
|
|
14
|
+
- have clear emergency or high-intent demand,
|
|
15
|
+
- are NOT covered by dedicated pages on the top-ranking competitors,
|
|
16
|
+
- can realistically rank with focused long-tail content + local pages.
|
|
17
|
+
|
|
18
|
+
For each subniche return:
|
|
19
|
+
1. Subniche name and the primary keyword(s) a searcher would use (incl. "near me"/"emergency" variants)
|
|
20
|
+
2. Why bigger companies ignore it
|
|
21
|
+
3. The buyer intent / urgency level (emergency | urgent | research)
|
|
22
|
+
4. One content/conversion angle (e.g. before/after case study, pair with Google Ads)
|
|
23
|
+
5. Rough difficulty to rank (low | medium | high)
|
|
24
|
+
|
|
25
|
+
Return as a table, ordered by best opportunity (high intent + low competition) first.
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Variables
|
|
29
|
+
- `{NICHE}` — the chosen niche from `niche-selection.md` (e.g. "water damage restoration").
|
|
30
|
+
|
|
31
|
+
## After running
|
|
32
|
+
1. Export the 10 subniches.
|
|
33
|
+
2. Run `content-gap-analysis` against the top 3–5 ranking competitors to confirm none have a dedicated page.
|
|
34
|
+
3. Keep the 5–10 with the weakest competitor coverage → feed into `city-matrix-and-pages.md`.
|