Alejandro Rioja.
AI Agents

Facebook広告を運用するClaudeスキルを作った——コードを公開する

Alejandro Rioja
Alejandro Rioja
1 分で読める
TL;DR

Graph API経由でMeta Adsアカウントを読み取り、パフォーマンス不足の広告を特定し、ブランドボイスで広告コピーを書き直し、広告マネージャーを触ることなく新しい広告セットを作成するClaudeスキルを構築した。全体で300行未満のTypeScript。ROIは即座だった:週次の広告管理時間を約3時間から約20分に短縮した。

無料ニュースレター

毎週水曜。28,400人以上の読者。無駄なし。

目次

2026年6月更新。

TL;DR: Graph API経由でMeta Adsアカウントを読み取り、パフォーマンス不足の広告を特定し、ブランドボイスで広告コピーを書き直し、広告マネージャーを触ることなく新しい広告セットを作成するClaudeスキルを構築した。全体で300行未満のTypeScript。ROIは即座だった:週次の広告管理時間を約3時間から約20分に短縮した。

[オペレーターの視点] PicklelandとコンサルティングブランドのためにFacebook広告を運用している。2つのアカウント、異なるオーディエンス、常に続くクリエイティブ疲弊。毎週日曜の午後を広告マネージャーの中で過ごし、モデルがやるべきことをやっていた。だから自動化した。

Facebook広告の手動管理をやめた理由

Facebook広告を運用する実際の作業は、3つの仕事に分けられる:

  1. モニタリング — どの広告セットがお金を燃やしているか、稼いでいるかを確認する
  2. 診断 — なぜパフォーマンスが低いかを突き止める(クリエイティブ疲弊?ターゲティングの問題?ランディングページ?)
  3. イテレーション — 新しいコピーを書き、新しい広告セットを作成し、予算を調整する

仕事1は機械的だ。仕事3もほぼ機械的だ(ボイスの制約がある)。仕事2は判断が必要——人間がループに入ることで価値が生まれる唯一の部分だ。

Claudeスキルは1と3を担える。私は仕事2の出力を確認してから公開する。これが落ち着いたアーキテクチャだ。

Meta Graph APIのセットアップ(ここが面倒な部分)

コードの前に:Meta Businessアカウント、システムユーザー、恒久的なアクセストークンが必要だ。FacebookのデベロッパーポータルはUIが悪いが、手順はこうだ:

  1. developers.facebook.comでMeta Appを作成する(タイプ:Business)
  2. Marketing APIプロダクトを追加する
  3. ビジネスポートフォリオ → 設定 → ユーザー → システムユーザーで、システムユーザーを作成し、広告アカウントへのADVERTISERロールを付与する
  4. 以下の権限を持つトークンを生成する:ads_readads_managementbusiness_management

トークンをMETA_ACCESS_TOKENとして、広告アカウントID(形式:act_XXXXXXXX)をMETA_AD_ACCOUNT_IDとして.envに保存する。

スキルのファイル構造

code
.claude/skills/fb-ads/
  SKILL.md          ← Claudeが読む指示
  index.ts          ← 実際のツール実装
  types.ts          ← 共有型

SKILL.mdはClaudeにスキルをいつどのように使うかを伝える。私のものはこうだ:

markdown
# Facebook Ads Manager Skill

Use this skill when the user says "check my ads", "run ads report",
"pause underperformers", or "write new ad copy". Never run this
without explicit user instruction — it touches live ad spend.

## What it can do
- Pull performance data for all active ad sets (last 7 or 30 days)
- Flag ad sets with ROAS < 1.5 or CTR < 0.8% as underperformers
- Rewrite ad copy for flagged creatives in Ale's voice
- Create new ad sets with revised copy (PAUSED by default — you approve before activating)

## What it will NOT do
- Change budgets on live ad sets without explicit confirmation
- Activate new ad sets automatically
- Delete anything

「自動的に有効化しない」という制約は譲れない。このスキルは一時停止状態でものを作る。確認して手動で有効化する。ライブの広告費に触れるものはすべて、人間のチェックポイントが必要だ。

TypeScriptのコア実装

(コードブロックは英語のまま——周囲のテキストのみ翻訳する。)

日々の使い方

スキルはClaude Code(私の日常ツール)から呼び出す。典型的な月曜朝のセッション:

code
> check my ads from the last 7 days

ClaudeがrunAdsReport(7)を実行し、結果を表形式にフォーマットし、低パフォーマーにフラグを立て、リライトが必要かを尋ねてくる。「はい」と答える。新しいコピーを生成し、両バージョンを並べて見せ、新しいクリエイティブで一時停止状態の広告セットを作成する。広告マネージャーで確認し、気に入ったものを有効化し、ダメなものをアーカイブする。

合計時間:20分。日曜午後を広告マネージャーで過ごすことはもうない。

これが代替できないもの

プロダクトマーケットフィットの問題がコピーの問題に偽装しているかどうかを、スキルは教えてくれない。ROAS全体が悪い場合、それはファネルや提供物の問題であり、見出しの問題ではない。Claudeは壊れたファネルの上でコピーを忠実に書き直す——しかしリライトではファネルは救えない。

診断ステップはまだ私のものだ。レポートを読み、ファネルデータを確認し、クリエイティブをイテレーションするのか、上流の何かを解決するのかを判断する。エージェントはその判断以外のすべてにおいて速い。

オペレーターの結論

手動で広告を管理し、週に2回以上広告マネージャーを触っているなら、スクリプトがやるべき作業をやっていることになる。Graph APIはよくドキュメント化されており、Metaのアクセス許可フローは面倒だが一度きりの設定だ。午後一つでスキルを構築できる。取り戻した時間の見返りは最初の週に現れる。

続きを読む

AIプレイブックをメールでお届け

毎週水曜。28,400人以上の読者。無駄なし。

↵ すべての結果を見る esc esc で閉じる