@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.
Files changed (118) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/README.md +28 -5
  3. package/cli/doctor.js +21 -3
  4. package/cli/generate-command-skills.cjs +1 -1
  5. package/cli/index.js +5 -1
  6. package/cli/install.js +7 -9
  7. package/cli/postinstall.js +22 -2
  8. package/cli/uninstall.js +48 -6
  9. package/dist/rcode.js +202 -203
  10. package/package.json +13 -23
  11. package/rcode/agents/rcode-codebase-mapper.md +12 -0
  12. package/rcode/agents/rcode-phase-researcher.md +13 -0
  13. package/rcode/agents/rcode-project-researcher.md +32 -0
  14. package/rcode/agents/rcode-roadmapper.md +15 -0
  15. package/rcode/agents/rules/planner/common-patterns.md +40 -0
  16. package/rcode/bin/lib/roadmap.cjs +184 -11
  17. package/rcode/bin/rcode-hooks.cjs +102 -151
  18. package/rcode/bin/rcode-tools.cjs +669 -55
  19. package/rcode/commands/lazy.md +10 -0
  20. package/rcode/data/intent-table.json +87 -0
  21. package/rcode/modules/seo.yaml +22 -0
  22. package/rcode/references/project-types.yaml +75 -0
  23. package/rcode/references/verb-dictionary.md +1 -1
  24. package/rcode/skills/SKILLS_INDEX.md +18 -1
  25. package/rcode/skills/actions/1-analysis/rcode-prfaq/SKILL.md +1 -1
  26. package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/SKILL.md +4 -21
  27. package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/templates/heartbeat.sh +0 -0
  28. package/rcode/skills/actions/4-implementation/rcode-scaffold-project/SKILL.md +60 -1
  29. package/rcode/skills/core/rcode-init/scripts/__pycache__/rcode_init.cpython-38.pyc +0 -0
  30. package/rcode/skills/core/rcode-init/scripts/tests/__pycache__/test_rcode_init.cpython-38.pyc +0 -0
  31. package/rcode/skills/seo/module.yaml +20 -0
  32. package/rcode/skills/seo/on-page-seo-auditor/SKILL.md +308 -0
  33. package/rcode/skills/seo/on-page-seo-auditor/references/audit-example.md +109 -0
  34. package/rcode/skills/seo/on-page-seo-auditor/references/audit-templates.md +427 -0
  35. package/rcode/skills/seo/on-page-seo-auditor/references/bulk-audit-playbook.md +116 -0
  36. package/rcode/skills/seo/on-page-seo-auditor/references/scoring-rubric.md +525 -0
  37. package/rcode/skills/seo/rank-and-rent-local-seo/SKILL.md +94 -0
  38. package/rcode/skills/seo/rank-and-rent-local-seo/rules/city-matrix-and-pages.md +76 -0
  39. package/rcode/skills/seo/rank-and-rent-local-seo/rules/monetization.md +70 -0
  40. package/rcode/skills/seo/rank-and-rent-local-seo/rules/niche-selection.md +60 -0
  41. package/rcode/skills/seo/rank-and-rent-local-seo/rules/subniche-discovery.md +66 -0
  42. package/rcode/skills/seo/rank-and-rent-local-seo/templates/service-city-page.md +36 -0
  43. package/rcode/skills/seo/rank-and-rent-local-seo/templates/subniche-research-prompt.md +34 -0
  44. package/rcode/skills/seo/seo-audit/SKILL.md +412 -0
  45. package/rcode/skills/seo/seo-audit/evals/evals.json +136 -0
  46. package/rcode/skills/seo/seo-audit/references/ai-writing-detection.md +200 -0
  47. package/rcode/skills/seo/seo-content-factory/SKILL.md +130 -0
  48. package/rcode/skills/seo/seo-content-factory/rules/agents.md +80 -0
  49. package/rcode/skills/seo/seo-content-factory/rules/herdr-wave-mapping.md +80 -0
  50. package/rcode/skills/seo/seo-content-factory/rules/pipeline.md +102 -0
  51. package/rcode/skills/seo/seo-content-factory/rules/programmatic-pages.md +107 -0
  52. package/rcode/skills/seo/seo-content-factory/rules/quality-gates.md +68 -0
  53. package/rcode/skills/seo/seo-content-factory/rules/weekly-cadence.md +61 -0
  54. package/rcode/skills/seo/seo-content-factory/templates/BACKLOG.md +23 -0
  55. package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/01-funnel-A1-A4.md +63 -0
  56. package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/02-fanout-editorial-A5-A6-A8.md +28 -0
  57. package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/03-fanout-programmatic-A7-A6-A8.md +25 -0
  58. package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/04-loop-A9-A10.md +34 -0
  59. package/rcode/skills/seo/seo-content-factory/templates/article.mdx +39 -0
  60. package/rcode/skills/seo/seo-content-factory/templates/cluster.schema.json +52 -0
  61. package/rcode/skills/seo/seo-content-factory/templates/content-brief.md +51 -0
  62. package/rcode/skills/seo/seo-content-factory/templates/jsonld-builders.ts +49 -0
  63. package/rcode/skills/seo/seo-content-factory/templates/keywords.csv +13 -0
  64. package/rcode/skills/seo/seo-content-factory/templates/programmatic-page.tsx +58 -0
  65. package/rcode/skills/seo/seo-content-writer/SKILL.md +263 -0
  66. package/rcode/skills/seo/seo-content-writer/references/content-structure-templates.md +875 -0
  67. package/rcode/skills/seo/seo-content-writer/references/instructions-detail.md +239 -0
  68. package/rcode/skills/seo/seo-content-writer/references/seo-writing-checklist.md +250 -0
  69. package/rcode/skills/seo/seo-content-writer/references/title-formulas.md +339 -0
  70. package/rcode/skills/seo/seo-growth-orchestrator/SKILL.md +79 -0
  71. package/rcode/skills/seo/seo-growth-orchestrator/rules/backlinks.md +29 -0
  72. package/rcode/skills/seo/seo-growth-orchestrator/rules/content-engine.md +27 -0
  73. package/rcode/skills/seo/seo-growth-orchestrator/rules/dos-and-donts.md +40 -0
  74. package/rcode/skills/seo/seo-growth-orchestrator/rules/goals-protocol.md +34 -0
  75. package/rcode/skills/seo/seo-growth-orchestrator/rules/local-seo-stack.md +35 -0
  76. package/rcode/skills/seo/seo-growth-orchestrator/rules/mrr-sprint.md +27 -0
  77. package/rcode/skills/seo/seo-growth-orchestrator/rules/tools.md +19 -0
  78. package/rcode/skills/seo/seo-growth-orchestrator/templates/backlink-research.md +29 -0
  79. package/rcode/skills/seo/seo-growth-orchestrator/templates/goal-protocol.md +35 -0
  80. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-citations.md +24 -0
  81. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-city-pages.md +27 -0
  82. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-gbp-categories.md +23 -0
  83. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-gsc-goldmine.md +27 -0
  84. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-review-mining.md +26 -0
  85. package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-30day-plan.md +19 -0
  86. package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-cut.md +13 -0
  87. package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-opportunity-finder.md +17 -0
  88. package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-role-model.md +18 -0
  89. package/rcode/skills/seo/seo-site-builder/SKILL.md +149 -0
  90. package/rcode/skills/seo/seo-site-builder/rules/01-niche-discovery.md +64 -0
  91. package/rcode/skills/seo/seo-site-builder/rules/02-deep-research.md +164 -0
  92. package/rcode/skills/seo/seo-site-builder/rules/03-keyword-strategy.md +82 -0
  93. package/rcode/skills/seo/seo-site-builder/rules/04-content-plan.md +173 -0
  94. package/rcode/skills/seo/seo-site-builder/rules/05-site-build.md +187 -0
  95. package/rcode/skills/seo/seo-site-builder/rules/06-yolo.md +127 -0
  96. package/rcode/skills/seo/seo-site-builder/templates/article-stub.mdx +62 -0
  97. package/rcode/skills/seo/seo-site-builder/templates/image-prompt.md +97 -0
  98. package/rcode/skills/seo/seo-site-builder/templates/keyword-export.md +45 -0
  99. package/rcode/skills/seo/seo-site-builder/templates/niche-scorecard.md +28 -0
  100. package/rcode/skills/seo/technical-seo-checker/SKILL.md +329 -0
  101. package/rcode/skills/seo/technical-seo-checker/references/bulk-audit-playbook.md +118 -0
  102. package/rcode/skills/seo/technical-seo-checker/references/ecommerce-platform-patterns.md +166 -0
  103. package/rcode/skills/seo/technical-seo-checker/references/http-status-codes.md +705 -0
  104. package/rcode/skills/seo/technical-seo-checker/references/llm-crawler-handling.md +257 -0
  105. package/rcode/skills/seo/technical-seo-checker/references/pre-migration-playbook.md +137 -0
  106. package/rcode/skills/seo/technical-seo-checker/references/robots-txt-reference.md +717 -0
  107. package/rcode/skills/seo/technical-seo-checker/references/technical-audit-example.md +169 -0
  108. package/rcode/skills/seo/technical-seo-checker/references/technical-audit-templates.md +436 -0
  109. package/rcode/templates/settings-hooks.json +4 -0
  110. package/rcode/workflows/do.md +16 -0
  111. package/rcode/workflows/execute-sprint.md +22 -0
  112. package/rcode/workflows/execute.md +17 -3
  113. package/rcode/workflows/help.md +0 -2
  114. package/rcode/workflows/new-milestone.md +21 -9
  115. package/rcode/workflows/new-project-create-roadmap.md +2 -0
  116. package/rcode/workflows/new-project-roadmap.md +2 -0
  117. package/rcode/workflows/new-project.md +3 -0
  118. 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`.