Claude+MCPで月次広告レポートを自動化|スキル化まで全手順

月次レポートを毎月「先月のシートをコピーして数値を入れ替えて…」という作業で消化している方に向けて書いています。

結論から言うと、ClaudeとカスタムスキルとMCPを組み合わせれば、「先月のレポートを作って」の一言でHTMLレポートが出てくる仕組みを作れます。この記事ではその全手順を、コピペ可能なプロンプトとコードを載せながら解説します。

📌 Claudeでの月次広告レポート自動化とは
Claudeでの月次広告レポート自動化とは、ClaudeにHTMLテンプレを作らせ、MCP(Harubase)経由で取得した広告データを差し込み、スキル化して毎月1コマンドで生成する仕組みのことです。

難所は「テンプレを作ること」ではありません。Claudeに頼めば数分で終わります。本当の難所は生きた広告データをClaudeに渡すことです。媒体ごとに異なるAPI、OAuth、レスポンス形式の差異がある。ここをどう解決するかが、仕組み化できるかどうかの分かれ目になります。

3ステップの全体像を先に示します。

  1. ClaudeにHTMLテンプレートを作らせる(前菜)
  2. MCP経由で広告データをClaudeに渡す(メイン、ここが本題)
  3. テンプレ作成+データ取得+差し込みをスキルに束ねる(デザート、以降は1コマンドで完結)
ダミーデータの月次広告レポート完成版。Meta・Yahoo!・TikTokの先月実績を差し込んだサンプル
完成イメージ。Meta / Yahoo! / TikTokの先月実績が差し込まれた月次広告レポート(数値はダミー)。

全体像:3ステップでどう動くか

STEP1: テンプレ作成
  Claude → HTMLテンプレ(プレースホルダ入り)
  ↓
STEP2: データ取得&差し込み
  Harubase(MCP)→ Meta/Yahoo!/TikTokの先月実績
  Claude → プレースホルダを実数で置換してHTML完成
  ↓
STEP3: スキル化
  ~/.claude/skills/monthly-ad-report/SKILL.md
  以降は「先月のレポート作って」で上記2ステップが自動実行

「毎月この作業を手でやるのが嫌」という方は、STEP3まで通してやることで、翌月以降の作業がほぼゼロになります。


STEP1:ClaudeにHTMLテンプレートを作らせる

最初にやることはシンプルです。Claudeに「レポートの器(HTML)」を作らせます。この段階では実際のデータは入れません。数値の場所を {{消化金額}} のようなプレースホルダで押さえておき、STEP2でそこに実数を流し込みます。

以下のプロンプトをそのままClaudeに貼り付けてください。

あなたは広告レポートのテンプレート作成を手伝うアシスタントです。
月次広告レポートの「HTMLテンプレート」を1ファイルで作ってください。
この段階ではデータを入れず、{{プレースホルダ}} で構造だけ作ります。

# 要件
- A4印刷/PDF保存を想定(@page A4・余白12mm・印刷時に背景色を保持)
- 構成:
  1) ヘッダー(クライアント名・対象期間・作成日)
  2) 全体サマリー:KPIカード4枚(消化金額・CV・CPA・ROAS、各カードに前月比)
  3) 媒体別パフォーマンス表(媒体・消化金額・表示回数・クリック・CTR・CV・CPA)
  4) 今月のハイライト(好調/伸長/課題のタグ付き箇条書き)
  5) 来月の打ち手
- 媒体は Meta / Yahoo! / TikTok を想定
- スタイルはインラインCSS中心、配色はニュートラル+アクセント1色。装飾は控えめ
- 各カード・各行は印刷時に途中で割れないよう break-inside:avoid を付ける
- 数値やテキストは {{消化金額}} {{CV}} のようなプレースホルダにする
月次広告レポートのHTMLテンプレート雛形。数値部分はすべてプレースホルダ状態(ダミー)
STEP1の出力例。数値部分はすべてプレースホルダになっている(数値はダミー)。

テンプレートの修正は会話で詰める

出力されたテンプレートが気に入らない部分は続きの会話で修正できます。「サマリーカードをコンパクトに、前月比は改善時は緑・悪化時は赤に」「ヘッダーに自社ロゴを入れて」といった指示で調整できます。

凝りすぎに注意してください。80点が出たらいったん切り上げてSTEP2に進む方が生産性は上がります。


