📚 一覧 | 物確bot(社員) | 物確bot(CLI) | セットアップ(Mac) | セットアップ(Win)

業者間サイト照合ツール セットアップ手順(Mac・管理者向け)

更新日 2026-07-24。新しいMacにbukken-check一式をゼロから構築するための手順。手動物確CLI(check.py)までを必須範囲とし、STEP 7の自動ラン系(REINS毎朝チェック・ITANDI受信箱監視・新着ボット)は任意。管理者(鳥越)自身、またはそれに準ずる立場の人向け。使い方だけ知りたい場合はbukken-check-cli-manual.htmlを参照。

概要

このツールはPython3 + Playwright(sync API)製で、サードパーティ依存はPlaywrightのみ。ITANDI BB・いえらぶBB・いい生活Square・レインズ・ATBB・アンビションDXなど業者間サイトの掲載状況をまとめて確認できる。このページでは新しいMac上に一式を構築する手順を、STEP 1〜7の順に説明する。STEP 1〜6が必須範囲、STEP 7(自動ラン系のlaunchd登録)は任意。

STEP 1
1

Command Line Toolsを入れる

gitやPython3など、開発ツールの基本部品一式を入れる。

xcode-select --install
「コマンドラインデベロッパツールがインストールされていません」というダイアログが出るので「インストール」をクリックし、数分〜十数分待つ。「すでに最新のコマンドラインツールがインストールされています」と出た場合はすでに入っているので次へ進んでよい。
管理者からzipでツール一式を受け取る場合(STEP 2でgit cloneを使わない場合)は、gitコマンド自体は不要なため、このSTEPは省略してよい(ただしPython3は後続STEPで必要になるので、python3 --versionで入っているか確認しておく)。
STEP 2
2

リポジトリ取得

方法A: git cloneで取得する(GitHub認証が必要)

リポジトリはhttps://github.com/dynasty420/bukken-check.git(private)。事前にGitHubアカウントがこのリポジトリのコラボレーターとして招待されており、gh auth login等で認証済みであることが必要(詳しい手順はbukken-check-cli-manual.htmlのSTEP 2・STEP 3を参照)。

cd ~
git clone https://github.com/dynasty420/bukken-check.git

方法B: 管理者からzipを受け取る

GitHub認証を用意する時間がない場合は、管理者(鳥越)からツール一式のzipを受け取り、~/bukken-checkに展開する。zipには.envprofiles/logs/dumps/は含まれない(別途対応が必要。STEP 4・STEP 5参照)。

どちらの方法でも、以降のコマンドはすべて~/bukken-checkフォルダの中で実行する(cd ~/bukken-check)。
STEP 3
3

Playwright導入

cd ~/bukken-check
pip3 install playwright
python3 -m playwright install chromium
1つ目のコマンドでPlaywright本体(ブラウザを自動操作するための部品)を、2つ目のコマンドで実際のブラウザ本体(Chromium)をダウンロードする。2つ目は100MB前後のダウンロードのため数分かかることがある。
STEP 4
4

.env をリポジトリ直下に配置する

.envには各サイトのログイン情報・内見予約時の担当者情報を書く。値は絶対に管理者(鳥越)から安全な経路で受け取ること。このページを含め、どのドキュメントにも値そのものは書かない。

主なキー名一覧(値はすべて空欄で示す。実際の値は書かない)

