mcpField
Y
yandex-direct

yandex-direct

github.com/elsvvマーケティング・グロース4112 回インストール36 週間前に更新
リポジトリ

yandex-direct について

スクリプトとリファレンスを使って Yandex Direct API v5 を操作するスキルです。広告運用担当者向けに、広告管理、レポート取得、各種 Direct サービスへのアクセスを支援します。

主な機能

  1. 01キャンペーンと広告の管理
  2. 02キーワードとターゲティングの管理
  3. 03パフォーマンスレポートの取得
  4. 04辞書とアカウントサービスへのアクセス
  5. 05本番またはサンドボックス API の利用

活用シーン

  1. 01キャンペーンや広告の状態確認・更新
  2. 02キャンペーン、広告、キーワードの実績確認
  3. 03キーワードとターゲティング設定の管理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/elsvv/yandex-direct-skill --skill yandex-direct

インストール後、Claude Code で/yandex-directを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
README.md
cache/
.gitkeep
config/
.env.example
README.md
references/
other-services.md
campaigns.md
extensions.md
reports.md
targeting.md
use-cases.md
scripts/
ads.sh
common.sh
campaigns.sh
check_connection.sh
dictionaries.sh
keywords.sh
get_token.sh
reports.sh

詳細

Yandex Direct API v5

基本情報

ベース URL
環境JSON エンドポイントSOAP エンドポイント
Productionhttps://api.direct.yandex.com/json/v5/{service}https://api.direct.yandex.com/v5/{service}
Sandboxhttps://api-sandbox.direct.yandex.com/json/v5/{service}https://api-sandbox.direct.yandex.com/v5/{service}
Reportshttps://api.direct.yandex.com/json/v5/reports同じ形式
Reports (sandbox)https://api-sandbox.direct.yandex.com/json/v5/reports同じ形式
認証

すべてのリクエストには、Authorization ヘッダー内の OAuth トークンが必要です。

必須ヘッダー(すべてのリクエスト):

ヘッダー値必須
AuthorizationBearer YOUR_OAUTH_TOKEN常に
Content-Typeapplication/json; charset=utf-8常に
Accept-Languageru または en推奨
Client-Loginclient_login代理店アカウントのみ

OAuth トークンの取得:

  1. https://oauth.yandex.ru/client/new で direct:api 権限を指定してアプリを登録します
  2. トークンを取得します:https://oauth.yandex.ru/authorize?response_type=token&client_id=YOUR_CLIENT_ID
  3. リダイレクト URL にトークンが表示されます:#access_token=TOKEN&token_type=bearer&expires_in=31536000
  4. トークンの有効期間は 1 年です

トークンの簡単な設定:

bash scripts/get_token.sh --client-id YOUR_CLIENT_ID
リクエスト形式(JSON)

Reports を除き、すべての API リクエストは次の JSON 構造に従います。

{
  "method": "get|add|update|delete|suspend|resume|archive|unarchive|...",
  "params": {
    "SelectionCriteria": { ... },
    "FieldNames": ["Id", "Name", ...],
    "Page": { "Limit": 10000, "Offset": 0 }
  }
}

主なパターン:

  • SelectionCriteria -- 返すオブジェクトのフィルタリング(Ids、CampaignIds、States、Statuses、Types など)
  • FieldNames -- レスポンスに含めるフィールド
  • Page -- ページネーション:Limit(最大 10000)と Offset
  • add メソッドではオブジェクトの配列を使用します(例:"Campaigns": [...])
  • update メソッドでは Id フィールドを持つオブジェクトの配列を使用します
  • delete メソッドでは Ids 配列を含む SelectionCriteria を使用します
レスポンス形式
{
  "result": {
    "Campaigns": [ ... ],
    "LimitedBy": 10000
  }
}
  • 返されるオブジェクト数を超えるデータがある場合、LimitedBy が表示されます(ページネーションが必要です)

エラーレスポンス:

{
  "error": {
    "error_code": 53,
    "error_string": "Authorization error",
    "error_detail": "Token not found or expired"
  }
}
ユニット(API ポイント)システム

すべてのレスポンスには Units HTTP ヘッダーが含まれます:Units: spent/remaining/daily_limit

