Back to skills
extension
Category: Data & AnalyticsNo API key required

Amazon Market Report Generator

Amazon BSR 品类市场洞察报告生成器。使用 Sorftime MCP 调研亚马逊 BSR 类目产品数据,产出深色主题飞书风格 HTML 市场洞察报告面板。触发词:亚马逊市场分析、BSR调研、品类洞察、Amazon market research、市场进入分析、竞品分析报告、类目分析看板、amazon bsr report、amazon category insight。

personAuthor: user_6b518951hubcommunity

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 调用失败时:

  1. 记录失败项(工具名 + 参数 + 失败原因)
  2. 等待对应退避时间后重试
  3. 3 次均失败后,标记该项为"无法获取"
  4. 在报告 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 设为 falsedataQuality.missingItems 列出缺失项名称
  • 仅有产品基础数据(category_report BSR 全量第一页)为硬性要求——若此项 3 次均失败,告知用户并终止

核心工作流

用户交互点强制执行规则(UNSKIPPABLE — 最高优先级)

本 Skill 包含 2 个强制性用户交互确认点,执行 Skill 的 Agent 必须严格遵守以下规则,违反即为执行错误:

  1. 交互点 A 不可跳过:完成版位 1-3 数据采集后,必须暂停并展示细分赛道列表,等待用户确认后才能继续。即使细分赛道列表明显清晰,也必须向用户确认。
  2. 交互点 B 不可跳过:完成版位 1-8 及 10-11 数据采集后、进入版位 9 前,必须暂停并询问用户是否有对应产品及飞书文档。即使用户在交互点 A 时已提及产品信息,也必须再次确认。
  3. 先后顺序不可颠倒:交互点 A 必须发生在交互点 B 之前。在交互点 A 未完成用户确认的情况下,禁止推进到交互点 B 或任何后续版位。
  4. 不可假设用户意图:禁止以"用户未回应即默认同意"、"用户之前表达过类似意图"、"该品类通常无争议"等理由跳过任一交互点的确认步骤。
  5. 确认完成标志:必须收到用户明确的文字回复(如"确认"/"可以"/"选这几个"/"没有产品"等),才能视为交互点已完成。

自检清单(Agent 在每个交互点触发前必须逐项核对)

  • [ ] 当前交互点之前的数据采集是否已完成?
  • [ ] 上一个交互点(如适用)是否已获得用户确认?
  • [ ] 是否已向用户展示了完整的选择信息(非仅一行提问)?
  • [ ] 是否已明确等待用户回复(非发出提问后立即继续)?

第零步:解析用户意图

从用户输入中提取以下参数:

  • productName:目标产品/品类名称(必需),如 "air fryer"、"wireless earbuds"
  • amzSite:亚马逊站点,默认 "US",支持 US/GB/DE/FR/CA/JP 等
  • topNode:可选的大品类节点(如用户明确提到大类,先通过 category_tree 获取)

若用户未明确指定站点但提到了语言(如法语),则默认 FR 站点;若提到产品与某国相关,则推导对应站点。

第一步:定位目标类目

  1. 调用 category_search_from_product_name,传入 productNameamzSite,获取相关细分类目列表
  2. 若结果不理想,使用 category_name_search 作为备选方案
  3. 从返回结果中选择最匹配的细分类目,记录其 nodeId 和类目名称
  4. 若用户指定了某大品类,也可使用 category_search_from_top_node 在该大类下搜索

无细分类目的处理(CRITICAL)

若以上步骤无法找到匹配的细分类目(返回结果为空或与用户产品完全不相关),禁止强行匹配无关类目以免报告充斥无效数据。改为以下替代流程:

  1. 若用户提供了产品白底图,使用 product_search_from_image(传入图片 URL 或 base64)获取视觉相似的产品列表
  2. 从产品列表中提取核心属性,使用 product_search 配合用户提供的关键词做精确搜索
  3. keyword_search_results 获取用户产品对应关键词的搜索结果,从结果中提取竞品 ASIN
  4. 使用 product_detail 批量获取这些竞品 ASIN 的详情(标题、价格、品牌、主图、销量等)
  5. 基于收集到的竞品数据,人工分析并构建替代的数据面板
    • panelSegments:基于产品属性做细分打标
    • panelComparison:以收集的竞品 ASIN 填充
    • panelKeywords:以 keyword_detail + keyword_trend 获取关键词数据
    • 其他版位基于竞品数据聚合推算
  6. 在 header.categoryPath 中标注 "基于关键词 & 图片搜索替代类目数据 | 数据截至 {日期}",并在 dataQuality 中记录 "该产品在亚马逊无对应细分类目,使用图片+关键词替代方案"

并行获取类目基础数据(确定 nodeId 后立即并行调用):

  • category_report(nodeId, amzSite) → Top100 产品实时报告
  • category_keywords(nodeId, amzSite, page=1) → 核心关键词(第1页)
  • category_keywords(nodeId, amzSite, page=2) → 核心关键词(第2页)