キー用途
ITANDI_ID / ITANDI_PASSWORDITANDI BB(通常はlogin.pyの永続プロファイルを使うが、セッション切れ時の自動再ログイン用)
ES_ID / ES_PASSWORDいい生活Square(同上)
IELOVE_ID / IELOVE_PASSWORDいえらぶBB(セッション永続化不可のため毎回自動ログイン)
REINS_ID / REINS_PASSWORDレインズ(同上)
ATBB_ID / ATBB_PASSWORDATBB(同上。ただしreCAPTCHA導入により現在は自動照合不可)
AMBITION_ID / AMBITION_PASSWORDアンビションDX(ambition_book.py用)
MOUSHIKOMI_ID / MOUSHIKOMI_PASSWORD申込受付くん(inspect_moushikomi.py等。未設定時はITANDI_ID/ITANDI_PASSWORDで代用)
NAIKEN_AGENT_NAME / NAIKEN_AGENT_TEL / NAIKEN_AGENT_MAIL内見予約自動送信(book.py)用の案内担当者情報
NAIKEN_CUSTOMER_TYPE / NAIKEN_CUSTOMER_SEX / NAIKEN_CUSTOMER_AGE / NAIKEN_CUSTOMER_NATIONALITY / NAIKEN_CUSTOMER_JOB内見予約自動送信用の顧客属性デフォルト値
NAIKEN_NUMBER_OF_VISITOR内見予約自動送信用の来場人数デフォルト値
最新の正式なキー一覧は、git cloneした場合はリポジトリ直下の.env.examplecp .env.example .envでひな形をコピーできる)を確認する。zip受領の場合も.env.exampleは同梱されている。
.env.gitignore対象で、commit・push・zip配布のいずれにも含めてはいけない。値は口頭・手渡し・暗号化した安全な経路など、平文メールやチャットに残らない方法で受け取ること。
STEP 5
5

永続ログイン(login.py)

ITANDI BB・いい生活(es)はログイン状態をprofiles/フォルダに保存して使い回す方式。それぞれ1回だけ手動でログインしておく。

python3 login.py itandi
python3 login.py es
ブラウザが自動で開くので、自分の手でID・パスワードを入力してログインし、ログインできたらブラウザウィンドウを✕で閉じる。それだけでログイン状態がprofiles/itandi/profiles/es/に自動保存される。
profiles/は他のMacからコピーしてこないこと。Cookieの暗号化がOS・マシン単位に紐づく仕組みのため、他のMacで保存したprofiles/を持ってきても復号できず動作しない。新しいMacでは必ずこのSTEPで自分自身にログインし直すこと。
STEP 6
6

動作確認

python3 check.py "<建物名>"
建物名の部分は実在する物件名に置き換えて実行する。ITANDI BB・いえらぶBB・いい生活・レインズの掲載状況が表示されれば構築完了。詳しいオプション(--room--site--pref--json・バッチモードなど)や、内見予約自動送信(book.py)の使い方はbukken-check-cli-manual.htmlを参照。
STEP 7(任意)
7

自動ラン系(launchd)を設定する場合

REINS自動ラン(毎日9:30)・ITANDI受信箱監視(1日3回)・ITANDI新着ボットの3種は、macOSのlaunchdという仕組みで自動実行している。~/Library/LaunchAgents/に以下の3つのplistファイルを作成し、launchctl loadする。

⚠⚠ 最重要の注意 ⚠⚠
自動ランを動かすのは常に1台だけにすること。既存のMacで稼働中のまま、新しいMacでもlaunchctl loadしてしまうと、同じ処理が二重に実行され、二重通知・二重ログイン試行などの不具合につながる。新しいMacに移行する場合は、既存Mac側でlaunchctl bootout gui/$(id -u)/com.incerto.bukken-check-reinsのように停止してから、新しいMac側でloadすること。

7-1. auto_reins.sh / auto_inbox.sh 内のPython3パスを確認する

auto_reins.shauto_inbox.shPYTHON_BIN変数にPython3の絶対パスを直接書いている。新しいMacでのパスを確認し、違っていれば書き換える。

which python3
表示されたパスが、auto_reins.shauto_inbox.sh冒頭のPYTHON_BIN=の値と違う場合は、その行を書き換える。同様に、下記com.incerto.itandi-new.plistProgramArguments1行目のPython3パスも合わせて書き換える。
これらのスクリプトは失敗時に/Users/自分のユーザー名/bin/notify.sh(Discord通知用の個人スクリプト。bukken-checkリポジトリの外にある別ツール)を呼び出す。新しいMacで通知も動かしたい場合は、そのスクリプトも別途用意する必要がある(無くてもcheck.py/inbox.py本体の動作には影響しない)。