例:Units: 10/20828/64000 は、10 ポイントを使用済み、20828 ポイントが残っており、1 日の上限が 64000 ポイントであることを意味します。

ルール詳細
1 日の上限広告主ごとに個別に設定され、キャンペーンのアクティビティに基づきます
リフレッシュ60 分ごとにポイントが付与されます(直近 24 時間のスライディングウィンドウ)
期間あたり1 時間ごとに 1 日の上限の 1/24 が付与され、前の 23 時間の未使用分が加算されます
同時リクエスト広告主ごとに最大 5 件のリクエストを同時に実行できます
エラーコストエラーごとに 20 ポイント(サーバーエラーを除く)
1 日の最小上限アクティブなアカウントでは約 64,000 ポイント
代理店デフォルトでは広告主のポイントが差し引かれます。代理店は自社のポイントを使うよう選択できます
一般的なエラーコード
コード意味対応
53認証エラートークンの有効性を確認します
152ポイント不足ポイントのリフレッシュを待ちます(1 時間ごと)
1000同時リクエスト上限並列リクエスト数を減らします
1001操作上限超過バッチサイズを小さくします
1002無効なトークン再認証して新しいトークンを取得します
2000不明なエラー時間をおいて再試行します
8800リクエストごとのオブジェクト上限バッチサイズを小さくします
9000ユニット不足1 日の上限がリフレッシュされるまで待ちます
Sandbox
  • 本番環境のデータから完全に分離されています
  • Web インターフェースはなく、API のみです
  • ライブ API と同じ制限が適用されます
  • レポートはリクエストごとに 1 キャンペーンに制限されます
  • 1 か月間操作がない場合、データは削除されます
  • 役割:広告主または代理店(テスト用クライアント 3 件)
  • 設定で YANDEX_DIRECT_SANDBOX=true を使用するか、ベース URL を api-sandbox.direct.yandex.com に設定します
設定

このスキルでは、認証情報に config/.env を使用します。

# Required
YANDEX_DIRECT_TOKEN=your_oauth_token

# Optional: sandbox mode
YANDEX_DIRECT_SANDBOX=true

# Optional: agency client login
YANDEX_DIRECT_CLIENT_LOGIN=client_login

スクリプト

重要: スクリプトは必ず bash を先頭に付け、スキルディレクトリからの絶対パスで実行してください。スクリプトは bash 固有の機能を使用するため、zsh から source しても動作しません。scripts/common.sh を直接 source しないでください。以下のラッパースクリプトを使用してください。

check_connection.sh

API トークンを確認し、利用可能なキャンペーンを一覧表示します。

bash scripts/check_connection.sh
campaigns.sh

キャンペーンを管理します:一覧表示、詳細取得、統計情報の取得、一時停止/再開/アーカイブ。

# List all campaigns
bash scripts/campaigns.sh --action list

# List only active campaigns
bash scripts/campaigns.sh --action list --states ON

# Get full campaign details
bash scripts/campaigns.sh --action get --ids 12345678

# Get campaign funds/spend info
bash scripts/campaigns.sh --action stats --ids 12345678

# Suspend a campaign
bash scripts/campaigns.sh --action suspend --ids 12345678

# Resume a campaign
bash scripts/campaigns.sh --action resume --ids 12345678
パラメーター説明
--action, -alist、get、stats、suspend、resume、archive、unarchive
--ids, -iカンマ区切りのキャンペーン ID
--states, -sフィルター:ON、OFF、SUSPENDED、ENDED、ARCHIVED
--limit, -l最大結果数(デフォルト:100)
ads.sh

広告を管理します:一覧表示、詳細取得、一時停止/再開/審査/アーカイブ。

# List ads by campaign
bash scripts/ads.sh --action list --campaign-ids 12345678

# List ads by ad group
bash scripts/ads.sh --action list --adgroup-ids 987654

# Get specific ad details
bash scripts/ads.sh --action get --ad-ids 111222333

# Suspend an ad
bash scripts/ads.sh --action suspend --ad-ids 111222333
パラメーター説明
--action, -alist、get、suspend、resume、moderate、archive
--campaign-idsキャンペーン ID でフィルター
--adgroup-ids広告グループ ID でフィルター
--ad-ids指定した広告 ID
--limit, -l最大結果数(デフォルト:1000)
keywords.sh

