返回 Skill 列表
extension
分类: 数据与分析无需 API Key

find-competitors

亚马逊竞品分析技能。给定一个 ASIN 或亚马逊产品链接,自动通过 Sorftime MCP 拉取产品详情、销量趋势、类目 Top100 报告, 同时通过西柚洞察 MCP(mcp__xydc-mcp)拉取 ASIN 反查关键词、关键词市场指标、核心词竞品 ASIN 等深度关键词数据, 筛选出直接竞品并获取竞品图片与核心数据,生成含产品图片的 XLSX 竞品分析报告(7 个 Sheet)。 触发场景:用户说"找竞品""竞品分析""帮我找一下这款产品的竞品""这个 ASIN 的竞品有哪些""分析竞品"等, 或用户提供亚马逊链接/ASIN 并要求竞品分析时触发。 依赖:Sorftime MCP 连接器(mcp__sorftime__系列工具)+ 西柚洞察 MCP 连接器(mcp__xydc-mcp 系列工具)。

person作者: user_53d53acchubcommunity

帮我找竞品

前置条件

  • Sorftime MCP 连接器已连接(检查 mcp__sorftime__ 系列工具是否可用)—— 用于产品详情、销量趋势、类目报告
  • 西柚洞察 MCP 连接器已连接(检查 mcp__xydc-mcp 系列工具是否可用)—— 用于关键词深度分析
  • 若 Sorftime 不可用,提示用户在连接器管理中启用 Sorftime MCP
  • 若西柚洞察不可用,提示用户在连接器管理中启用西柚洞察 MCP(关键词分析为报告核心模块,不可跳过)
  • Python 环境需安装 openpyxl 和 Pillow(用于生成 XLSX 和嵌入图片)

工作流程

Step 1: 解析 ASIN

从用户输入中提取 ASIN(10位字母数字组合,以 B 开头)。支持从亚马逊 URL 中解析:

  • https://www.amazon.com/dp/B0XXXXXXX → ASIN = B0XXXXXXX
  • https://www.amazon.com/dp/B0XXXXXXX?th=1&psc=1 → ASIN = B0XXXXXXX

Step 2: 并行拉取目标产品数据

同时调用以下 Sorftime 工具(amz_site 默认 "US",除非用户指定其他站点):

| 工具 | 参数 | 用途 | |------|------|------| | mcp__sorftime__product_detail | asin, amz_site | 获取标题、品牌、价格、销量、评分、类目 node_id、主图 URL | | mcp__sorftime__product_traffic_terms | asin, amz_site | 获取 Sorftime 流量词及排名(用于 Sheet 5 交叉验证) | | mcp__sorftime__product_trend | asin, product_trend_type="SalesVolume", amz_site | 获取月销量历史趋势(Sheet 2 销量列) | | mcp__sorftime__product_trend | asin, product_trend_type="Price", amz_site | 获取月度均价历史趋势(Sheet 2 均价列);若该趋势类型不可用,回退使用 product_detail 中的当前售价 |

同时调用以下西柚洞察工具(与 Sorftime 并行):

| 工具 | 参数 | 用途 | |------|------|------| | mcp__xydc-mcp__get_asin_keywords | asin | ASIN 反查关键词(自然/广告流量、排名、流量获得率),通常返回 100-200 个关键词 | | mcp__xydc-mcp__get_asin_keyword_rank_trends | asin | ASIN 关键词排名趋势 | | mcp__xydc-mcp__get_asin_keyword_traffic_trends | asin | ASIN 关键词流量趋势 |

注意:这 7 个调用互相独立,应在同一轮并行执行。西柚洞察返回的关键词数据将作为 Sheet 3 的核心数据源,Sorftime 的两组 product_trend 分别为 Sheet 2 提供销量和均价数据。

Step 2.5: 拉取关键词市场指标与竞品 ASIN

从 Step 2 的 get_asin_keywords 结果中,选取 Top 20 关键词(按流量获得率或搜索量降序),然后并行调用:

| 工具 | 参数 | 用途 | |------|------|------| | mcp__xydc-mcp__get_keyword_info | keyword(逐个调用,最多 20 个) | 获取每个关键词的周搜索量、ABA 排名、竞争难度、CPC、点击转化率、Top3 ASIN | | mcp__xydc-mcp__get_keyword_analysis_monthly | keyword | 关键词月度分析数据 | | mcp__xydc-mcp__get_keyword_asin_analysis | keyword(选 1-3 个核心词) | 核心词反查竞品 ASIN Top20(含 ASIN、标题、品牌、销量、点击份额等) |

核心词选取规则:从反查关键词中选搜索量最大、与产品最匹配的 1-3 个词(如产品标题中的核心品类词)。

Step 3: 拉取类目 Top100 报告

从 Step 2 的 product_detail 响应中提取 node_idsubcategory 字段,调用:

mcp__sorftime__category_report(node_id=<node_id>, amz_site="US")

返回该子类目下按月销量排序的 Top100 产品列表,含 ASIN、标题、品牌、价格、月销量、月销额、评分、评论数、排名、毛利率、卖家等。

若 Step 2.5 的西柚洞察核心词竞品 ASIN 中发现了不在 Top100 列表中的重要竞品(如跨类目的成人款),也应将其纳入竞品对比范围,在 Sheet 4 中标注"跨类目竞品(西柚洞察发现)"。

Step 4: 筛选直接竞品

从 Top100 列表中筛选直接竞品,筛选规则:

  1. 属性匹配:从目标产品标题中提取核心关键词(如 "wide toe box" "barefoot" "zero drop" "minimalist" 等),在 Top100 标题中匹配
  2. 品牌分组:同品牌产品也列出(标记为自有品牌),但不计入外部竞品
  3. 排除目标产品自身
  4. 按月销量降序排列

若 Top100 中匹配结果不足 5 个,可适当放宽关键词匹配条件。

Step 5: 批量获取竞品图片

对每个筛选出的竞品 ASIN,调用 mcp__sorftime__product_detail 获取 main_image 字段(JSON 字符串数组,第一个元素为主图)。

优化:若竞品数量 > 10 个,可分批并行调用(每批 5 个)。目标产品自身已在 Step 2 获取过,无需重复。

Step 6: 生成 XLSX 报告

使用 Python + openpyxl 生成 XLSX 报告,保存到当前工作目录下 <ASIN>_competitor_analysis.xlsx

技术实现要点

  1. 图片下载与嵌入

    • urllib.requestrequests 下载每个产品的主图到临时目录
    • openpyxl.drawing.image.Image 将图片嵌入到对应行的单元格上方
    • 图片缩放至约 80×80 像素,锚定到对应行的指定列(如 B 列)
    • 设置对应行高约 65 磅,图片列宽约 12 字符
    • 下载失败的图片显示占位文字"图片不可用"
  2. Python 脚本模板

    import json, urllib.request, tempfile, os
    from openpyxl import Workbook
    from openpyxl.drawing.image import Image as XlImage
    from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
    from openpyxl.utils import get_column_letter
    from PIL import Image as PILImage
    
    # 下载图片
    def download_image(url, tmpdir):
        try:
            path = os.path.join(tmpdir, f"img_{hash(url)}.png")
            urllib.request.urlretrieve(url, path)
            return path
        except:
            return None
    
    # 嵌入图片到单元格
    def embed_image(ws, image_path, cell, max_size=80):
        if not image_path:
            ws[cell] = "图片不可用"
            return
        img = XlImage(image_path)
        # 缩放
        ratio = min(max_size / img.width, max_size / img.height)
        img.width = int(img.width * ratio)
        img.height = int(img.height * ratio)
        ws.add_image(img, cell)
    
  3. 环境准备(在执行脚本前运行):

    # 确保 venv 中有 openpyxl 和 Pillow
    pip install openpyxl Pillow
    
  4. Sheet 2 数据结构(销量+均价趋势):

    # sales_trend 每个元素为 (月份, 月销量, 均价, 环比变化)
    # 均价来自 Sorftime product_trend(type="Price"),若不可用则用当前售价
    # 环比变化基于月销量计算,格式如 "+87.6%" 或 "-12.3%"
    sales_trend = [
        ("2026-06", 49, 36.99, ""),
        ("2026-07", 759, 36.99, "+1446.9%"),
        ("2026-08", 1424, 36.99, "+87.6%")
    ]
    # Sheet 2 表头:["月份", "月销量", "均价", "环比变化"]
    # 均价列格式:$36.99(带$前缀,保留两位小数)
    # 合并单元格范围需从3列扩展为4列(如 ws.merge_cells('A2:D2'))
    