STEP2:広告データをどうClaudeに渡すか(ここが本題)

テンプレートはできた。次に「実際の数値を入れる」段階に進みます。

ここで壁にぶつかります。Claudeは単体では広告データを持っていません。データを渡すには、広告APIから取得してClaudeに投げる何かが要ります。

普通のやり方が詰む理由

「ExcelやCSVにエクスポートしてClaudeに貼り付ける」という方法は一見機能します。ただし毎月やるなら:

  • Meta管理画面から手動エクスポート
  • Yahoo!広告管理画面から手動エクスポート
  • TikTok管理画面から手動エクスポート
  • それぞれ列名・通貨単位・集計粒度が微妙に異なる
  • 「先月1日から末日」の期間を毎回手で設定する

これを毎月繰り返すなら、テンプレートをコピペするのと手間はほぼ変わりません。仕組み化した感がない。

MCPで解決する

MCP(Model Context Protocol)は、AIが外部のデータやツールを安全に使うための共通規格です。Harubaseは広告APIへの読み取り専用アクセスをMCP化したサーバーで、接続するとClaudeが自然言語で広告データを取得できるようになります。

「先月のMeta、Yahoo!、TikTokの実績を全部取って」と言えば、Claudeが各媒体のAPIを叩いて数値を返してくれます。手動エクスポートは不要です。

読み取り専用(GETのみ)なので、Claudeが広告の設定を変更したり予算を動かしたりするリスクはありません。データを見るだけです。

Harubaseの接続方法は以下の記事に実機手順をまとめています。

Yahoo広告×Claude実機ガイド:Harubase MCPの接続から実績取得まで

接続が済んだら、以下のプロンプトをClaudeに投げてください。

Harubaseで連携している広告アカウントから先月(YYYY-MM-01〜末日)の実績を取得し、
さきほどのHTMLテンプレートの {{プレースホルダ}} をすべて実数で置き換えて、
完成版のレポートHTMLを1ファイルで出力してください。

# 取得
- 媒体:Meta / Yahoo! / TikTok の各アカウント
- 指標:消化金額・表示回数・クリック・CTR・CV・CPA(媒体別+全体合計)
- 前月(前々月1日〜末日)も取得し、前月比を計算
# ルール
- 取得できた実数のみ使う。推測で数値を作らない
- データが取れない媒体は「データなし」と明記(0として合計に混ぜない)
- ハイライト(好調/伸長/課題)と来月の打ち手は、取得データの傾向から3点ずつ提案
実数を差し込んだ月次広告レポートの完成版(ダミーデータ)
STEP2の出力例。実数が差し込まれた完成版レポート(数値はダミーの株式会社サンプル案件)。

プロンプト中の「さきほどのHTMLテンプレート」はSTEP1で作ったものを指します。同じ会話セッション内であればClaudeはコンテキストを保持しているので、あらためてテンプレートを貼り直す必要はありません。新しいセッションで始める場合は、STEP1のテンプレートを先に貼ってからこのプロンプトを実行してください。


STEP3:テンプレ作成+データ取得をスキルに束ねる

STEP1とSTEP2は一度通せばレポートが出ます。ただ「毎月このやり方を再現するか」という問題は残ります。

Claude Code のカスタムスキル機能を使えば、STEP1のテンプレート読み込みとSTEP2のデータ取得・差し込みをひとつのスキルに束ねて、「先月のレポートを作って」という一言で完結するようになります。

スキルの基本的な作り方については以下の記事で解説しています。

Claude Codeカスタムスキルの作り方入門

フォルダ構成

~/.claude/skills/monthly-ad-report/
├── SKILL.md
└── template.html

template.html はSTEP1でClaudeに作らせたHTMLテンプレートをそのままここに保存します。

SKILL.md(全文・コピペOK)

---
name: monthly-ad-report
description: Harubase経由で先月の広告データを取得し、HTMLテンプレートに差し込んで月次広告レポートを生成する
---

# 月次広告レポート生成スキル

ユーザーが「先月のレポートを作って」等と依頼したら、以下を実行する。

## 手順
1. 同梱の `template.html` を読み込む。
2. Harubase(MCP)で先月(前月1日〜末日)のデータを媒体横断で取得する。
   - 全体+媒体別の 消化金額 / 表示回数 / クリック / CV を取得
   - 前月分も取得し、CTR・CPA・ROAS・前月比を計算