第二步:并行采集趋势与历史数据

基于第一部确认的 nodeIdamzSite,并行调用以下趋势指标:

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)中:

  1. 全量产品采集:对 BSR 全量产品(所有已获取 page),并行调用 product_detail(asin, amzSite) 获取详细信息(标题、五点描述、属性、价格、品牌、卖家、主图 URL(必须获取) 等)

  2. 按细分赛道独立采集评论:对每个细分赛道下的代表产品(每个赛道至少采集 3-5 个产品的评论),并行调用 product_reviews(asin, amzSite, "Negative")product_reviews(asin, amzSite, "Positive")按赛道分别分析负面主题 / 正面亮点 / 改进建议,每条记录打上对应 segment 标签;不同赛道的评论数据完全独立,互不混合

  3. 按细分赛道独立计算销量趋势(CRITICAL — 禁止直接使用 product_trend):不调用 product_trend;改为通过 category_report(当前)+ category_report_from_history(历史各时间点)拉取产品快照,在每个时间点按赛道过滤产品并求和,构建赛道独立的月销量时间序列。具体步骤见第8条。

  4. 从 BSR 全量品类报告中按细分赛道归类所有产品,提取每个产品的主图 URL(image 字段,必须确保非空)、月销量、月销额、年销量、年销额等数据

  5. 按细分赛道全量品牌聚合:基于 BSR 全量产品的品牌字段,按每个细分赛道独立聚合品牌数据(name/sales/note/revenue/segment),按销量降序排列;全局视图展示 Top10,细分赛道视图展示该赛道下所有品牌全量数据(不设显示上限,所有品牌均列出)

  6. 全量竞品拆解:基于 BSR 全量产品按细分赛道归类,每个赛道的竞品拆解数应尽可能多(目标 > 3 个),若某赛道产品数不足则展示该赛道下全部产品;使用 minProductsPerSegment 字段设定最低阈值

  7. 全量 Top20 附录:基于 BSR 全量产品按细分赛道归类,每个赛道展示所有可用产品(最多20个)

  8. 细分赛道独立趋势(CRITICAL — 基于产品销售数据单独统计,禁止直接使用 product_trend)

    禁止行为

    • 直接将全品类 category_trend 数据拷贝到各赛道 segmentData
    • 直接调用 product_trend API 获取产品趋势后聚合(该方法数据维度与品类级不一致)
    • 对全品类数据简单除法或加减伪造成赛道数据

    正确计算方法 — 通过产品销售数据快照对比类目数据

    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,会直接显示错误提示。

第四步:关键词深度分析(含多语言调研)

主语言关键词调研(基于类目报告中产出的关键词):

  1. category_keywords 结果中提取 Top10 关键词
  2. 并行调用 keyword_detail(keyword, amzSite) 获取每个关键词详情(月搜索量、搜索排名等)
  3. 并行调用 keyword_trend(keyword, amzSite) 获取关键词趋势(识别旺季月份)

市场其他主流语言关键词调研(CRITICAL)

根据目标站点覆盖的市场语言,独立调研对应语言的关键词(非翻译,而是用目标语言的搜索词重新调用 Sorftime):

  1. 确定目标站点市场的主流语言(参考下表),每种语言独立调研 Top10 关键词
  2. 使用 keyword_list(keyword, amzSite)keyword_extends(keyword, amzSite) 以目标语言的核心搜索词入手,扩展出该语言的高频搜索关键词
  3. 对扩展出的关键词并行调用 keyword_detailkeyword_trend,获取搜索量/排名等数据
  4. 将各语言 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 法式冰箱 | | 厨房电器 | 功率、容量、材质、功能模式 | 按功率+容量+功能组合命名 | | 工具/设备 | 功率、尺寸、用途场景 | 按功率+用途场景命名 | | 服装/鞋类 | 材质、适用场景、尺码范围 | 按材质+场景命名 | | 电子产品 | 屏幕尺寸、核心芯片/参数、连接方式 | 按核心参数+连接方式命名 |

执行要求

  1. 先对 Top100 产品逐一分析 product_detail 返回的标题和属性
  2. 提取该品类最关键的 2-3 个差异化维度
  3. 按维度组合将产品分入细分赛道
  4. 每个细分赛道的 segment label 需体现具体的参数/功能差异
  5. 确保 panelSegments.segments[].name 能清晰区分不同赛道

用户交互点 A:确认细分赛道(CRITICAL — 第一版位数据完成后必须暂停,不可跳过)

触发时机:当版位 1(销量趋势)、版位 2(竞争格局)、版位 3(市场细分)的数据采集与初步分析完成,且细分赛道列表(panelSegments.segments[])已生成后,立即暂停后续数据采集与分析

