ノーコードとPythonを組み合わせた不動産業務の自動化

毎朝、複数の物件CSVを開き、列をそろえ、重複を消し、条件に合う物件だけを営業担当者へ送る。

この作業に1日30分かかるなら、月20営業日で10時間です。しかし、通知部分だけをノーコード化しても、CSVの整形や候補判定が手作業のままでは、負担は大きく減りません。

反対に、Pythonで高度な判定プログラムを作っても、実行できるのが開発者だけなら、担当者の不在と同時に止まります。

不動産業務の自動化で先に決めるべきなのは、ツールではありません。

  • どのデータを受け取るか
  • 何を自動判定するか
  • どこで人が承認するか
  • 失敗時にどう止めるか
  • 資料請求や面談へどう接続するか

この5点です。

この記事では、「新着物件の候補抽出と通知」を具体例に、ノーコード、Python、人間確認を組み合わせる手順を解説します。初心者でも小さく試せる構成から、ログ、停止条件、KPIを備えた定期実行まで段階的に進めます。

結論を先に示すと、基本の役割分担は次のとおりです。

ノーコードはデータを運ぶ。Pythonはデータを整形・判定する。人間は責任を伴う承認と例外処理を行う。

ノーコード・Python・人間確認の使い分け

「初心者だからノーコード」「上級者だからPython」と分けると、実務ではうまくいきません。技術レベルではなく、処理の性質で判断します。

判断項目ノーコードPython人間確認
主な役割入力、転記、通知、連携整形、集計、照合、判定承認、交渉、法的・事業的判断
得意な処理定型的で分岐が少ない処理件数が多く、条件が複雑な処理文脈や責任を伴う処理
変更する人営業、事務、業務担当者開発・データ担当者宅建士、責任者、営業担当者
具体例フォーム登録、担当者通知重複除外、価格換算、スコアリング広告承認、契約条件確定
主な弱点分岐が増えると追跡しにくい保守、認証、実行環境が必要処理量と対応時間に限界がある

ノーコードが向く不動産業務

ノーコードは、画面上でサービス同士をつなぐ処理に向いています。Googleフォーム、Googleスプレッドシート、kintone、Zapier、Makeなどが代表例です。

  • 問い合わせを顧客台帳へ登録する
  • 新着反響をメールやチャットへ通知する
  • 担当者を割り当てる
  • 内見ステータスを更新する
  • 承認依頼を送る
  • Pythonが出力した候補物件をCRMへ登録する
  • エラー発生時に管理者へ通知する

非エンジニアでも処理の流れを確認しやすい一方、複雑なデータ加工を詰め込むと、どの分岐で値が変わったのか追いにくくなります。

Pythonが向く不動産業務

Pythonは、ルールをコードとして管理したい処理に向いています。

  • 複数のCSV・Excelを統合する
  • 媒体ごとに異なる列名を統一する
  • 「3,980万円」を「39800000」に変換する
  • 住所や建物名の表記ゆれを補正する
  • 同一物件の重複候補を検出する
  • 価格、面積、築年数、駅距離を使ってスコアを計算する
  • 前回データとの差分を検出する
  • PDFやCSVのレポートを生成する
  • 処理件数、エラー、判定理由をログへ残す

ただし、Pythonだけでは定期実行になりません。Windowsタスクスケジューラ、cron、GitHub Actionsなどの実行基盤と、認証情報、ログ、異常通知が必要です。

人間が残るべき領域

次の処理は、原則として最終判断を人に残します。

  • 契約条件や取引条件の確定
  • 重要事項説明に関する確認
  • 不動産広告の公開承認
  • 投資、融資、税務に関する意思決定
  • クレーム、価格交渉、例外対応
  • 現地確認が必要な状態評価
  • 個人情報を含むデータの目的外利用判断

目標は、あらゆる判断から人を外すことではありません。定型処理を自動化し、例外と承認だけを人へ渡すことです。

