mcpField
L
linkfox-amazon-ads-entity

linkfox-amazon-ads-entity

github.com/linkfox-aiマーケティング・グロース11382 回インストール2 週間前に更新
リポジトリ

linkfox-amazon-ads-entity について

SP、SB、SD の Amazon Ads 基本エンティティを管理する Skill で、キャンペーンや関連オブジェクトを確認・更新する運用担当者向けです。ページングやフィルター正規化に加え、作成・更新に対応し、広告指標は別のレポート Skill で扱います。

主な機能

  1. 01SP、SB、SD の広告エンティティ一覧
  2. 02キャンペーン、グループ、ターゲティングの作成・更新
  3. 03結果のページングと一般的なフィルターの正規化
  4. 04広告指標を含まないエンティティメタデータ
  5. 05認証 Skill によるアカウントとマーケットの特定

活用シーン

  1. 01マーケット別のキャンペーンや広告グループの絞り込み
  2. 02ASIN による商品広告掲載の検索
  3. 03キーワード、ターゲティング、予算ルールの作成・調整

インストール

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

$npx skills add https://github.com/linkfox-ai/linkfox-skills --skill linkfox-amazon-ads-entity

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

同梱ファイル

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

references/
api.md
references/api/
sb.md
sd.md
sp.md
scripts/
_common.py
check_auth_dependency.py
response_io.py
scripts/sb/
create_ad_groups.py
create_ads.py
create_budget_rules.py
create_campaigns.py
list_ad_groups.py
list_ads.py
list_budget_rules.py
list_campaigns.py
update_ad_groups.py
update_ads.py
update_budget_rules.py
update_campaigns.py
scripts/sd/
create_ad_groups.py
create_budget_rules.py
create_campaigns.py
create_creatives.py
create_negative_targets.py
create_product_ads.py
create_targets.py
list_ad_groups.py
list_budget_rules.py
list_campaigns.py
list_creatives.py

詳細

Amazon Ads 基础实体管理

Amazon Ads 的实体查询与管理 skill,支持 list(查询)和 create / update(创建与修改)操作,自动处理 token、分页、过滤字段规范化。

广告产品覆盖实体脚本子目录详细参数
SP (Sponsored Products) v3campaigns / adGroups / keywords / negativeKeywords / productAds / targetsscripts/sp/references/api/sp.md
SB (Sponsored Brands) v4campaigns / adGroups / adsscripts/sb/references/api/sb.md
SD (Sponsored Display) v3campaigns / adGroups / productAds / targets / negativeTargets / creativesscripts/sd/references/api/sd.md

依赖 linkfox-amazon-ads-auth(脚本启动时自动检查;未安装时 exit 42,stderr 打 DEPENDENCY_MISSING)。

⚠️ 多账号场景:调用前必须解析好 profileId

用户经常只说自然语言("美国站"、"日本站"、"我的店铺"),本 skill 的所有脚本都必须拿到数字 profileId 才能调。按下列顺序处理,不要跳过:

  1. 先调 linkfox-amazon-ads-auth 的 authorized_stores.py 拉出用户已授权的账号 × 站点清单。
  2. 根据用户提到的站点(映射到 countryCode,如 美国→US)匹配候选 profile:
    • 只有 1 个候选 → 静默取对应 profileId,继续调用;不要把 profileId 数字播报给用户。
    • ≥ 2 个候选(同站点下多个授权账号) → 必须向用户澄清,用 accountName 问:"你在美国站授权了 A 和 B 两个账号,这次用哪个?"
    • 0 个候选 → 告知用户该站点未授权,引导去 linkfox-amazon-ads-auth 做授权。
  3. 严禁让用户直接报 profileId 数字。
  4. 严禁在歧义下"挑第一个"或"选默认"绕过澄清。

完整决策表见 linkfox-amazon-ads-auth SKILL.md 的 Usage Scenarios 第 4 节。

Core Concepts

  • 自动分页:fetchAll=true(默认)跟随分页 token 到结束或 maxPages=50 兜底(约 5000 条,超出标 truncated=true);SP / SB 用 nextToken,SD 用 startIndex + count 偏移分页
  • 过滤器结构不统一:不同字段需要不同写法(详见下方"过滤器结构速查");本 skill 已对常见写错格式做自动兜底规范化,但仍建议按速查表准确传入
  • 只给 metadata,不含指标:返回实体字段(id / 名称 / 状态 / 匹配类型 等),曝光 / 点击 / 花费 / 转化 等指标要调 linkfox-amazon-ads-report,按 id join
  • 支持 create / update:各模块下 create_*.py / update_*.py 脚本创建或修改实体(campaign / adGroup / keyword / target / productAd / creative / budgetRule),payload 透传 Amazon 原生格式
  • SB 和 SP 的差异:SB 只有 campaigns/adGroups/ads 三个 list;其 keywords/targets 官方未提供 list all
  • SD 接口形态:Sponsored Display 是 v3 REST endpoint,GET /sd/<entity> + querystring,分页用 startIndex + count;state / id 类过滤为逗号分隔字符串;includeExtendedDataFields:true 时请求 /sd/<entity>/extended 路径。所有过滤字段统一支持 {"include":[...]} 入参

