shopping-ads
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseShopping Ads
Shopping Ads
Part of Agent Skills™ by googleadsagent.ai™
由 googleadsagent.ai™ 打造的 Agent Skills™ 的一部分
Description
描述
The Shopping Ads skill delivers end-to-end management of Google Shopping campaigns and Merchant Center product feeds. Shopping ads are the highest-intent ad format in Google's ecosystem — users see the product image, price, and merchant name before clicking, resulting in qualified traffic with strong purchase intent. The difference between mediocre and exceptional Shopping performance almost always comes down to feed quality and campaign structure.
Product feed optimization is the foundation. The skill audits every feed attribute — title, description, product type, Google product category, GTINs, custom labels, images, pricing, availability — against Google's requirements and competitive best practices. Titles are optimized with search-relevant attributes (brand, color, size, material) front-loaded for maximum visibility. Descriptions are enriched with long-tail query-matching terms. Custom labels enable performance-based segmentation (margin tiers, best sellers, seasonal items) that powers intelligent bidding strategies.
Campaign structure extends feed optimization into bid management. The skill designs Shopping campaign architectures using priority settings, custom label segmentation, and negative keyword sculpting to control which products match which queries at what bids. For Standard Shopping, this means tiered campaigns with query-level control. For PMax Shopping, it means asset group segmentation aligned with product performance clusters. Supplemental feeds, competitive pricing intelligence, local inventory ads, and free listings round out the comprehensive Shopping strategy.
Shopping Ads skill 提供对 Google Shopping 广告系列和 Merchant Center 商品信息流(product feed)的端到端管理。Shopping 广告是 Google 生态系统中购买意向最高的广告格式——用户点击前即可看到商品图片、价格和商家名称,因此能够带来购买意向强烈的优质流量。Shopping 表现从平庸到卓越的差距,几乎总是取决于信息流质量和广告系列结构。
商品信息流优化是基础。该 skill 会依据 Google 的要求和竞争环境下的最佳实践,审核每个信息流属性——标题、描述、商品类型、Google 商品类别、GTIN、自定义标签(custom labels)、图片、定价和库存状态。标题优化时会把与搜索相关的属性(品牌、颜色、尺寸、材质)前置,以最大化曝光。描述会补充长尾查询匹配词。自定义标签支持基于表现进行细分(利润层级、畅销商品、季节性商品),从而为智能出价策略提供支持。
广告系列结构在信息流优化的基础上进一步扩展到出价管理。该 skill 使用优先级设置、自定义标签细分和否定关键词雕琢来设计 Shopping 广告系列架构,从而控制哪些商品可以匹配哪些查询,以及在什么出价下参与竞争。对于 Standard Shopping,这意味着采用分层广告系列并进行查询级控制。对于 PMax Shopping,这意味着按照商品表现集群划分资产组。补充信息流(supplemental feeds)、竞争定价情报、本地库存广告(local inventory ads)和免费商品列表(free listings)共同构成完整的 Shopping 策略。
Use When
适用场景
- User asks about "Shopping ads" or "Shopping campaigns"
- User mentions "product feed" or "Merchant Center"
- User wants to "optimize product titles" or "improve feed quality"
- User asks about "custom labels" or "supplemental feeds"
- User mentions "product disapprovals" or "Merchant Center errors"
- User wants to "improve Shopping ROAS" or "reduce Shopping CPA"
- User asks about "competitive pricing" or "price benchmarks"
- User mentions "local inventory ads" or "free listings"
- User wants to "segment products" by performance
- 用户询问“Shopping ads”或“Shopping campaigns”(Shopping 广告或广告系列)
- 用户提到“product feed”或“Merchant Center”(商品信息流或 Merchant Center)
- 用户希望“optimize product titles”或“improve feed quality”(优化商品标题或提升信息流质量)
- 用户询问“custom labels”或“supplemental feeds”(自定义标签或补充信息流)
- 用户提到“product disapprovals”或“Merchant Center errors”(商品拒登或 Merchant Center 错误)
- 用户希望“improve Shopping ROAS”或“reduce Shopping CPA”(提升 Shopping ROAS 或降低 Shopping CPA)
- 用户询问“competitive pricing”或“price benchmarks”(竞争定价或价格基准)
- 用户提到“local inventory ads”或“free listings”(本地库存广告或免费商品列表)
- 用户希望按表现“segment products”(细分商品)
Architecture
架构
mermaid
flowchart TD
A[Merchant Center] --> B[Feed Analysis Engine]
B --> C[Attribute Audit]
C --> C1[Title Optimization]
C --> C2[Description Enrichment]
C --> C3[Category Mapping]
C --> C4[Image Quality Check]
C --> C5[GTIN/MPN Validation]
B --> D[Custom Label Strategy]
D --> D1[Label 0: Margin Tier]
D --> D2[Label 1: Best Sellers]
D --> D3[Label 2: Seasonality]
D --> D4[Label 3: Price Range]
D --> D5[Label 4: New vs Existing]
B --> E[Competitive Intelligence]
E --> E1[Price Benchmarks]
E --> E2[Click Share]
E --> E3[Impression Share]
C1 --> F[Optimized Feed]
C2 --> F
C3 --> F
C4 --> F
C5 --> F
D1 --> F
D2 --> F
D3 --> F
D4 --> F
D5 --> F
F --> G[Campaign Structure]
G --> G1[Standard Shopping\nPriority Tiers]
G --> G2[PMax Shopping\nAsset Group Segmentation]
E1 --> H[Bid Strategy]
E2 --> H
E3 --> H
G1 --> H
G2 --> H
H --> I[Performance Monitoring]
I --> J[Product-Level ROAS]
I --> K[Query-Level Analysis]
I --> L[Competitive Position Tracking]mermaid
flowchart TD
A[Merchant Center] --> B[Feed Analysis Engine]
B --> C[Attribute Audit]
C --> C1[Title Optimization]
C --> C2[Description Enrichment]
C --> C3[Category Mapping]
C --> C4[Image Quality Check]
C --> C5[GTIN/MPN Validation]
B --> D[Custom Label Strategy]
D --> D1[Label 0: Margin Tier]
D --> D2[Label 1: Best Sellers]
D --> D3[Label 2: Seasonality]
D --> D4[Label 3: Price Range]
D --> D5[Label 4: New vs Existing]
B --> E[Competitive Intelligence]
E --> E1[Price Benchmarks]
E --> E2[Click Share]
E --> E3[Impression Share]
C1 --> F[Optimized Feed]
C2 --> F
C3 --> F
C4 --> F
C5 --> F
D1 --> F
D2 --> F
D3 --> F
D4 --> F
D5 --> F
F --> G[Campaign Structure]
G --> G1[Standard Shopping\nPriority Tiers]
G --> G2[PMax Shopping\nAsset Group Segmentation]
E1 --> H[Bid Strategy]
E2 --> H
E3 --> H
G1 --> H
G2 --> H
H --> I[Performance Monitoring]
I --> J[Product-Level ROAS]
I --> K[Query-Level Analysis]
I --> L[Competitive Position Tracking]Implementation
实现
Product feed audit and optimization engine:
javascript
async function auditProductFeed(merchantId) {
const products = await getMerchantProducts(merchantId);
const diagnostics = await getFeedDiagnostics(merchantId);
const audit = {
totalProducts: products.length,
activeProducts: products.filter(p => p.status === 'active').length,
disapproved: products.filter(p => p.status === 'disapproved'),
warnings: diagnostics.warnings,
attributeAnalysis: analyzeAttributes(products),
titleOptimization: auditTitles(products),
descriptionQuality: auditDescriptions(products),
imageQuality: auditImages(products),
pricingAnalysis: analyzePricing(products),
customLabelStrategy: designCustomLabels(products)
};
return audit;
}
function auditTitles(products) {
const issues = [];
for (const product of products) {
const title = product.title;
if (title.length < 25) {
issues.push({ productId: product.id, issue: 'Title too short', current: title });
}
if (title.length > 150) {
issues.push({ productId: product.id, issue: 'Title exceeds optimal length', current: title });
}
if (!title.toLowerCase().includes(product.brand?.toLowerCase())) {
issues.push({ productId: product.id, issue: 'Brand missing from title', current: title });
}
const optimizedTitle = buildOptimizedTitle(product);
if (optimizedTitle !== title) {
issues.push({
productId: product.id,
issue: 'Title can be optimized',
current: title,
recommended: optimizedTitle
});
}
}
return { issues, optimizationRate: issues.length / products.length };
}
function buildOptimizedTitle(product) {
const components = [
product.brand,
product.title.replace(product.brand, '').trim(),
product.color,
product.size,
product.material,
product.gender
].filter(Boolean);
const optimized = components.join(' - ');
return optimized.substring(0, 150);
}
function designCustomLabels(products) {
const performanceData = products.map(p => ({
id: p.id,
revenue: p.revenue30d,
cost: p.cost30d,
roas: p.revenue30d / Math.max(p.cost30d, 0.01),
margin: p.margin,
clicks: p.clicks30d,
conversions: p.conversions30d
}));
return {
customLabel0: {
name: 'Margin Tier',
values: assignMarginTiers(performanceData),
biddingImplication: 'Higher bids on high-margin products'
},
customLabel1: {
name: 'Performance Tier',
values: assignPerformanceTiers(performanceData),
biddingImplication: 'Aggressive bids on top performers, reduced on low performers'
},
customLabel2: {
name: 'Seasonality',
values: assignSeasonality(products),
biddingImplication: 'Boost seasonal products during peak periods'
},
customLabel3: {
name: 'Price Competitiveness',
values: assignPriceCompetitiveness(products),
biddingImplication: 'Higher bids when price-competitive, lower when overpriced'
},
customLabel4: {
name: 'Product Lifecycle',
values: products.map(p => ({
productId: p.id,
label: p.daysListed < 30 ? 'new_arrival' : p.daysListed > 180 ? 'clearance' : 'established'
})),
biddingImplication: 'Promotional bids for new arrivals and clearance'
}
};
}Supplemental feed and competitive pricing:
javascript
function buildSupplementalFeed(products, enrichmentData) {
return products.map(product => ({
id: product.id,
custom_label_0: enrichmentData[product.id]?.marginTier,
custom_label_1: enrichmentData[product.id]?.performanceTier,
custom_label_2: enrichmentData[product.id]?.seasonality,
custom_label_3: enrichmentData[product.id]?.priceCompetitiveness,
custom_label_4: enrichmentData[product.id]?.lifecycle,
sale_price: enrichmentData[product.id]?.promotionalPrice,
promotion_id: enrichmentData[product.id]?.activePromotion
}));
}
function analyzeCompetitivePricing(products, benchmarkData) {
return products.map(product => {
const benchmark = benchmarkData[product.id];
if (!benchmark) return { productId: product.id, status: 'no_benchmark_data' };
const pricePosition = product.price / benchmark.benchmarkPrice;
return {
productId: product.id,
yourPrice: product.price,
benchmarkPrice: benchmark.benchmarkPrice,
priceIndex: pricePosition,
status: pricePosition <= 0.95 ? 'price_leader'
: pricePosition <= 1.05 ? 'competitive'
: pricePosition <= 1.15 ? 'slightly_above'
: 'overpriced',
clickShareImpact: estimateClickShareImpact(pricePosition),
recommendation: pricePosition > 1.15
? 'Consider price reduction or value-add messaging'
: 'Maintain current pricing strategy'
};
});
}商品信息流审核与优化引擎:
javascript
async function auditProductFeed(merchantId) {
const products = await getMerchantProducts(merchantId);
const diagnostics = await getFeedDiagnostics(merchantId);
const audit = {
totalProducts: products.length,
activeProducts: products.filter(p => p.status === 'active').length,
disapproved: products.filter(p => p.status === 'disapproved'),
warnings: diagnostics.warnings,
attributeAnalysis: analyzeAttributes(products),
titleOptimization: auditTitles(products),
descriptionQuality: auditDescriptions(products),
imageQuality: auditImages(products),
pricingAnalysis: analyzePricing(products),
customLabelStrategy: designCustomLabels(products)
};
return audit;
}
function auditTitles(products) {
const issues = [];
for (const product of products) {
const title = product.title;
if (title.length < 25) {
issues.push({ productId: product.id, issue: 'Title too short', current: title });
}
if (title.length > 150) {
issues.push({ productId: product.id, issue: 'Title exceeds optimal length', current: title });
}
if (!title.toLowerCase().includes(product.brand?.toLowerCase())) {
issues.push({ productId: product.id, issue: 'Brand missing from title', current: title });
}
const optimizedTitle = buildOptimizedTitle(product);
if (optimizedTitle !== title) {
issues.push({
productId: product.id,
issue: 'Title can be optimized',
current: title,
recommended: optimizedTitle
});
}
}
return { issues, optimizationRate: issues.length / products.length };
}
function buildOptimizedTitle(product) {
const components = [
product.brand,
product.title.replace(product.brand, '').trim(),
product.color,
product.size,
product.material,
product.gender
].filter(Boolean);
const optimized = components.join(' - ');
return optimized.substring(0, 150);
}
function designCustomLabels(products) {
const performanceData = products.map(p => ({
id: p.id,
revenue: p.revenue30d,
cost: p.cost30d,
roas: p.revenue30d / Math.max(p.cost30d, 0.01),
margin: p.margin,
clicks: p.clicks30d,
conversions: p.conversions30d
}));
return {
customLabel0: {
name: 'Margin Tier',
values: assignMarginTiers(performanceData),
biddingImplication: 'Higher bids on high-margin products'
},
customLabel1: {
name: 'Performance Tier',
values: assignPerformanceTiers(performanceData),
biddingImplication: 'Aggressive bids on top performers, reduced on low performers'
},
customLabel2: {
name: 'Seasonality',
values: assignSeasonality(products),
biddingImplication: 'Boost seasonal products during peak periods'
},
customLabel3: {
name: 'Price Competitiveness',
values: assignPriceCompetitiveness(products),
biddingImplication: 'Higher bids when price-competitive, lower when overpriced'
},
customLabel4: {
name: 'Product Lifecycle',
values: products.map(p => ({
productId: p.id,
label: p.daysListed < 30 ? 'new_arrival' : p.daysListed > 180 ? 'clearance' : 'established'
})),
biddingImplication: 'Promotional bids for new arrivals and clearance'
}
};
}补充信息流与竞争定价:
javascript
function buildSupplementalFeed(products, enrichmentData) {
return products.map(product => ({
id: product.id,
custom_label_0: enrichmentData[product.id]?.marginTier,
custom_label_1: enrichmentData[product.id]?.performanceTier,
custom_label_2: enrichmentData[product.id]?.seasonality,
custom_label_3: enrichmentData[product.id]?.priceCompetitiveness,
custom_label_4: enrichmentData[product.id]?.lifecycle,
sale_price: enrichmentData[product.id]?.promotionalPrice,
promotion_id: enrichmentData[product.id]?.activePromotion
}));
}
function analyzeCompetitivePricing(products, benchmarkData) {
return products.map(product => {
const benchmark = benchmarkData[product.id];
if (!benchmark) return { productId: product.id, status: 'no_benchmark_data' };
const pricePosition = product.price / benchmark.benchmarkPrice;
return {
productId: product.id,
yourPrice: product.price,
benchmarkPrice: benchmark.benchmarkPrice,
priceIndex: pricePosition,
status: pricePosition <= 0.95 ? 'price_leader'
: pricePosition <= 1.05 ? 'competitive'
: pricePosition <= 1.15 ? 'slightly_above'
: 'overpriced',
clickShareImpact: estimateClickShareImpact(pricePosition),
recommendation: pricePosition > 1.15
? 'Consider price reduction or value-add messaging'
: 'Maintain current pricing strategy'
};
});
}Integration with Buddy™ Agent
与 Buddy™ Agent 的集成
Shopping Ads is a core e-commerce skill within Buddy™ Agent. The platform connects directly to Merchant Center, running continuous feed audits that detect disapprovals, attribute issues, and optimization opportunities in real time. When products get disapproved, Buddy™ immediately notifies the user with the specific violation and a fix recommendation.
Buddy™ automates supplemental feed management, updating custom labels based on rolling performance data without manual CSV uploads. The platform generates and applies custom label assignments on a configurable schedule (daily or weekly), ensuring bid strategies always reflect current product performance.
For competitive pricing, Buddy™ monitors price benchmark data and alerts users when their products become uncompetitive. It connects pricing intelligence with bid strategy, automatically reducing bids on overpriced products and increasing bids on price-competitive items to maximize ROAS.
Shopping Ads 是 Buddy™ Agent 中的核心电商 skill。该平台直接连接 Merchant Center,持续执行信息流审核,实时检测商品拒登、属性问题和优化机会。商品被拒登时,Buddy™ 会立即通知用户,并说明具体违规项及修复建议。
Buddy™ 可自动管理 supplemental feed,根据滚动绩效数据更新 custom labels,无需手动上传 CSV。该平台按可配置日程(每日或每周)生成并应用自定义标签分配,确保出价策略始终反映当前商品表现。
在竞争定价方面,Buddy™ 会监控价格基准数据,并在商品失去竞争优势时提醒用户。它将定价情报与出价策略结合,自动降低价格过高商品的出价,提高价格具有竞争力的商品出价,以最大化 ROAS。
Best Practices
最佳实践
- Front-load product titles with the most search-relevant attributes (brand, product type, key feature)
- Use all five custom labels strategically to enable granular bid management
- Update supplemental feeds at least weekly to reflect current performance and inventory
- Audit and fix Merchant Center disapprovals daily — disapproved products earn zero revenue
- Include GTIN/MPN for every product to unlock augmented listings and competitive benchmarking
- Use high-quality product images with white backgrounds and no watermarks or promotional text
- Segment Shopping campaigns by custom label performance tiers for differentiated bidding
- Monitor competitive pricing weekly and adjust bids based on price competitiveness
- Enable free listings to capture incremental organic Shopping traffic at no cost
- Set up local inventory ads if operating physical stores to capture nearby shoppers
- 将最具搜索相关性的属性(品牌、商品类型、关键功能)前置到商品标题中
- 策略性地使用全部五个 custom labels,以实现精细化出价管理
- 至少每周更新 supplemental feeds,以反映当前表现和库存情况
- 每日审核并修复 Merchant Center 拒登——被拒登商品不会产生任何收入
- 为每件商品填写 GTIN/MPN,以启用增强型商品列表和竞争基准分析
- 使用白底、无水印、无促销文字的高质量商品图片
- 按 custom labels 的表现层级划分 Shopping 广告系列,以进行差异化出价
- 每周监控竞争定价,并依据价格竞争力调整出价
- 启用 free listings,以零成本捕捉增量自然 Shopping 流量
- 经营实体店时设置 local inventory ads,以触达附近购物者
Platform Compatibility
平台兼容性
| Platform | Supported |
|---|---|
| Claude Code | ✅ |
| Cursor | ✅ |
| Codex | ✅ |
| Gemini | ✅ |
| 平台 | 是否支持 |
|---|---|
| Claude Code | ✅ |
| Cursor | ✅ |
| Codex | ✅ |
| Gemini | ✅ |
Related Skills
相关 Skills
- PMax Optimization - Product feed quality directly impacts Performance Max Shopping placements
- Competitor Analysis - Competitive pricing intelligence drives Shopping bid strategy adjustments
- Remarketing Strategy - Dynamic remarketing uses product feed data for personalized product ads
- MCP Server Creation - Merchant Center integration via MCP enables automated feed management tools
- PMax Optimization - 商品信息流质量会直接影响 Performance Max Shopping 展示效果
- Competitor Analysis - 竞争定价情报可驱动 Shopping 出价策略调整
- Remarketing Strategy - 动态再营销利用商品信息流数据投放个性化商品广告
- MCP Server Creation - 通过 MCP 集成 Merchant Center,可启用自动化信息流管理工具
Keywords
关键词
shopping ads, product feed, merchant center, feed optimization, custom labels, supplemental feeds, product titles, shopping campaigns, google shopping, product listing ads, competitive pricing, local inventory ads, free listings, shopping ROAS, product feed audit
© 2026 googleadsagent.ai™ | Agent Skills™ | MIT License
Shopping 广告, product feed, Merchant Center, feed 优化, custom labels, supplemental feeds, product titles, Shopping campaigns, Google Shopping, product listing ads, competitive pricing, local inventory ads, free listings, Shopping ROAS, product feed audit
© 2026 googleadsagent.ai™ | Agent Skills™ | MIT License