3問で分かるツール選定フロー

迷った場合は、次の順番で判断します。

質問1:サービス間の転記や通知が中心か

「はい」なら、まずノーコードを検討します。

例:フォームへの入力をスプレッドシートへ追加し、担当者へ通知する。

質問2:データの整形・照合・計算が複雑か

「はい」なら、その部分をPythonへ分けます。

例:媒体ごとに列構成が違い、住所の表記ゆれや重複物件も処理する。

質問3:誤判定したときに顧客・契約・広告へ影響するか

「はい」なら、人間の承認を入れます。

例:抽出した物件を社内へ通知するところまでは自動化し、顧客への送信は担当者が承認する。

自動化資産に必要な7つの構成要素

物件データから収益導線までの無人自動化パイプライン

ここでいう「自動化資産」とは、単発のマクロではなく、入力から計測までを繰り返せる仕組みです。

段階実施内容主な担当
入力物件CSV、問い合わせ、顧客条件を受け取るノーコード
保存元データを加工せず保存するストレージ
整形列名、単位、日付、住所形式を統一するPython
判定重複、条件適合、欠損、異常値を判定するPython
承認・配信候補一覧を確認し、担当者や顧客へ届ける人間+ノーコード
計測到達、反応、資料請求、面談を記録するCRM・アクセス解析
改善誤判定とKPIを基に条件を修正するPython+人間

元データを残すのは、誤変換が起きたときに再処理できるようにするためです。入力を直接上書きすると、変換ミスの原因を追えません。

Hiroのサイトで確認した一次情報と実行ログ

机上の成功談ではなく、Hiroが運用する auto-ai-blog リポジトリを2026年7月17日に確認しました。

確認できたコンテンツ数

sites 配下の各 content/posts に存在するMarkdownファイルをローカルで集計した結果です。

サイトMarkdown記事数
AI・テック302本
ビジネス339本
不動産115本
合計756本

これは、ローカルに保存されている記事ファイル数です。アクセス数、検索順位、売上、公開成功数を示す数字ではありません。

確認できた処理構成

リポジトリでは、次の構成を確認できました。

  • PythonからClaude、Gemini、Codexの各CLIを呼び出す
  • 先のCLIが失敗した場合、次のCLIを試す
  • 生成したMarkdownを保存する
  • Notionへの保存結果をログへ記録する
  • Gitへ反映し、push結果を記録する
  • GitHub更新後にCloudflare Pagesがビルド・公開する構成を採用する
  • 実行ログを generator/logs/generate.log に保存する

ローカルログで確認できるのは、記事保存、Notion保存、Git pushなどの各処理結果です。Cloudflare Pages側の公開完了まで保証するには、別途デプロイ結果や公開URLのHTTP応答を確認する必要があります。

失敗時の実ログ

2026年7月17日のログには、次の失敗と代替処理が残っていました。

  • Gemini CLIがコマンド長エラーで失敗
  • Codex CLIがタイムアウト
  • レビュー結果を取得できない場合は、その時点のドラフトを採用
  • 別の実行では、Gemini CLIの認証エラー後にCodex CLIへ切り替え
  • Codexでレビューと最終確認が成功し、記事保存、Notion保存、Git pushまで完了

このログから分かるのは、「フォールバックがあれば必ず高品質になる」ということではありません。

レビュー処理が失敗しても公開工程へ進める設計には、品質が下がった記事を公開するリスクがあります。不動産業務へ応用する場合は、処理を継続してよい失敗と、自動停止すべき失敗を分ける必要があります。

品質基準についての事実確認

generator/ai_slop_guidelines.json には、Notion由来の10項目と合格ライン8点が保存されています。固有データ、数字の根拠、画像、限界、読後アクション、差別化などを確認する仕組みです。

ただし、このスコアは文字列や構成要素を検査する品質ゲートです。専門家による事実確認、法務確認、検索順位、収益性を保証するものではありません。