3. `template.html` の {{プレースホルダ}} を実数で置換する。
4. ハイライト(好調/伸長/課題)と来月の打ち手を、データから3点ずつ生成する。
5. 完成HTMLを `reports/月次レポート_YYYY-MM.html` に保存する。

## ルール
- 数値は3桁区切り・通貨は ¥ 表記。CTR/CPA/ROAS は計算して表示。
- 取得できた実数のみ使う。推測でデータを作らない。
- データが取れない媒体は「データなし」と明記し、合計には混ぜない。

## 同梱ファイル
- `template.html` … レポートの雛形(プレースホルダ入り)

スキルを配置したら、Claude Codeで「先月のレポートを作って」と入力するだけで、テンプレート読み込みからデータ取得、HTML生成、ファイル保存まで一連の流れが自動で走ります。

翌月以降は同じコマンド一言で完結します。日付を手で変える必要もありません。SKILL.md内で「前月1日〜末日」と定義しているので、実行日から自動的に先月の期間を計算します。


仕上げ:PDFにして配布する

HTMLレポートをクライアントや上司に渡す場合、PDFへの変換が必要になることがあります。

ブラウザから印刷してPDF保存

HTMLファイルをブラウザで開き、印刷(Cmd+P / Ctrl+P)から「PDFとして保存」を選ぶのが最も手軽です。STEP1のプロンプトで @page A4print-color-adjust: exact を指定しているため、背景色が維持された状態でA4に収まります。

Harubaseの定型レポートをそのまま使う

Harubaseには、MCP経由で取得した広告実績を定型フォーマットのレポートとして表示する機能があり、レポート画面のPDFボタンからワンクリックでPDF保存もできます(こちらもブラウザ印刷ベースです)。カスタムHTMLテンプレートにこだわらず、決まった形で素早く出したい場合はこちらが手軽です。

PDFサンプルを見る(ダミーデータ)

用途に合わせて使い分けてください。クライアントごとに細かいフォーマット調整が要る場合はカスタムHTMLルート、社内共有や素早い確認ならHarubaseの定型レポートが現実的です。


まとめ

月次広告レポートをClaudeで自動生成する手順を整理します。

✅ この記事のまとめ

  • STEP1:テンプレート作成。ClaudeにHTMLを作らせる。プレースホルダで構造だけ先に固める。
  • STEP2:データ取得&差し込み。Harubase(MCP)でMeta・Yahoo!・TikTokの実績を横断取得。プレースホルダを実数で置換。
  • STEP3:スキル化。SKILL.md+template.htmlを ~/.claude/skills/ に配置。以降は「先月のレポートを作って」で完結。

テンプレートはClaudeが一瞬で作ってくれます。本当に手間がかかるのはデータを渡す部分で、ここをMCPで解決するのがこの仕組みの核心です。


よくある質問

Q. Harubaseに繋がっていないと使えない?
STEP1のテンプレート作成はHarubase不要です。ClaudeだけでHTMLが出てきます。STEP2以降の実数差し込みにHarubase(MCP)接続が必要です。

Q. Google広告のデータも入れられる?
現時点でHarubaseが対応しているのはMeta・Yahoo!・TikTokです。Googleは対応予定です。取得できない媒体はプロンプトのルールに従い「データなし」と明記されます。

Q. スキルはどこに置けばいい?
~/.claude/skills/monthly-ad-report/ にフォルダを作り、SKILL.mdとtemplate.htmlを入れてください。詳しくはClaude Codeカスタムスキルの作り方入門をご覧ください。


広告データの取得部分をどう解決するか

テンプレートはClaudeが自由に作れます。ただし生きた広告データをClaudeに渡す部分は、APIへのアクセス・認証・媒体ごとの差異吸収が必要で、ここを自分で実装するのは手間がかかります(Yahoo! Ads APIのつまずきポイントについてはYahoo! Ads APIでつまずく箇所と対処法で詳しく書きました)。

Harubaseは、Meta・Yahoo!・TikTokの広告データを読み取り専用のMCPとして提供します(Googleも対応予定)。接続するだけで、ClaudeがAPIを意識せずデータを取得できるようになります。

まずは繋いで、「先月のMeta広告のCPAを教えて」とClaudeに聞くところから始めてみてください。