Google広告をClaudeで自然言語分析する方法【MCP実機レポ】

本記事は Harubase 関連の記事です。

Harubase 広告データ×AI


Claude から Google 広告のデータを直接取得したい、という動機でいくつかの方法を試した記録です。

Google 広告のデータを自動取得する方法については、これまでもいくつか書いてきました。GAS(Google Apps Script)で AdsApp を使ってスプレッドシートに落とす手順(【GAS】Google広告の運用データをスプレッドシートに自動取得する)や、MCC 配下の全アカウントをまとめてレポートする方法(【Google広告】MCCのすべてのアカウントから運用レポートを取得する)などです。

ただ、こうした GAS ベースの構成には運用上の手間があります。スプレッドシートに蓄積した数字を見ながら「なぜこのキャンペーンの CPA が上がったのか」を考えるのは結局手作業です。また、審査落ちや予算制約でキャンペーンが止まっていても、管理画面を開いて一件ずつ確認するしかない場面がありました。

今回試したのは、MCP(Model Context Protocol)サーバーを使って Claude から直接 Google 広告の API を叩く方法です。具体的には Harubase という日本製の MCP サーバーを使いました。2026年6月5日に Google 広告対応が一般公開されたタイミングで、実際のアカウントで動作を確認しています。


この記事でわかること

  • Harubase MCP を Claude に接続して Google 広告データを取得するまでの手順
  • 実際に取得できるフィールドと、それぞれが何に使えるか
  • primary_status_reasons を使った審査落ち・予算制約キャンペーンの一括確認例(※ダミーデータ)
  • 「向いているケース」と「向いていないケース」の正直な評価

結論から

Claude から Google 広告のデータを自然言語で取得できることは確認できました。キャンペーン一覧、配信状態の詳細理由、期間指定のパフォーマンスレポートがそのまま返ってきます。

特に実務で効くと感じたのは primary_status_reasons というフィールドです。「なぜこのキャンペーンが止まっているのか」「なぜ配信が制限されているのか」を、管理画面を開かずに一覧で把握できます。複数キャンペーンを持つアカウントでは、毎朝確認するような用途に向いています。

一方で、書き込みは一切できません。止まっているキャンペーンを見つけても、Claude から再開することはできない設計です。「見る」ためのツールであることは明確にしておきます。


セットアップ手順

前提

  • Claude.ai のアカウント(Pro プランを使用して確認。無料プランの MCP 接続可否は Claude 側の仕様による)
  • Google 広告アカウント(テスト用のアカウントで確認)
  • Harubase のアカウント(haru-base.com で登録)

手順の流れ

1. Harubase に登録してアカウントを作る

haru-base.com からメールアドレスで登録します。登録後、管理画面から Google 広告の OAuth 連携を行います。

2. Google 広告を OAuth 連携する

管理画面の「連携アカウント」から Google 広告を選んで認証します。MCC(管理アカウント)を利用している場合は、Harubase の管理画面で個別アカウントを登録する際に MCC の情報を設定します。

Harubase 管理画面の Google Ads 連携コネクタ
Harubase の管理画面。媒体ごとに「連携」から OAuth 認証する(画像は Google Ads コネクタ)

3. Claude にコネクタとして追加する(Claude Desktop / claude.ai)

Claude Desktop(または claude.ai)の「コネクタ」から接続します。設定ファイルの編集は不要です。

  1. サイドバーの「カスタマイズ」→「コネクタ」を開く
  2. 右上の「+」→「カスタムコネクタを追加」を選ぶ
  3. 名前に Harubase、URL に https://connect.haru-base.com/mcp を入力して「追加」を押す
  4. ログイン画面が開くので、Harubase のアカウント(メール/Google)でログインする
Claude Desktop のカスタムコネクタを追加ダイアログ(Harubase の URL を入力)
Claude Desktop の「カスタムコネクタを追加」。名前「Harubase」と URL を入力して追加する

接続が完了すると、ツールとして Harubase のツール群が使えるようになります。

なお、Claude Code や Cursor、あるいは設定ファイルで接続したい場合は、以下のように記述する方法もあります(<YOUR_API_KEY> は管理画面で発行したアクセスキーに置き換えてください)。

