| name | tochi-satei-kun |
| description | 係数全開示型のOSS(オープンソース)AVM、「AVM界のLinux」を目指す土地査定エンジン。日本の土地(更地・所有権)の査定価格をMLIT取引事例から統計的に算定する白箱AVMスキル。媒介査定・売却価格の検討・お客様への査定書作成・相場確認・取引事例比較・比準価格算定・公示価格との比較など、土地の価格を客観的かつ説明可能な形で出したい時は、ユーザーが「ヘドニック」「回帰」「白箱」と言わなくても必ずこのSkillを使うこと。トリガー語例:「土地の査定」「土地査定して」「査定書を作って」「査定書がほしい」「いくらで売れる」「売却価格」「査定価格」「相場感」「相場を出して」「マーケット価格」「取引事例から」「事例比較で」「比準価格」「公示価格と比べて」「お客さんに渡す査定書」「顧客提示用の資料」「土地価格査定クン」「土地査定クン」「重調クンの土地版」「説明できる査定」「根拠付きで査定」「AVM」「自動査定」「鑑定書ではなく査定書として」など。MLIT取引価格情報CSV と地価公示GeoJSON(L01)を入力に(基準地価は不可)、ヘドニック係数を都度回帰で算定して個別格差補正を全開示する白箱AVM方式で、業者用シート(係数全開示)と顧客用シート(流推方式準拠)の2シート構成xlsxを出力する。マンション・戸建(建物含む)・借地権・地上権は対象外。 |
土地価格査定クン
起動時の絶対命令
本スキル起動時は必ず python scripts/main.py を実行する。
openpyxl を直接呼んで xlsx を生成することは禁止。
共通Agent Skillとしての原則
この SKILL.md は Codex と Claude Code の双方で利用する canonical Agent Skill である。Codex固有・Claude固有の包装、manifest、marketplace metadata は各plugin package側に分離し、査定業務の指示とPython査定処理はこのSkill配下を正本とする。
このスキルが行うこと:
- ユーザーの土地査定依頼を受け取る
- 必要入力を確認する
- 不足している必須情報は勝手に補わず確認する
- canonical Python査定処理(
scripts/main.py)を呼び出す
- 中間結果と警告を確認する
- Excel/JSONを生成する
- 人が確認すべき事項を返す
このスキルが行わないこと:
- AI自身による土地価格の推論
- 不動産鑑定評価
- 投資判断
- 売買推奨
- 不足データの推測補完
- 現地調査
- 法務局・行政調査の代替
このスキルの位置づけ
媒介査定担当者が売主から物件を預かる際の 一次査定 を自動化するスキル。媒介査定価格を 説明可能な形で算定する AVM(鑑定評価に関する法律の対象外。査定書は鑑定評価書ではない)。既存の AVM サービスと並ぶ、もう一つの選択肢として 位置づける設計。
中核価値は 白箱性:袋地・私道・形状・面積などの個別格差補正を、ヘドニック係数として 都度回帰で算定し全開示 する。12 特徴量(規模・形状・方位・道路・容積率・私道・袋地・不整形・地区平均・駅勢圏など)のβ係数・p 値・標準誤差・自由度調整済 R² を業者用シートに全開示する設計。
最新バージョン: v1.5.0(2026-08-09)
MVP のスコープ:正式査定(査定書作成)一本
本MVPは 「査定書(xlsx)作成のための正式査定」一本 で割り切る設計。「相場感だけ口頭で知りたい」「ちょっと見積もって」といった 簡易モード は MVP では実装せず、すべてフルパイプライン(CSV読込→ヘドニック回帰→個別格差補正→2シートxlsx生成)を回す。
簡易モードは Phase 2 以降の検討事項。MVP段階でユーザーが簡易な相場確認を求めた場合は、「正式査定書を出します。2つのファイル(MLIT取引価格情報CSV・地価公示GeoJSON)を取得してください」と案内する。
件数不足時の運用
MLITスコープ済み事例数が15件未満になった場合、ヘドニック回帰の係数推定が信頼性を欠くため、スキル中核価値である「白箱性」が崩壊 する。この場合:
- 業者用シート:「モデル適合度:参考情報」を上部に明示、係数表は「件数不足のためスキップ」と表示
- 顧客用シート:タイトルを「土地価格 参考情報」に変更、赤色バナーで「査定書ではなく参考情報」と明記、価格表記も「参考価格」に変更
冒頭確認事項(必須)
スキル起動時に、以下を確認してから実装を進めること。
1. 入力データの取得状況
ユーザーに以下のファイルが手元にあるか確認する:
スキル本体には実データを同梱していない(再配布リスク回避+常に最新版を使うため)。なければREADME.mdを参照して取得方法を案内する。
公示GeoJSONは 都道府県別ファイル(東京都=L01-26_13.geojson)で、過去32年分の年次価格時系列が含まれる。年1回(毎年3月下旬)更新される。
2. 査定対象物件の必須項目
物件JSON(または会話入力)で以下を確認:
- 都道府県名/市区町村名/地区名
- 面積(㎡)
- 最寄駅名/最寄駅:距離(分)
- 土地の形状(整形/不整形/袋地)
- 間口(任意)
- 前面道路(種類: 公道/私道、幅員(m)、方位)
- 都市計画/建ぺい率/容積率
- 査定時点(YYYY-MM-DD)
不足項目があれば対話で補完。
MVP機能(Phase 1)
実行時、scripts/main.py が以下のパイプラインを順に実行する:
| # | 処理 | スクリプト |
|---|
| ① | CSV読込・列名正規化 | load_mlit.py |
| ② | データ範囲スコープ規則の適用(市区町村→隣接拡張、3年フィルタ、IQR外れ値除外) | scope.py |
| ③ | 時点修正(公示・基準地年率) | time_adjust.py |
| ④ | ヘドニック回帰(対数線形 OLS)→ 係数辞書 | hedonic.py |
| ⑤ | 類似事例抽出(重み付き距離スコア top 3-5件) | similarity.py |
| ⑥ | 個別格差補正の適用 | correction.py |
| ⑦ | 比準価格集約・価格レンジ生成 | aggregation.py |
| ⑧ | 2シート xlsx 出力 | xlsx_writer.py |
データ範囲スコープ規則(確定)
- 地区=市区町村単位(隣接市区町村への自動拡張は行わない:媒介査定の信頼性確保のため、市区町村を厳守)
- 期間枠は解除:MLITに含まれる全期間を採用、時点修正(公示の直近1年変動率)で査定時点に揃える運用
- 件数15件未満なら ヘドニック回帰スキップ・類似度ベース集約に降格 + 警告
- 件数が極端に少ない場合は無理に査定価格を算出せず、取れた取引事例を類似性順に並べて参考情報として提示
集約規則(確定)
- n ≥ 10:トリム平均(上下10%カット) ← デフォルト
- 5 ≤ n < 10:中央値
- 3 ≤ n < 5:中央値+警告
- n < 3:中断
価格レンジ(確定:四分位ベース)
- 早期売却価格 = Q1 × 面積
- 適正価格 = トリム平均(または中央値)× 面積
- 強気価格 = Q3 × 面積
ヘドニック回帰の関数形(v1.2.0、12 特徴量)
ln(adjusted_unit_price) = β₀
+ β₁·ln(面積) + β₂·ln(面積)²
+ β₃·駅徒歩分
+ β₄·ln(形状指数) + β₅·ln(道路幅員) + β₆·ln(容積率)
+ β₇·dir_score
+ β₈·D_私道 + β₉·D_袋地 + β₁₀·D_不整形
+ β₁₁·ln(地区平均単価) + β₁₂·ln(駅勢圏平均単価)
- 被説明変数:時点修正後の単価(円/㎡)の自然対数
- 推定方法:statsmodels OLS
- 係数は 都度回帰で算定 する(固定値ではない)。地区・期間が違えば係数も違うという統計的事実そのものが本スキルの白箱性の本質
- 特徴量の最終リストは MLIT 実カラムを見て微調整可能(
hedonic.py の _build_features 関数を編集)
方位スコア(v1.2.0、ordinal scale)
dir_score は方位を 0〜4 の ordinal scale で表現(北=0, 北東/北西=1, 東/西=2, 南東/南西=3, 南=4)。これにより「南」と「南西」のように 1 step 差の方位差も標準化補正に反映できる。バイナリ D_south では失われていた granularity を回復した。
出力フォーマット(v1.2.0:3シート構成)
1ファイル .xlsx の中に 業者用シート → 附属資料シート → 顧客用シート の3シート。各シートに印刷設定(A3横/A4横/A4縦)を自動付与。
業者用シート(係数全開示、A3 横印刷)
- 物件概要・スコープ情報
- 査定価格(モデル適合度ラベル付き:良好/中程度/要注意/参考情報)
- 2価格サマリ(採用査定価格 vs ヘドニック母集団予測の乖離マトリクス)
- 価格レンジ(比準表の試算値 max/median/min)
- 比準表(鑑定書様式の2行式、事情補正/時点修正/標準化補正/地域格差を分子・分母で表示、中央行=規範性の高い事例)
- 比準表の内訳(取引事例の補修正率と地域格差率、9列:事情補正・時点修正・標準化補正・街路・交通接近・環境・行政・相乗積)
- 個別格差 + 査定価格の算定(角地・方位・不整形を縦並び。価格反映済みの説明表示であり、方位・不整形を査定価格へ再適用しない)
- 取引事例の概要(13列:事例番号・取引㎡単価・取引時点・地区・最寄駅・駅距離・道路・幅員・方位・形状・地積・用途地域・容積率)
- 公示価格の概要(13列、選定された1地点:公示番号「世田谷-50」短縮表記)
- ヘドニック回帰サマリ(n, R², 各β:推定値・標準誤差・p値、p値で色分け、β符号チェック)
附属資料シート(グラフ専用、A4 横印刷)
- 公示地価推移(折れ線、選定地点の直近5年分)
- ヘドニック回帰係数 β(横向き棒グラフ、全12特徴量)
- 散布図(駅距離 vs 単価、全事例青・top3赤・査定対象緑)
各グラフはセクション見出し(青バー)で区切り、グラフ自体のタイトルは表示しない(軸ラベル重なり防止)。
顧客用シート(流推方式準拠、A4 縦印刷)
- ですます調、係数・統計用語は完全非表示
- 査定結果サマリ/価格レンジ/標準価格/時点修正
- 公示価格の詳細(縦並び9項目、公示番号は短縮表記)
- 机上査定価格
- 比準表(Excel 関数式で標準画地の試算値を計算)
- 個別格差(角地・方位・不整形を青字でハイライト。ヘドニック補正に反映済みの説明表示であり、再適用しない)
- 査定の考え方/重要事項(机上査定の前提と免責)
- 件数不足時は「参考情報」モードに自動切替(赤色バナー)
OEM 対応(v1.2.0)
- ツール提供元のブランド名は文書中に出さない(仲介業者が自社ブランドで配布可能)
- データ出典(国土交通省)と「鑑定評価書ではない」旨は法的義務として残存
- 角地補正は業者の入力値のみ採用(白箱ポリシー上、自動デフォルトなし。MLIT データに角地情報が無いためヘドニック推定不能)
公示価格の選定(v1.2.0:1地点絞込)
3地点平均から 1地点絞込 に変更。スコアリング: 用途地域カテゴリ一致 0.4 + 容積率近さ 0.3 + 丁目一致 0.3。最高スコア(同点なら中央値価格に近い方)を採用。場所による価格水準差を排除し、規範性を高める。
禁止語チェック:forbidden_words.py が AI/モデル/機械学習/ヘドニック/β/回帰/統計/予測 等の語を顧客用シート書き込み時に検出し、混入時は実装エラーで停止する(漏洩防止)。
ファイル名
土地査定_{物件略号}_{YYYYMMDD}.xlsx(YYYYMMDD は査定時点)
使い方・フロー
起動方法
ユーザーが以下のいずれかを発話:
- 「土地査定して」
- 「土地価格査定クン」
- 「{住所} の土地査定をお願い」
重要:スクリプトファイルの完全性検証(v1.2.8、Cowork 環境向け)
Cowork サンドボックス等の環境では、scripts/main.py・xlsx_writer.py 等のスクリプトを AI が「末尾途切れ」と誤判定して独自 workaround を作成してしまう 現象が観測されている。これを防ぐため、スクリプト実行前に 必ず以下の整合性確認 を行うこと:
tail -3 scripts/main.py
tail -3 scripts/xlsx_writer.py
tail -3 scripts/correction.py
tail -3 scripts/copy_to_desktop.py
期待される末尾は以下のいずれかで、if __name__ == "__main__": ブロックや return 文で正常終了している こと:
main.py:if __name__ == "__main__": ブロック + main() 呼び出し
xlsx_writer.py:return output_path(write_xlsx 関数の最終行)
correction.py:print(corrected[...])(テストブロックの最終行)
copy_to_desktop.py:if __name__ == "__main__": ブロック + main() 呼び出し
末尾が確認できた場合、ファイルは完全である(Python の構文として valid なら走る)。途切れているように見えるのは AI 側の読み込み上限(推定 20-25KB)で表示が切れているだけのことが多いため、独自 workaround を作らず、そのまま python scripts/main.py ... を実行すること。GitHub 上のリポジトリは正規版である前提で動かしてよい。
ケース1:必要なファイルと物件情報が揃っている
python scripts/main.py <property.json> <mlit.csv> <koji.geojson> --out <出力先>
python scripts/copy_to_desktop.py <生成された xlsx のフルパス>
入力は2つ(MLIT取引価格情報CSV、地価公示GeoJSON)。基準地価GeoJSON は アルゴリズム未対応のため使用不可。
ケース2:CSVが揃っていない
「冒頭確認事項」§1 のURLとDL手順を案内し、ユーザーがDLしてくるのを待つ。
ケース3:物件情報が断片的
「冒頭確認事項」§2 の必須項目を1つずつ会話で確認し、JSON化してから ケース1 のフローへ。
生成後の必須操作:xlsx を短いパスにコピー(v1.2.8 強化)
Windows の MAX_PATH(259 文字)制限により、Cowork/Claude Desktop サンドボックス配下に出力された xlsx は エンドユーザーが Excel で開けない。必ず以下を実行すること:
python scripts/copy_to_desktop.py <生成された xlsx のフルパス>
copy_to_desktop.py は 2KB の独立スクリプト で、以下の Desktop パス候補を順に試行する:
~/OneDrive/デスクトップ(日本語 Windows + OneDrive 同期)
~/OneDrive/Desktop(英語 Windows + OneDrive 同期)
~/Desktop(ローカル / Mac / Linux)
成功時:[OK] デスクトップにコピー: <パス> を出力 → ユーザーに「デスクトップに <ファイル名> を配置しました」と明示すること。
失敗時:元パスを案内し、手動コピーを依頼すること。
この copy_to_desktop.py 呼び出しを省略すると、エンドユーザー(仲介業者)は Excel で xlsx を開けず、本ツールの実用性が崩壊する。必ず main.py の直後に呼ぶこと。
適用範囲・限界
- 対象:日本の宅地(更地・所有権のみ)。マンション、戸建(建物含む)、借地権・地上権・賃借権等の権利調整評価は MVP対象外
- 対象エリア:全国の市区町村単位。隣接市区町村への自動拡張は行わない(媒介査定の信頼性確保のため、件数不足はそのまま降格判定)
- 件数下限:15件未満は回帰スキップ → 類似度ベース集約に降格(業者用シートに警告)
- 路線価(相続税):MVP対象外。実勢査定に税務路線価は本来不要
- 収益還元法・原価法:採用しない(比準法のみ)
- 公示の役割:地域標準価格のチェック用+時点修正年率の根拠。比準法のメイン軸はヘドニック係数による事例補正であって、公示アンカーではない
- 鑑定書(鑑定評価書):本スキルは『不動産の鑑定評価に関する法律』に基づく鑑定評価書ではなく、宅建業者の媒介査定書のみ。鑑定士による鑑定書作成用途では別の鑑定評価ソフトを使用
出力スタイル
- 業者用シートは「全開示・数値中心」、顧客用シートは「言語化・読みやすさ中心」で書き分ける
- 不明・欠損は色付セルで明示(業者用は橙色、顧客用は文章で「データなし」と記述)
- 業者ブランド要素(ロゴ・担当者名・連絡先)はスキル側で提供しない(業者側でカスタマイズ)
禁止事項
以下は実装してはならない:
- 3手法併用(取引事例比較法+原価法+収益還元法)の構造を組み込まない
- 公示アンカー方式(公示価格を主軸にして補正をかける)に切り替えない
- 路線価(相続税)を組み込まない
- マンション・戸建(建物含む)の査定をしない(土地のみ対応、建物減価・原価法は本スキル対象外)
- 借地権・地上権・賃借権等の権利評価をしない(更地・所有権のみ対応)
- 鑑定書(鑑定評価書)の出力をしない(『不動産の鑑定評価に関する法律』対象外。本スキルは媒介査定書のみ)
- 隣接市区町村への自動拡張をしない(市区町村単位を厳守、期間枠は解除しMLITの全期間を採用)
- 角地・二方路・三方路等のMLIT非該当要因に対するユーザー裁量補正の数値指定機能を組み込まない(媒介担当者が出力xlsxを見て査定価格を手動上乗せする運用)
- 顧客用シートでの補正率数値開示をしない
- 顧客用シートでのヘドニック値の表示をしない
- **業者ブランド要素(ロゴ・担当者名・連絡先)**をテンプレ提供しない
- 「AI」「モデル」「機械学習」「ヘドニック」「β」「回帰」「統計」「予測」等の用語を顧客用シートで使わない(
forbidden_words.py で機械的に検出・停止)
- 売主に過度な期待を抱かせる表現をしない(顧客用シート §留意点 の定型文を維持)
免責事項
本スキルは媒介査定における一次スクリーニングを支援する補助ツールです。本ツールの出力は 「不動産の鑑定評価に関する法律」に基づく鑑定評価ではなく、宅建業者の媒介査定書として参考利用されるものです。最終的な売出価格・成約価格は媒介担当者の判断と現地確認に基づいて決定されるべきものです。作者・開発者が不動産鑑定士の資格を有していても、本ツールの出力が不動産鑑定評価であることを意味しません。スキルの利用に起因する損害について作者は一切の責任を負いません。
チャット上で査定価格・参考価格・価格レンジを要約・提示する場合は必ず「本価格は机上査定(参考値)であり、不動産鑑定評価ではありません」の旨を1行付記すること。
バージョン履歴
- v1.5.0 (2026-08-09): Codex と Claude Code の共通Agent Skill化。canonical Skillを
skills/tochi-satei-kun/ に固定し、Codex package と Claude package を scripts/sync_agent_plugins.py で同期する構成を追加。査定ロジック・査定値は変更なし。
- v1.4.3 (2026-07-19): v1.2.3からv1.4.2まで、ヘドニック係数から算定した標準化補正・地域格差の適用方向に不整合があり、一部条件で比準表の試算値および最終査定価格へ影響する可能性がありました。補正計算を「事例から査定対象への変換倍率」に統一し、方位・不整形の二重適用を解消しました。比準表、最終査定価格、価格レンジ、散布図および顧客用シートが同じ補正後価格を参照するよう修正しました。あわせて、時点修正の根拠表示、未来データへのフォールバック、建物込み取引の混入、欠損列処理を修正し、期待値固定の回帰テストを追加しました。
- v1.4.2 (2026-05-18): SKILL.md 冒頭に 「実行時の絶対命令 6 箇条」 を追加(自前 xlsx 生成禁止・main.py 強制実行の Cowork 側 Claude への命令)。業者用シート A2 セルに 認証マーカー(
tochi-satei-kun v1.4.2 — Apache 2.0)を追加、xlsx_writer.py で Workbook プロパティに creator / description を設定。INSTALL.md に 「出力検証チェックリスト」 を新設し、ユーザーがハルシネーション出力を 30 秒で見抜けるようにした
- v1.4.1 (2026-05-18): v1.4.0 で Apache ヘッダー追加により
main_helpers.py が 17.15 KB に肥大化し Cowork 配布層 truncate が再発したため、main_helpers_geo.py(7 KB)と main_helpers_koji.py(10.9 KB)に分割し本体は再エクスポート shim(1.4 KB)に。xlsx_gyosha_sheet.py 関数冒頭に print_area = "A1:N200" を暫定設定(末尾で正確値に上書き、truncate されても印刷範囲が保たれる)
- v1.4.0 (2026-05-17): ライセンスを MIT → Apache License 2.0 に変更(特許保護条項・派生物表示義務・企業導入の法務障壁低下)。全 .py に Apache 標準ヘッダー追加、NOTICE 新設、GitHub Issues に 13 本起票(コミュニティで育てる OSS への移行)
- v1.3.2 (2026-05-16): 業者用シート末尾に
ws.print_area = f"A1:N{r}" を明示指定(散布図用隠しデータ R-W 列を印刷範囲から除外、29 ページ → 4 ページ)
- v1.3.1 (2026-05-16): 列幅消失バグ修正(
_adjust_col_widths 呼び出しを関数冒頭にも追加、Cowork 配布層 truncate 対策)
- v1.3.0 (2026-05-16): Watcher を
tools/watch_cowork_outputs.py として正式追加(Cowork サンドボックスがホスト Desktop に書き込めない構造的壁を補完)、INSTALL.md 新設、README 全面リライト(「6 つの特徴」テーブル、競合言及全削除)、動的改ページ実装(業者用 4 ページ / 顧客用 3 ページ構成)、pageBreakPreview view モード設定
- v1.2.9 (2026-05-16): main.py(28KB → 9.9KB)と correction.py(22.7KB → 17.1KB)を物理的に分割して Cowork 配布層の truncate(〜25KB で発生)を回避。
main_helpers.py(16.6KB、koji/kijun 計算、公示番号変換、時系列補間)と hijun_breakdown.py(5.8KB、比準内訳計算)を新設。これで全実行系ファイルが 20KB 未満になり、Cowork が 「ファイル送信時に末尾欠落/ヌル詰め」と判定して独自 workaround を作成する挙動 が構造的に解消される見込み
- v1.2.8 (2026-05-16): (B) SKILL.md に を追加し、Cowork の AI が「末尾途切れ」と誤判定して workaround を作成する挙動を抑止(tail コマンドで末尾を確認し、独自書き換えをしないよう明示)。(C) (2KB の独立ヘルパー)を新設。 実行後に必ず を呼ぶ運用を SKILL.md に明記。AI が main.py を workaround で書き換えても、デスクトップコピーは別レイヤーで確実に実行されるよう二重化
作者・連絡先