7-2. com.incerto.bukken-check-reins.plist(REINS自動ラン・毎日9:30)

cat > ~/Library/LaunchAgents/com.incerto.bukken-check-reins.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>com.incerto.bukken-check-reins</string>
	<key>ProgramArguments</key>
	<array>
		<string>/bin/bash</string>
		<string>/Users/自分のユーザー名/bukken-check/auto_reins.sh</string>
	</array>
	<key>StandardErrorPath</key>
	<string>/Users/自分のユーザー名/bukken-check/logs/launchd-reins.log</string>
	<key>StandardOutPath</key>
	<string>/Users/自分のユーザー名/bukken-check/logs/launchd-reins.log</string>
	<key>StartCalendarInterval</key>
	<dict>
		<key>Hour</key>
		<integer>9</integer>
		<key>Minute</key>
		<integer>30</integer>
	</dict>
</dict>
</plist>
EOF
上記の/Users/自分のユーザー名/の部分は、実際のホームフォルダのパス(echo ~で確認できる)に置き換えること。

7-3. com.incerto.bukken-check-inbox.plist(ITANDI受信箱監視・1日3回)

cat > ~/Library/LaunchAgents/com.incerto.bukken-check-inbox.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>com.incerto.bukken-check-inbox</string>
	<key>ProgramArguments</key>
	<array>
		<string>/bin/bash</string>
		<string>/Users/自分のユーザー名/bukken-check/auto_inbox.sh</string>
	</array>
	<key>StandardErrorPath</key>
	<string>/Users/自分のユーザー名/bukken-check/logs/launchd-inbox.log</string>
	<key>StandardOutPath</key>
	<string>/Users/自分のユーザー名/bukken-check/logs/launchd-inbox.log</string>
	<key>StartCalendarInterval</key>
	<array>
		<dict>
			<key>Hour</key>
			<integer>8</integer>
			<key>Minute</key>
			<integer>40</integer>
		</dict>
		<dict>
			<key>Hour</key>
			<integer>13</integer>
			<key>Minute</key>
			<integer>0</integer>
		</dict>
		<dict>
			<key>Hour</key>
			<integer>17</integer>
			<key>Minute</key>
			<integer>30</integer>
		</dict>
	</array>
</dict>
</plist>
EOF

7-4. com.incerto.itandi-new.plist(ITANDI新着ボット)

cat > ~/Library/LaunchAgents/com.incerto.itandi-new.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>com.incerto.itandi-new</string>
	<key>ProgramArguments</key>
	<array>
		<string>/usr/bin/python3</string>
		<string>/Users/自分のユーザー名/bukken-check/itandi_new.py</string>
	</array>
	<key>WorkingDirectory</key>
	<string>/Users/自分のユーザー名/bukken-check</string>
	<key>StandardErrorPath</key>
	<string>/Users/自分のユーザー名/bukken-check/logs/launchd-itandi-new.log</string>
	<key>StandardOutPath</key>
	<string>/Users/自分のユーザー名/bukken-check/logs/launchd-itandi-new.log</string>
	<key>StartInterval</key>
	<integer>900</integer>
</dict>
</plist>
EOF
このProgramArguments1行目のPython3パスも、7-1で確認した実際のパスに書き換えること(/usr/bin/python3はあくまで仮の値)。ITANDI_NEW_CONDITION_NAMENOTIFY_WEBHOOK_ITANDI_NEW等の関連設定は.env側(STEP 4)に入れる。

7-5. loadする

launchctl load ~/Library/LaunchAgents/com.incerto.bukken-check-reins.plist
launchctl load ~/Library/LaunchAgents/com.incerto.bukken-check-inbox.plist
launchctl load ~/Library/LaunchAgents/com.incerto.itandi-new.plist
エラーが出なければ登録完了。動作確認はlaunchctl kickstart -k gui/$(id -u)/com.incerto.bukken-check-reinsのように該当のLabelを指定して即時実行し、logs/フォルダ内のログファイルを確認する。
注意
.envはgitにcommit・pushしないこと。git status.envが候補に出てこないことを都度確認する。