CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

kuudoai/kuudo-skills

22 Agent Skills for Amazon sellers and advertisers: Sponsored Products and Brands audits, search-term mining, budget pacing, DSP and Amazon Marketing Cloud, reporting, listing optimization and compliance, product images, repricing, FBA inbound, stockout, refunds, buyer messaging, and profitability. Built for Kuudo's hosted Amazon Ads and Selling Partner MCP servers; price, budget, listing, and shipment writes are previewed and wait for explicit approval.

68

1.65x
Quality

93%

Does it follow best practices?

Impact

66%

1.65x

Average score across 22 eval scenarios

SecuritybySnyk

Medium

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

keyword_placement.mdskills/amazon-ads-reporting/references/reports/sb/

Sponsored Brands Keyword Placement mapping

Equivalent to v3 Sponsored_Brands_Keyword_Placement_report — 25 v3 columns mapped to v1 fields

Summary

This template replicates the v3 Sponsored Brands Keyword Placement report on the Amazon Ads API v1 cross-product reporting endpoint (CreateReport). Of the 25 v3 columns, 22 map cleanly to v1 fields and 2 are derived client-side (ACOS and % of units new-to-brand). One v3 column ('14 Day Conversion Rate') has two valid v1 mappings depending on definition; both are included so the warehouse can pick.

This is the first SB report in the series that does NOT require a supplemental Top-of-search Impression Share query — that metric isn't on the v3 report, and the placementClassification.value dimension already exposes top-of-search performance directly (filter or pivot the result on placementClassification.value = TOP_OF_SEARCH).

The 26-field payload was validated against the packaged v1 catalog: zero unknown fields, zero missing required, zero incompatible pairs.

Single-report architecture

Unlike the regular SB Keyword report and the SP Targeting report, this template is a single CreateReport call. metric.topOfSearchImpressionShare isn't requested here, so the adGroup-incompatibility constraint that forced two-report architectures elsewhere doesn't apply. Submit one report and consume.

Field list (grouped by role)

Time dimension (exactly one required)

  • date.value

Level-of-detail dimensions

  • portfolio.portfolioId
  • portfolio.name
  • campaign.id
  • campaign.name
  • campaign.currencyCode
  • target.value
  • target.matchType
  • placementClassification.value

Required supporting field

  • budgetCurrency.value

Delivery metrics

  • metric.impressions
  • metric.clicks
  • metric.ctr
  • metric.cpc
  • metric.totalCost

All-attribution conversion (14-day)

  • metric.sales
  • metric.purchases
  • metric.unitsSold
  • metric.purchaseRateOverClicks
  • metric.purchaseRate
  • metric.roas

New-to-brand

  • metric.newToBrandPurchases
  • metric.newToBrandSales
  • metric.newToBrandUnitsSold
  • metric.percentOfPurchasesNewToBrand
  • metric.percentOfSalesNewToBrand
  • metric.newToBrandPurchaseRate

Filter (limits the report to SB)

  • adProduct.value = SPONSORED_BRANDS

v3 → v1 field mapping

