除外キーワード自動抽出をPythonで実装【保存版】
広告運用で最も静かに予算を溶かすのが、検索語句レポートに埋もれた無関係なクエリだ。完全一致でも部分一致の派生でクリックは入り込む。手作業の棚卸しは週次でも追いつかない。この記事では、Google広告APIのsearch_term_viewから除外キーワード候補をPythonで自動抽出する手順を、実運用で使っている判定ルールごと公開する。コードを自分の環境に貼り替えれば、無駄クリックの検出を今日から自動化できる。
手作業の除外キーワード運用が破綻する理由
検索語句レポートは1アカウントで数百から数千行に膨らむ。目視で「これは関係ない」を拾う作業は集中力を消耗し、見落としも増える。とくに複数アカウントを掛け持ちする運用者ほど、週次の棚卸しが後回しになりやすい。
実際の現場では、週2時間ほどかけていた検索語句の目視チェックを自動抽出に置き換えたところ、確認作業は数分で済むようになった。人間は「候補リストを承認するか」だけを判断すればよい。抽出は機械、判断は人間、という分業が最も破綻しにくい。
Googleの検索語句レポートは関連性の低いクエリの発見に使えるが、UIでの絞り込みには限界がある。閾値ロジックを自分で書けるAPI取得のほうが精度が高い。
search_term_viewからクエリを取得するGAQL
Google広告APIでは、検索語句のパフォーマンスはsearch_term_viewリソースに格納される。取得はGAQL(Google Ads Query Language)というSQLに似た構文で書く。ブックマークして、日付範囲と指標を自分の運用に合わせて書き換えて使ってほしい。
基本クエリはこの1行で足りる:SELECT search_term_view.search_term, metrics.clicks, metrics.cost_micros, metrics.conversions FROM search_term_view WHERE segments.date DURING LAST_30_DAYS
実装の流れは(1)GoogleAdsClientを認証情報から初期化する(2)GoogleAdsServiceを取得する(3)上記GAQLでsearch_streamを実行する(4)返ってきたストリームを1行ずつ回してsearch_termと指標を辞書に詰める、の4手順だ。cost_microsは100万分の1通貨単位なので、円に直すときは必ず1,000,000で割る。この単位取り違えは実装初心者が最もハマる罠のひとつだ。APIの初期設定でつまずく場合は、Google広告APIをPythonで動かす手順の記事で認証まわりを先に固めておくとよい。
除外候補を判定する運用ルール(実運用の閾値)
抽出の肝は「どのクエリを候補に落とすか」の判定ルールだ。実運用では次の3条件のいずれかに当たるものを候補として自動フラグしている。数字は業種で調整する前提の初期値だ。
- 成果ゼロの浪費:直近30日でクリック15以上かつコンバージョン0。学習が進んでも成果が出ないクエリは除外の第一候補。
- 意図ずれのNGワード:「無料」「求人」「やり方」など、商材の購買意図とずれる語を含む。自社のNGワード辞書と部分一致で照合する。
- CPAの外れ値:コンバージョンはあるが、そのクエリ単体のCPAが目標CPAの2倍以上。全体の効率を押し下げている。
この3ルールをPythonの関数1つにまとめ、クエリ文字列と指標を渡してTrue/Falseを返す形にしておくと、閾値の見直しが1箇所で済む。判定結果はいきなり除外登録せず、まずCSVやスプレッドシートに書き出して人間が最終承認する。誤除外は機会損失に直結するため、ここは自動化しすぎない。
抽出から除外登録までを自動化する構成
抽出だけを自動化し、登録は手動承認にするのが安全な初期構成だ。承認された候補を除外キーワードとして書き戻す場合は、CampaignNegativeKeywordServiceでCREATEオペレーションを組み、campaignパス・キーワード文字列・マッチタイプ(PHRASE / EXACT / BROAD)を指定してmutateを実行する。複数キャンペーンで共通の除外語を使うなら、SharedSet(除外キーワードリスト)にまとめて紐づけると管理が楽だ。
取得ロジックはそのまま他レポートにも流用できる。同じ認証・同じsearch_streamの型で媒体横断のレポート統合まで広げたい場合は、広告3媒体レポート統合をPythonで実装した記事の構成が土台になる。取得の詳細な指標仕様はGoogle公式のReportingドキュメントを一次情報として確認しておくとよい。この抽出+判定フローの完全版はnoteの実践ガイドにまとめている。
抽出した候補を定例レポートとしてクライアントや上長に共有するなら、分析結果をスライドに落とす工程も自動化したい。以下のツールが使える:
まとめ
除外キーワードの棚卸しは、search_term_viewからのGAQL取得と3つの判定ルールで大部分を自動化できる。抽出は機械、承認は人間の分業にすれば、無駄クリックの検出漏れと誤除外の両方を抑えられる。まずは成果ゼロの浪費クエリの検出から始め、自分の業種に合わせて閾値を育てていくのが現実的だ。
実務でそのまま使いたい人へ
本記事の手法の完全版(実際のコード・判定関数のテンプレート・つまずき対処つき)は、運営者のnote(note.com/ryo_ai_hack)で公開している。実データに基づく実践ガイドをまとめて読める。

コメント
コメントを投稿