ステップ・バイ・ステップ:新着物件の候補通知を自動化する

ここからは「毎日届く物件CSVから、顧客条件に合う候補を抽出し、担当者へ通知する」仕組みを作ります。

ステップ1:出口とKPIを1つずつ決める

最初の出口を「担当者への候補通知」に限定します。いきなり顧客へ送信しません。

最初に測るKPIも絞ります。

  • 出口:担当者が候補物件を確認できる
  • システムKPI:自動実行成功率
  • 業務KPI:手作業介入率
  • 顧客KPI:通知後の問い合わせ率
  • 事業KPI:面談化率

「作業時間を減らす」と「売上を増やす」は別の成果です。両方を分けて記録します。

ステップ2:入力・処理・出力・例外を表にする

区分今回の内容
入力物件CSV、顧客希望条件
処理列名統一、金額変換、重複除外、条件判定
出力候補物件CSV、要確認CSV、処理ログ
例外必須列なし、価格欠損、住所不明、ファイル破損
承認者営業担当者
配信先社内メールまたはCRM

この段階で、正本となるデータを決めます。営業担当者ごとに別の台帳を持っている場合は、自動化の前に更新先を統一してください。

ステップ3:入力データの契約を決める

Pythonへ渡す前に、必須列とデータ形式を定義します。

property_id       媒体内の物件ID
source            取得元
property_name     物件名
address           所在地
price_yen         価格(円)
area_sqm          専有・建物面積(平方メートル)
built_year        築年
walk_minutes      駅徒歩分
captured_at       取得日時

最低限、次を決めます。

  • 金額は円か万円か
  • 面積は平方メートルか坪か
  • 空欄とゼロを区別するか
  • 日付のタイムゾーンは何か
  • 同一物件を判定するキーは何か
  • 文字コードはUTF-8かShift_JISか

「0円」と「価格不明」を同じ値にすると、価格条件の判定を誤ります。欠損値は空欄や専用の状態として扱います。

ステップ4:ノーコードで入口から社内通知まで通す

最初はPythonの高度な判定を入れず、テストデータが入口から出口まで届くか確認します。

例:

  1. フォームまたは指定フォルダへテストCSVを登録する
  2. ノーコードツールがファイル情報を記録する
  3. 処理待ちステータスへ変更する
  4. 社内のテスト用チャンネルへ通知する
  5. 処理済みステータスへ変更する

確認項目は次のとおりです。

  • 同じファイルを2回登録しても二重処理されないか
  • ファイル名に日本語や空白があっても動くか
  • 必須項目が空欄なら停止するか
  • 担当者不在時の代替通知先があるか
  • 外部サービス停止時に元ファイルが残るか

二重処理を防ぐには、ファイル名だけでなく、ファイル内容のハッシュ値や受付IDを保存します。

ステップ5:Pythonへ整形処理を分離する

Python側では、1つの処理に多くの責務を詰め込まず、段階を分けます。

01_load       ファイルを読み込む
02_validate   必須列と型を検査する
03_normalize  金額、面積、住所を統一する
04_deduplicate 重複候補を分ける
05_score      条件適合度を計算する
06_export     候補、要確認、除外を出力する
07_log        件数とエラーを記録する

判定条件はコードへ直接埋め込まず、設定ファイルや管理表へ分離します。

max_price_yen: 40000000
min_area_sqm: 40
max_walk_minutes: 15
allowed_areas:
  - 新宿区
  - 中野区

設定変更者、変更日時、変更理由も残します。条件を変更した直後に候補数が急増した場合、原因を追いやすくなります。

ステップ6:結果だけでなく判定理由を出力する

出力例は次のようにします。

property_id判定理由
A001候補価格、面積、駅距離が条件内
A002要確認価格が欠損
A003除外上限価格を500万円超過
A004要確認同一住所・類似物件名を検出