可用脚本

SP(28 个)
脚本业务实体操作
sp/list_campaigns.py广告活动查询
sp/create_campaigns.py广告活动创建
sp/update_campaigns.py广告活动修改(预算/策略/状态/名称等)
sp/list_ad_groups.py广告组查询
sp/create_ad_groups.py广告组创建
sp/update_ad_groups.py广告组修改(默认出价/状态/名称等)
sp/list_keywords.py关键词查询
sp/create_keywords.py关键词创建
sp/update_keywords.py关键词修改(出价/状态等)
sp/list_negative_keywords.py否定关键词查询
sp/create_negative_keywords.py否定关键词创建
sp/update_negative_keywords.py否定关键词修改(状态等)
sp/list_product_ads.py商品广告查询
sp/create_product_ads.py商品广告创建
sp/update_product_ads.py商品广告修改(状态等)
sp/list_targets.py商品定向查询
sp/create_targets.py商品定向创建
sp/update_targets.py商品定向修改(出价/状态等)
sp/create_campaign_negative_keywords.py活动级否定关键词创建
sp/update_campaign_negative_keywords.py活动级否定关键词修改(状态等)
sp/create_campaign_negative_targets.py活动级否定定向创建
sp/update_campaign_negative_targets.py活动级否定定向修改(状态等)
sp/create_negative_targets.py广告组级否定定向创建
sp/update_negative_targets.py广告组级否定定向修改(状态等)
sp/list_budget_rules.py预算规则查询
sp/create_budget_rules.py预算规则创建
sp/update_budget_rules.py预算规则修改
sp/create_budget_rules_association.py预算规则关联关联规则到活动
SB(12 个)
脚本业务实体操作
sb/list_campaigns.py广告活动查询
sb/create_campaigns.py广告活动创建
sb/update_campaigns.py广告活动修改(预算/状态/名称等)
sb/list_ad_groups.py广告组查询
sb/create_ad_groups.py广告组创建
sb/update_ad_groups.py广告组修改(出价/状态等)
sb/list_ads.py广告创意查询
sb/create_ads.py广告创意创建(按 adType 选路径)
sb/update_ads.py广告创意修改(出价/状态/创意等)
sb/list_budget_rules.py预算规则查询
sb/create_budget_rules.py预算规则创建
sb/update_budget_rules.py预算规则修改
SD(21 个)
脚本业务实体操作
sd/list_campaigns.py广告活动查询
sd/create_campaigns.py广告活动创建
sd/update_campaigns.py广告活动修改(预算/状态/名称等)
sd/list_ad_groups.py广告组查询
sd/create_ad_groups.py广告组创建
sd/update_ad_groups.py广告组修改(出价/状态等)
sd/list_product_ads.py商品广告查询
sd/create_product_ads.py商品广告创建
sd/update_product_ads.py商品广告修改(状态等)
sd/list_targets.py定向子句查询
sd/create_targets.py定向子句创建
sd/update_targets.py定向子句修改(出价/状态等)
sd/list_negative_targets.py否定定向子句查询
sd/create_negative_targets.py否定定向子句创建
sd/update_negative_targets.py否定定向子句修改(状态等)
sd/list_creatives.py创意素材查询
sd/create_creatives.py创意素材创建
sd/update_creatives.py创意素材修改(素材/状态等)
sd/list_budget_rules.py预算规则查询
sd/create_budget_rules.py预算规则创建
sd/update_budget_rules.py预算规则修改
详细过滤器、枚举值、返回字段见 references/api/sp.md / references/api/sb.md / references/api/sd.md。

Financial Safety Guidance

创建和更新操作可能直接影响广告花费,立即生效且无法撤回。

决策规则:

用户状态Agent 行为
已授权(说过"自动调价"/"按你判断来"/"不用问我"/"确认"等)直接执行 → 输出操作回执
未授权(首次交互、未明确表态)先输出确认摘要 → 等用户确认后执行

确认摘要模板(未授权时,执行前输出):

