公開データ仕様

Chiinavi が公開している求人・自治体データのスキーマと、既存の公開 API の入出力を記述します。 外部開発者向けの公開 API(API キー方式)は まだ提供していません。 ここに書いてあるエンドポイントは Chiinavi の Web UI と同オリジン前提でのみ呼ばれます。

1. データプロダクトの概要

Chiinavi は全国の自治体サイトと移住ポータルをクロールし、地域おこし協力隊・移住関連求人を AI+ルールベースで抽出して Cloudflare D1 に正規化したデータプロダクトです。

ここに掲載するスキーマは D1 上の 公開対象列 のみ。原文 PDF・スクレイプ生テキスト・ AI への入力プロンプト・AI の生応答・連絡先などの個人情報は公開しません (§5)。

2. 公開 D1 スキーマ

job_details(公開対象列)

実装は src/lib/db/schema.ts を参照。ここでは公開対象に限定して再掲します。

カラム説明
idTEXT (PK)求人詳細の識別子。URL パス /jobs/[id] と一致
titleTEXT求人タイトル
descriptionTEXT | NULL募集要項の本文(AI 抽出後の整形済みテキスト)
prefectureTEXT都道府県名(municipalities と一致)
municipality_nameTEXT自治体名(municipalities.name から join)
salary_monthlyINTEGER | NULL月給(円)。給与未記載なら NULL
salary_dailyINTEGER | NULL日給(円)
salary_hourlyINTEGER | NULL時給(円)
salary_annualINTEGER | NULL年収(円)
salary_detailsTEXT | NULL給与に関する補足説明(手当・賞与など)
deadlineTEXT (YYYY-MM-DD) | NULL応募締切(推定含む)
application_period_startTEXT (YYYY-MM-DD) | NULL応募受付開始日
application_period_endTEXT (YYYY-MM-DD) | NULL応募受付終了日。deadline より優先
employment_typeTEXT | NULL雇用形態(FULL_TIME / PART_TIME / CONTRACTOR / INTERN / VOLUNTEER ほか)
is_internshipINTEGER (0/1)インターン求人か
has_selection_internshipINTEGER (0/1)選考過程にインターン期間を含むか
tagsJSON TEXT (string[])AI 抽出タグ。例: ["農業", "観光"]
urlTEXT自治体側の原典 URL(公式募集ページ)
created_atTEXT (UTC datetime)Chiinavi に取り込まれた日時
updated_atTEXT (UTC datetime)最終更新日時(再抽出・ライフサイクル更新で進む)

municipality(公開対象列)

カラム説明
idTEXT (PK)自治体の識別子
codeTEXT全国地方公共団体コード(5 桁)
nameTEXT自治体名
prefectureTEXT都道府県名
prefecture_codeTEXT都道府県コード(2 桁)
latitudeREAL | NULL代表点緯度(求人マップで使用)
longitudeREAL | NULL代表点経度
is_activeINTEGER (0/1)公開対象フラグ。0 は表示・集計から除外

3. 公開フィルタ(PUBLIC_JOB_DETAIL_FILTER)

Web UI と公開 API は 常に 以下の SQL 条件で job_details を絞り込みます。 実装は src/lib/server/db/queryHelpers.ts。

(dup_status IS NULL OR dup_status NOT IN ('merged', 'auto_merged'))
AND recruitment_status = 'open'
  • dup_status は重複ライフサイクル列。手動でマージ済み(merged)、 外部サイト由来の自動マージ済み補助レコード(auto_merged)を除外します。 NULL / primary / candidate は表示対象(candidate は人間レビュー前の候補で、 誤検出の可能性があるため非表示にはしません)。
  • recruitment_status は募集ライフサイクル列。明示的終了・404 検出・ deadline 超過・手動 close により closed になった求人を除外します。
  • サイトマップ(/sitemap.xml)と /about の集計値も同じフィルタを通します。 数字の出所はこの 1 条件に集約されています。

4. 既存公開 API: GET /api/map/municipality-jobs

Chiinavi の求人マップが自治体ピンをクリックしたときに呼ぶエンドポイントです。 Web UI と同オリジン前提で公開されています。 外部開発者向けの公開 API キー方式はまだ提供していません。

クエリパラメータ

name必須意味
municipality必須自治体 ID。未指定なら 400
q任意キーワード(title / description / tags 部分一致)
tag任意 (repeat)タグ完全一致。複数指定で AND 結合
salary_min任意月給換算の下限(円)
salary_max任意月給換算の上限(円)

curl サンプル

<base-url> は実行環境のオリジンに置き換えてください (例: https://chiinavi.com または http://localhost:5173)。

curl '<base-url>/api/map/municipality-jobs?municipality=mun_aichi_toyota'

レスポンス例

{
  "jobs": [
    {
      "id": "job_abc123",
      "title": "地域おこし協力隊(観光振興)",
      "prefecture": "愛知県",
      "municipality_name": "豊田市",
      "salary": "月給 200,000円〜",
      "salary_monthly": 200000,
      "salary_daily": null,
      "salary_hourly": null,
      "salary_annual": null,
      "created_at": "2026-04-15 09:30:21"
    }
  ],
  "totalCount": 3
}

jobs[] 要素は §2 の job_details 公開列のサブセットです。 ポップアップ表示用に上位 5 件+ totalCount に丸めています。

5. 公開しない情報

以下は Web UI からも公開ドキュメントからも一切返しません。

  • 管理機能のルート・運用ダッシュボード(認証で保護)
  • D1 / バックエンド DB の生レコード、運用バッチのログ
  • API キー・認証鍵・環境変数・内部ホスト名
  • AI への入力プロンプト、AI からの生応答、抽出途中の中間データ
  • 担当者氏名・電話番号・メールアドレスなどの個人情報

求人の原典 URL(自治体公式募集ページ)は url 列として公開しています。 応募はこの公式ページ経由で完結する設計です。

Chiinavi

地域おこし協力隊や移住関連の求人を集約した検索プラットフォーム。
あなたにぴったりの地域と仕事を見つけよう。

サービス

運営情報

    © 2026 Chiinavi. All rights reserved.