コンテンツにスキップ

SEO Strategy — Organic Acquisition (Brand-5 Pillar v8)

Status: 2026-04-25, owner: Bookyou株式会社 ([email protected]), no paid ads, no sales calls — 100% organic.

Pillars

AutonoMath's organic acquisition rests on five long-tail content pillars, all served as static HTML from Cloudflare Pages.

  1. Per-program pages (/programs/{slug}.html) — ~6,658 indexable, generated by scripts/generate_program_pages.py. Long-tail target: <制度名> 申請, <制度名> 対象, <制度名> 上限.
  2. Per-prefecture landing pages (/prefectures/{slug}.html) — 47 pages + 1 index, generated by scripts/generate_prefecture_pages.py. Long-tail target: <都道府県名> 補助金, <都道府県名> 融資, <都道府県名> 行政処分, <都道府県名> 採択事例.
  3. Docs / API reference (/docs/) — mkdocs Material, MCP tools and REST endpoints. Long-tail target: MCP 補助金 API, 日本 制度 API, 補助金 検索 API.
  4. Blog / press (/blog/, /press/) — manually curated. Long-tail target: thought leadership.
  5. llms-full.txt + llms.txt — full corpus exposed at root for LLM ingestion. Long-tail target: GEO (Generative Engine Optimization).

Per-prefecture page composition

Each /prefectures/{slug}.html includes:

  • h1: <都道府県名> 補助金・融資・税制・行政処分 一覧
  • TL;DR section with the four counts (programs, cases, loans, enforcements)
  • Top 20 programs filtered by prefecture = <JA name>, ordered tier S → A → B → C, then by amount_max_man_yen DESC. Each links to /programs/{slug}.html (cross-pillar internal linking).
  • Top 10 採択事例 filtered by prefecture, ordered by confidence DESC, publication_date DESC. Source URL on each.
  • Top 5 政策金融融資loan_programs is nationwide (no prefecture column). Same global top-5 (JFC etc.) appears on every prefecture page; copy contextualises this. The 3-axis breakdown (担保 / 個人保証人 / 第三者保証人) is preserved.
  • Top 5 行政処分 filtered by prefecture, ordered by disclosed_date DESC.
  • API / MCP code block with prefecture parameter pre-filled.
  • Cross-link to /prefectures/ for siblings.

JSON-LD @graph

  • Organization (Bookyou 株式会社, T8010001213708)
  • BreadcrumbList: ホーム → 都道府県別 → <pref>
  • Place with additionalType: AdministrativeArea and name: <pref_ja>
  • ItemList of the 20 programs with position, url, name

Visible-text length

Mean ~6,300 visible characters per prefecture page (target: 1,500-3,000 minimum). All 47 pages exceed the floor; the largest (Hokkaido / Tokyo / Osaka) include long-tail enforcement and case-study sections without padding.

Slugs

Canonical slugs are stored in scripts/_pref_slugs.py as (slug, JA name) pairs in ISO 3166-2:JP order. Examples: hokkaido / tokyo / kyoto / osaka / okinawa. Slug stability matters — these URLs go into Google's index; do not rename them once published.

Sitemap integration with C4

scripts/generate_prefecture_pages.py writes site/sitemap-prefectures.xml (47 + 1 = 48 URLs). It does NOT edit site/sitemap.xml, site/sitemap-programs.xml, or site/sitemap-index.xml (C4 owns those).

To make the prefecture sitemap discoverable from the master index, C4 should add this single line to scripts/sitemap_gen.py:

KNOWN_BASENAMES = (
    "sitemap.xml",
    "sitemap-programs.xml",
    "sitemap-prefectures.xml",  # ← add this; created by generate_prefecture_pages.py
    "sitemap-structured.xml",
)

Re-running scripts/sitemap_gen.py then auto-emits <sitemap><loc>https://autonomath.ai/sitemap-prefectures.xml</loc>...</sitemap> into sitemap-index.xml. No conflicts.

Aggregator policy

All 47 pages exclude noukaweb / hojyokin-portal / biz.stayway from source_url. Pages also include a footer disclaimer naming the banned aggregators explicitly so users know what was filtered. This is non-negotiable per the project's 詐欺リスク回避 stance — every shown row cites a primary source (中央省庁 / 都道府県 / 市区町村 / 日本政策金融公庫 / 商工中金).

Run cadence

# After data refresh (programs / case_studies / enforcement_cases):
.venv/bin/python scripts/generate_prefecture_pages.py
# Then C4's:
.venv/bin/python scripts/sitemap_gen.py

The prefecture generator is idempotent — re-running with identical DB content produces identical HTML and skips file writes. Suitable for nightly cron.

Known gaps (not blockers for launch)

  • Loan programs lack prefecture bindingloan_programs.prefecture doesn't exist; the same 5 nationwide JFC products appear on all 47 pages. Acceptable because every applicant in every prefecture can use them. If we ever ingest prefecture-specific 制度融資 (信用保証協会 etc.), this should be revisited.
  • Region grouping is fixed in _pref_slugs.REGIONS — used by the index page only; not a CMS-editable field. Edit the Python tuple if 区分 ever changes (it won't).
  • No municipality drill-down (e.g. /prefectures/tokyo/shibuya.html) — explicit non-goal for v1; would balloon page count to ~1,700 with thin content. Revisit if data depth supports it.

Quick verification

# Dry-run a single prefecture to inspect content shape:
.venv/bin/python scripts/generate_prefecture_pages.py --slug tokyo --dry-run

# Generate all 47 + index + sitemap-prefectures.xml:
.venv/bin/python scripts/generate_prefecture_pages.py

# Visual spot-check (Cloudflare Pages serves these as-is once deployed):
open site/prefectures/tokyo.html
open site/prefectures/index.html