XLSX 工作簿结构(7 个 Sheet)

Sheet 1: 目标产品速览

  • 第 1-2 行:标题行 + 免责声明(合并单元格,橙底白字)
  • 第 4 行起:产品基本信息表(属性 | 值),含以下行:
    • 主图(B4 单元格嵌入图片,行高 65)
    • ASIN、品牌、标题、售价、月销量、月销额、毛利率、评分、评论数、上架天数、类目排名
  • 样式:表头粗体灰底,数据行白底

Sheet 2: 销量趋势

  • 月度销量表格(月份 | 月销量 | 均价 | 环比变化)
  • 均价列:来自 Sorftime product_trend 的月度均价数据,或基于当月实际成交价计算的平均售价;若数据不可用,展示当前售价并标注"价格稳定/无波动"
  • 最后一行附趋势解读文字(合并单元格,自动换行),解读中需包含销量增长/下滑趋势和均价波动趋势两个维度

Sheet 3: 西柚洞察关键词分析(核心升级模块,含 3 个子表)

子表 A — ASIN 反查关键词 Top50(来自 get_asin_keywords):

  • 表头:序号 | 关键词 | 自然流量 | 广告流量 | 自然排名 | 流量获得率 | 广告获得率
  • 按流量获得率降序排列,展示前 50 个关键词
  • 底部附汇总行:总关键词数、有自然流量的词数、有广告流量的词数

子表 B — 关键词市场指标 Top20(来自 get_keyword_info):

  • 表头:序号 | 关键词 | 周搜索量 | ABA 排名 | 竞争难度 | CPC | 点击转化率 | Top3 ASIN
  • 按周搜索量降序排列
  • 竞争难度用数值+高/中/低标注
  • Top3 ASIN 列显示该关键词下点击份额最高的 3 个 ASIN(超链接到亚马逊)

子表 C — 核心词竞品 ASIN Top20(来自 get_keyword_asin_analysis):

  • 表头:序号 | ASIN | 标题 | 品牌 | 点击份额 | 销量 | 价格
  • 按点击份额降序排列
  • ASIN 超链接到亚马逊
  • 标注目标产品自身(如有出现在列表中)和自有品牌产品
  • 底部附"关键发现"文字段(合并单元格),总结:
    • 核心词下竞品总数
    • 头部品牌集中度(Top3 品牌占多少席)
    • 目标产品在核心词下的排名位置
    • 是否发现自有品牌的其他产品在核心词下曝光

Sheet 4: 直接竞品对比

  • 表头行:图片 | ASIN | 品牌 | 标题 | 售价 | 月销量 | 月销额 | 评分 | 评论数 | 类目排名 | 毛利率 | 卖家 | 竞品类型
  • 每个竞品一行,B 列嵌入主图缩略图,行高 65 磅
  • "竞品类型"列标注:外部竞品 / 自有品牌
  • ASIN 列超链接到 https://www.amazon.com/dp/{ASIN}
  • 外部竞品行用浅红底色标记,自有品牌行用浅紫底色标记
  • 表头冻结