キーワードと自動ターゲティングを管理します。

# List keywords by campaign
bash scripts/keywords.sh --action list --campaign-ids 12345678

# List keywords by ad group
bash scripts/keywords.sh --action list --adgroup-ids 987654

# Suspend keywords
bash scripts/keywords.sh --action suspend --ids 111,222,333
reports.sh

統計レポートを取得します(キャンペーン、広告グループ、広告、キーワードの各レベル)。

# Campaign performance (last 30 days)
bash scripts/reports.sh

# Campaign performance for custom date range
bash scripts/reports.sh --date-range CUSTOM_DATE --date-from 2026-01-01 --date-to 2026-01-31

# Ad-level performance
bash scripts/reports.sh --type AD_PERFORMANCE_REPORT \
  --fields "AdId,AdGroupId,Impressions,Clicks,Ctr,AvgCpc,Cost"

# Keyword/criteria performance with filter
bash scripts/reports.sh --type CRITERIA_PERFORMANCE_REPORT \
  --fields "CriteriaType,Criteria,Impressions,Clicks,Ctr,AvgCpc,Cost" \
  --filter '{"Field":"CampaignId","Operator":"EQUALS","Values":["12345678"]}'

# Demographics (age/gender)
bash scripts/reports.sh --type CAMPAIGN_PERFORMANCE_REPORT \
  --fields "Age,Gender,Impressions,Clicks,Ctr,Cost"

# Search queries report
bash scripts/reports.sh --type SEARCH_QUERY_PERFORMANCE_REPORT \
  --fields "Query,Impressions,Clicks,Ctr,Cost"

# Save report to file
bash scripts/reports.sh --output report.tsv

# Predefined date ranges
bash scripts/reports.sh --date-range YESTERDAY
bash scripts/reports.sh --date-range LAST_7_DAYS
bash scripts/reports.sh --date-range THIS_MONTH
パラメーターデフォルト説明
--type, -tCAMPAIGN_PERFORMANCE_REPORTレポートの種類(下記参照)
--date-range, -rLAST_30_DAYS日付範囲のプリセット
--date-from—CUSTOM_DATE の開始日
--date-to—CUSTOM_DATE の終了日
--fields, -fCampaignName,Impressions,Clicks,Ctr,AvgCpc,Costフィールド
--filter—フィルター JSON
--output, -ostdoutファイルに保存
--name, -nauto-generatedレポート名

レポートの種類:ACCOUNT_PERFORMANCE_REPORT、CAMPAIGN_PERFORMANCE_REPORT、ADGROUP_PERFORMANCE_REPORT、AD_PERFORMANCE_REPORT、CRITERIA_PERFORMANCE_REPORT、SEARCH_QUERY_PERFORMANCE_REPORT、CUSTOM_REPORT

日付範囲:TODAY、YESTERDAY、LAST_3_DAYS、LAST_7_DAYS、LAST_14_DAYS、LAST_30_DAYS、LAST_90_DAYS、THIS_MONTH、LAST_MONTH、ALL_TIME、CUSTOM_DATE

dictionaries.sh

参照データ(地域、通貨など)を取得します。

bash scripts/dictionaries.sh --dict GeoRegions
bash scripts/dictionaries.sh --dict Currencies
上級編:common.sh の関数

上記のスクリプトで対応していないカスタム API 呼び出しには、common.sh の関数を使用してください。bash スクリプト内で実行する必要があります(zsh からの source は不可):

#!/bin/bash
source /path/to/scripts/common.sh
load_config
response=$(direct_request "campaigns" '{"method":"get","params":{...}}')

API v5 の全サービス