単に「候補ではない」と出力しても、担当者は判定の妥当性を確認できません。適用した条件値と、どの条件に一致・不一致だったかを残します。

ステップ7:ログと再実行方法を用意する

最低限、次の項目を1回の実行単位で保存します。

run_id
started_at
finished_at
input_file
input_hash
input_count
valid_count
candidate_count
review_count
excluded_count
duplicate_count
error_count
config_version
status
error_message

run_id を使うと、候補一覧、エラー、通知結果を同じ実行として追跡できます。

再実行時は、同じ顧客へ同じ物件を再送しない仕組みも必要です。送信履歴には、顧客ID、物件ID、送信日時、実行IDを保存します。

ステップ8:社内確認で誤判定を測る

初期段階では、顧客への送信を無効にします。

担当者は候補を次の3種類へ分類します。

  • 正しい候補
  • 本来は除外すべき候補
  • 候補なのに抽出されなかった物件

この結果から、適合率と見逃し率を確認します。

候補適合率 = 正しい候補数 ÷ 自動抽出した候補数
見逃し率 = 見逃した候補数 ÷ 人が判断した全候補数

候補数が多くても、誤判定ばかりでは営業負担が増えます。抽出件数だけで成功と判断しないでください。

ステップ9:停止条件を決めて定期実行する

自動化を本番化する前に、正常条件より先に停止条件を決めます。

  • 必須列が1つでも存在しない
  • 入力ファイルが空
  • 入力件数が過去の通常範囲から大きく外れる
  • 欠損率が基準を超える
  • 候補件数が突然ゼロになる
  • 候補件数が前回から異常に増える
  • 外部サービスの認証に失敗する
  • 同一顧客への重複送信を検出する
  • 広告・顧客配信前の承認記録がない

しきい値は、根拠なく「20%」などと固定しません。まず2〜4週間の実績を記録し、中央値や通常範囲を確認してから設定します。

障害を広げないエラー設計

再試行してよい失敗

  • 一時的なネットワーク切断
  • APIの一時的なタイムアウト
  • 通知サービスの一時的な応答遅延

一定時間を空けて、回数を制限して再試行します。

自動停止すべき失敗

  • 必須列の変更
  • 認証情報の失効
  • 入力形式の大幅な変更
  • 個人情報の送信先不一致
  • 承認されていない広告公開
  • 大量の重複送信

再試行しても解決しないうえ、被害を広げる可能性があります。

隔離して処理を続けられる失敗

  • 一部物件だけ価格が欠損
  • 住所形式を解釈できない
  • PDFの一部だけ読み取れない

問題のある行を「要確認」へ隔離し、正常な行だけ処理します。ただし、隔離件数が基準を超えた場合は全体を停止します。

不動産業務で特に確認すべきリスク

個人情報を必要以上に連携しない

問い合わせデータを外部サービスやAIへ渡す場合、氏名、住所、電話番号、メールアドレスをすべて送る必要があるか確認します。

実務では次を確認します。

  • 利用目的
  • 送信する項目
  • 保存される国・地域
  • 保存期間
  • 削除方法
  • アクセス権限
  • 再委託先
  • 漏えい時の連絡方法

分析処理では顧客IDを使い、直接識別できる情報を分離する方法が有効です。ただし、IDへ置き換えただけで、必ず匿名加工情報になるわけではありません。

個人データの取扱いを委託する場合、委託元には委託先の適切な選定、契約、取扱状況の把握などが求められます。具体的な対応は個人情報保護委員会のガイドラインで確認してください。

物件広告を無承認で公開しない

AIやテンプレートが生成した広告には、次の誤りが混ざる可能性があります。

  • 募集終了物件を掲載する
  • 実際と異なる設備を記載する
  • 駅徒歩分数を誤変換する
  • 価格や管理費の更新を反映しない
  • 確実に利益が出るような表現を使う
  • 利用できない物件で集客する