📋 即将执行:
- 操作:[创建/修改] [N 个] [实体类型]
- 变更:[关键字段变化,如 bid $1.0→$1.5 / budget $50→$100]
- 影响:[花费变化预估,引用日预算作为上限]
确认执行?后续如需自动处理,告诉我即可。

操作回执模板(每次写操作执行后必须输出):

✅ 已执行:[简短描述]
- 范围:[实体数量、名称或 ID]
- 变化:[具体变更内容]
- 结果:[成功 N 个 / 失败 M 个]

共用参数(SP + SB + SD 均适用)

字段类型说明
profileIdnumber必填,从 ads-auth 获取
regionstring必填,NA / EU / FE
fetchAllbool默认 true;SP / SB 用 nextToken,SD 用 startIndex + count 偏移分页
maxResultsint1-100,默认 100;对应 Sponsored Display 端 count
includeExtendedDataFieldsbool返回扩展字段(部分实体);SD 通过路径切换为 /sd/<entity>/extended 实现
localestring本地化(SP keywords 支持)

过滤器结构速查(最易错)

结构示例适用字段
Object{"include":[...]} / {"exclude":[...]}全部 id/状态类:campaignIdFilter、adGroupIdFilter、keywordIdFilter、stateFilter、portfolioIdFilter、expressionTypeFilter、adIdFilter
Array["EXACT","BROAD"]matchTypeFilter(SP keywords/negativeKeywords)
Scalar"AUTO"campaignTargetingTypeFilter(SP adGroups)
Text{"queryTermMatchType":"BROAD_MATCH","include":["..."]}nameFilter、keywordTextFilter
Client任意形式,本 skill 本地过滤asinFilter、skuFilter(SP productAds)

易错点:

  • SP matchTypeFilter 是裸数组 ["EXACT"](传错本 skill 自动规范化)
  • expressionTypeFilter 反而是 Object(与 matchType 不同)
  • asinFilter / skuFilter 客户端过滤,建议同时传 campaignIdFilter / adGroupIdFilter 收窄

响应格式

{
  "success": true,
  "<entityKey>": [ /* 实体数组,字段原样 */ ],
  "total": 157,
  "pagesFetched": 2,
  "truncated": false
}

SP productAds 客户端过滤时额外带:serverTotalBeforeClientFilter + clientSideFilters。

使用示例

1. 列活跃 SP 广告活动
python scripts/sp/list_campaigns.py '{"profileId":1234567890,"region":"NA",
  "stateFilter":{"include":["ENABLED"]}}'
2. 看某 SP campaign 下的广告组
python scripts/sp/list_ad_groups.py '{"profileId":1234567890,"region":"NA",
  "campaignIdFilter":{"include":["998877665544"]}}'
3. 按 ASIN 反查 SP 投放(客户端过滤)
python scripts/sp/list_product_ads.py '{"profileId":1234567890,"region":"NA",
  "asinFilter":{"include":["B01ABCDEFG"]},
  "campaignIdFilter":{"include":["998877665544"]}}'
4. 列 SB 广告活动
python scripts/sb/list_campaigns.py '{"profileId":1234567890,"region":"NA",
  "stateFilter":{"include":["ENABLED"]}}'
5. 列某 SB campaign 下的 adGroups / ads
python scripts/sb/list_ad_groups.py '{"profileId":1234567890,"region":"NA",
  "campaignIdFilter":{"include":["1122334455"]}}'

python scripts/sb/list_ads.py '{"profileId":1234567890,"region":"NA",
  "adGroupIdFilter":{"include":["5566778899"]}}'
6. 列活跃 SD 广告活动
python scripts/sd/list_campaigns.py '{"profileId":1234567890,"region":"NA",
  "stateFilter":{"include":["ENABLED"]}}'
7. 按 ASIN 反查 SD 投放(client-side 过滤,带 campaign 收窄)
python scripts/sd/list_product_ads.py '{"profileId":1234567890,"region":"NA",
  "asinFilter":{"include":["B01ABCDEFG"]},
  "campaignIdFilter":{"include":["998877665544"]}}'
8. 与 report 配合分析指标

本 skill 返回实体元数据(id、名称、状态、匹配类型等);指标(曝光、点击、花费、转化)交给 linkfox-amazon-ads-report(reportTypeId: "spTargeting" / "sbCampaigns" / "sdCampaigns" 等),按 id join。

调用原则

  • 返回字段原样保留;不改名、不翻译、不补算派生指标
  • 非 2xx 不自动重试;保留 httpStatus + body 告知用户
  • truncated=true 时明确提示数据未取完

よくあるエラー