サービスエンドポイントのサフィックスメソッド目的
Campaigns/campaignsadd, update, delete, get, suspend, resume, archive, unarchiveキャンペーン管理
AdGroups/adgroupsadd, update, delete, get広告グループ管理
Ads/adsadd, update, delete, get, moderate, suspend, resume, archive, unarchive広告管理
Keywords/keywordsadd, update, delete, get, suspend, resumeキーワード/自動ターゲティング管理
BidModifiers/bidmodifiersadd, set, delete, get入札調整管理
KeywordBids/keywordbidsset, setAuto, getキーワード入札管理
AudienceTargets/audiencetargetsadd, delete, suspend, resume, get, setBidsオーディエンスターゲット管理
RetargetingLists/retargetinglistsadd, update, delete, getリターゲティングリスト管理
Sitelinks/sitelinksadd, delete, getサイトリンクセット管理
AdExtensions/adextensionsadd, delete, getコールアウト拡張機能管理
VCards/vcardsadd, delete, getバーチャルビジネスカード管理
AdImages/adimagesadd, delete, get画像管理
AdVideos/advideosadd, get動画管理
Creatives/creativesadd, getクリエイティブ管理
Reports/reportsPOST (custom)統計とレポート
Dictionaries/dictionariesget参照データ(地域、通貨など)
Clients/clientsget, update広告主アカウント管理
AgencyClients/agencyclientsadd, update, get代理店クライアント管理
Changes/changescheck, checkCampaigns, checkDictionaries変更の追跡
Feeds/feedsadd, update, delete, get商品フィード管理
DynamicTextAdTargets/dynamictextadtargetsadd, delete, get, resume, setBids, suspend動的広告ターゲティング
SmartAdTargets/smartadtargetsadd, update, delete, get, resume, setBids, suspendスマートバナーターゲティング
TurboPages/turbopagesgetTurbo ページのパラメーター
Businesses/businessesgetビジネスプロフィールデータ
Strategies/strategiesadd, update, get, archive, unarchiveポートフォリオ戦略管理
NegativeKeywordSharedSets/negativekeywordsharedsetsadd, update, delete, get除外キーワードの共有セット
KeywordsResearch/keywordsresearchhasSearchVolume, deduplicateキーワードの前処理
Leads/leadsgetTurbo ページのフォーム送信
Bids/bidsset, setAuto, get入札管理(レガシー)

詳細リファレンス

必要な分野に対応するリファレンスファイルを参照してください。

  • キャンペーン管理(Campaigns、AdGroups、Ads、Keywords、BidModifiers、KeywordBids) -- references/campaigns.md
  • ターゲティング(AudienceTargets、RetargetingLists、DynamicTextAdTargets、SmartAdTargets) -- references/targeting.md
  • 拡張機能(Sitelinks、AdExtensions、VCards、AdImages、AdVideos、Creatives) -- references/extensions.md
  • レポート(Report サービス、レポートの種類、フィールド名、日付範囲、フィルター、ヘッダー) -- references/reports.md
  • その他のサービス(Dictionaries、Changes、Clients、AgencyClients、Feeds、Strategies、NegativeKeywordSharedSets、TurboPages、Businesses、Leads、KeywordsResearch) -- references/other-services.md
  • 一般的なユースケース(頻繁に使用するタスクの bash スクリプト例) -- references/use-cases.md

ガイドライン

  • 一括操作の前に、必ずトークンが有効であることを確認してください:bash scripts/check_connection.sh
  • 大きな結果セットをページネーションするには、Page.Limit と Page.Offset を使用してください(1 リクエストあたり最大 10000 件)
  • API ポイントを節約するため、実際に必要な FieldNames のみをリクエストしてください
  • すべてのデータを再ダウンロードする前に、Changes サービスを使用して変更を検出してください
  • レポートでは、processingMode: auto を使用し、200(準備完了)と 201/202(処理中)の両方の HTTP ステータスコードに対応してください
  • レポートヘッダーに returnMoneyInMicros: false を設定し、人が読み取れる形式の金額を取得してください
  • 代理店アカウントでは、必ず Client-Login ヘッダーを含めてください
  • 広告主ごとの同時リクエストは最大 5 件です。リクエストをキューに入れるか、スロットリングしてください
  • 開発とテストにはサンドボックス(api-sandbox.direct.yandex.com)を使用してください
  • トークンは config/.env に安全に保管してください(このファイルは Gitignore 対象です)
  • 標準の API リクエスト/レスポンスにおける金額は、マイクロ単位(1,000,000 倍)です
  • レポートの金額には、人が読み取れる形式で取得するために returnMoneyInMicros: false ヘッダーを使用するか、1,000,000 で割ってください

コメント