不動産広告では、おとり広告や虚偽広告が禁止されています。公開前に取引可否、更新日時、必要表示事項、表現を確認し、承認者を記録してください。詳細は国土交通省の注意喚起不動産の表示に関する公正競争規約を参照してください。

外部サイトの自動取得条件を確認する

物件情報を取得する前に、利用規約、API提供条件、robots.txt、著作権、アクセス頻度、二次利用条件を確認します。

取得できる技術があることと、業務や収益化に利用できることは別です。許諾を確認できないデータを自動化の中心に置くと、提供停止だけで仕組み全体が動かなくなります。

成果を測るKPI

KPIは、システム、データ、業務、顧客、事業の5層に分けると原因を特定しやすくなります。

KPI計算方法
システム自動実行成功率成功実行数 ÷ 全実行数
システム平均復旧時間障害発生から復旧までの時間
データ欠損率必須値が欠損した件数 ÷ 入力件数
データ重複率重複候補数 ÷ 入力件数
判定候補適合率正しい候補数 ÷ 自動抽出候補数
判定要確認率要確認件数 ÷ 処理件数
業務手作業介入率人が修正した件数 ÷ 処理件数
業務1実行あたり確認時間確認作業時間 ÷ 実行数
顧客通知反応率反応件数 ÷ 到達通知数
顧客資料請求率資料請求数 ÷ 対象ページ訪問数
事業面談化率面談数 ÷ 有効問い合わせ数
事業1成果あたり運用時間人の作業時間 ÷ 成果件数

毎週、次の順序で確認します。

  1. 実行自体が成功したか
  2. 入力データが正常だったか
  3. 判定精度が悪化していないか
  4. 担当者の確認時間が減ったか
  5. 顧客反応や面談につながったか

売上だけを見ても、障害、データ品質、判定条件、営業対応のどこに原因があるか分かりません。

よくある失敗と修正方法

ノーコードに複雑な判定を詰め込む

症状: 分岐が増え、担当者が変更できなくなる。

修正: ノーコードは受付、転記、通知に限定し、整形と判定をPythonへ分離する。

Pythonを作った本人しか実行できない

症状: 開発者が休むと処理が止まる。

修正: 定期実行、設定ファイル、操作手順、ログ、異常通知、再実行手順を用意する。

元データを上書きする

症状: 誤変換に気づいても復元できない。

修正: 元データ、整形後データ、判定結果を分けて保存し、実行IDで関連付ける。

成功ログしか残さない

症状: 未処理や未配信に気づけない。

修正: 成功、失敗、スキップ、要確認をすべて記録する。正常時の通知は減らし、異常時の通知を確実に届ける。

最初から顧客へ自動送信する

症状: 欠損や誤判定が顧客へ届く。

修正: テストデータ、社内通知、承認付き配信、限定配信の順に範囲を広げる。

フォールバック後の品質を確認しない

症状: 処理は完了しているが、通常より品質の低い結果が公開・配信される。

修正: 代替処理を使った場合はステータスを「成功」ではなく「要確認付き成功」にする。外部公開前に承認を要求する。

処理件数を成果と考える

症状: 自動処理件数は増えたが、問い合わせや面談が増えない。

修正: 処理KPIと事業KPIを分け、候補適合率、反応率、面談化率まで追跡する。

実運用で掲載したい証拠

生成画像は全体像を伝えるためのものです。自動化が実際に動いた証拠には、次の画面を掲載します。

  1. 処理前CSVの一部
  2. 必須列と型の検査結果
  3. 入力件数、候補件数、エラー件数が分かる実行ログ
  4. 判定理由付きの候補一覧
  5. ノーコード側の通知履歴
  6. 承認後の配信結果
  7. KPIの週次推移

氏名、電話番号、詳細住所、認証情報、内部URLはマスキングしてください。スクリーンショットには取得日時と実行IDを添えると、どの処理結果なのか確認しやすくなります。

