Sorftime Amazon BSR Market Insight
概述
本 Skill 使用 Sorftime MCP 工具深度调研亚马逊指定 BSR 类目,通过多维度数据采集与分析,最终生成一个深色主题专业风格的交互式 HTML 市场洞察报告面板。报告以简洁专业的投行报告风格呈现,包含 Executive Summary 头部 + 12 个数据版位(含最终进场结论版位)。工作流中包含 2 个用户交互确认点(细分赛道确认 + 竞品配置确认),需暂停等待用户输入。数据采集必须具备重试容错机制,确保报告完整性。
触发条件
当用户要求对亚马逊某个品类进行市场调研、BSR 分析、竞品洞察、市场进入评估时使用此 Skill。典型触发语:亚马逊XX品类分析、XX市场洞察、帮我调研XX类目、amazon xx category research。
数据获取容错与重试机制(CRITICAL)
核心原则:任何数据获取失败,必须重试而非跳过。确保最终报告的每个版位都有真实数据填充。
重试策略
| 参数 | 值 | |------|-----| | 最大重试次数 | 3 次 | | 重试间隔 | 第 1 次重试等 3 秒,第 2 次等 6 秒,第 3 次等 12 秒(指数退避) | | 超时判定 | 若 MCP 调用 30 秒内无响应或返回错误/空数据,视为失败 |
重试执行规则
每次 MCP 调用失败时:
- 记录失败项(工具名 + 参数 + 失败原因)
- 等待对应退避时间后重试
- 3 次均失败后,标记该项为"无法获取"
- 在报告
dataQuality中记录所有缺失项
并行调用的批次管理
为避免同时发起过多 MCP 请求导致超时或限流,按以下批次执行:
批次 1(基础数据,并行):
category_report× 尽可能多页(从 page=1 开始递增,直到返回空数据或产品数 < 20 为止;目标覆盖 BSR 全量产品,不限于 Top100)category_keywords× 2 页category_trend("SalesCount")
批次 2(趋势数据,并行):
- 其余 8 个
category_trend指标
批次 3(产品详情,并行):
- BSR 全量产品
product_detail(所有已获取 page 的产品) - 每个细分赛道代表产品
product_reviews(Pos + Neg)
批次 4(关键词详情,并行):
- Top10 关键词
keyword_detail+keyword_trend
部分数据缺失处理
若某些数据经 3 次重试仍无法获取:
- 报告中该版位显示
数据获取未成功(已重试3次),而非空数据 - 在报告顶部
dataStatus栏标注缺失项 dataQuality.isComplete设为false,dataQuality.missingItems列出缺失项名称- 仅有产品基础数据(category_report BSR 全量第一页)为硬性要求——若此项 3 次均失败,告知用户并终止
核心工作流
用户交互点强制执行规则(UNSKIPPABLE — 最高优先级)
本 Skill 包含 2 个强制性用户交互确认点,执行 Skill 的 Agent 必须严格遵守以下规则,违反即为执行错误:
- 交互点 A 不可跳过:完成版位 1-3 数据采集后,必须暂停并展示细分赛道列表,等待用户确认后才能继续。即使细分赛道列表明显清晰,也必须向用户确认。
- 交互点 B 不可跳过:完成版位 1-8 及 10-11 数据采集后、进入版位 9 前,必须暂停并询问用户是否有对应产品及飞书文档。即使用户在交互点 A 时已提及产品信息,也必须再次确认。
- 先后顺序不可颠倒:交互点 A 必须发生在交互点 B 之前。在交互点 A 未完成用户确认的情况下,禁止推进到交互点 B 或任何后续版位。
- 不可假设用户意图:禁止以"用户未回应即默认同意"、"用户之前表达过类似意图"、"该品类通常无争议"等理由跳过任一交互点的确认步骤。
- 确认完成标志:必须收到用户明确的文字回复(如"确认"/"可以"/"选这几个"/"没有产品"等),才能视为交互点已完成。
自检清单(Agent 在每个交互点触发前必须逐项核对):
- [ ] 当前交互点之前的数据采集是否已完成?
- [ ] 上一个交互点(如适用)是否已获得用户确认?
- [ ] 是否已向用户展示了完整的选择信息(非仅一行提问)?
- [ ] 是否已明确等待用户回复(非发出提问后立即继续)?
第零步:解析用户意图
从用户输入中提取以下参数:
productName:目标产品/品类名称(必需),如 "air fryer"、"wireless earbuds"amzSite:亚马逊站点,默认 "US",支持 US/GB/DE/FR/CA/JP 等topNode:可选的大品类节点(如用户明确提到大类,先通过 category_tree 获取)
若用户未明确指定站点但提到了语言(如法语),则默认 FR 站点;若提到产品与某国相关,则推导对应站点。
第一步:定位目标类目
- 调用
category_search_from_product_name,传入productName和amzSite,获取相关细分类目列表 - 若结果不理想,使用
category_name_search作为备选方案 - 从返回结果中选择最匹配的细分类目,记录其
nodeId和类目名称 - 若用户指定了某大品类,也可使用
category_search_from_top_node在该大类下搜索
无细分类目的处理(CRITICAL):
若以上步骤无法找到匹配的细分类目(返回结果为空或与用户产品完全不相关),禁止强行匹配无关类目以免报告充斥无效数据。改为以下替代流程:
- 若用户提供了产品白底图,使用
product_search_from_image(传入图片 URL 或 base64)获取视觉相似的产品列表 - 从产品列表中提取核心属性,使用
product_search配合用户提供的关键词做精确搜索 - 用
keyword_search_results获取用户产品对应关键词的搜索结果,从结果中提取竞品 ASIN - 使用
product_detail批量获取这些竞品 ASIN 的详情(标题、价格、品牌、主图、销量等) - 基于收集到的竞品数据,人工分析并构建替代的数据面板:
- panelSegments:基于产品属性做细分打标
- panelComparison:以收集的竞品 ASIN 填充
- panelKeywords:以
keyword_detail+keyword_trend获取关键词数据 - 其他版位基于竞品数据聚合推算
- 在 header.categoryPath 中标注
"基于关键词 & 图片搜索替代类目数据 | 数据截至 {日期}",并在 dataQuality 中记录"该产品在亚马逊无对应细分类目,使用图片+关键词替代方案"
并行获取类目基础数据(确定 nodeId 后立即并行调用):
category_report(nodeId, amzSite)→ Top100 产品实时报告category_keywords(nodeId, amzSite, page=1)→ 核心关键词(第1页)category_keywords(nodeId, amzSite, page=2)→ 核心关键词(第2页)
第二步:并行采集趋势与历史数据
基于第一部确认的 nodeId 和 amzSite,并行调用以下趋势指标:
category_trend(nodeId, "SalesCount", amzSite) → 品类销量趋势
category_trend(nodeId, "AvgPrice", amzSite) → 平均售价趋势
category_trend(nodeId, "BrandProductCount", amzSite) → 品牌数量趋势
category_trend(nodeId, "SellerProductCount", amzSite) → 卖家数量趋势
category_trend(nodeId, "NewProductSalesAmountShare", amzSite) → 新品销量占比趋势
category_trend(nodeId, "AmazonSalesAmountShare", amzSite) → 亚马逊自营占比趋势
category_trend(nodeId, "Top3ProductSalesAmountShare", amzSite) → Top3产品销量占比趋势
category_trend(nodeId, "Top3BrandSalesAmountShare", amzSite) → Top3品牌销量占比趋势
category_trend(nodeId, "Top3SellerSalesAmountShare", amzSite) → Top3卖家销量占比趋势
同时获取历史对比数据(使用 category_report_from_history),覆盖近 1/3/6 个月及 1 年/2 年时间点:
- 每个时间点选取一个代表性月份调用
- 若数据量大,优先 6 个月、1 年、2 年三个关键时间点
- 这些历史快照同时用于第三步第8条的细分赛道趋势计算:在每个历史时间点,按赛道过滤产品并逐月求和,构建赛道独立的月销量/新品占比时间序列
第三步:全量产品深度分析(CRITICAL — 基于 BSR 全量产品)
核心原则:细分赛道的所有数据必须从 BSR 全量产品池(所有可获取的 page)中筛选聚合,不得仅从 Top10、Top100 或其他预筛选子集中抽取。 确保品牌榜单、竞品拆解、Top20 附录等版位的细分赛道筛选覆盖全量数据。
从 category_report 的 BSR 全量结果(所有 page)中:
-
全量产品采集:对 BSR 全量产品(所有已获取 page),并行调用
product_detail(asin, amzSite)获取详细信息(标题、五点描述、属性、价格、品牌、卖家、主图 URL(必须获取) 等) -
按细分赛道独立采集评论:对每个细分赛道下的代表产品(每个赛道至少采集 3-5 个产品的评论),并行调用
product_reviews(asin, amzSite, "Negative")和product_reviews(asin, amzSite, "Positive");按赛道分别分析负面主题 / 正面亮点 / 改进建议,每条记录打上对应segment标签;不同赛道的评论数据完全独立,互不混合 -
按细分赛道独立计算销量趋势(CRITICAL — 禁止直接使用 product_trend):不调用
product_trend;改为通过category_report(当前)+category_report_from_history(历史各时间点)拉取产品快照,在每个时间点按赛道过滤产品并求和,构建赛道独立的月销量时间序列。具体步骤见第8条。 -
从 BSR 全量品类报告中按细分赛道归类所有产品,提取每个产品的主图 URL(image 字段,必须确保非空)、月销量、月销额、年销量、年销额等数据
-
按细分赛道全量品牌聚合:基于 BSR 全量产品的品牌字段,按每个细分赛道独立聚合品牌数据(name/sales/note/revenue/segment),按销量降序排列;全局视图展示 Top10,细分赛道视图展示该赛道下所有品牌全量数据(不设显示上限,所有品牌均列出)
-
全量竞品拆解:基于 BSR 全量产品按细分赛道归类,每个赛道的竞品拆解数应尽可能多(目标 > 3 个),若某赛道产品数不足则展示该赛道下全部产品;使用
minProductsPerSegment字段设定最低阈值 -
全量 Top20 附录:基于 BSR 全量产品按细分赛道归类,每个赛道展示所有可用产品(最多20个)
-
细分赛道独立趋势(CRITICAL — 基于产品销售数据单独统计,禁止直接使用 product_trend):
禁止行为:
- 直接将全品类
category_trend数据拷贝到各赛道 segmentData - 直接调用
product_trendAPI 获取产品趋势后聚合(该方法数据维度与品类级不一致) - 对全品类数据简单除法或加减伪造成赛道数据
正确计算方法 — 通过产品销售数据快照对比类目数据:
a. 拉取当前时间点产品快照:从
category_report(所有 page)获取 BSR 全量产品的当月销售数据(月销量、月销额、上架日期、FBA/FBM 履约方式 等)b. 拉取历史时间点产品快照:调用
category_report_from_history(nodeId, amzSite, 历史时间点)获取过去各月的产品快照,时间点覆盖:1个月前、3个月前、6个月前、1年前、2年前(每个时间点取一个代表性月份;若数据量大优先 6月/1年/2年三个关键点)c. 每个时间点按赛道过滤:对每个历史快照,根据产品的标题/属性将产品归入对应细分赛道(使用与当前快照相同的赛道划分逻辑)
d. 逐月逐赛道求和:对每个时间点、每个细分赛道,将该赛道下所有产品的月销量求和 → 得到该赛道在该月的
monthlySales值e. 构建赛道时间序列:将各时间点的赛道月销量按时间排列,得到
segmentData["赛道名"].monthlySales数组和segmentData["赛道名"].labels数组f. 新品占比计算:对每个时间点、每个赛道,统计该赛道内"上架时间 ≤ 3个月"的产品销量之和,除以该赛道当月总销量 →
newProductShare(百分比)g. 对比类目数据校验:将各赛道 monthlySales 总和与
category_trend("SalesCount")同期数据对比,赛道总和应 ≤ 类目总和(因赛道仅覆盖部分产品);若赛道总和 > 类目总和,说明计算错误h. 填入
panelVitality.segmentData["赛道名"] = { labels, newProductShare, monthlySales }FBA/FBM 履约方式数据采集(CRITICAL):在上述 a-c 步骤中,从每个产品快照额外提取
fulfillmentChannel字段(FBA / FBM / Amazon),按时间点和赛道独立统计:- 对每个时间点、每个赛道:FBA 产品数 / 赛道总产品数 =
fbaShare(百分比) - 对每个时间点、每个赛道:FBM 产品数 / 赛道总产品数 =
fbmShare(百分比) - 全局视图:对每个时间点全量产品统计 FBA/FBM 占比
- 填入
panelFulfillment.segmentData["赛道名"] = { labels, fbaShare, fbmShare };全局数据填入panelFulfillment.labels/fbaShare/fbmShare
与全局数据的关系:全局
panelVitality.labels/newProductShare/monthlySales来自category_trend(品类级 API),各赛道segmentData来自category_report+category_report_from_history的产品快照逐月求和。两者数据来源不同、计算方法不同,结果必然不同。若发现赛道曲线与全局曲线完全重合,说明 segmentData 未正确填充。 模板已禁止自动 fallback,会直接显示错误提示。 - 直接将全品类
第四步:关键词深度分析(含多语言调研)
主语言关键词调研(基于类目报告中产出的关键词):
- 从
category_keywords结果中提取 Top10 关键词 - 并行调用
keyword_detail(keyword, amzSite)获取每个关键词详情(月搜索量、搜索排名等) - 并行调用
keyword_trend(keyword, amzSite)获取关键词趋势(识别旺季月份)
市场其他主流语言关键词调研(CRITICAL):
根据目标站点覆盖的市场语言,独立调研对应语言的关键词(非翻译,而是用目标语言的搜索词重新调用 Sorftime):
- 确定目标站点市场的主流语言(参考下表),每种语言独立调研 Top10 关键词
- 使用
keyword_list(keyword, amzSite)或keyword_extends(keyword, amzSite)以目标语言的核心搜索词入手,扩展出该语言的高频搜索关键词 - 对扩展出的关键词并行调用
keyword_detail和keyword_trend,获取搜索量/排名等数据 - 将各语言 Top10 关键词数据填入
panelKeywords.otherLangKeywords数组
站点主流语言映射表:
| 站点 | 主语言 | 其他主流语言(需要额外调研) | |------|--------|------------------------------| | US | 英语 | 西班牙语(西语裔人口 ~19%) | | CA | 英语 | 法语(魁北克省) | | GB | 英语 | —(仅英语) | | DE | 德语 | —(仅德语,可选加英语) | | FR | 法语 | —(仅法语,可选加英语) | | MX | 西班牙语 | —(仅西语) | | JP | 日语 | —(仅日语,可选加英语) | | ES | 西班牙语 | —(仅西语) | | IT | 意大利语 | —(仅意大利语) | | IN | 英语 | 印地语 | | BR | 葡萄牙语 | —(仅葡语) |
注:若站点市场实际为单语言主导,则 otherLangKeywords 设为空数组 [],标注 "该站点市场为单语言主导"。
第五步:数据整合与分析
第五步包含 2 个强制性用户交互确认点(见下方「用户交互点 A」和「用户交互点 B」),Agent 必须逐项完成,不可跳过任一交互点直接生成报告。
细分赛道颗粒度拆分指南(CRITICAL)
市场细分必须基于产品核心功能属性做细颗粒度拆分,而非仅靠大品类名称区分。每个产品的细分归类应从 product_detail 返回的标题、属性、参数中提取关键差异化维度。
拆分原则:
- 每个维度是一个独立的坐标轴,产品在多个维度上有交叉特征
- 优先按影响用户购买决策的核心参数拆分
- 同一大品类下至少拆出 3 个以上细分赛道(不足则尽量拆)
- 细分赛道命名使用「核心参数 + 产品形态」,如「上置式饮水机」「12000BTU+ WiFi 移动空调」
典型品类的拆分维度参考:
| 品类 | 拆分维度 | 示例细分赛道 | |------|---------|-------------| | 饮水机/Water Dispenser | 安装方式(上置/下置/台面)、水温功能(冷/热/冰/3温)、是否带制冰 | 上置式饮水机、下置式饮水机、台面式饮水机、3温+制冰饮水机 | | 移动空调/Portable AC | BTU 等级(8000/10000/12000/14000)、附加功能(WiFi/除湿/制热/睡眠模式) | 8000 BTU 基础款、10000 BTU 除湿款、12000+ BTU WiFi 款、冷暖两用款 | | 饮料柜/Beverage Cooler | 容积(<100L/100-150L/>150L)、门型(单门/双门/玻璃门)、温区(单温/双温) | <100L 迷你饮料柜、100-150L 玻璃门饮料柜、>150L 双门双温饮料柜 | | 冰箱/Refrigerator | 容积(<200L/200-400L/>400L)、门型(单门/双门/法式)、安装方式(独立式/嵌入式) | <200L 单门冰箱、200-400L 双门冰箱、>400L 法式冰箱 | | 厨房电器 | 功率、容量、材质、功能模式 | 按功率+容量+功能组合命名 | | 工具/设备 | 功率、尺寸、用途场景 | 按功率+用途场景命名 | | 服装/鞋类 | 材质、适用场景、尺码范围 | 按材质+场景命名 | | 电子产品 | 屏幕尺寸、核心芯片/参数、连接方式 | 按核心参数+连接方式命名 |
执行要求:
- 先对 Top100 产品逐一分析
product_detail返回的标题和属性 - 提取该品类最关键的 2-3 个差异化维度
- 按维度组合将产品分入细分赛道
- 每个细分赛道的 segment label 需体现具体的参数/功能差异
- 确保
panelSegments.segments[].name能清晰区分不同赛道
用户交互点 A:确认细分赛道(CRITICAL — 第一版位数据完成后必须暂停,不可跳过)
触发时机:当版位 1(销量趋势)、版位 2(竞争格局)、版位 3(市场细分)的数据采集与初步分析完成,且细分赛道列表(panelSegments.segments[])已生成后,立即暂停后续数据采集与分析。
注意:交互点 A 是后续所有版位(含交互点 B)的前置条件。在用户确认赛道之前,禁止进行版位 4-12 的任何数据采集。
暂停动作:
- 向用户展示已识别的全部细分赛道列表,每个赛道附带:赛道名称、月销量占比、价格带、代表品牌、竞争强度(从 panelSegments 数据中提取)
- 明确询问用户:
- "以上是本次调研识别到的细分赛道。请确认:这些赛道是否准确?你希望重点深入分析哪些赛道?(可选全部,也可选择部分重点赛道)"
- 等待用户回复后再继续——禁止在用户未确认前推进到后续版位的数据采集
用户确认后的处理:
- 记录用户选择
selectedSegments(字符串数组,赛道名称) - 若用户调整了赛道划分(增删/改名),按用户确认的最终赛道列表重新归类产品
- CRITICAL:后续所有数据采集与展示仅围绕用户确认的赛道进行。未被用户选中的赛道数据必须完全排除,不得在任何版位中出现。
- 后续所有版位(panelBrands / panelVitality / panelStrategy / panelReviews / panelComparison / panelTop20 / panelFulfillment / panelConclusion)的
segmentOptions仅包含用户确认的赛道,activeSegment默认值为"全部赛道"(含义:全部已确认赛道的聚合视图,不含未选赛道) - 全局数据(如 panelVitality 的 labels/monthlySales/newProductShare、panelFulfillment 的 labels/fbaShare/fbmShare)应对已确认赛道的 segmentData 求和聚合,而非使用 category_trend 全品类原始数据
- 若用户未明确指定重点赛道,默认选择全部已识别的赛道继续
整理所有采集的数据,构建 REPORT_DATA_JSON 对象,按以下结构组织(以下为 JSON schema,模板中使用 REPORT_DATA.{key} 访问):
{
"dataQuality": {
"isComplete": true,
"retriedCount": 0,
"missingItems": []
},
"header": {
"categoryPath": "Dispensadores de Agua Fría | Node ID: 9725708011 | 数据截至 2026-07-15",
"kpis": [
{"label": "BSR 月销量", "value": "16,895 件", "color": "blue"},
{"label": "BSR 月销额", "value": "1,435 万 MXN", "color": "blue"},
{"label": "2年销量增幅", "value": "+33.7%", "color": "green"},
{"label": "平均售价", "value": "870 MXN", "color": ""},
{"label": "品牌数", "value": "81 个", "color": ""},
{"label": "中国卖家占比", "value": "61.3%", "color": "amber"}
],
"tags": [
{"text": "品牌集中度低(26.6%)", "type": "good"},
{"text": "亚马逊自营仅 8.4%", "type": "good"},
{"text": "市场增长 +33.7%", "type": "good"},
{"text": "无季节性波动", "type": "info"},
{"text": "泵头极度内卷", "type": "warn"}
]
},
"panelSales": {
"labels": ["24/07", "24/09", ...],
"values": [15180, 13111, ...],
"insight": "增长趋势明确:从2024年...市场需求持续扩大,没有衰退信号。"
},
"panelCompetition": {
"top3ProductShare": 0.2015,
"top3BrandShare": 0.2663,
"top3SellerShare": 0.2875,
"amazonShare": 0.0844,
"newProductShare": 0.0933,
"chinaSellerShare": 0.6133,
"insight": "竞争格局健康:品牌集中度不到27%..."
},
"panelSegments": {
"description": "基于 BSR 全量产品标题、属性、参数,从产品类型与产品功能维度做细颗粒度打标拆分...",
"segments": [
{
"name": "插入型泵头",
"badge": "主力赛道 · 极度内卷",
"details": [
{"label": "月销量占比", "value": "~72%(~12,200件)", "color": "#fbbf24"},
{"label": "价格带", "value": "100-300 MXN ($6-17)", "color": ""},
{"label": "代表品牌", "value": "MXHIGO / ZAKASEA / ANNA TOSANI", "color": ""},
{"label": "卖家来源", "value": "90%+ 中国卖家", "color": ""},
{"label": "竞争强度", "value": "极高", "color": "#ef4444"}
],
"note": "产品同质化严重(折叠泵、USB充电、LED屏)..."
}
]
},
"panelKeywords": {
"keywords": [
{"keyword": "dispensador de agua garrafon", "searchVolume": 122531, "resultCount": 31488, "rank": 85, "peakMonths": "4月"}
],
"otherLangKeywords": [
{
"language": "英语",
"languageCode": "en",
"keywords": [
{"keyword": "water dispenser pump", "searchVolume": 85000, "resultCount": 25000, "rank": 45, "peakMonths": "7月"}
],
"insight": "英语市场搜索词更偏通用型..."
}
],
"insight": "搜索需求很强:核心词月搜索 12.2 万次..."
},
"panelBrands": {
"activeSegment": "全部赛道",
"segmentOptions": ["全部赛道", "插入型泵头", "落地下置式饮水机", "隐藏桶饮水机"],
"maxDisplay": 10,
"brands": [
{"name": "MXHIGO", "sales": 1943, "note": "泵头", "revenue": "32万MXN", "segment": "插入型泵头"},
{"name": "Whirlpool", "sales": 555, "note": "⭐ 销额最高", "revenue": "310万MXN", "segment": "落地下置式饮水机"}
],
"insight": "全局视图展示全品类 Top10 品牌;选择细分赛道后展示该赛道**所有品牌全量数据**(不限数量)。"
},
"panelVitality": {
"activeSegment": "全部赛道",
"segmentOptions": ["全部赛道", "插入型泵头", "落地下置式饮水机", "隐藏桶饮水机"],
"labels": ["24/07", "24/09", ...],
"newProductShare": [12.68, 21.07, ...],
"monthlySales": [15180, 13111, ...],
"segmentData": {
"插入型泵头": {
"labels": ["24/07", "24/09", ...],
"newProductShare": [6.2, 8.5, ...],
"monthlySales": [8000, 7500, ...]
},
"落地下置式饮水机": {
"labels": ["24/07", "24/09", ...],
"newProductShare": [3.1, 4.2, ...],
"monthlySales": [1200, 1150, ...]
}
},
"insight": "2024年下半年新品占比一度高达17-21%...当选择细分赛道时,展示该赛道独立的新品占比与销量趋势曲线。"
},
"panelStrategy": {
"activeSegment": "全部赛道",
"segmentOptions": ["全部赛道", "插入型泵头", "落地下置式饮水机", "隐藏桶饮水机"],
"recommendations": [
{
"stars": 3,
"starColor": "#4ade80",
"segment": "落地下置式饮水机",
"subtitle": "Bottom-load Freestanding",
"reason": "价格带 2,500-6,500 MXN,高价值产品...",
"marketSizeStars": "★★★☆☆",
"marketSizeColor": "#4ade80",
"competitionStars": "★★★☆☆",
"competitionColor": "#4ade80",
"score": "9.2",
"scoreColor": "#4ade80"
}
],
"primaryPath": "\"落地下置式饮水机\"作为利润主力 + \"隐藏桶+3温+制冰\"作为差异化高端线...",
"risks": [
"落地式饮水机需 NOM 认证,确认产品合规后再投入",
"大件退换货成本高,品质和包装必须到位",
"Whirlpool/Midea 品牌力强,低价不是策略,要打\"同价高配\"或功能差异化"
]
},
"panelReviews": {
"activeSegment": "全部赛道",
"segmentOptions": ["全部赛道", "插入型泵头", "落地下置式饮水机", "隐藏桶饮水机"],
"negativeThemes": [
{"category": "质量问题", "frequency": "15/48", "examples": "stopped working after 2 weeks...", "severity": "高", "segment": "插入型泵头"}
],
"positiveThemes": [
{"category": "性价比高", "frequency": "32/87", "examples": "great value for the price...", "segment": "插入型泵头"}
],
"suggestions": [
{"priority": "P0", "direction": "优化质量问题", "detail": "针对电机故障率...", "expectedOutcome": "降低退货率至3%以下", "segment": "插入型泵头"}
],
"summary": "基于 X 条评论分析,正面评价主要集中在..."
},
"panelComparison": {
"activeSegment": "全部赛道",
"segmentOptions": ["全部赛道", "插入型泵头", "落地下置式饮水机", "隐藏桶饮水机"],
"minProductsPerSegment": 3,
"competitors": [
{
"asin": "B0XXXXX",
"amazonUrl": "https://www.amazon.com/dp/B0XXXXX",
"title": "MXHIGO 电动抽水器 折叠便携 3档定量",
"titleEn": "MXHIGO Electric Water Dispenser Pump Foldable Portable 3 Modes",
"image": "https://m.media-amazon.com/images/I/XXXXXXXXX._AC_SL1500_.jpg",
"brand": "MXHIGO",
"price": 299,
"currency": "MXN",
"segment": "插入型泵头",
"monthlySales": 1620,
"monthlyRevenue": 484380,
"annualSales": 19440,
"annualRevenue": 5812560,
"keySpecs": "USB充电、3档定量、折叠设计",
"differentiation": "LED显示屏、触控操作",
"designFeatures": "折叠便携、多色可选"
}
],
"comparisonLayout": "card",
"horizontalComparison": {
"userProduct": {
"name": "你的产品名称",
"asin": "B0XXXXX",
"amazonUrl": "https://www.amazon.com/dp/B0XXXXX",
"image": "https://m.media-amazon.com/images/I/XXXXXXXXX._AC_SL1500_.jpg",
"fivePoints": ["五点描述1", "五点描述2", "五点描述3", "五点描述4", "五点描述5"],
"configParams": [
{"key": "材质", "value": "304不锈钢"},
{"key": "功率", "value": "1500W"}
]
},
"competitors": [
{
"name": "竞品A名称",
"asin": "B0YYYYY",
"amazonUrl": "https://www.amazon.com/dp/B0YYYYY",
"image": "https://m.media-amazon.com/images/I/YYYYYYYYY._AC_SL1500_.jpg",
"fivePoints": ["竞品五点1", "竞品五点2", "竞品五点3", "竞品五点4", "竞品五点5"],
"configParams": [
{"key": "材质", "value": "201不锈钢"},
{"key": "功率", "value": "1200W"}
],
"segment": "插入型泵头"
}
],
"comparisonTable": {
"headers": ["配置维度", "你的产品", "竞品A"],
"rows": [
{"dimension": "主图", "isImage": true, "userProduct": "https://m.media-amazon.com/images/I/XXXXXXXXX._AC_SL1500_.jpg", "competitor_0": "https://m.media-amazon.com/images/I/YYYYYYYYY._AC_SL1500_.jpg", "advantage": "持平"},
{"dimension": "ASIN", "isLink": true, "userProduct": "B0XXXXX", "userProductUrl": "https://www.amazon.com/dp/B0XXXXX", "competitor_0": "B0YYYYY", "competitor_0_Url": "https://www.amazon.com/dp/B0YYYYY", "advantage": "持平"},
{"dimension": "材质", "userProduct": "304不锈钢", "competitor_0": "201不锈钢", "advantage": "userProduct"},
{"dimension": "功率", "userProduct": "1500W", "competitor_0": "1200W", "advantage": "userProduct"},
{"dimension": "价格", "userProduct": "¥299", "competitor_0": "¥269", "advantage": "competitor_0"},
{"dimension": "综合评分", "userProduct": "8.5", "competitor_0": "7.2", "advantage": "userProduct"}
]
}
},
"insight": "整体同质化程度高,差异化主要在屏幕类型..."
},
"panelTop20": {
"activeSegment": "全部赛道",
"segmentOptions": ["全部赛道", "插入型泵头", "落地下置式饮水机", "隐藏桶饮水机"],
"maxDisplay": null,
"products": [
{
"title": "MXHIGO Dispensador Plegable...",
"asin": "B0XXXXX",
"amazonUrl": "https://www.amazon.com/dp/B0XXXXX",
"image": "https://m.media-amazon.com/images/I/XXXXXXXXX._AC_SL1500_.jpg",
"brand": "MXHIGO",
"segment": "泵头",
"segmentColor": "#d1d5db",
"annualSales": 18192,
"annualRevenue": 3045888,
"price": 299,
"reviews": 678,
"listingDate": "2025-01",
"highlight": false
}
],
"footnote": "蓝色高亮行 = 落地式/隐藏桶/冰箱泵等高价值产品。"
},
"panelFulfillment": {
"activeSegment": "全部赛道",
"segmentOptions": ["全部赛道", "插入型泵头", "落地下置式饮水机", "隐藏桶饮水机"],
"labels": ["24/07", "24/09", "24/11", "25/01", "25/04", "25/07"],
"fbaShare": [62.5, 64.2, 65.8, 68.1, 70.3, 72.5],
"fbmShare": [37.5, 35.8, 34.2, 31.9, 29.7, 27.5],
"segmentData": {
"插入型泵头": {
"labels": ["24/07", "24/09", "24/11", "25/01", "25/04", "25/07"],
"fbaShare": [55.2, 58.4, 60.1, 63.5, 66.8, 70.2],
"fbmShare": [44.8, 41.6, 39.9, 36.5, 33.2, 29.8]
},
"落地下置式饮水机": {
"labels": ["24/07", "24/09", "24/11", "25/01", "25/04", "25/07"],
"fbaShare": [78.5, 79.2, 80.5, 81.8, 82.6, 83.9],
"fbmShare": [21.5, 20.8, 19.5, 18.2, 17.4, 16.1]
}
},
"insight": "FBA 履约占比整体呈上升趋势..."
},
"panelConclusion": {
"activeSegment": "全部赛道",
"segmentOptions": ["全部赛道", "插入型泵头", "落地下置式饮水机", "隐藏桶饮水机"],
"conclusions": [
{
"segment": "落地下置式饮水机",
"badge": "★★★ 首推赛道",
"badgeColor": "#4ade80",
"productConfig": {
"title": "推荐入场产品配置",
"specs": [
{"label": "核心功能", "value": "下置式桶装 + 冷热双温 + 压缩机制冷", "priority": "P0"},
{"label": "差异化卖点", "value": "儿童安全锁 + 自清洁功能 + LED指示灯", "priority": "P1"},
{"label": "外观设计", "value": "不锈钢拉丝面板 / 黑色哑光,适配现代厨房", "priority": "P2"},
{"label": "安全认证", "value": "NOM 认证(墨西哥站必需)、UL 认证", "priority": "P0"}
],
"rationale": "基于该赛道 Top10 产品配置共性 + 评论痛点(制冷慢、漏水),高竞争力配置需强化压缩机制冷与防漏设计"
},
"priceStrategy": {
"recommendedPrice": "2,800 - 3,500 MXN",
"pricePoint": "中高价位",
"reasoning": "该赛道价格带集中在 2,500-6,500 MXN,主流高销量产品价格带为 2,800-3,500 MXN;高于此区间转化率显著下降,低于此区间利润空间不足",
"competitorReference": "Whirlpool 均价 4,200 MXN / Primo 均价 3,100 MXN"
},
"timingStrategy": {
"recommendedWindow": "9月 - 11月(旺季前2个月入场)",
"peakSeason": "11月 - 次年3月(冬季热饮需求 + 节日送礼)",
"reasoning": "该品类搜索量 10月开始上升、11月达峰值;新品上架需预留 4-6 周排名爬坡期,因此 9月入场可在旺季前积累评论与排名",
"leadTime": "备货+物流+上架合计约 8-10 周,建议 7月启动备货"
},
"fulfillmentStrategy": {
"recommended": "FBA 为主(≥80%)+ FBM 补充大件/偏远地区",
"fbaReasoning": "该赛道 FBA 占比已达 80%+,Prime 标志是转化率关键因素;FBA 降低大件退换货的客服成本",
"fbmReasoning": "部分超大尺寸或偏远地区 FBA 费用过高,可用 FBM 补位",
"logisticsTips": "产品体积大、重量高,建议头程海派(海运+快递派送)降低成本,包装需加固防运输损坏"
},
"overallScore": "9.2",
"scoreColor": "#4ade80",
"summary": "该赛道体量大、利润空间充足、竞争格局健康(品牌集中度低),是本次调研的首推入场赛道。核心壁垒在 NOM 认证与大件物流,需提前 2 个月启动备货。"
}
],
"insight": "基于用户选择的每个赛道,从产品配置、价格、入场时机、物流四个维度给出可落地的进场建议。切换赛道可查看该赛道独立的结论。"
},
"footer": "Sorftime MCP 数据分析 · Amazon 站点 · Node ID · 数据截至日期\n报告由 WorkBuddy 整理 · 仅供内部决策参考"
}
版位分析说明
Header(Executive Summary):Top100 月销量/销额汇总、2年销量增幅、平均售价、品牌数、中国卖家占比等 KPI 卡片;用 color 字段控制数值颜色(green=利好, amber=关注, blue=数据, red=风险);tags 数组展示关键结论标签(good/warn/info/bad)。
版位 1(panelSales)— 销量趋势:基于 category_trend "SalesCount" 数据绘制近 2 年销量曲线;计算复合增长率/下降率,给出趋势分析文字放入 insight。
版位 2(panelCompetition)— 竞争格局:6 条横向进度条(Top3产品/品牌/卖家占比 + 亚马逊自营 + 新品占比 + 中国卖家占比);insight 给出竞争格局评估。
版位 3(panelSegments)— 市场细分:description 为说明文字;segments 数组中每个赛道含 name、badge(角标)、details(多维度数据)、note(分析文字)。
版位 4(panelKeywords)— 关键词搜索需求:keywords 数组(主语言 Top10 关键词,keyword/searchVolume/resultCount/rank/peakMonths);otherLangKeywords 数组(每种其他主流语言独立一组的 Top10 关键词,含 language/languageCode/keywords/insight);insight 为整体搜索洞察。
版位 5(panelBrands)— 品牌势力分布:brands 数组(name/sales/note/revenue/segment);通过水平柱状图 + 进度条列表展示;maxDisplay 控制全局视图最大展示数(默认 10);顶部包含细分赛道筛选下拉框,全局视图展示全部已确认赛道 Top10 品牌,选择细分赛道后展示该赛道下所有品牌全量数据(来自该赛道全部产品的品牌聚合,不设数量上限);insight 关键洞察应随筛选变化而更新。
版位 6(panelVitality)— 新品占比与市场活力:双轴折线图(新品占比 + 月销量),顶部包含细分赛道筛选下拉框;全局视图对所有已确认赛道的 segmentData 求和聚合(仅包含已选赛道产品),选择细分赛道后切换为 segmentData[activeSegment] 重绘独立曲线;赛道数据来源:category_report(当前)+ category_report_from_history(历史各时间点)的产品快照,按赛道过滤后逐月求和(不使用 product_trend API);自检要求:各赛道 monthlySales 总和应 ≤ 类目 category_trend 同期数据,若大于则计算错误;insight 市场活力分析。
版位 7(panelStrategy)— 进入策略:recommendations 评分矩阵表格(星级/赛道/理由/体量/竞争/评分),顶部包含细分赛道筛选下拉框,默认展示全部已确认赛道,选择细分赛道后仅展示该赛道相关策略;primaryPath 首推路径;risks 风险列表。不包含毛利率/利润率分析——利润相关数据无法从 Sorftime MCP 获取,不做猜测。
版位 8(panelReviews)— 客户洞察:negativeThemes + positiveThemes + suggestions 三部分表格;评论数据按细分赛道独立采集分析——每个赛道的产品评论分别聚合,提取该赛道独特的负面主题/正面亮点/改进建议,打上对应 segment 标签;顶部包含细分赛道筛选下拉框,默认展示全部已确认赛道,选择细分赛道后仅展示该赛道独立的评论洞察(筛选时匹配 item.segment === activeSegment);不同赛道之间评论数据互不混合;summary 应随筛选变化而更新。
版位 9(panelComparison)— 竞品配置拆解:根据 comparisonLayout 字段切换两种渲染布局。
卡片布局(comparisonLayout: "card",默认):competitors 2列卡片式布局(comp-card-grid 2列),每张卡片展示:产品主图(image,CRITICAL:必须从 product_detail 返回结果中强制提取主图 URL,若 product_detail 未返回则调用 product_search 以 ASIN 反查获取,禁止以空值传入模板,加载失败 fallback 显示"暂无主图")、中文标题(title)、英文标题(titleEn)、ASIN(amazonUrl 生成可点击超链接)、品牌、价格、月销量/月销额、年销量/年销额、核心配置、差异化卖点、外观设计;顶部包含细分赛道筛选下拉框,默认展示全部已确认赛道,选择细分赛道后仅展示该赛道竞品(基于全量 Top100 筛选,匹配 segment 字段);每个细分赛道应拆解尽可能多的产品(目标 > 3 个),若某赛道产品数不足则展示全部;使用 minProductsPerSegment 作为最低数量阈值。若用户提供了自有产品(路径 1-B),额外插入 isUserProduct: true 的用户产品卡片,绿色边框 + "你的产品"角标高亮。
表格布局(comparisonLayout: "table",路径 1-A 飞书文档对比模式):渲染为全宽横向对比表格(horizontal-compare-table),结构如下:
- 表头区域:每列顶部显示产品主图(
image,最大宽度 120px,居中展示,加载失败显示"暂无主图"),主图下方显示可点击的 ASIN 超链接(amazonUrl,新标签页打开),ASIN 下方显示产品名称(name) - 表格采用深色主题样式,表头固定(
position: sticky; top: 0),首列(配置维度列)左对齐加粗,其余列居中对齐 - 逐行展示
comparisonTable.rows:isImage: true行:渲染为产品主图行,每列展示对应产品图片,方便直观对比外观设计isLink: true行:渲染为 ASIN 行,每个 ASIN 为可点击的超链接(新标签页打开对应亚马逊产品页)- 普通参数行:每行首列显示配置维度名称,后续列为各产品在该维度的值
advantage字段控制单元格背景色:"userProduct"→ 浅绿底色(rgba(16,185,129,0.15))、"competitor_N"→ 浅红底色(rgba(239,68,68,0.1))、"持平"→ 无特殊底色- 表格上方展示各产品的五点描述摘要栏(
five-points-summary),每个产品一个标签卡片,列出其 5 条核心卖点 - 表格底部追加"价格对比"行和"综合评分"行(来自 panelStrategy 评分),高亮显示
- 顶部包含细分赛道筛选下拉框,切换赛道后表格数据同步更新(过滤
horizontalComparison.competitors中匹配segment的竞品) - insight 随布局和筛选而变化,表格模式下 insight 概括横向对比核心发现,标注用户产品的优劣势维度
版位 10(panelTop20)— 数据附录:products 产品排名一览表,数据范围必须覆盖品牌势力分布(panelBrands)中分析的全部产品(即 BSR 全量产品按赛道归类后的完整产品池,不限于 20 条);显示字段:主图、标题、ASIN(可点击超链接)、品牌、所属细分赛道、年销量、年销额、价格、评论数、上架日期;顶部包含细分赛道筛选下拉框,默认展示全部已确认赛道产品,选择细分赛道后仅展示该赛道产品;highlight 字段控制高亮行(背景 #1e3a5f,用于标注高价值/高关注产品);footnote 表注(如"蓝色高亮行 = 落地式/隐藏桶等高价值产品")。若产品数量超过 50 条,表格支持分页或"加载更多"按钮。产品排序默认按年销量降序。
版位 11(panelFulfillment)— FBA/FBM 履约方式占比变化:双线折线图(FBA 占比 + FBM 占比),顶部包含细分赛道筛选下拉框;全局视图对所有已确认赛道的 segmentData 求和聚合(仅包含已选赛道产品),选择细分赛道后切换为 segmentData[activeSegment] 重绘独立曲线;赛道数据来源:category_report + category_report_from_history 产品快照,按赛道过滤后逐月计算 FBA/FBM 产品数占比;不使用 product_trend API;数据用于洞察不同赛道履约方式偏好差异及 FBA 渗透趋势;insight 履约方式分析。
版位 12(panelConclusion)— 最终进场结论(CRITICAL — 基于用户选择的赛道):根据用户在交互点 A 中选择的每一个赛道,生成该赛道独立的、可落地的最终进场结论卡片。每张结论卡片包含四个核心维度:
- 产品配置(productConfig):进场需要的具体产品配置——核心功能规格(P0 必需 / P1 差异化 / P2 加分项)、差异化卖点、外观设计建议、安全认证要求。配置方案来源于:该赛道高销量产品的共性配置 + 评论正面亮点 + 负面痛点改进方向。若用户在交互点 B 中提供了自有产品配置,应在此基础上对比说明"你的产品 vs 推荐配置"的差异;若无自有产品,则生成推荐的高竞争力入场配置。
- 入场价格(priceStrategy):合理的入场价格区间,标注价位定位(低价/中价/中高价/高价),附竞品价格参考。价格区间推导自该赛道主流价格带(来自 panelSegments 价格带数据)与高销量产品的价格分布。
- 入场时间(timingStrategy):合理的入场时机——推荐入场窗口期(月份)、旺季峰值、排名爬坡预留时间(leadTime)。时机推导自
keyword_trend(搜索量峰值)+category_trend销量季节性数据。 - 物流配置(fulfillmentStrategy):合理的物流搭配——FBA/FBM 主辅配置比例及原因、头程物流建议(海运/空运/快递)、包装与运输注意事项。推导自 panelFulfillment 的 FBA/FBM 占比趋势 + 产品尺寸重量特性。
结论卡片还包含 overallScore(综合评分,与 panelStrategy 评分对齐)、badge(赛道评级标签如"★★★ 首推赛道")、summary(该赛道进场总结)。顶部包含细分赛道筛选下拉框,默认展示全部赛道的结论,选择某赛道后仅展示该赛道结论。该版位的 segmentOptions 仅包含用户在交互点 A 中确认的赛道,默认 activeSegment 为 "全部赛道"。
细分赛道联动筛选机制
panelSegments(版位 3)产出的细分赛道列表是后续版位筛选的数据基础。
交互点 A 之前(数据采集阶段):各版位的 segmentOptions 使用 panelSegments 识别到的全部赛道,activeSegment 默认值为 "全部赛道"(展示全部已识别赛道的数据)。
交互点 A 之后(用户确认后):各版位的 segmentOptions 仅包含用户在交互点 A 中确认的赛道,activeSegment 默认值为 "全部赛道"(展示全部已确认赛道的聚合数据)。任何未被用户选中的赛道数据不得出现在后续版位中。 segmentOptions 不得包含未被确认的赛道名称。
数据过滤规则:
- panelBrands:brands 数组中每项含
segment字段,数据来自全量 Top100 产品按赛道独立品牌聚合,按销量降序;全局视图截取 TopmaxDisplay(默认 10),细分赛道视图展示该赛道全量品牌(不限数量);过滤时匹配 brand.segment === activeSegment - panelVitality:labels/newProductShare/monthlySales 为全部已确认赛道的聚合数据(对已选赛道 segmentData 求和);
segmentData对象按细分赛道名存储各自独立趋势(来自category_report+category_report_from_history产品快照按赛道逐月求和,不使用 product_trend);筛选切换赛道时从 segmentData[activeSegment] 取值重绘;若赛道缺少 segmentData 则模板直接报错提示,不会自动 fallback 到全局数据——因此必须在数据采集阶段为每个赛道填充真实独立数据 - panelStrategy:recommendations 中每项含
segment字段,过滤时匹配 - panelReviews:negativeThemes / positiveThemes / suggestions 中每项含
segment字段,过滤时匹配 item.segment === activeSegment;未选择赛道时展示全部 - panelComparison:
comparisonLayout: "card"时,competitors 中每项含segment字段,过滤时匹配 competitor.segment === activeSegment;comparisonLayout: "table"时,过滤horizontalComparison.competitors中匹配segment的竞品,同时根据 activeSegment 更新comparisonTable.headers和comparisonTable.rows - panelTop20:products 中每项含
segment字段,过滤时匹配 product.segment === activeSegment;数据范围覆盖品牌分布(panelBrands)中分析的全部产品(即 BSR 全量产品),不设数量上限;使用annualSales/annualRevenue字段(年化数据);默认按年销量降序排列 - panelFulfillment:labels/fbaShare/fbmShare 为全部已确认赛道的聚合数据(对已选赛道 segmentData 求和);
segmentData对象按细分赛道名存储各自独立 FBA/FBM 占比趋势(来自产品快照按赛道逐月计算);筛选切换赛道时从 segmentData[activeSegment] 取值重绘;若赛道缺少 segmentData 则模板直接报错提示,不会自动 fallback 到全局数据 - panelConclusion:conclusions 数组中每项含
segment字段,过滤时匹配 conclusion.segment === activeSegment;segmentOptions仅包含用户在交互点 A 中确认的赛道;默认 activeSegment 为"全部赛道",展示所有确认赛道的结论卡片;选择单个赛道后仅展示该赛道结论
用户交互点 B:竞品配置对比的产品确认(CRITICAL — 版位 9 前必须暂停,不可跳过)
前置条件:交互点 A 必须已完成用户确认。若交互点 A 尚未获得用户确认,禁止进入交互点 B。
触发时机:当版位 1-8 及 10-11 的数据采集与分析完成、即将进入版位 9(竞品产品配置拆解)前,立即暂停并询问用户。即使版位 9 所需数据已采集完毕,也必须等待用户确认后才能开始版位 9 的数据构建。
询问内容:
- 首先询问:"你目前是否有对应的产品?(即你是否有自己已经在做或打算做的具体产品,需要与市场竞品做配置对比)"
- 根据用户回复分两种路径处理:
路径 1 — 用户已有产品:
- 进一步询问:"请提供你的产品配置信息(如产品名称、核心规格/参数、价格、卖点等)。如果方便,也可以提供产品链接或 ASIN。另外,你是否有同类产品的竞品分析文档(如飞书文档链接)?如果有,请提供链接,我可以基于文档中的五点描述做横向配置参数对比。"
- 必须等待用户回复后再继续——禁止在用户未确认前进入版位 9 的数据构建
- 根据用户是否提供了飞书文档链接,分两种子路径处理:
路径 1-A — 用户提供了飞书文档链接(含同类产品五点描述,CRITICAL):
- 使用飞书文档相关工具(lark-doc skill)读取飞书文档内容,从文档中提取以下关键数据:
- 用户自己的产品名称、ASIN、品牌、售价、产品主图 URL(必须获取)
- 用户产品的五点描述(Bullet Points,即亚马逊 Listing 中的 5 条核心卖点描述)
- 文档中已有的竞品对比数据(如有)
- 提取与结构化的执行要求:
- 读取文档全文,识别"五点描述"或"Bullet Points"章节
- 将用户产品的五点描述逐条提取,记录为
userProduct.fivePoints数组(5 条字符串) - 从五点描述中进一步提取结构化配置参数(如材质、功率、容量、尺寸、功能等),记录为
userProduct.configParams键值对数组 - 若飞书文档中已包含竞品分析数据,同步提取竞品的五点描述和配置参数
- 改变版位 9(panelComparison)的渲染布局为横向对比表格形式:
comparisonLayout设为"table",模板渲染时从卡片网格布局切换为全宽横向对比表格- 构建
horizontalComparison数据对象,包含以下核心结构:userProduct:{ name, asin, amazonUrl, image, fivePoints: [5条], configParams: [{key, value}...] }competitors:来自 Sorftimeproduct_detail返回的各竞品五点描述 + 配置参数,每个竞品格式{ name, fivePoints: [5条], configParams: [{key, value}...], segment }comparisonTable:横向前置对比表headers:["配置维度", "你的产品", "竞品A名称", "竞品B名称", ...](列数 = 竞品数 + 2)rows:每个配置维度一行,格式{ "dimension": "材质", "userProduct": "304不锈钢", "competitor_A": "201不锈钢", "competitor_B": "塑料+不锈钢", "advantage": "userProduct" }——advantage字段标注该维度下谁占优("userProduct"/"competitor_X"/"持平")
- 表格中的配置维度来源优先级:
- 飞书文档中用户产品的五点描述 → 提取核心配置参数作为对比维度
- Sorftime
product_detail返回的竞品五点描述 → 提取对应的配置参数值填入竞品列 - Sorftime
product_detail返回的竞品属性/参数字段 → 补充飞书文档未覆盖的维度
- 表格末尾追加一行"价格对比"和一行"综合评分"(价格来自 Sorftime + 飞书文档,综合评分基于 panelStrategy 评分)
- 该子路径下不再生成独立的用户产品卡片(不使用
isUserProduct标记),所有产品(用户产品 + 竞品)统一通过表格呈现 - 保留 insight 分析文字,概括横向对比的核心发现(如"你的产品在材质和功率上优于竞品,但在价格和功能丰富度上处于劣势")
- 将用户产品配置数据同时传入版位 12(panelConclusion),用于生成针对用户产品的配置优化建议
路径 1-B — 用户已有产品但未提供飞书文档链接:
- 收集用户的
userProduct配置数据后(产品名称、核心规格/参数、价格、卖点等):comparisonLayout保持默认"card"- 在版位 9(panelComparison)中额外插入一张用户产品卡片,与同赛道竞品并列展示,便于直接对比
- 用户产品卡片的
isUserProduct: true标记,模板渲染时高亮区分(如绿色边框 + "你的产品"角标) - 在该卡片中标注用户产品配置与竞品配置的差异点(优势 / 劣势 / 持平)
- 将用户产品配置数据同时传入版位 12(panelConclusion),用于生成针对用户产品的优化建议
路径 2 — 用户无对应产品:
- 不再追问产品配置
- 基于已采集的竞品数据(panelComparison)和市场分析结果,自动生成推荐入场且具有竞争力的产品配置方案:
- 在版位 9(panelComparison)的每个赛道末尾追加一张「推荐入场配置」卡片(
isRecommended: true标记,模板渲染时以金色边框 + "★ 推荐入场配置" 角标区分) - 推荐配置基于该赛道的数据推导:提取销量/销额排名靠前产品的共性配置 + 评论中正面亮点 + 负面痛点的改进方向,组合成"高竞争力配置"
- 推荐配置卡片同样包含:产品名称、核心规格、差异化卖点、外观设计、预估价格带等字段
- 将推荐配置数据同时传入版位 12(panelConclusion),用于生成最终进场建议
- 在版位 9(panelComparison)的每个赛道末尾追加一张「推荐入场配置」卡片(
各路径汇总:
- 路径 1-A(有飞书文档):版位 9 切换为表格布局(
comparisonLayout: "table"),不再生成卡片,用户产品与竞品统一通过横向对比表格呈现 - 路径 1-B(有产品无飞书文档):版位 9 保持卡片布局(
comparisonLayout: "card"),额外插入isUserProduct: true的高亮用户产品卡片 - 路径 2(无产品):版位 9 保持卡片布局,在每赛道末尾追加
isRecommended: true的推荐入场配置卡片 - 所有路径下,版位 9 的竞品拆解基于 BSR 全量产品照常生成
第六步:生成 HTML 报告
- 读取
assets/dashboard-template.html作为基础模板 - 将所有分析数据注入模板中的 JavaScript 数据对象
- 使用 Chart.js 渲染所有图表
- 输出最终 HTML 文件到当前工作目录
HTML 设计要求:
- 深色专业主题:背景
#0f1117,卡片#1a1f2e,边框#2a3344 - 文字层级:主文字
#e5e7eb,次要#9ca3af,辅助/表头#6b7280 - 强调色系:蓝
#3b82f6、绿#10b981、紫#8b5cf6、琥珀#f59e0b、珊瑚#f97316、红#ef4444 - Header 使用渐变背景
linear-gradient(135deg, #1a1f2e, #1e2d3d)作为 Executive Summary - Header 内包含 KPI 数据卡片(meta-item)+ 关键结论标签(tags)
- 版位标题不使用 emoji,改用彩色圆点(.icon 9px 圆形)
- 进度条细条风格(6px 高度),segment-card 深底卡片
- insight-box 左侧彩色边框(黄色
#fbbf24默认,蓝/绿/紫可选) - 评分表格使用 Unicode 星号 ★☆
- 系统字体栈:
-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif - 响应式布局:移动端 grid2/grid3 → 单列
- 所有图表使用 Chart.js 4.4.x(CDN 加载)
- 报告顶部显示 dataStatus 状态栏(绿色=完整,琥珀色=部分缺失),列出重试次数和缺失项
移动端布局规范(CRITICAL — 禁止横向溢出):
- 全局溢出防护:
html, body { max-width:100%; overflow-x:hidden; overflow-wrap:break-word },所有容器和卡片设置max-width:100% - 所有文本元素必须支持自动换行:
word-break:break-word; overflow-wrap:break-word,禁止使用white-space:nowrap(表头 th 除外) - 移动端表格(≤768px)采用垂直卡片堆叠布局:隐藏
thead,每行tr变为卡片块,每个td独立成行,通过data-th属性显示列标题前缀(CSS::before { content:attr(data-th) }) - 表格所有
td必须添加data-th="列名"属性,确保移动端卡片视图正确显示字段标签 - 禁止在移动端使用
overflow-x:auto横向滚动表格 - 竞品卡片(comp-card)在移动端:图片最大宽度限制 200px 居中,spec-line 内容强制换行,所有文本元素添加
min-width:0防止 flex/grid 子元素溢出
图表全屏查看规范:
- 所有图表右上角显示全屏按钮(⛶ 图标),桌面端 hover 显示,移动端始终显示
- 点击全屏按钮打开固定定位的 overlay(
position:fixed; z-index:9999),背景半透明遮罩 + 模糊效果 - 全屏容器使用 flex 布局自适应:
chart-fullscreen-canvas-wrap使用flex:1; min-height:0确保画布区域弹性填充 - 全屏图表在更大画布上重新渲染(字体更大、间距更宽),便于查看细节
- 关闭方式:点击 × 按钮、点击遮罩空白区域、按 ESC 键、移动端下滑关闭手势(垂直滑动 >100px)
- 移动端全屏时
padding:0,容器全屏铺满100vh,关闭按钮增大至 36px 提升触摸友好性
图表配色规范:
- 销量趋势线:
#3b82f6(蓝色) - 新品占比线:
#8b5cf6(紫色) - 品牌柱状图:
#f97316, #3b82f6, #10b981, #8b5cf6, #f59e0b, #6b7280, #60a5fa, #9ca3af - 竞争格局进度条:蓝/绿/琥珀/红/紫/珊瑚
- 图表文字色
#9ca3af,网格线#1e2332
重要提示
- 所有 Sorftime MCP 调用均使用
mcp__Sorftime MCP__前缀 - 每次
category_report返回 20 条产品,需从 page=1 开始逐页递增调用,直到返回空数组或产品数 < 20 为止,以覆盖 BSR 全量产品(不限于 Top100) product_reviews最多返回 100 条评论,评论分析提取关键主题而非逐条列举- 报告中的金额单位需根据站点自动适配(US→USD, FR→EUR, GB→GBP, MX→MXN, JP→¥ 等)
- 数据获取失败必须重试(最多 3 次,指数退避),不得直接跳过
- 缺失数据必须标注:在
dataQuality中记录,在 dataStatus 栏展示,在对应版位显示"数据获取未成功(已重试3次)" - 若
category_reportTop100 基础数据 3 次重试均失败,告知用户并停止生成报告 - 最终 HTML 文件命名为
{productName}_{amzSite}_market_insight_{YYYYMMDD}.html - 生成 REPORT_DATA_JSON 时,确保所有字段都有合理的 fallback 值(空数组
[]、空字符串""、0),避免模板渲染报错 - 模板中
{{REPORT_DATA_JSON}}需替换为有效的 JSON 对象字面量(不含外层引号) {{PAGE_TITLE}}替换为亚马逊{SITE_NAME}站 · {CATEGORY_NAME}品类市场进入机会报告{{CATEGORY_NAME}}替换为类目中文名{{SITE_NAME}}替换为站点代号(US/GB/DE/FR/CA/JP/MX 等)
数据来源与准确性要求(DATA INTEGRITY)
- 所有报告数据必须来自 Sorftime MCP 工具,不得使用外部未验证来源(如第三方网站、搜索引擎结果、AI 生成内容)替代实际采集数据
- 若类目匹配无结果,走「无细分类目处理」流程(第一步中的替代方案),而非强行匹配无关类目填充无效数据
- 报告中的分析结论(insight)必须基于采集到的真实数据推导,不得凭空编造趋势或数字
- 禁止猜测或预估任何数据:任何数值(销量、销额、搜索量、占比等)必须来自 Sorftime MCP 工具返回的实际值;不得根据"常识"、"行业惯例"、"相似品类"进行估算、外推或补全;若工具未返回某数据点,必须标注为缺失,严禁填写推测值
- 凡例:产品月销量 0 或工具未返回 → 填入
0或显示 "数据缺失",不得填写 "~500"、"约 12 万"、"估计 300-500" 等推测值 - 凡例:某细分赛道只有 2 个产品 → 如实展示 2 个,不得编造更多产品填充
- 凡例:segmentData 必须来自
product_trend逐产品聚合的真实数据,不得将全局category_trend数据除以赛道数量或其他数学诡计伪造成赛道数据
- 凡例:产品月销量 0 或工具未返回 → 填入
- 每项数值需有明确的工具调用来源可追溯;若某数据点反复重试仍缺失,诚实标注而非虚构
- 品牌榜单、关键词榜单等排名数据需明确标注"基于 Sorftime 数据"及数据采集时间
Scan to join WeChat group