きっかけ
午前、コーヒーを淹れながら不動産ポータルを眺めていたら、東京のある駅まわりのマンション相場をちゃんと並べて見たくなった。手で 1 件ずつ SUUMO を開いてエクセルに転記する未来が見えて、すぐに別のタブを閉じた。Claude Code に「マンション 3LDK 中心、戸建ても見たい」と投げて、agent-browser で SUUMO を踏み歩かせるところから始めた。
物件探しを「気になったときに自分で 30 分溶かす作業」から「AI に踏ませて差分だけ自分が見る作業」に切り替える実験でもある。
LIFULL HOME'S はブロックされて SUUMO 一本に切り替え
最初は SUUMO と LIFULL HOME'S を並べて比較させようと指示した。HOME'S 側はリクエストの途中でブロックされ、agent-browser のセッションがエラーで止まった。リトライしても返ってくるのはほぼ空のページで、bot 判定に引っかかっている気配があった。
ここで欲張らず、Claude Code に「HOME'S は諦めて SUUMO だけで進めて」と指示し直した。並列で 2 ソース見たい気持ちはあったが、片方が落ちるたびに会話が止まるほうがコストが高い。
駅専用ページの URL を見つけてもらう
「区→駅」で SUUMO の絞り込みを進めさせると、駅から探す導線の中に対象駅専用ページが見つかった。3LDK でフィルタした URL を保存させて、その URL を起点に一覧をスクレイプし直す形に変えた。
結果:
- 中古マンション 3LDK: 28 件
- 新築戸建て: 5 件
- 中古戸建て: 数件(駅から離れた物件を含む)
件数と属性レベルで止めて、個別物件名や価格は手元の JSON にだけ書き込ませた。家族と相談する前に SNS で口を滑らせない用心。
最初のレポートは裸 URL でクリックできなかった
Claude Code が最初に書き出してくれたレポートは、物件ごとに https://suumo.jp/... をそのまま貼った形式だった。Markdown プレビューで見ると行頭の長い URL が折り返して読みにくく、クリックする気力も消える。
「インラインリンク [テキスト](URL) 形式に書き直して、表示テキストには物件名を入れて」と指示し直した。書き直された 2 版目は、行頭が物件名で始まり、その奥に SUUMO の詳細ページが格納される形になった。一覧を縦に流し読みできるようになって、ようやく「比較する道具」として使える状態になった。
物件名を取り直してもらう
レポートの初稿では、表示テキストが「中古マンション #1」「中古マンション #2」と機械的な連番になっていた。SUUMO の一覧側には 物件名 というフィールドが入っているのに、agent-browser が拾った段階で落としてしまっていた。
セレクタを見直してもらって、物件名 フィールドを必ず JSON に入れる前提で取り直させた。3 回目の取得でようやく、各行に物件名が乗った。並べてみると、同じマンション名で部屋違いの登録が複数本ぶら下がっているケースもあって、これは目で気づける情報だった。
定点観測用に JSON を同時保存
レポートは人間が読む用、JSON は次回の差分検出用、と最初から分けて保存させた。来月もう一度同じ条件で SUUMO を踏ませて、新規追加・成約済みで消えた物件・価格改定を JSON 同士の diff で拾えるようにしておきたかった。
物件 ID をキーにして、価格・面積・築年・住所・駅徒歩分・URL を 1 オブジェクトに収めた形にしている。手で書いたら絶対サボる部分を、最初に AI に組ませておく。
学区を優先順位の軸に組み込んでもらう
物件を価格と面積でしか並べていなかったので、子供の通う小学校を思い出して「学区を優先順位の軸に組み込んで」と追加で指示した。
Claude Code に学区を Wikipedia から引いてもらうと、番地レベルで細切れに飛び地が入っている地域だった。東京の小学校通学区域はだいぶ細かく決まっていて、住所の番地まで見ないと判定できないケースが多い。これを目で見て物件リストと突き合わせるのは現実的じゃないので、JSON の各物件に住所文字列を突き合わせて学区内フラグを立ててもらった。
学区内に当たる物件だけを上に並べ直したら、価格順で見ていた時とは全然違う優先順位の山ができた。
築年表記と築年経過を併記してもらう
SUUMO の物件詳細には「築 81 年」のように築年が文字列で入っているが、これだけだと「で、今は何年に建ったやつ?」と一旦頭の中で引き算が走る。
「築年表記と、2026 年 5 月時点の築年経過の両方を併記して」と指示して、JSON にも ageYears フィールドを追加してもらった。レポート側には「築 81 年(築 81 年経過 / 1945 年築相当)」という形で並び、目で見て古い順・新しい順に並び替えるのが一発でできるようになった。
戸建て 1 物件の建て替え可否を SUUMO 詳細で確認
学区内に入った戸建てが 1 件あった。築年が古めで、価格は土地として見ると相場通り、建物に値段がついていない様子。「これ建て替え前提でいけるなら面白いかも」と思って、SUUMO の詳細ページから建て替え条件を読み解いてもらった。
確認できたこと:
- 所有権(借地ではない)
- 用途地域は商業地域
- 角地で 2 面接道
- 建ぺい率 80% / 容積率 500%
商業地域で建ぺい 80%・容積 500% の角地は、住宅としては相当余裕のある条件。「これは建て替え条件としてはかなり良い部類」とまとめてもらって、メモに加えるよう指示した。法令制限の生数値を JSON にも残しておいた。次回確認する時にもう一度同じことを調べる手間が消える。
一時ファイルを掃除して、意味単位でコミット
午前の作業中、agent-browser が保存したテキストとスクリーンショットがローカルに散らばっていた。SUUMO のキャプチャ画像と一時的な抽出 JSON は手元に残す必要がないので、Claude Code に削除させた。
残したのは:
- 人間が読むレポート(学区フィルタ・築年経過併記版)
- 定点観測用 JSON(学区フラグ・ageYears・法令制限つき)
これを意味のある単位でステージング & コミットさせて午前の作業を閉じた。
振り返り
物件ポータルの 28 件を眺めて 20 分溶かす作業は、もうこのワークフローでいい。価格と面積だけを見ていた時に比べて、学区フィルタを最初から噛ませることで「住める候補」と「住めない候補」が機械的に分かれた。築年経過を併記してもらったことで、頭の中で引き算する微妙な疲労も消えた。
次にやりたいこと:
- 来月もう一度同じ条件で SUUMO を踏ませて、JSON 同士で diff を取らせる
- 学区フラグつきの戸建てが新規追加されたときに通知する仕組みを足す
- 法令制限の数値が定点観測 JSON にちゃんと残っているか月 1 で確認する
ポータルを眺める仕事を AI に渡して、自分は「学区を軸に入れて」「築年経過を併記して」「建て替え可否までメモして」という判断だけを差し込む。物件探しの最後の 3 割は結局家族と現地を歩く話なので、その手前を機械に詰めてもらう構図に落ち着いた。