{
  "mcpServers": {
    "harubase": {
      "type": "http",
      "url": "https://connect.haru-base.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}

4. 動作確認

Claude に「Google 広告のアカウント一覧を見せて」と入力して、アカウント名が返ってくれば接続完了です。


実際に取得できるフィールド

google_list_accounts:アカウント一覧

Harubase に登録済みのアカウントの一覧を返します。

取得できるフィールド:
account_id
account_name

複数アカウントを登録している場合、アカウント名と ID の対応がすぐ確認できます。


google_get_campaigns:キャンペーン一覧と配信状態

アカウント ID を指定すると、キャンペーンの一覧と状態を返します。

取得できる主なフィールド:

フィールド 内容
campaign_id キャンペーン ID
campaign_name キャンペーン名
status 設定上のステータス(ENABLED / PAUSED 等)
primary_status 実際の配信状態(後述)
primary_status_reasons 配信状態の理由(後述)
channel_type 検索・ディスプレイ等のチャネル種別
bidding_strategy 入札戦略(TARGET_CPA / MAXIMIZE_CONVERSIONS 等)
target_cpa_micros 目標 CPA(micros 単位。1,000,000 で割ると円)
target_roas 目標 ROAS
budget_micros 予算(micros 単位)

primary_status について

status が ENABLED(有効)でも、実際には配信が止まっていたり制限されていたりすることがあります。primary_status はその実態を返します。

意味
ELIGIBLE 通常配信中
LIMITED 配信中だが何らかの制限がある
LEARNING 学習期間中
NOT_ELIGIBLE 配信不可
PAUSED 一時停止中

primary_status_reasons について

primary_statusLIMITEDNOT_ELIGIBLE のとき、具体的な理由がここに入ります。

意味
HAS_ADS_DISAPPROVED 審査落ちの広告が含まれている
BUDGET_CONSTRAINED 予算制約で機会損失が発生している
HAS_ADS_LIMITED_BY_POLICY ポリシーにより配信が制限されている広告がある
BIDDING_STRATEGY_LEARNING 入札戦略が学習中

この primary_status_reasons が取れることが、実務での使い勝手に直結します。


google_get_campaign_report:パフォーマンスレポート

アカウント ID と期間を指定すると、キャンペーン単位のパフォーマンスデータを返します。

期間の指定方法:
– プリセット: today / yesterday / last_7d / last_30d / last_month
– 任意指定: since / until パラメータで日付を指定

取得できるフィールド:
impressions(インプレッション数)
clicks(クリック数)
cost(費用)
conversions(コンバージョン数)
ctr(クリック率)
average_cpc(平均クリック単価)


実際の使い方:自然言語クエリの例

以下はすべてダミーデータです。実際のアカウント名・数値・キャンペーン名は含まれていません。


ケース1: 審査落ち・予算制約のキャンペーンを一覧する

プロンプト例:

アカウント「サンプル株式会社」のキャンペーン一覧を取得して、
primary_status が ELIGIBLE 以外のものを教えて。
理由(primary_status_reasons)も一緒に出して。

出力イメージ(※ダミーデータ):

キャンペーン名: 夏_新商品_動画
primary_status: NOT_ELIGIBLE
primary_status_reasons: HAS_ADS_DISAPPROVED
→ 広告の審査落ちが含まれています。管理画面で審査落ち広告を確認してください。

キャンペーン名: リターゲ_一般商材_RSA
primary_status: LIMITED
primary_status_reasons: BUDGET_CONSTRAINED
→ 予算制約による機会損失が発生しています。

キャンペーン名: ブランド_指名_キーワード
primary_status: LEARNING
primary_status_reasons: BIDDING_STRATEGY_LEARNING
→ 入札戦略が学習中です。

管理画面でキャンペーンを一件ずつ開いて確認する作業が、一問で終わります。特に複数のキャンペーンを抱えているアカウントや、複数クライアントを担当している場合に確認コストが下がります。


ケース2: 先週のパフォーマンスを見て改善提案を出す

プロンプト例:

アカウント「サンプル株式会社」の先週(last_7d)のキャンペーン別レポートを取得して、
CPAが高いキャンペーン上位3件と、考えられる原因の仮説を教えて。

出力イメージ(※ダミーデータ):

先週のキャンペーン別パフォーマンス(コスト順):

1. 夏_新商品_動画
   cost: ¥48,000 / conversions: 6 / CPA: ¥8,000
   → 目標CPA(¥3,200)の約2.5倍。primary_statusがLEARNINGのため、
     学習期間中の変動の可能性があります。

2. リターゲ_一般商材_RSA
   cost: ¥35,200 / conversions: 8 / CPA: ¥4,400
   → 目標比で約38%高い。BUDGET_CONSTRAINEDのため、
     機会損失と入札競争激化が重なっている可能性があります。

3. ブランド_指名_キーワード
   cost: ¥12,600 / conversions: 14 / CPA: ¥900
   → 目標内。問題なし。

数値は Claude が計算し、primary_status_reasons と組み合わせて仮説を出してきます。ここから先の判断(予算を増やすか、広告を修正するか)は人間が行います。


ケース3: 目標 CPA と実績の乖離を確認する

プロンプト例:

アカウント「サンプル株式会社」のキャンペーン一覧を取得して、
target_cpa_micros と先月のレポートを組み合わせて、
目標 CPA と実績 CPA の差が大きい順に並べて。

target_cpa_micros は 1,000,000 で割ると円になります(例: 3,200,000 micros = ¥3,200)。Claude はこの変換を自動で行いながら実績と比較します。


向いているケース・向いていないケース

向いているケース

毎朝のステータス確認を自動化したい

primary_status_reasons で「審査落ち」「予算制約」が出ているキャンペーンをまとめて確認するのは、朝のルーティンに組み込みやすい使い方です。「昨日から状態が変わったキャンペーンはある?」という問いかけを習慣にできます。

複数キャンペーンの異常を素早くトリアージしたい

10〜30本のキャンペーンを抱えているアカウントで、「どれが止まっているか」「どれが目標から外れているか」を管理画面を行き来せずに把握できます。

Claude を日常業務に使っていて、そのまま広告データも引きたい

別のダッシュボードを覚えたくない、という動機には合っています。すでに使い慣れた Claude の会話の中で広告の数字を呼び出せます。

複数媒体を横断してまとめて見たい

Harubase は Meta・Yahoo! 広告・TikTok にも対応しています(対応媒体は順次拡張中)。同じ接続設定で複数媒体のデータを一つの会話で扱えます。


向いていないケース

書き込み・操作をしたい

止まっているキャンペーンを見つけても、Claude から再開ボタンは押せません。設計上、読み取り専用(GET のみ)です。キャンペーンの作成・変更・削除はできません。この点は明確な限界です。

時系列でデータを蓄積して傾向を見たい

MCP 経由の取得は「今この瞬間のデータ」です。「3ヶ月前と比べてどう変わったか」という長期トレンドを見たい場合は、スプレッドシートへの定期蓄積(GAS)や DWH 構成が適しています。

毎日定刻に自動でレポートを生成したい

Claude への問いかけはインタラクティブな作業です。「毎朝9時にレポートをスラックに流す」といった完全自動化は、Claude 単体では実現しません。

アカウント規模が大きく、細粒度のデータが必要

今回確認したツールはキャンペーン単位までです。広告グループ単位・キーワード単位の深い分析や、大量データの一括処理は現状の構成では向いていません。


セットアップ時に気をつけること

target_cpa_micros の単位

Google Ads API のお作法として、金額は micros(マイクロ単位)で返ります。1,000,000 micros = ¥1 です(¥3,200 なら 3,200,000)。Claude は通常この変換を自動でやりますが、生の数字を見てパニックにならないよう知っておくと安心です。

MCC(管理アカウント)連携について

MCC 配下の個別アカウントを利用する場合は、管理画面で各アカウントを登録します。登録済みのアカウントが google_list_accounts に列挙されます。アカウント数が多い場合は、アカウント ID を指定してから各ツールを呼ぶ流れになります。

読み取り専用の設計について

Harubase は広告 API に対して GET リクエストのみを送る設計になっています。レスポンスからトークン情報も除去されるため、API キーが Claude の会話ログに載ることはありません。書き込み権限を持つアクセストークンを使っていたとしても、Harubase 経由での書き込みは構造上できません。


Yahoo版との比較:媒体ごとの取得データの違い

本ブログでは以前、Yahoo 広告の MCP 実機レポートも書いています(【実機レポ】ClaudeでYahoo広告を自然言語取得!MCPサーバー「Harubase」セットアップとプロンプト集)。

Google 版と比較すると、差が出るのは「配信状態の詳細度」です。

Google 広告では primary_status_reasons という形で「なぜこの配信状態になっているか」の理由が API で取得できます。審査落ち・予算制約・ポリシー制限・学習中といった区分が返ってくるため、「有効なのに配信が止まっている」ケースの原因特定が素早くできます。

Yahoo 広告は媒体仕様が異なるため、同等のフィールドが返るわけではありません。媒体ごとにできることの粒度は異なります。


まとめ

Harubase MCP を使って Claude から Google 広告データを取得する実機確認の記録を書きました。

できることを整理すると:
google_list_accounts でアカウント一覧の取得
google_get_campaigns でキャンペーン名・設定・配信状態の詳細(primary_status_reasons 含む)の取得
google_get_campaign_report で期間指定のパフォーマンスデータ(インプレッション・クリック・費用・CV・CTR・平均 CPC)の取得
– これらを組み合わせて「審査落ちキャンペーンの一覧」「目標 CPA との乖離確認」などを自然言語で実行

できないことも明確で:
– キャンペーンの作成・変更・停止・再開(書き込み全般は不可)
– 時系列データの自動蓄積
– 広告グループ・キーワード単位の細粒度データ(現状はキャンペーン単位まで)

「管理画面を開いて一件ずつ確認する」という作業が多い人、複数キャンペーンの状態を素早くトリアージしたい人には合っていると思います。一方で「データを蓄積して傾向を見る」「完全自動でレポートを生成する」用途には別の構成が適しています。


Harubase を試してみる

この記事で確認した Google 広告連携を含め、Meta 広告・Yahoo! 広告・TikTok 広告の読み取りも同じ接続設定で使えます。

Harubase の登録・詳細はこちら

読み取り専用の設計のため、接続したからといって広告アカウントに変更が加わることはありません。Claude をすでに業務で使っていて、そこに広告データを引き込みたいという用途であれば、試してみる価値はあると思います。