注意:交互点 A 是后续所有版位(含交互点 B)的前置条件。在用户确认赛道之前,禁止进行版位 4-12 的任何数据采集。

暂停动作

  1. 向用户展示已识别的全部细分赛道列表,每个赛道附带:赛道名称、月销量占比、价格带、代表品牌、竞争强度(从 panelSegments 数据中提取)
  2. 明确询问用户:
    • "以上是本次调研识别到的细分赛道。请确认:这些赛道是否准确?你希望重点深入分析哪些赛道?(可选全部,也可选择部分重点赛道)"
  3. 等待用户回复后再继续——禁止在用户未确认前推进到后续版位的数据采集

用户确认后的处理

  • 记录用户选择 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列),每张卡片展示:产品主图(imageCRITICAL:必须从 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 产品按赛道独立品牌聚合,按销量降序;全局视图截取 Top maxDisplay(默认 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;未选择赛道时展示全部
  • panelComparisoncomparisonLayout: "card" 时,competitors 中每项含 segment 字段,过滤时匹配 competitor.segment === activeSegment;comparisonLayout: "table" 时,过滤 horizontalComparison.competitors 中匹配 segment 的竞品,同时根据 activeSegment 更新 comparisonTable.headerscomparisonTable.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. 首先询问:"你目前是否有对应的产品?(即你是否有自己已经在做或打算做的具体产品,需要与市场竞品做配置对比)"
  2. 根据用户回复分两种路径处理:

路径 1 — 用户已有产品

  • 进一步询问:"请提供你的产品配置信息(如产品名称、核心规格/参数、价格、卖点等)。如果方便,也可以提供产品链接或 ASIN。另外,你是否有同类产品的竞品分析文档(如飞书文档链接)?如果有,请提供链接,我可以基于文档中的五点描述做横向配置参数对比。"
  • 必须等待用户回复后再继续——禁止在用户未确认前进入版位 9 的数据构建
  • 根据用户是否提供了飞书文档链接,分两种子路径处理:

路径 1-A — 用户提供了飞书文档链接(含同类产品五点描述,CRITICAL)

  • 使用飞书文档相关工具(lark-doc skill)读取飞书文档内容,从文档中提取以下关键数据:
    • 用户自己的产品名称、ASIN、品牌、售价、产品主图 URL(必须获取)
    • 用户产品的五点描述(Bullet Points,即亚马逊 Listing 中的 5 条核心卖点描述)
    • 文档中已有的竞品对比数据(如有)
  • 提取与结构化的执行要求
    1. 读取文档全文,识别"五点描述"或"Bullet Points"章节
    2. 将用户产品的五点描述逐条提取,记录为 userProduct.fivePoints 数组(5 条字符串)
    3. 从五点描述中进一步提取结构化配置参数(如材质、功率、容量、尺寸、功能等),记录为 userProduct.configParams 键值对数组
    4. 若飞书文档中已包含竞品分析数据,同步提取竞品的五点描述和配置参数
  • 改变版位 9(panelComparison)的渲染布局为横向对比表格形式
    • comparisonLayout 设为 "table",模板渲染时从卡片网格布局切换为全宽横向对比表格
    • 构建 horizontalComparison 数据对象,包含以下核心结构:
      • userProduct{ name, asin, amazonUrl, image, fivePoints: [5条], configParams: [{key, value}...] }
      • competitors:来自 Sorftime product_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" / "持平"
    • 表格中的配置维度来源优先级:
      1. 飞书文档中用户产品的五点描述 → 提取核心配置参数作为对比维度
      2. Sorftime product_detail 返回的竞品五点描述 → 提取对应的配置参数值填入竞品列
      3. 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),用于生成最终进场建议

各路径汇总

  • 路径 1-A(有飞书文档):版位 9 切换为表格布局(comparisonLayout: "table"),不再生成卡片,用户产品与竞品统一通过横向对比表格呈现
  • 路径 1-B(有产品无飞书文档):版位 9 保持卡片布局(comparisonLayout: "card"),额外插入 isUserProduct: true 的高亮用户产品卡片
  • 路径 2(无产品):版位 9 保持卡片布局,在每赛道末尾追加 isRecommended: true 的推荐入场配置卡片
  • 所有路径下,版位 9 的竞品拆解基于 BSR 全量产品照常生成

第六步:生成 HTML 报告

  1. 读取 assets/dashboard-template.html 作为基础模板
  2. 将所有分析数据注入模板中的 JavaScript 数据对象
  3. 使用 Chart.js 渲染所有图表
  4. 输出最终 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_report Top100 基础数据 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 数据除以赛道数量或其他数学诡计伪造成赛道数据
  • 每项数值需有明确的工具调用来源可追溯;若某数据点反复重试仍缺失,诚实标注而非虚构
  • 品牌榜单、关键词榜单等排名数据需明确标注"基于 Sorftime 数据"及数据采集时间