広告自動最適化
パイプライン
毎朝定時実行で広告データを収集・AIで分析し、入札額の自動調整とレポート生成まで行うフルスタック自動化システム
プロジェクト概要
広告運用における日々のデータ確認・入札調整・レポート作成をすべて自動化するパイプラインを構築しました。スケジューラーによる定時起動から、広告データの取得・AI分析・スプレッドシートへの書き込みまで、人手を介さずエンドツーエンドで完結します。
パイプライン構成
主な機能
キーワード単位のCPC入札額・キャンペーン予算をAPIで取得し、AI分析結果に基づいて自動更新。
100件超のキーワード・検索クエリデータをClaudeが解析し、改善提案レポートを自動生成。
Cloud RunにデプロイしたFlaskサーバーをCloud Schedulerが毎朝起動。インフラ管理不要。
キャンペーン実績・キーワード実績・AIレポートの3シートに分類して毎回追記。
ファイル構成
POST /optimize でパイプライン全体を起動。環境変数は .env から読み込み。実装のポイント
Claude APIによる大量データの一括分析
1回の実行でキーワード100件・検索クエリ195件のデータをまとめてClaudeへ送信します。初期実装では出力が途中で切れる問題が発生したため、max_tokensを2,000から8,096へ引き上げて解消しました。
# claude_client.py(抜粋)
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=8096, # 途中切れを防ぐため拡張
messages=[{
"role": "user",
"content": analysis_prompt
}]
)
# トークン使用量・コスト概算をログ出力
usage = response.usage
cost = (usage.input_tokens / 1_000_000 * 3.0
+ usage.output_tokens / 1_000_000 * 15.0)
print(f"tokens: {usage.input_tokens}in / {usage.output_tokens}out | ~${cost:.3f}")
API仕様変更への追従
開発中に広告APIのバージョンアップによりフィールド名が変更されており、正しいフィールドパスへの修正が必要でした。また、使用ライブラリの major バージョンアップに合わせて設定ファイルへの必須項目追加も行っています。このような外部APIの変更に追従する経験は、実運用を意識した開発の重要な学びとなりました。
環境変数は .env で一元管理し、認証情報をコードに埋め込まない設計を徹底。Cloud Run デプロイ時はシークレットマネージャーへ移行できる構造にしています。
コスト実績
| 項目 | 数値 |
|---|---|
| 入力トークン / 回 | 約 23,600 |
| 出力トークン / 回 | 約 3,900 |
| コスト / 回 | 約 $0.13(約20円) |
| 月額試算(毎日1回) | 約 600円 / 月 |
API呼び出しコストを事前に把握・ログ化する仕組みを組み込んでいるため、運用コストの予測と管理が容易です。
技術スタック
成果と学び
毎朝の広告確認・調整作業を完全自動化し、運用担当者がスプレッドシートを開くだけでAIの分析レポートと最適化済みの入札設定を確認できる状態を実現しました。
外部APIの仕様変更・ライブラリのメジャーアップデートへの対応、クラウド環境でのセキュアな認証管理など、本番運用を見据えた実装力を養えたプロジェクトです。またAIの出力コストを定量的に把握・ログ化する設計は、AIを組み込んだシステムの運用コスト管理において重要な実践でした。