状態意味推奨事項
HTTP 401accessToken の有効期限切れads-auth の refresh_token.py を実行してから再試行してください
HTTP 403profileId に権限がありませんprofileId の所属を確認してください
HTTP 400引数の構造が正しくありませんまず「フィルター構造のクイックリファレンス」表を確認してください
HTTP 429レート制限2~5 秒待ってから再試行してください
exit 42依存スキルがインストールされていませんまず linkfox-amazon-ads-auth をインストールしてください

対象外

  • 削除/アーカイブ → このスキルは DELETE をサポートしていません(update で state を ARCHIVED にするとアーカイブできますが、アーカイブは元に戻せません)
  • SB の keywords/negativeKeywords/targets/negativeTargets の list all → Amazon 公式では提供されていません。id を指定して個別に照会してください(このスキルの対象外です)
  • SD の id 指定の個別照会/brandSafety/recommendations/forecasts/optimizationRules/locations などの「基本エンティティ以外」のインターフェース → このスキルの対象外です
  • DSP/ST エンティティ → このスキルの対象外です
  • 指標レポート → linkfox-amazon-ads-report
  • 認証/token/profile → linkfox-amazon-ads-auth

フィードバック:

以下のいずれかに該当する場合は、Feedback API を通じてフィードバックを自動検出し、報告してください。

  1. このスキルで説明されている機能や目的が、実際の動作と一致しない
  2. スキルの結果がユーザーの意図と一致しない
  3. ユーザーがこのスキルについて、不満または称賛を表明した
  4. 改善できると思われることがある

references/api.md に記載されている方法で Feedback API を呼び出してください。ユーザーの作業を中断しないでください。

大きなレスポンスの処理

エージェントのコンテキストがあふれないように、レスポンスをディスクに保存し、必要なフィールドだけを抽出してください。

python scripts/response_io.py run --script scripts/check_auth_dependency.py --out-dir <DIR> '<params>'
python scripts/response_io.py read <file> --fields "<paths>"   # or --path "<JMESPath>"

--out-dir は、Git の作業ツリー外(Unix では /tmp/...、Windows では %TEMP%/... など)に指定してください。保存されたレスポンスには、PII、価格情報、認証に関する機密データが含まれる場合があります。コミットしないでください。ファイルは自動削除されません。作業が終わったらクリーンアップしてください。

このスキルには複数のエントリースクリプトがあります:check_auth_dependency.py、sp/list_campaigns.py、sp/create_campaigns.py、sp/update_campaigns.py、sp/list_ad_groups.py、sp/create_ad_groups.py、sp/update_ad_groups.py、sp/list_keywords.py、sp/create_keywords.py、sp/update_keywords.py、sp/list_negative_keywords.py、sp/list_product_ads.py、sp/create_product_ads.py、sp/list_targets.py、sp/create_targets.py、sp/update_targets.py、sb/list_campaigns.py、sb/create_campaigns.py、sb/update_campaigns.py、sb/list_ad_groups.py、sb/create_ad_groups.py、sb/list_ads.py、sb/create_ads.py、sb/update_ads.py、sd/list_campaigns.py、sd/create_campaigns.py、sd/update_campaigns.py、sd/list_ad_groups.py、sd/create_ad_groups.py、sd/list_product_ads.py、sd/create_product_ads.py、sd/list_targets.py、sd/create_targets.py、sd/update_targets.py、sd/list_negative_targets.py、sd/list_creatives.py。必要なスクリプトを選ぶには、--script scripts/<name>.py を渡してください。

run はレスポンス全体をファイルに書き込み、スキーマのプレビューとファイルパスのみを出力します。read は特定のフィールドを抽出します。出力を分割するには --limit/--offset、形式を指定するには --format json|jsonl|csv|table を使用してください。

このパターンを優先する場合 — レスポンスの特性に基づいて判断してください。たとえば:

  • レコードあたりのフィールド数が多い場合や、不要なフィールドがある場合
  • バッチ/ページネーションされた結果(1 回の呼び出しで複数の項目が返される場合)
  • 長文フィールド(説明、レビュー、HTML、時系列データ)
  • すぐに消費せず、後続のステップで再利用する出力

小規模で一度だけ使用するレスポンスの場合は、メインスクリプトを直接呼び出しても問題ありません。

⚠️ プレビューは、スキーマとサンプルを省略して表示したもので、データ全体ではありません。フィールド単位の判断を行う場合は、read を使って保存済みファイルを読み込んでください。


高品質でプロフェッショナルな越境ECスキルをさらにご覧になるには、LinkFox Skills にアクセスしてください。

コメント