v3 Column (Sponsored_Brands_Keyword_Placement)v1 field_idRoleNotes
Datedate.valueTime dimensionRequired time dimension.
Portfolio nameportfolio.nameDimensionPair with portfolio.portfolioId.
—portfolio.portfolioIdDimensionStable join key.
Currencycampaign.currencyCodeDimensionPair with budgetCurrency.value.
Campaign Namecampaign.nameDimensionPair with campaign.id.
—campaign.idDimensionStable join key.
Targetingtarget.valueDimensionThe keyword expression.
Match Typetarget.matchTypeDimensionBROAD / PHRASE / EXACT for SB keywords.
Placement TypeplacementClassification.valueDimensionDirect equivalent — classifies placements as TOP_OF_SEARCH, DETAIL_PAGE, OTHER, etc. The 'Primary Key' tag in v1 catalog confirms this is the canonical placement-type dimension. Note: not to be confused with placement.name (specific placement) or placement.size (pixel dimensions).
—budgetCurrency.valueRequired supportv1 minimal-baseline supporting field for currency-denominated metrics.
Impressionsmetric.impressionsMetricDirect.
Clicksmetric.clicksMetricDirect.
Click-Thru Rate (CTR)metric.ctrMetricDirect.
Cost Per Click (CPC)metric.cpcMetricDirect.
Spendmetric.totalCostMetricv1 renames 'spend' to totalCost across all ad products.
Total Advertising Cost of Sales (ACOS)(derive client-side)Derivedv1 has no metric.acos. Compute as totalCost / NULLIF(sales, 0) or 1 / roas.
Total Return on Advertising Spend (ROAS)metric.roasMetricDirect.
14 Day Total Salesmetric.salesMetric14-day window is set on the report request, not in the field name.
14 Day Total Orders (#)metric.purchasesMetricEquivalent — orders → purchases.
14 Day Total Units (#)metric.unitsSoldMetricDirect.
14 Day Conversion Ratemetric.purchaseRateOverClicks (or metric.purchaseRate)Metricv1 has no 'conversionRate' field. purchaseRateOverClicks = purchases/clicks (typical SB UI definition); purchaseRate = purchases/impressions. Both included so the warehouse can pick.
14 Day New-to-brand Orders (#)metric.newToBrandPurchasesMetricDirect.
14 Day % of Orders New-to-brandmetric.percentOfPurchasesNewToBrandMetricDirect.
14 Day New-to-brand Salesmetric.newToBrandSalesMetricDirect.
14 Day % of Sales New-to-brandmetric.percentOfSalesNewToBrandMetricDirect.
14 Day New-to-brand Units (#)metric.newToBrandUnitsSoldMetricDirect.
14 Day % of Units New-to-brand(derive client-side)Derivedv1 has no metric.percentOfUnitsNewToBrand (validator-confirmed unknown). Compute as newToBrandUnitsSold / NULLIF(unitsSold, 0).
14 Day New-to-brand Order Ratemetric.newToBrandPurchaseRateMetricDirect — newToBrandPurchases / impressions.

Yellow rows highlight columns that don't have a clean one-to-one v1 mapping (derived client-side or definition-dependent).

Critical differences from the v3 report

ChangeWhat it means for the request
Filter on adProduct.value = SPONSORED_BRANDSSame as the SB Keyword report — the v1 endpoint is shared across all ad products, so the filter is the only thing that scopes results to Sponsored Brands. Using SPONSORED_PRODUCTS will silently return SP data.
'Placement Type' is placementClassification.value, not placement.nameThe v1 catalog has three placement-related dimensions: placement.name (the specific placement), placement.size (pixel dimensions), and placementClassification.value (TOP_OF_SEARCH / DETAIL_PAGE / OTHER classifications). The v3 'Placement Type' column matches the classification dimension, which is also tagged as a Primary Key in the v1 catalog.
No supplemental TOS impression share report is neededUnlike the regular SB Keyword report (and the SP Targeting report), this v3 report does NOT include 'Top-of-search Impression Share'. The placement dimension already exposes top-of-search performance directly — filter or pivot on placementClassification.value = TOP_OF_SEARCH to recover that view. Single-report architecture; no two-step join.
No metric.acos fieldValidator rejects metric.acos. Compute totalCost / NULLIF(sales, 0) or 1 / roas in the warehouse.
No 'conversion rate' field — choose by definitionSame as the SP Targeting and SB Keyword reports. metric.purchaseRateOverClicks (purchases/clicks) matches the typical SB UI definition; metric.purchaseRate is purchases/impressions. Both included so the warehouse can pick.
No metric.percentOfUnitsNewToBrand fieldv1 exposes the % for sales and orders, but not units. Derive: percentOfUnitsNewToBrand = newToBrandUnitsSold / NULLIF(unitsSold, 0).
Attribution windows leave the field namev3's '14 Day' prefix on Sales/Orders/Units/Conversion Rate/NTB-* is gone. The 14-day window is set on the report request itself; the fields are window-agnostic.
'Spend' → metric.totalCostRenamed across all ad products in v1.

Operational notes

  • Conversion rate: SB UIs typically use orders/clicks → metric.purchaseRateOverClicks. Drop metric.purchaseRate if you don't need the impressions-denominated alternative.

  • Derivations to materialize in the warehouse: acos = totalCost / NULLIF(sales, 0); percentOfUnitsNewToBrand = newToBrandUnitsSold / NULLIF(unitsSold, 0). Persist the raw inputs alongside the views.

  • Reusing this template: this report is essentially a slim version of the SB Keyword report with placementClassification.value added and the video / viewable / click-only / brand-engagement metric blocks dropped. If you need to pivot to TOP_OF_SEARCH performance only, filter the result on placementClassification.value = TOP_OF_SEARCH.

skills

LICENSE.md

README.md

tile.json