投稿する

再掲載の戸建て物件を発掘する物件仕入れシステム

SUUMOや空き家バンク等のサイトを24時間巡回し、収益性の高い戸建て物件を自動で発掘・査定する仕入れエージェントシステムです。 最大の特徴は「再掲載検知」にあり、物件固有のフィンガープリントにより、値下げやURL変更を伴う再掲載を即座に特定。売れ残り期間や価格推移から、交渉の余地が大きい物件を自動抽出します。 内部ではClaudeによる画像・立地評価と、勾配ブースティングを用いた独自スコアリングを併用。 取得物件はDiscordへ通知され、意思決定ボタンを通じて収集されたフィードバック(問い合わせ・指値・成約成否)をもとに、AIが週次で学習・進化し続ける自律的な運用を実現します。
zip未取得

Akiya Sniper - AI Property Acquisition Agent

AIで"化ける戸建て"を24時間発掘する、完全自動の物件仕入れシステム。

!System Architecture

コンセプト: Human Out of the Loop (HOOTL)

人間が介在しなくても 止まらず・賢くなり・事業インパクトを出す AIエージェント。

[2h毎スクレイピング] → [物件正規化+再掲載検知] → [AI査定]
         ↑                                          ↓
[フィードバックで再学習] ← [ファネル追跡] ← [Discord通知+ボタン]

再掲載検知

物件のフィンガープリント(住所+面積+築年)で同一物件を追跡。

URLが変わっても再掲載を検知し、掲載日数・値下げ履歴・再掲載回数を記録。

「半年売れ残り+3回値下げ」= 交渉チャンスのシグナル。

ファネル型フィードバック

成約まで待たず、意思決定の各段階でデータを収集:

ステージタイミングDiscord UI学習シグナル
Stage 1物件通知時問い合わせ/見送り/ウォッチ弱い正/負
Stage 2問い合わせ3日後値引きOK/強気/返答なし強い正/負
Stage 3値引きOK時指値金額入力(モーダル)定量データ
Stage 4交渉4週間後成約/不成立最終結果

アーキテクチャ(サーバーレス)

GitHub Actions (cron)
  ├── 2h毎: スクレイピング → 再掲載検知 → Sheets同期 → スコアリング → Discord通知
  ├── 毎日10時: フォローアップ(Stage 2/4ボタン送信)
  ├── 毎日20時: 日次サマリ
  └── 毎週日曜: モデル再学習

Discord Webhook → ボタン付きEmbed送信(Bot常駐不要)

Supabase Edge Function → Discord Interaction Endpoint
  └── ボタン押下 → feedback保存 → 物件ステータス更新

Supabase
  ├── PostgreSQL(物件・フィードバック・ログ)
  └── Storage(学習モデル永続化)

Google Sheets(gogcli経由)
  └── 物件一覧 + 変更履歴の可視化

ファイル構成

src/
├── config.py                 # 環境変数管理
├── models.py                 # Property / ScoringResult / Feedback(ファネル対応)
├── database.py               # Supabase CRUD + フィンガープリント + 再掲載検知
├── pipeline.py               # 各パイプライン関数(GitHub Actionsから呼ばれる)
├── notifier.py               # Discord Webhook通知 + ステージ別ボタン
├── health.py                 # ヘルスモニタリング
├── sheets.py                 # Google Sheets同期(gogcli)
├── scrapers/
│   ├── base.py               # リトライ付きベーススクレイパー
│   ├── suumo.py              # SUUMO中古戸建て
│   ├── athome.py             # at home
│   └── akiya_bank.py         # 空き家バンク
└── scoring/
    ├── ai_assessor.py        # Claude画像判定 + 立地評価 + 再掲載ボーナス
    └── evolution_engine.py   # ファネルフィードバックで再学習(GBM)
scripts/
├── run_scrape.py             # スクレイピング実行
├── run_score.py              # スコアリング実行
├── run_followup.py           # フォローアップ送信
├── run_summary.py            # 日次サマリ
└── run_retrain.py            # モデル再学習
.github/workflows/
├── scrape_and_score.yml      # 2h毎
├── followup_and_summary.yml  # 毎日
└── retrain.yml               # 毎週
supabase/
├── migrations/
│   ├── 001_init.sql
│   └── 002_relist_and_funnel.sql
└── functions/
    └── discord-interaction/index.ts  # ボタンコールバック処理

スコアリングロジック

総合スコア = 利回り(30%) + 立地(25%) + 状態(20%) + 再建築(15%) + 災害リスク(10%) + 再掲載ボーナス(最大+15)

再掲載ボーナス:

  • 再掲載回数 x 2点(最大8点)
  • 値下げ30%以上: +7点 / 20%以上: +5点 / 10%以上: +3点

セットアップ

1. 環境変数

cp .env.example .env
# .env を編集してAPIキーを設定

必須キー:

  • SUPABASE_URL / SUPABASE_KEY - Supabase
  • ANTHROPIC_API_KEY - Claude画像判定・立地評価
  • DISCORD_WEBHOOK_URL - Discord通知Webhook
  • DISCORD_PUBLIC_KEY - ボタンコールバック署名検証
  • GOOGLE_SPREADSHEET_ID - Sheets同期

物件一覧スプレッドシート: Google Sheets

2. Supabaseセットアップ

# マイグレーション実行
# supabase/migrations/001_init.sql → 002_relist_and_funnel.sql の順に実行
# Supabase Storageに "models" バケットを作成

3. Discord設定

  1. Discord Developer Portalでアプリケーション作成
  2. Webhook URLを取得(チャンネル設定 → 連携サービス → Webhook)
  3. Edge Function URLを Interactions Endpoint URL に登録

4. Supabase Edge Function デプロイ

supabase functions deploy discord-interaction
supabase secrets set DISCORD_PUBLIC_KEY=xxx SUPABASE_SERVICE_ROLE_KEY=xxx

5. GitHub Actions

リポジトリのSecrets に環境変数を設定すれば自動で動き始めます。

ローカルテスト

pip install -e .
python main.py scrape    # スクレイピング
python main.py score     # スコアリング
python main.py followup  # フォローアップ
python main.py summary   # 日次サマリ
python main.py retrain   # モデル再学習

進化の仕組み

  1. ボタンタップでフィードバック収集(成約を待たない)
  2. 「問い合わせた物件」と「見送った物件」のパターンの違いを学習
  3. 「値引きOKだった物件」の特徴を強い正シグナルとして重み付け
  4. 再掲載回数・掲載日数・値下げ率も特徴量に含む
  5. 週次で自動再学習 → スコア補正係数が更新される

技術スタック

  • Python 3.11+ / asyncio
  • httpx + BeautifulSoup(スクレイピング)
  • Anthropic Claude(画像分析・立地評価)
  • scikit-learn GradientBoosting(進化モデル)
  • Discord Webhook + Interaction Endpoint(通知+フィードバック)
  • Supabase PostgreSQL + Storage + Edge Functions
  • Google Sheets + gogcli(物件一覧管理)
  • GitHub Actions(サーバーレス定期実行)
  • structlog(構造化ログ)

ライセンス

Private - 個人利用