Sheet 5: 竞品格局与洞察

  • 顶部:竞品梯队分组表(梯队 | ASIN | 品牌 | 月销量 | 价格区间 | 特征标签)
    • 梯队分:头号竞品 / 第二梯队 / 新兴搅局者
    • 数据来源:Sorftime 类目 Top100 筛选 + 西柚洞察核心词竞品 ASIN 交叉
  • 中部:竞争格局综述(合并单元格大段文字),包含:
    • 类目内竞争格局(基于 Sorftime Top100 数据)
    • 核心词搜索竞争格局(基于西柚洞察数据,如核心词下竞品总数、头部品牌集中度)
    • 自有品牌交叉发现:通过西柚洞察核心词竞品 ASIN 反查,发现是否有公司旗下其他品牌/产品出现在核心词竞品中(这是西柚洞察独有的增量价值)
  • 底部:分析建议(分新品 / 老品两个方向)
    • 标题行:"针对新品的建议方向"(绿底白字)
    • 建议内容(合并单元格,自动换行):基于竞品数据,从定价策略、差异化卖点、流量切入点、评价积累节奏、上架时机等维度给出新品切入建议
    • 标题行:"针对老品的优化建议"(蓝底白字)
    • 建议内容(合并单元格,自动换行):基于竞品对比,从价格调整、Listing 优化、广告策略、防御性动作、流量词拓展等维度给出老品优化建议
    • 标题行:"针对老品的防御策略"(红底白字)
    • 建议内容:针对头号竞品的威胁,给出防御性策略建议

Sheet 6: 类目大盘数据

  • Top100 汇总指标卡片(指标 | 数值):总月销量、总月销额、平均售价、平均评分、平均评论数
  • Top3 品牌表(排名 | 品牌 | 月销量 | 月销额 | 市占率)
  • Top3 卖家表(排名 | 卖家 | 月销量 | 月销额 | 市占率)

Sheet 7: 总结与免责声明

  • 竞争格局总结(大段文字,合并单元格)

  • 目标产品问题清单(编号列表,每条一行)

  • 免责声明(合并单元格,红底白字,粗体):

    ⚠️ 免责声明

    本报告由 AI 基于 Sorftime 数据和西柚洞察数据自动生成,所有分析意见(包括新品/老品建议方向、竞争格局判断、问题清单等)仅作为 AI 分析参考,整体思路需要自行判断。数据可能存在延迟或偏差,请结合实际市场情况和其他数据源综合决策。任何基于本报告的商业决策风险由决策者自行承担。

样式规范