この設計にも限界がある

ノーコードとPythonを組み合わせても、次のケースでは費用対効果が合わない場合があります。

  • 月数件しか処理せず、手作業のほうが早い
  • 入力データの利用許諾を確認できない
  • 判断基準を言語化できない
  • 例外が多く、毎回個別交渉が必要
  • 現地調査を省略できない
  • 保守担当者を確保できない
  • 外部サービスの料金や仕様変更に耐えられない
  • 広告や契約の確認責任者を置けない

また、自動化は収益を保証しません。処理が速くなっても、対象顧客、物件、提案内容が需要に合わなければ、資料請求や面談にはつながりません。

類似する比較記事との違い

一般的な「ノーコード対Python」の記事は、料金や学習難易度の比較で終わりがちです。

本記事では、次の運用境界まで具体化しました。

  • ノーコードは入力、転記、通知を担当する
  • Pythonは整形、照合、判定を担当する
  • 人間は広告、契約、例外を承認する
  • 元データを残して再処理できるようにする
  • フォールバック後の品質低下を区別する
  • 停止条件を正常条件より先に決める
  • 処理件数ではなく、精度と事業成果を測る

さらに、Hiroの auto-ai-blog で確認できた実行ログを基に、CLIの認証エラー、コマンド長エラー、タイムアウト、代替処理という実際の失敗を設計へ反映しています。

今日から始める30分の棚卸し

繰り返している不動産業務を1つだけ選び、次の表を埋めてください。

項目記入内容
業務名例:新着物件の候補抽出
実行頻度毎日、毎週、問い合わせごと
入力CSV、Excel、フォーム、メール
手作業列修正、照合、判定、通知
出力候補一覧、レポート、メール
例外欠損、重複、形式変更
承認者営業責任者、宅建士など
失敗時の影響誤配信、広告違反、対応漏れ
収益に近い出口資料請求、面談、管理提案
最初のKPI成功率、介入率、反応率

その後、処理を3色に分けます。

  • ノーコード:受付、転記、通知
  • Python:整形、重複処理、判定
  • 人間:例外、広告、契約、最終承認

最初の実装対象には、契約判断ではなく、CSV整形、重複候補の検出、社内通知など、正解を確認しやすい処理を選んでください。

不動産業務の自動化を継続的な仕組みにする

不動産業務の自動化では、ノーコードかPythonのどちらか一方へ統一する必要はありません。

ノーコードでデータを受け取り、Pythonで整形・判定し、結果をノーコードへ戻す。人間は例外と最終承認を担当する。この循環に、元データ、ログ、停止条件、再実行方法、KPIを加えることで、担当者しか動かせない便利ツールから、継続運用できる仕組みへ近づきます。

最初から完全自動化を狙わず、次の順序で進めてください。

  1. テストデータで入口と出口をつなぐ
  2. Pythonで整形処理を分離する
  3. 判定理由とログを残す
  4. 社内確認で誤判定を測る
  5. 停止条件を設定する
  6. 承認付きで配信する
  7. KPIを見ながら対象範囲を広げる

本気で自動化・不労所得の仕組みを構築したい方へ

自動化の成果を分けるのは、使ったツールの数ではありません。

  • 何を自動化するか
  • どこから収益導線へ接続するか
  • どの失敗なら継続するか
  • どの異常で停止するか
  • 何をKPIとして改善するか

ここまで設計し、実行ログを基に修正できるかどうかです。

データ収集、判定、配信、計測をつなぎ、自分が毎回操作しなくても回る仕組みを構築したい方向けに、実践マニュアルを用意しています。

収益を保証する教材ではありませんが、ツール選定、構築手順、収益導線、監視方法を、再現可能な作業へ落とし込むための材料として利用できます。

本気で自動化・不労所得を構築したい方向けの実践マニュアルを見る