広告異常検知システム

広告月別集計 Airtable(appUhyrJpQKVbGoDi)の異常を自動検知・通知するシステム
稼働中 Airtable Chatwork 毎週月曜自動実行

検知ルール

▍月次チェック(前月比較)

CV突然ゼロ
コンバージョン消失
前月CV > 0 かつ 当月CV = 0
閾値: 0件(完全消失)
CV大幅減少
前月比大幅下落
当月CV ÷ 前月CV < 50%
閾値: 前月比 50%未満
除外率急上昇
除外率が高水準
当月の除外率 ≥ 30%
閾値: 30% 以上
CPA悪化
獲得単価が高騰
当月CPA ≥ 30,000円
閾値: ¥30,000 以上

▍週次チェック(先週増分比較)

週次スナップショットを毎週保存し、今週の増分と先週の増分を比較します。月初3週目以降(スナップショット2点が揃った時点)から判定が開始されます。

CV週次減少
今週のCV増分が急減
今週CV増分 < 先週CV増分 × 30%
閾値: 先週比 30%未満
利益週次減少
今週の利益増分が急減
今週利益増分 < 先週増分 × 30%(黒字時のみ)
閾値: 先週比 30%未満
除外率週次悪化
除外率が高水準かつ悪化
累計除外率 ≥ 30% かつ 先週より上昇
閾値: 30%以上 & 先週より増加
CPA週次悪化
今週分CPAが高騰
今週の広告費増分 ÷ CV増分 ≥ 30,000円
閾値: ¥30,000 以上

自動実行スケジュール

🗓
毎週月曜日 12:00
macOS launchd により自動実行 / 当月データを対象に検知
月の決定ロジック: 引数なしで実行した場合、実行日の「当月」を自動で対象にします。
手動実行する場合は --month 2026/5 のように月を指定することもできます。

実行フロー

1
Airtable からデータ取得
CV・除外率・CPA の各テーブルから当月・前月のレコードを取得。週次スナップショットテーブルから直近2点の履歴も取得
2
月次4項目 + 週次4項目で異常判定
月次: CV突然ゼロ / CV大幅減少 / 除外率急上昇 / CPA悪化
週次: CV週次減少 / 利益週次減少 / 除外率週次悪化 / CPA週次悪化
3
週次スナップショットを保存 & アラートログに記録
今週分の累計値をスナップショットとして保存(当日未保存時のみ)。月次アラートがあれば「アラートログv2」にも記録
4
Chatwork に毎回通知(異常なしも含む)
アラートの有無にかかわらず必ず送信。異常あり時は [toall] 付き、異常なし時は「✅ 異常なし」を通知

Chatwork 通知フォーマット

実行のたびに毎回送信されます(異常なし時も含む)。異常があるときだけ [toall] が付きます。

異常あり(月次・週次いずれかが検知)

[toall] [info][title]📊 広告アラート 2026/6(2026-06-25)[/title] ━━ 月次チェック ━━ ■ CV突然ゼロ(前月CV>0 → 今月0) ・媒体名A ・媒体名B ■ CV大幅減少(前月比50%以下) ・媒体名C: 12件 → 5件(42%) ■ 除外率急上昇(30%以上) ・媒体名D: 34.2% ━━ 週次チェック(先週比)━━ ✅ 週次: 異常なし [/info]

異常なし(全項目クリア)

[info][title]📊 広告アラート 2026/6(2026-06-25)[/title] ✅ 異常なし(月次・週次 全項目クリア) [/info]
送信アカウント: 専用の別アカウントから送信することで [toall] の通知が全員に届きます。
自分自身のアカウントで送ると自分への通知がスキップされるため、専用アカウントを使用しています。

Airtable テーブル仕様

アラートログ(月次)

テーブル名:アラートログv2(広告月別集計ベース内)

Airtable でアラートログを開く
フィールド 内容
タイトル テキスト 「2026/5 - 媒体名 - CV突然ゼロ」形式
媒体名 テキスト 検知された媒体の名称
テキスト 対象月(例: 2026/5)
種別 選択 CV突然ゼロ / CV大幅減少 / 除外率急上昇 / CPA悪化
テキスト 検知時の数値(CV件数・除外率・CPA等)
検知日時 テキスト 実行日時(例: 2026-05-29 12:00)

週次スナップショット

テーブル名:週次スナップショットv1(広告月別集計ベース内)。媒体ごとの週次累計値を毎週1行ずつ追加保存します。

フィールド 内容
媒体名テキスト媒体の名称
保存日テキストスナップショット取得日(例: 2026-06-25)
対象月テキスト集計対象月(例: 2026/6)
CV累計数値その時点の当月CV累計
広告費累計通貨その時点の当月広告費累計
利益累計通貨その時点の当月利益累計
除外率パーセントその時点の累計除外率

手動実行コマンド

当月を自動検知(引数なし)

python3 projects/広告媒体管理/detect_anomalies.py

月を指定して実行

python3 projects/広告媒体管理/detect_anomalies.py --month 2026/5
前提: .envAIRTABLE_TOKENCHATWORK_ALERT_TOKEN が設定されていること。スクリプトが .env を自動読み込みするため source .env は不要です。

関連ファイル

ファイル役割
projects/広告媒体管理/detect_anomalies.py 異常検知メインスクリプト
.claude/scripts/ad-anomaly-detect.sh launchd から呼ばれるラッパースクリプト
~/Library/LaunchAgents/com.horie.ad-anomaly-detect.plist macOS スケジューラ設定(毎週月曜12:00)
.env AIRTABLE_TOKEN / CHATWORK_ALERT_TOKEN を格納