| 元素 | 样式 | |------|------| | Sheet 标题行 | 14号粗体,深蓝底白字,合并居中 | | 表头行 | 11号粗体,灰底(#D9D9D9) | | 数据行 | 10号常规,白底 | | 外部竞品行 | 浅红底(#FCE4EC) | | 自有品牌行 | 浅紫底(#F3E5F5) | | 免责声明 | 11号粗体,红底(#FFEBEE) | | 新品建议标题 | 绿底(#E8F5E9) | | 老品建议标题 | 蓝底(#E3F2FD) | | 老品防御标题 | 红底(#FFEBEE) | | 图片列 | 列宽 15,行高 65 | | 长文本单元格 | 自动换行(wrap_text=True),垂直居中 |

Step 7: 展示报告

使用 present_files 展示生成的 XLSX 文件,并在对话中给出核心结论速览(含免责声明提醒)。

数据处理注意事项

Sorftime 数据

  • main_image 字段是 JSON 字符串(非数组),需用 json.loads() 解析后取第一个元素作为主图
  • 部分产品可能返回空图片列表,此时显示占位文字"图片不可用"
  • monthly_sales_volume 为 0 或 grossprofit_rate 为 -1 表示数据不可用,标注 N/A
  • Sheet 2 均价列:优先从 Sorftime product_trend 的月度价格/均价数据获取;若不可用,使用当前售价并标注"价格稳定";均价波动需结合 Coupon、促销、变体价格分布综合判断
  • 类目排名格式为 "子类目名 (Rank: N)",需解析展示
  • 不同站点的币种不同,美站为 USD,展示价格时标注 $
  • 图片下载需设置 Referer 头避免部分防盗链拦截:urllib.request.Request(url, headers={'Referer': 'https://www.amazon.com/'})
  • XLSX 嵌入图片需用 openpyxl 的 add_image() 方法,图片格式支持 PNG/JPEG
  • 临时图片文件在 XLSX 生成完成后可清理,openpyxl 会将图片数据嵌入 xlsx 文件中

西柚洞察数据

  • get_asin_keywords 返回的关键词列表通常为 100-200 个,取 Top 50 展示在 Sheet 3 子表 A
  • get_keyword_info 需逐个关键词调用,建议选 Top 20 关键词批量调用(可并行)
  • get_keyword_asin_analysis 的 keyword 参数选 1-3 个核心词(搜索量最大、与产品最匹配的品类词)
  • 西柚洞察返回的排名数据为 Page 级别(P1/P2/P3...),非精确排名位
  • 流量获得率 = 该关键词给 ASIN 带来的流量占该 ASIN 总流量的百分比
  • 竞争难度数值范围 0-10,0-3 为低竞争,4-6 为中等,7-10 为高竞争
  • Top3 ASIN 字段可能返回 JSON 字符串或列表,需做类型兼容处理
  • 若西柚洞察 MCP 调用返回错误或空数据,在对应 Sheet 中标注"西柚洞察数据暂不可用",不影响其他 Sheet 生成

XLSX 生成注意事项

  • 合并单元格时注意 end_row 不要跨多行,否则后续行落入合并区域会触发 'MergedCell' object attribute 'value' is read-only 错误(图片合并范围用 end_row=start_row 单行合并)
  • 拼接字符串前检查 None 值,避免 unsupported operand type(s) for +=: 'NoneType' and 'str' 错误(用 " | ".join(f"{k}: {v}" for k, v in attrs.items()) 代替 += 拼接)

新品 vs 老品分析框架

针对新品的建议方向

从以下维度分析并给出可执行建议:

  1. 定价策略:竞品价格区间分布,新品切入的定价建议(高性价比 vs 高端定位)
  2. 差异化卖点:基于竞品评论痛点,找出未被满足的需求空白
  3. 流量切入点:基于西柚洞察关键词市场指标,找出竞争难度低(0-3)但有一定周搜索量的关键词,适合新品起步投放
  4. 评价积累节奏:竞品上架初期的评价增长曲线,预估 Vine + 自然评价节奏
  5. 上架时机:结合类目销量趋势,判断最佳上架时间窗口
  6. 首批备货量:基于竞品月销量中位数,建议首批备货量
  7. 关键词布局策略:基于西柚洞察 ASIN 反查关键词的流量获得率分布,建议新品优先布局的自然排名词和广告投放词

针对老品的优化建议

从以下维度分析并给出可执行建议:

  1. 价格调整:对比竞品价格,判断当前定价是否合理(偏高/偏低)
  2. Listing 优化:对比竞品标题关键词覆盖度,结合西柚洞察反查关键词找出目标产品未覆盖但有流量的关键词
  3. 广告策略:基于西柚洞察关键词 CPC 和竞争难度数据,判断哪些词值得加大投入(低 CPC + 高搜索量),哪些可缩减(高 CPC + 低转化)
  4. 评价管理:对比评论数和评分,判断评价差距及追赶策略
  5. 防御性动作:针对头号竞品的威胁,给出价格防御、差异化强化等建议
  6. 流量拓展:发现竞品有但目标产品未覆盖的流量词机会(西柚洞察反查关键词对比分析)
  7. 核心词排名监控:基于西柚洞察排名趋势数据,识别排名下滑的关键词并给出优化建议