meta-ads-control について
meta-ads-control は、Meta Marketing API の操作を支援するスキルです。構造化 JSON を返すスクリプトで、アカウント確認、レポート、広告管理、ターゲティング検索を行います。費用や配信に関わる変更では、事前確認と明示的な承認、実行後の検証を求めます。
主な機能
- 01構造化 JSON で API を操作
- 02アカウント、キャンペーン、広告セットを参照
- 03同期・非同期の Insights レポートを作成
- 04ターゲティング検索とアセットアップロード
- 05バッチ、ページネーション、ドライランに対応
活用シーン
- 01アカウント状態と配信オブジェクトを確認
- 02指定期間の広告パフォーマンスを集計
- 03承認後に広告を停止または調整
- 04広告構成を作成してローカル素材をアップロード
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tristanmanchester/ agent-skills --skill meta-ads-controlインストール後、Claude Code で/meta-ads-controlを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSE.txtassets/ad-create.jsonadcreative-link.jsonadset-create.jsonbatch-read-example.jsonbudget-update-example.jsoncampaign-create.jsoninsights-overview.jsontargeting-example.jsonevals/evals.jsonreferences/API-GUIDE.mdFIELDS.mdOPENCLAW.mdTROUBLESHOOTING.mdWORKFLOWS.mdscripts/meta_ads.py詳細
Meta Ads Control
Meta Marketing API を使用する際に、このスキルを使います。構造化された JSON 出力、ドライランによる保護、再試行、ページネーション、バッチ処理、非同期 Insights ジョブ、ターゲティング検索、アセットのアップロードに対応しているため、同梱スクリプトの使用を推奨します。
広告費や配信に手を加える前に
- 対象範囲を確認します。
python3 scripts/meta_ads.py accounts python3 scripts/meta_ads.py account - 対象の広告アカウント、通貨、タイムゾーン、書き込み可能なオブジェクトを確認します。
- 広告費の発生、配信の変更、またはトラッキングの変更につながる操作では、次の手順に従います。
- 簡潔な計画を用意します。
--dry-runを実行します。- 変更するオブジェクトとフィールドを正確に提示します。
- ユーザーから明示的な承認を得ます。
- その後、
--confirmを付けて再実行します。
- ユーザーがすぐに配信を開始するよう明示的に依頼した場合を除き、新しいキャンペーン、広告セット、広告のステータスは
PAUSEDにします。 - 書き込み操作の後は、
get、list、またはrequest GETで読み取り直し、変更を検証します。
認証と環境
スクリプトは次の値を読み取ります。
META_ACCESS_TOKEN— ライブ API 呼び出しに必須META_AD_ACCOUNT_ID— 省略可能なデフォルトアカウント。act_の有無は問いませんMETA_API_VERSION— デフォルトはv25.0META_GRAPH_BASE— デフォルトはhttps://graph.facebook.com
META_ACCESS_TOKEN が設定されていない場合は、推測したり API の応答を捏造したりせず、まずユーザーが設定できるよう支援します。
OpenClaw ユーザーは、スキル設定からこれらの値を注入できます。OpenClaw の注意事項を参照してください。
タスク別のクイックガイド
1) アカウントの監査または診断
質問への回答に必要な最小限の読み取りから始めます。
python3 scripts/meta_ads.py account --fields id,name,account_status,currency,timezone_name,amount_spent,spend_cap
python3 scripts/meta_ads.py list campaigns --fields id,name,objective,status,effective_status,daily_budget,lifetime_budget
python3 scripts/meta_ads.py list adsets --fields id,name,campaign_id,status,effective_status,daily_budget,lifetime_budget,optimization_goal,bid_strategy
python3 scripts/meta_ads.py list ads --fields id,name,adset_id,campaign_id,status,effective_status,creative
複数の小規模な読み取りを一度に行う必要がある場合は、batch を使います。まず最小限のフィールドセットを使います。
2) パフォーマンスレポート
insights を使います。対象レベルと期間を絞って開始します。対象期間が長い場合や、フィールド数が多い場合、または内訳を使う場合は、--async を使います。
python3 scripts/meta_ads.py insights act_123 --level campaign --date-preset last_7d
python3 scripts/meta_ads.py insights act_123 --level ad --fields ad_id,ad_name,spend,impressions,clicks,ctr,cpc,actions,action_values,purchase_roas --date-preset last_30d --async --fetch-all
ユーザーがコンバージョンまたは ROAS を求めている場合は、actions と action_values を含めます。ユーザーがデモグラフィック別または配置別の内訳を求めている場合は、--breakdowns を使います。アクションレベルの内訳を求めている場合は、actions を含めて --action-breakdowns を使います。
3) オブジェクトの一時停止、再開、またはアーカイブ
単一オブジェクトの変更には、set-status を優先して使います。
python3 scripts/meta_ads.py set-status 120000000000000 PAUSED --dry-run
python3 scripts/meta_ads.py set-status 120000000000000 PAUSED --confirm
一括操作では、JSON バッチファイルを作成し、承認を得てから batch を使います。
4) キャンペーン構成の作成または更新
次の順序で作成します。
- キャンペーン
- 広告セット
- クリエイティブ
- 広告
ネストされたパラメーターには、JSON ペイロードファイルを使います。assets/ のテンプレートから始めてください。
python3 scripts/meta_ads.py create campaign --params-file assets/campaign-create.json --dry-run
python3 scripts/meta_ads.py create campaign --params-file work/campaign.json --confirm
python3 scripts/meta_ads.py create adset --params-file work/adset.json --dry-run
python3 scripts/meta_ads.py create adset --params-file work/adset.json --confirm
python3 scripts/meta_ads.py create adcreative --params-file work/adcreative.json --dry-run
python3 scripts/meta_ads.py create adcreative --params-file work/adcreative.json --confirm
python3 scripts/meta_ads.py create ad --params-file work/ad.json --dry-run
python3 scripts/meta_ads.py create ad --params-file work/ad.json --confirm
アセットがローカルファイルの場合は、先に upload でアップロードします。
5) ターゲティングの確認
ターゲティング ID を決して推測しないでください。まずターゲティング検索で解決します。
python3 scripts/meta_ads.py targeting-search --type adinterest --q "running"
python3 scripts/meta_ads.py targeting-search --type adgeolocation --q "Munich"
次に、返された ID と記述子を広告セットの targeting 仕様に指定します。
6) 未対応またはニッチなエンドポイント
低レベルの request サブコマンドを使います。
python3 scripts/meta_ads.py request GET /act_123/reachestimate --set targeting_spec=@work/targeting.json
python3 scripts/meta_ads.py request GET /120000000000000/previews --set ad_format=DESKTOP_FEED_STANDARD
ネストされた値には、多数のインライン --set を使うより、--params-file または @file.json の値を優先します。
スクリプトリファレンス
メインエントリーポイント
python3 scripts/meta_ads.py --help
特に便利なサブコマンド
accounts— トークンからアクセス可能な広告アカウントを一覧表示しますaccount— デフォルトまたは指定したアカウントを読み取りますlist— キャンペーン、adset、広告、クリエイティブ、オーディエンス、アセット、ピクセルなどを一覧表示しますget— ノードまたはノードエッジを読み取りますcreate— キャンペーン、adset、adcreative、広告、customaudience、またはサポートされている任意のアカウントエッジを作成しますupdate— ID を指定してノードを更新しますset-status—statusの便利なラッパーですinsights— 同期または非同期のレポートを実行しますtargeting-search— ターゲティング記述子を解決しますupload—adimagesまたはadvideosにアップロードしますbatch— Graph のバッチリクエストを送信しますrequest— 任意の Graph パスに使える低レベルの汎用コマンドです
優れたエージェントの動作ルール
- 書き込む前に読み取ります。
- 質問に答えるために必要な最小限のフィールドセットを使用します。
- ネストされたデータには、JSON ペイロードファイルを優先します。
- ユーザーがすべてのページを本当に必要としている場合にのみ、
--fetch-allを使用します。 - Insights の負荷の高いジョブには、
--asyncを使用します。 - 613 または 80004 のレート制限エラーが繰り返し発生した場合は一時停止し、対象範囲を縮小するか、再試行までの時間を延ばします。
- 破壊的な削除操作より、
PAUSEDまたはARCHIVEDを優先します。 - 金額が関係する場合は、生の API 単位と人間が読みやすい単位の両方で報告します。予算は通常、通貨の最小単位で指定します。
- 予算を書き込む前に、アカウントの通貨とタイムゾーンを確認します。
- 変更を行った後は、必ず追加の読み取りで現在の状態を確認します。
- リクエストが住宅、雇用、信用、社会問題、選挙、政治に関わる場合は、作業を進める前にAPI ガイドで特別カテゴリに関する注意事項を確認します。
例
直近 7 日間のアカウント概要
python3 scripts/meta_ads.py batch --batch-file assets/batch-read-example.json
python3 scripts/meta_ads.py insights act_123 --level campaign --date-preset last_7d --fields campaign_id,campaign_name,spend,impressions,clicks,ctr,cpc,actions,action_values,purchase_roas
予算を安全に増やす
- 現在の広告セットを確認します。
- 新しい予算を指定した更新ペイロードを準備します。
- ドライランを実行します。
- 確認を求めます。
- 適用して確認します。
python3 scripts/meta_ads.py get 120000000000000 --fields id,name,status,effective_status,daily_budget,lifetime_budget
python3 scripts/meta_ads.py update 120000000000000 --params-file work/adset-budget.json --dry-run
python3 scripts/meta_ads.py update 120000000000000 --params-file work/adset-budget.json --confirm
python3 scripts/meta_ads.py get 120000000000000 --fields id,name,daily_budget,lifetime_budget,updated_time
画像をアップロードしてリンク広告を作成する
python3 scripts/meta_ads.py upload adimages --file creative.jpg --confirm
# Put the returned image_hash into work/adcreative.json
python3 scripts/meta_ads.py create adcreative --params-file work/adcreative.json --confirm
python3 scripts/meta_ads.py create ad --params-file work/ad.json --confirm
参考資料
- API ガイド
- フィールドセットとレポートのデフォルト設定
- ワークフローガイド
- トラブルシューティング
- OpenClaw のメモ
assets/内のアセットテンプレートevals/evals.json内の評価例