Skill: wangm-a3/amazon-launch-playbook (version 1.0.1)

# Amazon Launch Playbook — 亚马逊新品上架实战手册 ## 你只需要提供 - **产品品类**：你想要进入的亚马逊品类 - **产品一句话描述**：产品是什么、解决什么问题、目标用户是谁 ## 系统会为你生成 完整的90天上架实战方案，涵盖从选品决策到爆款养成的全流程策略。 --- ## 敌人宣言 **"新品上架盲目试错"** 是中国亚马逊卖家最常见的死亡陷阱：上架即死、烧钱测款、没有系统方法论。本技能提供90天从0到爆款的实战手册，让每一分投入都有清晰目标。 --- ## 第一章：上架前决策框架 ### 1.1 品类选择三维评估 **市场容量**：核心词月搜索量 > 10,000；BSR前100名月销通常500单以上 **竞争强度**： - 前3页同类产品数量是否超过50个 - Top 10平均评论是否 < 500 - 价格区间是否存在差异化空间 **利润空间测算**： ``` 单品利润 = 售价 - (产品成本 + 头程 + FBA配送费 + 平台佣金15% + 预期广告费) - 退货预留(3-5%) 单品利润率目标 > 25% ``` ### 1.2 同行扫描：Top 10对标分析 找到10个最值得学习的同行产品（优先近6个月上架的新品），从以下维度拆解： - **标题结构**：核心词排列顺序 - **五点描述策略**：痛点-解决逻辑 - **定价与促销**：日常售价、Coupon策略 - **评论分析**：好评关键词、差评痛点 - **QA重点**：用户关心的问题 ### 1.3 差异化定位 **价格差异化**： - 高端路线：更好材质、更长质保 - 性价比路线：优化供应链降低成本 **功能差异化**： - 人无我有：添加同行没有的功能 - 人有优：做得更好（更大容量、更高功率） **视觉差异化**： - 主图风格：选择与同行不同的背景色 - 拍摄角度：45度角或侧面细节 - 场景表达：真实生活场景使用效果 **服务差异化**： - 质保政策：比行业标准更长 - 售后响应：承诺24小时内回复 - 赠品策略：实用小配件 --- ## 第二章：Listing基建 ### 2.1 标题公式 ``` [品牌名] + [核心关键词] + [产品类型] + [核心特性] + [规格数量] + [使用场景] ``` **示例**：YOURBRAND 衣物收纳盒 大号带可视窗口 防潮棉麻 4格设计 衣柜专用 **原则**：关键词前置、可读性高、避免堆砌 ### 2.2 五点描述结构 **第一点：痛点引入** — "Struggling with messy drawers?" **第二点：解决方案** — "Our organizer keeps clothes neatly separated..." **第三点：使用场景** — "Perfect for bedroom closet, dresser, travel luggage." **第四点：核心优势** — "Premium cotton linen, breathable and moisture-proof." **第五点：购买保障** — "30-day hassle-free returns." ### 2.3 A+内容模块 - **品牌故事区**：Logo + 品牌宣言（50词以内） - **产品场景图**：3张横向展示实际使用效果 - **产品对比图**：左侧你的产品，右侧同行/通用替代品 - **细节图**：2-3张展示材质、接口、按钮等 ### 2.4 图片体系（7张） 1. **主图**：白底、产品占85%+、无水印、1000×1000像素 2. **场景图**：真实生活使用场景 3-4. **功能图**：关键功能和参数标注 5. **对比图**：尺寸对比或使用前后对比 6. **包装图**：完整包装内容展示 --- ## 第三章：物流与库存策略 ### 3.1 FBA备货节奏 **首批备货量**： ``` 首批备货量 = 预期日均销量 × 目标Days of Inventory × 安全系数 ``` - 预期日均销量：基于同行BSR估算，为同行平均日销的20-30% - 目标Days of Inventory：30-45天 - 安全系数：1.1-1.2 **补货触发**：库存可售天数 < 14天时立即启动 ### 3.2 安全库存公式 ``` 安全库存 = (日均销量 × 补货周期 × 安全系数) - 在途库存 ``` 海运周期约30天，安全系数1.2-1.5 ### 3.3 断货应对策略 **涨价延缓**：适合断货时间 < 7天，小幅涨价5-10% **自发货过渡**：国内/海外仓临时转FBM自发货 **预防优先**： - 设置库存提醒 - 系统关注可售天数 - 旺季前60天开始备货 --- ## 第四章：新品期推广路线图 ### 4.1 第一阶段（Day 1-14）：测词期 **Vine计划**：上架后尽快注册，获得"Verified Purchase"评论 **优惠券**：设置5-10% Coupon吸引点击 **广告策略**： - 自动广告：$10-15/天 - 精准长尾词手动广告：$5-10/天 - Bid策略：建议竞价或略高，快速积累数据 **阶段目标**： - [ ] 积累第一波Vine评论 - [ ] 自动广告数据样本 > 5000次展示 - [ ] 找出2-3个高效关键词 ### 4.2 第二阶段（Day 15-45）：扩词期 **关键词扩展**：从自动广告报告中筛选高效词（CVR > 10%） **关联投放**：开启ASIN定向投放，选择互补型同行ASIN **类目抢占**：尝试在细分节点获得Best Seller标记 **预算分配**： - 自动广告：30% - 精准长尾词：40% - 类目大词：30% **阶段目标**： - [ ] 核心关键词进入搜索结果前3页 - [ ] BSR进入品类前500 - [ ] 评论数达到20条 ### 4.3 第三阶段（Day 46-90）：品牌建设期 **品牌广告（SB）**：搜索结果顶部展示品牌和3个产品 **展示型推广（SD）**： - 再营销受众：浏览过产品但未购买的用户 - 同行受众：对同行ASIN感兴趣的用户 - 品类受众：浏览过相关品类的用户 **阶段目标**： - [ ] 品牌旗舰店已创建 - [ ] 核心关键词进入首页 - [ ] BSR进入品类前100 --- ## 第五章：数据关注与调整 ### 5.1 关键指标 | 指标 | 新品期目标 | 成熟期目标 | |------|-----------|-----------| | CVR | 10-15% | > 15% | | ACOS | 40-60% | 20-30% | | TACOS | < 25% | < 15% | | BSR | 稳步上升 | 品类前100 | | 评论增长 | +5-10条/周 | 稳定增长 | ### 5.2 加码条件 同时满足以下条件时，可增加预算： - CVR > 15% - ACOS呈下降趋势 - BSR排名稳步上升 - 评论星级 >= 4.3 ### 5.3 止损条件 出现以下情况时，需要收缩或调整： - ACOS持续 > 60% - CVR < 8% - 评论星级 < 4.0 - BSR排名持续下滑 --- ## 第六章：90天实战时间表 ### Week 1：上架准备 - Day 1-3：完成Listing文案和7张图片 - Day 4-5：创建FBA货件，注册Vine计划 - Day 6-7：开启自动广告 + 精准长尾词广告 ### Week 2：首周观察 - 分析自动广告报告 - 筛选高效搜索词 - 观察BSR排名变化 ### Week 3-4：数据优化 - 优化Listing（标题、五点） - 添加新的手动广告组 - 开启同行关联投放测试 ### Week 5-6：流量扩张 - 开启扩展词手动广告 - 提升广告预算 +30% - 布局第二波关键词 ### Week 7-8：关联深耕 - 开启Sponsored Display再营销 - 创建品牌旗舰店 - 评估DOTD或LD申报 ### Week 9-10：品牌建设 - 开启Sponsored Brands广告 - 优化品牌旗舰店 - 布局复购引导策略 ### Week 11-13：稳定优化 - 收缩低效广告活动 - 追求核心关键词首页排名 - 建立常态数据化运营机制 ### 最终里程碑（Day 90） - 评论数：50条以上 - BSR排名：品类前100 - ACOS：低于盈亏点并呈下降趋势 - 自然流量占比：> 60% --- ## 结语 90天新品期是建立竞争优势的关键窗口。成功的关键：快速测试、数据驱动、持续迭代、用户视角。 现在提交你的产品品类和描述，获取专属的90天推广方案！ --- *本技能为纯策略规划工具，所有建议仅供参考，实际运营需结合市场情况和个人资源调整。*

path: README.md
content: # Amazon Launch Playbook

**亚马逊新品上架实战手册 — 从0到爆款的90天行动方案**

---

## What It Does

Amazon Launch Playbook 是一款面向中国亚马逊卖家的新品上架策略工具。它基于用户提供的品类和产品描述，帮助生成完整的90天上架实战方案，涵盖选品决策、Listing基建、物流库存、广告推广和数据优化的全流程。

**核心价值**：
- 提供经过验证的上架框架和方法论
- 避免新品期的常见错误和资源浪费
- 帮助卖家建立系统化的运营思维

---

## Who It's For

- **新手卖家**：第一次在亚马逊上架新品，不了解完整流程
- **转型卖家**：从其他平台转到亚马逊，需要针对性指导
- **迷茫卖家**：有产品但上架后销量不佳，缺乏系统方法
- **效率导向卖家**：希望快速获得可执行的上架方案

**前提条件**：
- 已完成选品，有明确的产品方向
- 准备或已在亚马逊开店
- 愿意投入时间和资源进行新品推广

---

## Quick Start

1. **提供基本信息**：
   - 产品品类（如：家居收纳、运动户外、美妆工具）
   - 产品一句话描述（产品是什么、解决什么问题）

2. **获得完整方案**：
   - 90天分阶段行动计划
   - Listing优化指南
   - 广告推广框架
   - 数据关注模板

3. **参考配套资源**：
   - 上架检查清单（references/launch-checklist.md）
   - 广告启动框架（references/ad-launch-framework.md）
   - KPI关注看板（references/kpi-dashboard.md）

---

## Sections Overview

### SKILL.md（核心内容）

| 章节 | 内容 |
|------|------|
| 第一章：上架前决策框架 | 市场容量、竞争分析、差异化定位三维评估 |
| 第二章：Listing基建 | 标题公式、五点结构、A+内容、图片体系 |
| 第三章：物流与库存策略 | 备货节奏、安全库存、断货应对 |
| 第四章：新品期推广路线图 | Day1-14测词、Day15-45扩词、Day46-90品牌建设 |
| 第五章：数据关注与调整 | 关键指标、节奏判断、周度复盘模板 |
| 第六章：90天实战时间表 | Week1-13具体行动清单和里程碑 |

### references/

**launch-checklist.md** — 上架检查清单
- 第一至第六阶段完整检查项
- 上架前、上架中、上架后全覆盖
- 逐项确认，避免遗漏关键步骤

**ad-launch-framework.md** — 广告启动框架
- 三阶段广告策略：测词→扩词→优化
- 预算分配建议
- 关键词筛选和调整逻辑
- 常见问题与解决方案

**kpi-dashboard.md** — KPI关注看板
- 三个阶段的核心关注指标
- 阈值判断和行动建议
- 周度复盘模板
- 异常提醒机制

---

## 使用建议

**即时使用**：直接提供品类和产品描述，获取定制化方案

**深度参考**：结合三个参考文档，建立完整的上架知识体系

**持续对照**：使用检查清单和KPI看板，按周复盘执行效果

---

## Disclaimer

本技能为纯策略规划工具，所有建议仅供参考。实际运营需结合市场情况、平台规则和个人资源进行调整。亚马逊平台政策可能随时更新，请以亚马逊官方最新公告为准。

---

*Version 1.0.0 | Author: WangM-A3*


path: clawhub.yaml
content: name: amazon-launch-playbook
version: 1.0.2
description: Amazon new product launch playbook — 90-day action plan from listing to bestseller
author: WangM-A3
tags: [amazon, fba, product-launch, listing, advertising]
readme: README.md


path: references/ad-launch-framework.md
content: # 亚马逊新品广告启动框架

新品期的广告策略决定了流量成本和推广效率。本框架提供从测词到优化的三阶段完整路径，帮助你在有限预算内快速找到有效的推广方向。

---

## 框架概述

### 核心原则

1. **先测后投**：在大量投放前，先小规模测试找出高效关键词
2. **数据驱动**：所有调整都基于广告数据报告，而非主观判断
3. **循序渐进**：从精准到广泛，从小预算到大预算
4. **及时止损**：对表现差的关键词和广告组果断暂停

### 三阶段模型

| 阶段 | 时间 | 核心目标 | 广告类型 | 预算占比 |
|------|------|----------|----------|----------|
| 测词期 | Day 1-14 | 积累数据，找到高效词 | 自动广告 + 精准长尾词 | 40% |
| 扩词期 | Day 15-45 | 扩大流量，测试关联 | 扩展词 + 同类关联 | 45% |
| 优化期 | Day 46-90 | 收缩低效，集中高效 | 品牌广告 + 再营销 | 15% |

---

## 第一阶段：测词期（Day 1-14）

### 阶段目标

- 积累足够的广告数据（每个广告组至少1000次展示）
- 找到3-5个高效关键词（CTR > 0.5%，CVR > 10%）
- 测试Listing对流量的承接能力

### 广告活动设计

**广告活动1：自动广告（测试流量来源）**

| 项目 | 设置 |
|------|------|
| 活动名称 | Auto-Testing-[产品名] |
| 预算 | $10-15/天 |
| 竞价策略 | 动态竞价 - 只降低 |
| 投放方式 | 自动投放（全默认） |

自动广告的四种匹配方式会自动测试：
- 紧密匹配：买家搜索词与你产品相关
- 宽泛匹配：买家搜索词与产品类目相关
- 短语匹配：买家搜索词包含你的关键词
- 关联匹配：买家浏览相关产品详情页

**广告活动2：手动精准广告（精准长尾词）**

| 项目 | 设置 |
|------|------|
| 活动名称 | Manual-Exact-[产品名] |
| 预算 | $5-10/天 |
| 竞价策略 | 固定竞价 |
| 匹配方式 | 精准匹配 |
| 关键词数量 | 3-5个长尾词 |

**关键词选择标准**：
- 月搜索量：1000-3000（避免大词竞争激烈）
- 竞争程度：中低（首页Bid低于$1.5）
- 相关性：高（与你的产品高度相关）

**示例关键词策略**（家居收纳类）：
- "bedroom storage organizer"
- "drawer dividers for clothes"
- "closet shelf organizer set"

### 测词期预算分配

```
每日总预算 = $20-25

分配建议：
├── 自动广告：$12/天（60%）
└── 手动精准广告：$8/天（40%）
```

### 关键指标关注

**每日关注**：
- 各广告活动的展示量（Impressions）
- 各广告活动的点击量（Clicks）
- 各广告活动的花费（Spend）

**每周分析**：
- CTR（点击率）= Clicks / Impressions
- CVR（转化率）= Orders / Clicks
- ACOS = Spend / Sales
- 找到表现最好的搜索词

### 测词期调整策略

**需要暂停的情况**：
- 关键词获得100+展示但0点击（CTR < 0.1%）
- 关键词花费$20+但0订单（ACOS > 100%）
- 关键词与产品完全不相关

**需要调整Bid的情况**：
- 高展示、高点击、低转化：降低Bid 10-20%
- 低展示、高点击、高转化：提高Bid 10-20%
- 首页位置花费过高但转化一般：降至第2-3页位置

---

## 第二阶段：扩词期（Day 15-45）

### 阶段目标

- 基于测词期数据扩展关键词库
- 开始测试同类关联流量
- 建立多层次的流量来源

### 广告活动扩展

**广告活动3：手动短语广告**

| 项目 | 设置 |
|------|------|
| 活动名称 | Manual-Phrase-[产品名] |
| 预算 | $8-12/天 |
| 竞价策略 | 动态竞价 - 提高和降低 |
| 匹配方式 | 短语匹配 |
| 关键词来源 | 测词期表现好的精准词 |

**广告活动4：同类关联广告**

| 项目 | 设置 |
|------|------|
| 活动名称 | ASIN-Targeting-[同行名] |
| 预算 | $5-8/天 |
| 竞价策略 | 固定竞价 |
| 投放方式 | ASIN投放 |

**ASIN选择策略**：
- 选择与你产品互补的同行（同品类但不同定位）
- 选择评论50-200的中等同行（更有机会获得展示位）
- 避开评论500+的超级头部（竞争激烈且CVR低）

### 扩词期预算再分配

```
每日总预算 = $30-40（较测词期提升50%）

分配建议：
├── 自动广告：$10/天（30%）- 维持观察
├── 手动精准广告：$10/天（30%）- 保持高效词
├── 手动短语广告：$10/天（30%）- 新扩展词
└── ASIN关联广告：$5/天（15%）- 关联流量测试
```

### 关键词库扩展方法

**从测词期数据中提取**：
1. 打开自动广告报告
2. 筛选CVR > 5%的搜索词
3. 将高效词转为手动精准/短语投放

**从同行Listing中挖掘**：
1. 分析同行标题包含的关键词
2. 分析同行五点描述中的高频词
3. 查看同行评论中的产品描述词

**从工具中扩展**：
- 亚马逊搜索框下拉建议
- 同行的"Frequently bought together"
- Helium 10、Mention等工具（选其一）

### 扩词期调整策略

**每周一次关键词清理**：
- 暂停ACOS > 60%的关键词
- 降低花费 > $30但转化 < 3次的关键词Bid
- 将高效词从广泛匹配移至精准匹配

**Bid调整参考表**：

| 数据表现 | 诊断 | 调整建议 |
|----------|------|----------|
| 高展示、低点击 | 关键词与产品相关度低 | 暂停或大幅降低Bid |
| 高点击、低转化 | 流量精准但产品承接差 | 检查Listing或价格 |
| 低展示、高转化 | Bid太低或竞争激烈 | 提高Bid 15-20% |
| 高展示、高点击、高转化 | 理想状态 | 提高Bid抢占更多流量 |

---

## 第三阶段：优化期（Day 46-90）

### 阶段目标

- 收缩低效广告活动
- 提升品牌影响力
- 建立用户复购闭环

### 广告活动收尾

**保留高效活动**：
- 筛选ACOS < 30%或TACOS < 15%的广告活动
- 这些是你的"盈利广告"，需要持续优化

**暂停低效活动**：
- ACOS持续 > 60%的广告活动
- 花费高但无法带来利润的广告组

**重组广告结构**：
- 将相同关键词的不同匹配方式整合
- 简化广告层级，便于管理

### 新增品牌广告

**Sponsored Brands（品牌推广）**

| 项目 | 设置 |
|------|------|
| 活动名称 | SB-Brand-[品牌名] |
| 预算 | $15-20/天 |
| 竞价策略 | 动态竞价 - 只降低 |
| 投放关键词 | 品牌词 + 核心品类词 |

**品牌广告优势**：
- 占据搜索结果顶部黄金位置
- 展示品牌Logo和3个产品
- 提升品牌认知和信任

**Sponsored Display（展示型推广）**

| 项目 | 设置 |
|------|------|
| 活动名称 | SD-Remarketing-[品牌名] |
| 预算 | $10-15/天 |
| 受众选择 | 产品详情页浏览者（看过但未购买） |

**再营销策略**：
- 触达浏览过你产品的用户
- 触达浏览过同行页面的用户
- 触达相关品类浏览者

### 优化期预算再分配

```
每日总预算 = $35-50（视产品毛利而定）

分配建议：
├── 搜索广告（精准+短语）：$15/天（40%）- 保持核心词排名
├── 自动广告：$5/天（15%）- 维持长尾探索
├── ASIN关联广告：$5/天（15%）- 保持关联流量
├── 品牌广告（SB）：$10/天（25%）- 品牌建设
└── 展示型广告（SD）：$5/天（15%）- 再营销
```

### 长期优化策略

**关键词库维护**：
- 每月添加2-3个新测试词
- 持续淘汰表现差的词
- 关注搜索趋势变化

**Bid自动化建议**：
- 高效词：逐步提高Bid，追求首页排名
- 低效词：逐步降低Bid或暂停
- 新测试词：保持中等Bid观察

**ACOS目标设定**：

| 阶段 | ACOS目标 | 说明 |
|------|----------|------|
| 新品期（0-30天） | 40-60% | 以积累数据为主 |
| 成长期（30-60天） | 30-40% | 逐步优化效率 |
| 成熟期（60天+） | 20-30% | 追求广告盈利 |
| 长期稳定 | 15-25% | 品牌溢价带来效率 |

---

## 广告数据日志模板

建议每日记录关键数据，便于趋势分析：

```
日期：____
天气/大促情况：____

自动广告：
- 展示：____ 点击：____ CTR：____% 订单：____ CVR：____% 花费：____ ACOS：____%

手动精准广告：
- 展示：____ 点击：____ CTR：____% 订单：____ CVR：____% 花费：____ ACOS：____%

ASIN关联广告：
- 展示：____ 点击：____ CTR：____% 订单：____ CVR：____% 花费：____ ACOS：____%

今日总结：
- 高效词：____
- 低效词：____
- 明日调整计划：____
```

---

## 常见问题与解决方案

**Q1：自动广告花费很高但转化很少？**
A：检查是否是流量太泛。尝试设置竞价策略为"动态竞价-只降低"，同时添加否定关键词。

**Q2：手动广告有展示但无点击？**
A：可能是Bid太低（排名靠后）或主图不吸引人。尝试提高Bid 10-20%，同时优化主图。

**Q3：某个关键词ACOS一直很高？**
A：如果CVR也低，可能是关键词相关性差，考虑暂停。如果是CVR高但Bid太高，可以尝试降低Bid或调整匹配方式。

**Q4：ASIN关联广告效果不好？**
A：可能是选错了ASIN。尝试选择与你产品更互补或定位更接近的ASIN。

**Q5：品牌广告是否值得开？**
A：品牌广告的转化通常低于搜索广告，但可以建立品牌认知和抢占同行流量。长期来看是值得的。

---

## 结语

广告策略需要持续优化而非一成不变。本框架提供的是起点而非终点，请根据实际数据灵活调整。

**记住**：
- 数据是最好的老师，每周分析报告
- 不要害怕暂停无效广告
- 追求TACOS而非仅看ACOS
- 品牌建设是长期投资

---

*本框架为策略规划参考，实际广告投放需结合产品利润率和市场竞争情况调整。*


path: references/kpi-dashboard.md
content: # 亚马逊新品期KPI关注看板

新品期的90天是建立竞争优势的关键窗口。本看板帮助你聚焦最重要的指标，在繁杂的数据中快速发现问题、把握机会。

---

## 看板设计原则

1. **简洁至上**：每个阶段只关注3-5个核心指标
2. **阈值清晰**：每个指标都有明确的判断标准
3. **行动导向**：每个异常都对应具体的调整建议
4. **阶段递进**：指标优先级随阶段推进而变化

---

## 第一阶段看板：Day 1-14（基建与测词期）

### 核心关注指标

| 指标 | 理想值 | 警戒线 | 关注原因 |
|------|--------|--------|----------|
| 页面访问量 | > 500次/周 | < 200次/周 | 流量基础决定转化数量 |
| 转化率（CVR） | 10-15% | < 8% | 反映Listing承接能力 |
| ACOS | 40-60% | > 70% | 广告效率的初步判断 |
| Vine评论 | 3-5条 | 0条 | 真实评价建立信任 |
| BSR排名 | 稳步上升 | 停滞或下滑 | 市场接受度信号 |

### 阶段目标

**必须完成**：
- [ ] 积累第一波Vine评论（至少3条）
- [ ] 自动广告数据样本 > 5000次展示
- [ ] 找出2-3个高效关键词
- [ ] 确认Listing基本转化能力

**理想达成**：
- [ ] 评论数达到10条
- [ ] CVR稳定在10%以上
- [ ] BSR进入品类前1000

### 指标解读与行动

**指标1：页面访问量（Sessions）**

反映Listing获得的自然+广告流量总和。

| 访问量级别 | 诊断 | 建议行动 |
|------------|------|----------|
| < 100/周 | 流量严重不足 | 检查索引词、优化广告、考虑站外引流 |
| 100-500/周 | 流量偏低 | 增加广告预算、优化标题埋词 |
| 500-1000/周 | 流量正常 | 维持现状，专注转化优化 |
| > 1000/周 | 流量良好 | 关注转化率，准备扩量 |

**指标2：转化率（CVR）**

衡量流量转化为订单的效率。

| CVR | 诊断 | 建议行动 |
|-----|------|----------|
| < 5% | 严重问题 | 立即检查Listing、价格、评论 |
| 5-8% | 存在问题 | 优化五点描述、主图、考虑降价 |
| 8-12% | 可接受 | 持续观察，优化细节 |
| 12-20% | 优秀 | 保持现状，准备扩量 |
| > 20% | 极佳 | 增加广告预算，快速抢占流量 |

**指标3：ACOS（广告成本销售比）**

衡量广告投入与产出的效率。

| ACOS | 诊断 | 建议行动 |
|------|------|----------|
| > 70% | 严重亏损 | 暂停低效广告、优化关键词 |
| 50-70% | 亏损但可接受 | 降低Bid、优化Listing |
| 30-50% | 可接受范围 | 新品期正常，持续优化 |
| 15-30% | 良好 | 保持或略微提价 |
| < 15% | 极佳 | 可增加预算抢占流量 |

**指标4：Vine评论**

Vine评论有"Verified Purchase"标识，可信度高，对转化率影响大。

| 评论数 | 状态 | 建议行动 |
|--------|------|----------|
| 0条 | 未出评论 | 确认Vine计划已注册，耐心等待 |
| 1-2条 | 偏少 | 跟进Vine计划，确保产品已送达 |
| 3-5条 | 基础达标 | 关注评论内容，回应差评 |
| 6-10条 | 良好 | 好评可以适当引导 |
| > 10条 | 优秀 | 可考虑降低Coupon力度 |

---

## 第二阶段看板：Day 15-45（扩张期）

### 核心关注指标

| 指标 | 理想值 | 警戒线 | 关注原因 |
|------|--------|--------|----------|
| 订单量 | 周环比增长20%+ | 持平或下降 | 增长动能判断 |
| TACOS | < 25% | > 35% | 整体广告效率 |
| 评论增长率 | +5-10条/周 | < 3条/周 | 口碑积累速度 |
| 自然排名 | 稳步上升 | 停滞 | 算法认可度 |
| ACOS趋势 | 下降 | 上升 | 优化效果 |

### 阶段目标

**必须完成**：
- [ ] 日均订单量达到目标（基于品类均值设定）
- [ ] 评论数达到20条
- [ ] 找到3-5个高效广告关键词
- [ ] TACOS开始呈下降趋势

**理想达成**：
- [ ] 核心关键词进入搜索结果前3页
- [ ] BSR进入品类前500
- [ ] ACOS降至40%以下
- [ ] 评论数达到30条

### 指标解读与行动

**指标1：订单量增长率**

反映新品的市场接受度和推广效果。

| 周环比增长 | 诊断 | 建议行动 |
|------------|------|----------|
| > 30% | 增长强劲 | 增加广告预算，补货准备 |
| 10-30% | 正常增长 | 维持当前策略 |
| 0-10% | 增长放缓 | 检查同行动态，优化Listing |
| 持平 | 停滞 | 评估是否需要大幅调整 |
| 下降 | 危险信号 | 立即分析原因，检查库存/差评 |

**指标2：TACOS（总广告成本占销售额比）**

比ACOS更能反映整体广告效率，因为包含自然订单的分摊。

| TACOS | 诊断 | 建议行动 |
|-------|------|----------|
| > 35% | 过高 | 审视整体广告策略，考虑收缩 |
| 25-35% | 偏高 | 优化广告效率，降低低效花费 |
| 15-25% | 健康 | 维持当前策略 |
| 10-15% | 优秀 | 可考虑品牌建设投入 |
| < 10% | 极佳 | 评估是否需要增加市场份额 |

**指标3：自然订单占比**

反映Listing的自然排名能力和算法认可度。

| 自然占比 | 诊断 | 建议行动 |
|----------|------|----------|
| < 30% | 依赖广告 | 优化自然排名词，降低广告依赖 |
| 30-50% | 逐步改善 | 持续优化Listing和评论 |
| 50-70% | 健康 | 继续保持 |
| > 70% | 非常健康 | 可适当收缩广告，集中高效词 |

**指标4：评论星级分布**

反映产品质量和买家满意度。

| 平均星级 | 诊断 | 建议行动 |
|----------|------|----------|
| < 4.0 | 严重问题 | 立即排查产品质量/包装问题 |
| 4.0-4.2 | 存在问题 | 主动联系差评买家，改进产品 |
| 4.2-4.5 | 可接受 | 关注差评内容，逐步改进 |
| 4.5-4.8 | 良好 | 保持现状 |
| > 4.8 | 优秀 | 维持，谨慎处理任何差评 |

---

## 第三阶段看板：Day 46-90（稳定与优化期）

### 核心关注指标

| 指标 | 理想值 | 警戒线 | 关注原因 |
|------|--------|--------|----------|
| ACOS | 20-30% | > 40% | 追求广告盈利 |
| BSR排名 | 品类前100 | 品类500+ | 市场地位 |
| TACOS | < 15% | > 20% | 整体效率 |
| 自然流量占比 | > 60% | < 40% | 算法认可 |
| 利润率 | > 20% | < 15% | 商业可持续 |

### 阶段目标

**必须完成**：
- [ ] ACOS降至30%以下并稳定
- [ ] BSR进入品类前100
- [ ] 自然订单占比超过50%
- [ ] 评论数达到50条以上

**理想达成**：
- [ ] ACOS降至20-25%
- [ ] 核心关键词进入首页
- [ ] BSR进入品类前50
- [ ] 建立品牌旗舰店

### 指标解读与行动

**指标1：核心关键词排名**

关键词的自然搜索排名直接影响流量成本。

| 排名位置 | 诊断 | 建议行动 |
|----------|------|----------|
| 第1页前3名 | 顶级位置 | 保持，关注同行 |
| 第1页4-10名 | 良好位置 | 逐步提升Bid争取前3 |
| 第1页后段 | 可见位置 | 增加Review，优化转化 |
| 第2页 | 边缘位置 | 增加Review，降低价格 |
| 第3页及以后 | 危险位置 | 全面检视Listing和广告 |

**指标2：类目BSR排名**

BSR是亚马逊最核心的排名指标。

| BSR排名 | 类目定位 | 建议行动 |
|---------|----------|----------|
| 前50 | 顶级爆款 | 维护地位，防备同行 |
| 50-100 | 潜力爆款 | 争取冲击前50 |
| 100-500 | 成长中 | 优化关键词和Review |
| 500-1000 | 中游产品 | 分析差距，加大推广 |
| 1000+ | 需要努力 | 全面检视产品定位 |

**指标3：退货率**

高退货率会严重影响利润和账户健康。

| 退货率 | 诊断 | 建议行动 |
|--------|------|----------|
| > 10% | 严重问题 | 立即排查产品原因，暂停广告 |
| 5-10% | 偏高 | 联系买家了解原因，改进产品 |
| 3-5% | 正常范围 | 持续关注 |
| < 3% | 优秀 | 保持 |

---

## 周度复盘模板

### 数据记录表

```
第__周（Day __-__）

一、核心数据
┌────────────────┬──────┬──────┬──────┐
│ 指标           │ 本周 │ 上周 │ 变化 │
├────────────────┼──────┼──────┼──────┤
│ 总订单         │      │      │      │
│ 总销售额       │      │      │      │
│ 广告花费       │      │      │      │
│ ACOS           │      │      │      │
│ TACOS          │      │      │      │
│ CVR            │      │      │      │
│ BSR排名        │      │      │      │
│ 评论总数       │      │      │      │
│ 本周新增评论   │      │      │      │
│ 平均星级       │      │      │      │
│ 自然流量占比   │      │      │      │
└────────────────┴──────┴──────┴──────┘

二、达标情况
- [ ] ACOS：目标____% 实际____%
- [ ] 订单增长：目标____% 实际____%
- [ ] 评论增长：目标____条 实际____条
- [ ] BSR排名：目标____ 实际____

三、本周关键发现
1. 高效关键词：________________
2. 低效关键词：________________
3. 主要问题：________________
4. 同行动态：________________

四、下周调整计划
1. 重点优化：________________
2. 预算调整：________________
3. 新测试项：________________
```

### 月度综合评估

```
第__月总结

一、整体评分（1-10分）
- Listing质量：____
- 广告效率：____
- 评论积累：____
- 排名提升：____
- 利润状况：____

二、目标完成度
- 90天总目标完成比例：____%
- 核心差距：________________
- 主要原因：________________

三、关键决策回顾
- 本月最重要的3个决策：________________
- 决策效果评估：________________

四、下月重点
1. ________________
2. ________________
3. ________________
```

---

## 异常提醒机制

### 红色提醒（需立即处理）

| 提醒信号 | 立即行动 |
|----------|----------|
| CVR单周下降 > 30% | 检查是否有差评、价格变动、同行促销 |
| 退货率 > 10% | 暂停广告，排查产品质量 |
| BSR排名下滑 > 50% | 检查库存是否断货、是否有差评 |
| ACOS突然上升 > 20% | 暂停低效广告，分析关键词 |

### 黄色提醒（需密切关注）

| 提醒信号 | 建议行动 |
|----------|----------|
| CVR连续2周下降 | 优化Listing五点或考虑降价 |
| 评论增长放缓 | 跟进Vine计划，考虑增加促销 |
| ACOS缓慢上升 | 优化Bid，调整关键词 |
| 库存可售天数 < 14天 | 立即启动补货 |

### 绿色信号（可以推进）

| 积极信号 | 把握机会 |
|----------|----------|
| CVR > 15% 持续2周 | 增加广告预算 |
| ACOS下降趋势明显 | 加大高效词投放 |
| BSR稳步上升 | 准备旺季备货 |
| 评论达到50+且4.5星+ | 可以提价测试 |

---

## 关键指标速查表

| 阶段 | 最关键指标 | 次关键指标 |
|------|------------|------------|
| Day 1-14 | CVR、ACOS | 页面访问、Vine评论 |
| Day 15-45 | 订单增长率、TACOS | 评论增长、自然占比 |
| Day 46-90 | ACOS、BSR | 自然流量、利润率 |

---

## 结语

数据是运营的眼睛，但数据本身不会告诉你该怎么做。本看板提供的是判断基准，具体决策需要结合产品特性、市场环境和个人资源综合判断。

**记住**：
- 数据需要结合趋势看，而非单日波动
- 不同品类有不同的基准值，参考同行数据
- 指标之间相互关联，解决问题要抓主要矛盾
- 新品期追求的是正确方向，不必苛责完美数字

---

*本看板为策略规划参考，实际运营指标需结合品类特性和市场竞争情况设定目标值。*


path: references/launch-checklist.md
content: # 亚马逊新品上架检查清单

本清单覆盖从选品决策到FBA上架的完整流程，帮助你确保每个关键步骤都已完成，避免因遗漏细节导致不必要的损失。

---

## 第一阶段：上架前决策检查

### 1.1 市场与品类分析

- [ ] 核心关键词月搜索量 > 10,000
- [ ] Top 10同行平均评论数 < 500（存在机会窗口）
- [ ] 头部产品价格区间存在差异化空间
- [ ] 品类没有严重的垄断或专利壁垒
- [ ] 产品不属于亚马逊限制类目或需要审核类目
- [ ] 季节性分析已完成，确认全年平均需求稳定
- [ ] 目标市场的节假日/大促节点已规划

### 1.2 同行分析

- [ ] 已找到10个对标同行（优先选择近6个月上架的新品）
- [ ] 对标同行的标题结构已拆解分析
- [ ] 对标同行的五点描述策略已记录
- [ ] 对标同行的定价和促销策略已记录
- [ ] 对标同行的评论已分析（好评关键词、差评痛点）
- [ ] 对标同行的QA重点已记录
- [ ] 同行的差异化机会已识别

### 1.3 差异化定位

- [ ] 已确定差异化方向（价格/功能/视觉/服务）
- [ ] 产品卖点清单已整理（不超过5个核心卖点）
- [ ] 产品与同行的对比图已完成设计
- [ ] 品牌名称已确定（已在亚马逊完成品牌备案或准备备案）
- [ ] 品牌故事/品牌宣言已撰写

### 1.4 成本与利润测算

- [ ] 产品成本已确认（含包装）
- [ ] 头程物流方式已确定（海运/空运/快递）及费用已测算
- [ ] FBA费用已计算（配送费+月租费+仓储费）
- [ ] 亚马逊佣金已计算（通常15%）
- [ ] 预期退货率已评估（3C产品5-10%，家居用品3-5%）
- [ ] 预期广告ACOS已设定（新品期目标30-50%）
- [ ] 单品净利润率计算完成（目标 > 25%）
- [ ] 首批备货量已确定（建议覆盖30-45天销售）

---

## 第二阶段：产品准备检查

### 2.1 产品合规

- [ ] 产品符合目标市场的安全标准（UL/CE/FCC等）
- [ ] 产品标签符合亚马逊要求（含FNSKU、Made in China等）
- [ ] 包装符合亚马逊FBA要求（尺寸、重量、稳定性）
- [ ] 产品不属于亚马逊禁售或限制类目
- [ ] 如有需要，已完成类目审核/产品认证

### 2.2 产品图片

- [ ] 主图已完成（白底、产品占85%以上、无水印、1000×1000像素）
- [ ] 场景图已完成（1-2张，展示真实使用场景）
- [ ] 功能图已完成（展示核心功能和使用细节）
- [ ] 对比图或尺寸图已完成
- [ ] 包装图已完成（展示包装内容和配件）
- [ ] 所有图片格式和分辨率符合要求（PNG/JPG、1000像素以上）

### 2.3 产品视频（可选但推荐）

- [ ] 主图视频已完成（时长60-90秒，展示产品核心卖点）
- [ ] 视频分辨率符合要求（1920×1080或以上）
- [ ] 视频不含任何违规内容（无对比性声明、无夸大效果）

---

## 第三阶段：Listing创建检查

### 3.1 基础信息

- [ ] 产品类型（Category/Department）选择正确
- [ ] 搜索词（Search Terms）已优化（不超过249字节）
- [ ] 制造商信息已填写
- [ ] 商品编码（UPC/EAN）已准备
- [ ] 物品备注（Item notes）已填写（如适用）

### 3.2 标题优化

- [ ] 标题包含核心关键词（前50字符最重要）
- [ ] 标题公式已应用：品牌 + 核心词 + 产品类型 + 特性 + 规格
- [ ] 标题长度控制在200字符以内
- [ ] 标题无拼写错误
- [ ] 标题不包含促销信息（"Sale"、"Hot"等）
- [ ] 标题不包含特殊字符（仅用空格分隔）

### 3.3 五点描述

- [ ] 五个要点都已填写
- [ ] 每点首字母大写
- [ ] 每点控制在200字符以内
- [ ] 结构遵循：痛点 → 卖点 → 场景 → 优势 → 保障
- [ ] 核心关键词已自然融入
- [ ] 每点强调benefits而非features

### 3.4 产品描述

- [ ] 品牌故事已撰写（500字符以内）
- [ ] 产品规格参数已列出
- [ ] 使用说明/注意事项已包含
- [ ] 保修信息已说明
- [ ] A+内容已上传（如有品牌备案）

### 3.5 变体设置（如适用）

- [ ] 父ASIN已创建
- [ ] 子ASIN变体关系已设置（颜色/尺寸等）
- [ ] 变体主题选择正确
- [ ] 每个子ASIN的库存和价格已分别设置

---

## 第四阶段：FBA物流检查

### 4.1 FBA创建

- [ ] 已在卖家后台创建FBA货件
- [ ] FNSKU标签已生成并打印
- [ ] 产品外箱已贴FNSKU和FBA标签
- [ ] 外箱符合亚马逊尺寸要求
- [ ] 发货计划已确认（海运/空运/快递）

### 4.2 库存管理

- [ ] 库存数量已准确填写
- [ ] 补货提醒已设置（建议库存 < 14天时激活）
- [ ] 头程物流跟踪号已记录
- [ ] 预计到仓时间已确认

### 4.3 备货清单

- [ ] 首批货件数量已确认（覆盖30-45天销售）
- [ ] 备用库存已预留（应对突发情况）
- [ ] 产品说明书/保修卡已准备
- [ ] 品牌感谢卡已准备（如适用）

---

## 第五阶段：上线前最后检查

### 5.1 定价策略

- [ ] 产品定价已确定（参考成本、同行、利润目标）
- [ ] Coupon已设置（建议5-10%）
- [ ] 促销价格已规划（如Prime Day、Black Friday）
- [ ] Vine计划已注册（如适用）

### 5.2 广告设置

- [ ] 自动广告已创建（预算$10-15/天）
- [ ] 首个手动广告组已创建（精准长尾词，预算$5-10/天）
- [ ] 否定关键词清单已准备
- [ ] 每日广告预算上限已设置

### 5.3 合规与账户

- [ ] 卖家绩效指标正常（订单缺陷率 < 1%）
- [ ] 信用卡/收款账户信息已更新
- [ ] 税务信息已确认
- [ ] 账户健康状态已检查

---

## 第六阶段：上架后行动检查

### 6.1 Day 1-3 行动

- [ ] 确认FBA库存已上线
- [ ] Listing页面显示正常
- [ ] 自动广告已开启
- [ ] 手动广告已开启
- [ ] 开始记录BSR排名

### 6.2 Day 4-7 行动

- [ ] 分析第一天的自然流量数据
- [ ] 检查是否有无效流量来源
- [ ] 关注Vine计划进展
- [ ] 记录第一周销量和转化率

### 6.3 Week 2 行动

- [ ] 下载自动广告报告
- [ ] 筛选高效关键词
- [ ] 添加新的手动广告组
- [ ] 更新否定关键词列表
- [ ] 评估是否需要调整Bid

---

## 检查清单使用建议

**上架前**：按照第一至第五阶段的顺序，逐项检查并打勾。每遗漏一项，都可能为未来的运营埋下隐患。

**上架后**：按照第六阶段的节奏执行，每周复盘一次。数据是最好的老师，及时发现问题才能及时调整。

**提醒**：这份清单是通用模板，每个品类可能有特殊要求。请根据你的具体产品情况进行适当调整。

---

*本清单为策略规划参考，实际运营需结合市场情况和平台规则进行调整。*


path: scripts/launch-planner.py
content: #!/usr/bin/env python3
"""
亚马逊新品上架评分器 - Level 2
Amazon New Product Launch Planner

功能：
- score: 新品上架评分（市场验证/Listing质量/广告准备/库存/评论策略 5维）
- schedule: 上架日程生成
- risk-check: 风险检查清单

Author: Amazon Launch Team
Version: 1.0.0
"""

import sys
import json
from typing import Dict, List, Any, Optional
from dataclasses import dataclass, field
from enum import Enum


class LaunchScore(Enum):
    """上架评分"""
    EXCELLENT = "A级-强烈推荐上架"
    GOOD = "B级-建议上架"
    AVERAGE = "C级-谨慎上架"
    POOR = "D级-不建议上架"


@dataclass
class LaunchDimension:
    """上架维度"""
    dimension: str
    score: float
    status: str  # ready, partial, not_ready
    findings: List[str] = field(default_factory=list)
    issues: List[str] = field(default_factory=list)
    recommendations: List[str] = field(default_factory=list)


@dataclass
class LaunchReport:
    """上架报告"""
    overall_score: float
    launch_level: LaunchScore
    dimensions: List[LaunchDimension]
    schedule: List[Dict]
    risk_items: List[Dict]
    pre_launch_checklist: List[str]


class LaunchPlanner:
    """新品上架规划器"""
    
    DIMENSIONS = [
        {"id": "market_validation", "name": "市场验证", "weight": 0.25},
        {"id": "listing_quality", "name": "Listing质量", "weight": 0.25},
        {"id": "ad_preparation", "name": "广告准备", "weight": 0.20},
        {"id": "inventory", "name": "库存准备", "weight": 0.15},
        {"id": "review_strategy", "name": "评论策略", "weight": 0.15}
    ]
    
    def __init__(self):
        self.current_report: Optional[LaunchReport] = None
    
    def assess_dimension(self, dim_id: str, data: Dict) -> LaunchDimension:
        """评估单个维度"""
        dim_config = next((d for d in self.DIMENSIONS if d["id"] == dim_id), None)
        if not dim_config:
            return LaunchDimension(dimension=dim_id, score=0, status="not_ready")
        
        dim_name = dim_config["name"]
        
        if dim_id == "market_validation":
            return self._assess_market_validation(data)
        elif dim_id == "listing_quality":
            return self._assess_listing_quality(data)
        elif dim_id == "ad_preparation":
            return self._assess_ad_preparation(data)
        elif dim_id == "inventory":
            return self._assess_inventory(data)
        elif dim_id == "review_strategy":
            return self._assess_review_strategy(data)
        
        return LaunchDimension(dimension=dim_name, score=50, status="not_ready")
    
    def _assess_market_validation(self, data: Dict) -> LaunchDimension:
        """评估市场验证维度"""
        findings = []
        issues = []
        recommendations = []
        score = 50
        
        # 市场需求
        demand_score = data.get("monthly_sales", 0) / 100 * 50 if data.get("monthly_sales") else 25
        if demand_score >= 40:
            findings.append(f"市场需求强劲，月销{data.get('monthly_sales', 0)}单")
        elif demand_score >= 20:
            findings.append("市场需求一般")
        else:
            issues.append("市场需求较弱")
        
        # 竞争度
        competition = data.get("competition_level", "high")
        if competition == "low":
            score += 20
            findings.append("竞争程度低，蓝海市场")
        elif competition == "medium":
            score += 10
            findings.append("竞争程度适中")
        else:
            issues.append("市场竞争激烈")
        
        # 季节性
        if data.get("seasonal_risk"):
            issues.append("存在季节性风险")
            score -= 10
        
        # 差异化
        if data.get("differentiation"):
            score += 15
            findings.append("具有差异化卖点")
        
        score = max(0, min(100, score))
        
        if score < 50:
            recommendations.append("建议重新评估市场机会")
        elif score < 75:
            recommendations.append("需要强化差异化竞争")
        
        return LaunchDimension(
            dimension="市场验证",
            score=score,
            status="ready" if score >= 60 else "partial",
            findings=findings[:3],
            issues=issues[:2],
            recommendations=recommendations[:2]
        )
    
    def _assess_listing_quality(self, data: Dict) -> LaunchDimension:
        """评估Listing质量"""
        findings = []
        issues = []
        recommendations = []
        score = 0
        
        # 标题
        title = data.get("title", "")
        if len(title) >= 80 and len(title) <= 200:
            score += 20
            findings.append("标题长度合适")
        elif len(title) >= 50:
            score += 10
            findings.append("标题基本达标")
        else:
            issues.append("标题长度不足")
        
        # 图片
        main_image = data.get("main_image_quality", "poor")
        image_count = data.get("image_count", 0)
        if main_image == "excellent" and image_count >= 7:
            score += 25
            findings.append("主图质量优秀，图片齐全")
        elif main_image == "good" and image_count >= 5:
            score += 15
            findings.append("图片基本到位")
        else:
            issues.append("图片质量或数量不足")
        
        # 描述
        if data.get("description_complete"):
            score += 15
            findings.append("描述完整")
        else:
            issues.append("描述不完整")
        
        # A+内容
        if data.get("has_aplus"):
            score += 15
            findings.append("已有A+内容")
        elif data.get("has_aplus") is False:
            issues.append("缺少A+内容")
        
        # 要点
        bullet_count = data.get("bullet_count", 0)
        if bullet_count >= 5:
            score += 10
        elif bullet_count >= 3:
            score += 5
        else:
            issues.append("产品要点不足")
        
        score = max(0, min(100, score))
        
        if score < 60:
            recommendations.append("优先完善图片和标题")
        
        return LaunchDimension(
            dimension="Listing质量",
            score=score,
            status="ready" if score >= 70 else "partial" if score >= 50 else "not_ready",
            findings=findings[:3],
            issues=issues[:2],
            recommendations=recommendations[:2]
        )
    
    def _assess_ad_preparation(self, data: Dict) -> LaunchDimension:
        """评估广告准备"""
        findings = []
        issues = []
        recommendations = []
        score = 0
        
        # 关键词
        keyword_count = data.get("keyword_count", 0)
        if keyword_count >= 30:
            score += 30
            findings.append(f"已准备{keyword_count}个关键词")
        elif keyword_count >= 10:
            score += 15
            findings.append("关键词基本覆盖")
        else:
            issues.append("关键词准备不足")
        
        # 广告结构
        if data.get("campaign_structure"):
            score += 25
            findings.append("广告结构设计完成")
        else:
            issues.append("广告结构未规划")
        
        # 预算
        daily_budget = data.get("daily_budget", 0)
        min_budget = 50  # 最低日预算
        if daily_budget >= min_budget:
            score += 20
            findings.append(f"日预算${daily_budget}已设置")
        elif daily_budget >= min_budget * 0.5:
            score += 10
            recommendations.append("预算偏低，建议增加")
        else:
            issues.append("预算设置不足")
        
        # 竞价策略
        if data.get("bidding_strategy"):
            score += 15
            findings.append("竞价策略已制定")
        
        score = max(0, min(100, score))
        
        if score < 60:
            recommendations.append("至少准备10个核心关键词")
        
        return LaunchDimension(
            dimension="广告准备",
            score=score,
            status="ready" if score >= 70 else "partial" if score >= 40 else "not_ready",
            findings=findings[:3],
            issues=issues[:2],
            recommendations=recommendations[:2]
        )
    
    def _assess_inventory(self, data: Dict) -> LaunchDimension:
        """评估库存准备"""
        findings = []
        issues = []
        recommendations = []
        score = 0
        
        # 库存数量
        stock = data.get("fba_stock", 0)
        target_stock = data.get("target_monthly_sales", 300)
        
        if stock >= target_stock * 2:
            score += 35
            findings.append(f"库存充足({stock}件)")
        elif stock >= target_stock:
            score += 25
            findings.append("库存基本够用")
        else:
            issues.append(f"库存不足，目标需{target_stock}件")
            score += 10
        
        # 入仓时间
        if data.get("warehouse_ready"):
            score += 30
            findings.append("仓库已就绪")
        else:
            issues.append("仓库尚未就绪")
        
        # 补货计划
        if data.get("replenishment_plan"):
            score += 20
            findings.append("有补货计划")
        elif stock < target_stock:
            recommendations.append("建议制定补货计划")
        
        # 安全库存
        if data.get("safety_stock_days", 0) >= 14:
            score += 15
            findings.append("安全库存设置合理")
        
        score = max(0, min(100, score))
        
        return LaunchDimension(
            dimension="库存准备",
            score=score,
            status="ready" if score >= 70 else "partial",
            findings=findings[:3],
            issues=issues[:2],
            recommendations=recommendations[:2]
        )
    
    def _assess_review_strategy(self, data: Dict) -> LaunchDimension:
        """评估评论策略"""
        findings = []
        issues = []
        recommendations = []
        score = 0
        
        # Vine计划
        if data.get("vine_enrolled"):
            score += 30
            findings.append("已注册Vine计划")
        else:
            recommendations.append("建议注册Vine计划获取早期评价")
        
        # 评价请求
        if data.get("review_request_enabled"):
            score += 25
            findings.append("自动评价请求已开启")
        else:
            issues.append("未开启评价请求")
        
        # 产品包装
        if data.get("packaging_includes_request"):
            score += 20
            findings.append("包装含评价请求卡")
        else:
            recommendations.append("考虑在包装中添加评价请求")
        
        # 评论目标
        target_reviews = data.get("target_reviews", 0)
        if target_reviews >= 30:
            score += 15
            findings.append(f"目标获取{target_reviews}条评价")
        elif target_reviews >= 10:
            score += 10
        else:
            recommendations.append("设定明确的评价数量目标")
        
        # 合规性
        if data.get("compliant_review_methods"):
            score += 10
            findings.append("使用合规的评论获取方式")
        else:
            issues.append("存在不合规风险")
        
        score = max(0, min(100, score))
        
        return LaunchDimension(
            dimension="评论策略",
            score=score,
            status="ready" if score >= 70 else "partial",
            findings=findings[:3],
            issues=issues[:2],
            recommendations=recommendations[:2]
        )
    
    def calculate_overall_score(self, dimensions: List[LaunchDimension]) -> float:
        """计算综合评分"""
        total = 0
        for dim in dimensions:
            dim_config = next((d for d in self.DIMENSIONS if d["name"] == dim.dimension), None)
            weight = dim_config["weight"] if dim_config else 0.2
            total += dim.score * weight
        return round(total, 1)
    
    def get_launch_level(self, score: float) -> LaunchScore:
        """确定上架等级"""
        if score >= 85:
            return LaunchScore.EXCELLENT
        elif score >= 70:
            return LaunchScore.GOOD
        elif score >= 50:
            return LaunchScore.AVERAGE
        else:
            return LaunchScore.POOR
    
    def score(self, product_data: Dict) -> LaunchReport:
        """执行完整评分"""
        dimensions = []
        
        for dim_config in self.DIMENSIONS:
            data = product_data.get(dim_config["id"], {})
            dim = self.assess_dimension(dim_config["id"], data)
            dimensions.append(dim)
        
        overall_score = self.calculate_overall_score(dimensions)
        launch_level = self.get_launch_level(overall_score)
        
        # 生成日程
        schedule = self.generate_schedule(dimensions)
        
        # 风险检查
        risk_items = self.check_risks(dimensions)
        
        # 上架前检查清单
        checklist = self.generate_prelaunch_checklist(dimensions)
        
        self.current_report = LaunchReport(
            overall_score=overall_score,
            launch_level=launch_level,
            dimensions=dimensions,
            schedule=schedule,
            risk_items=risk_items,
            pre_launch_checklist=checklist
        )
        
        return self.current_report
    
    def generate_schedule(self, dimensions: List[LaunchDimension]) -> List[Dict]:
        """生成上架日程"""
        schedule = []
        
        # D-30: 提前30天
        schedule.append({
            "day": "D-30",
            "task": "市场验证完成",
            "status": "done" if next((d for d in dimensions if d.dimension == "市场验证"), None).score >= 60 else "pending"
        })
        
        # D-21: 三周前
        schedule.append({
            "day": "D-21",
            "task": "Listing初稿完成",
            "status": "pending"
        })
        
        # D-14: 两周前
        schedule.append({
            "day": "D-14",
            "task": "图片和A+内容完成",
            "status": "pending"
        })
        
        # D-7: 一周前
        schedule.append({
            "day": "D-7",
            "task": "广告计划和关键词准备",
            "status": "pending"
        })
        
        # D-3: 三天前
        schedule.append({
            "day": "D-3",
            "task": "FBA库存入仓",
            "status": "pending"
        })
        
        # D-1: 前一天
        schedule.append({
            "day": "D-1",
            "task": "最终Listing检查",
            "status": "pending"
        })
        
        # D-Day: 上架日
        schedule.append({
            "day": "D-Day",
            "task": "正式上架+广告启动",
            "status": "pending"
        })
        
        # D+7: 一周后
        schedule.append({
            "day": "D+7",
            "task": "数据分析与调整",
            "status": "pending"
        })
        
        # D+30: 一个月后
        schedule.append({
            "day": "D+30",
            "task": "首月复盘",
            "status": "pending"
        })
        
        return schedule
    
    def check_risks(self, dimensions: List[LaunchDimension]) -> List[Dict]:
        """风险检查"""
        risks = []
        
        for dim in dimensions:
            if dim.issues:
                for issue in dim.issues:
                    risks.append({
                        "dimension": dim.dimension,
                        "issue": issue,
                        "severity": "high" if dim.score < 50 else "medium"
                    })
        
        # 特定风险
        market_dim = next((d for d in dimensions if d.dimension == "市场验证"), None)
        if market_dim and market_dim.score < 40:
            risks.append({
                "dimension": "市场验证",
                "issue": "市场需求不足，上架风险极高",
                "severity": "critical"
            })
        
        return risks
    
    def generate_prelaunch_checklist(self, dimensions: List[LaunchDimension]) -> List[str]:
        """生成上架前检查清单"""
        checklist = []
        
        checklist.append("✅ 标题包含核心关键词且符合规范")
        checklist.append("✅ 主图符合亚马逊要求（白底、无水印）")
        checklist.append("✅ 至少5张高质量图片")
        checklist.append("✅ 5个产品要点清晰展示卖点")
        checklist.append("✅ 详细描述完整且专业")
        checklist.append("✅ 关键词研究完成（≥20个）")
        checklist.append("✅ 广告结构设计完成")
        checklist.append("✅ 日预算设置≥$50")
        checklist.append("✅ FBA库存已入仓")
        checklist.append("✅ Vine计划已注册（如适用）")
        checklist.append("✅ 评价请求功能已开启")
        checklist.append("✅ 同行关注已设置")
        
        return checklist
    
    def format_report(self, report: LaunchReport) -> str:
        """格式化报告"""
        output = []
        output.append("=" * 70)
        output.append("亚马逊新品上架评分报告")
        output.append("=" * 70)
        
        output.append(f"\n【综合评分】{report.overall_score}分 ({report.launch_level.value})")
        
        output.append(f"\n【各维度评分】")
        for dim in report.dimensions:
            bar = "█" * int(dim.score/5) + "░" * (20 - int(dim.score/5))
            output.append(f"\n  {dim.dimension}: [{bar}] {dim.score}分")
            if dim.findings:
                output.append(f"     ✓ {dim.findings[0]}")
            if dim.issues:
                output.append(f"     ⚠ {dim.issues[0]}")
        
        if report.risk_items:
            output.append(f"\n【风险提示】")
            for risk in report.risk_items[:3]:
                output.append(f"  ⚠ [{risk['severity'].upper()}] {risk['dimension']}: {risk['issue']}")
        
        output.append(f"\n【上架日程】")
        for s in report.schedule[:5]:
            icon = "✅" if s["status"] == "done" else "☐"
            output.append(f"  {icon} {s['day']}: {s['task']}")
        
        output.append("\n" + "=" * 70)
        return "\n".join(output)


def main():
    """主函数"""
    if len(sys.argv) < 2:
        print("用法: python launch-planner.py <command> [args]")
        print("命令:")
        print("  score        - 上架评分")
        print("  schedule     - 上架日程")
        print("  risk-check   - 风险检查")
        return
    
    command = sys.argv[1]
    planner = LaunchPlanner()
    
    # 示例数据
    sample_data = {
        "market_validation": {
            "monthly_sales": 200,
            "competition_level": "medium",
            "seasonal_risk": False,
            "differentiation": True
        },
        "listing_quality": {
            "title": "Wireless Bluetooth Earbuds, Active Noise Cancelling, 40H Battery Life with Charging Case",
            "main_image_quality": "excellent",
            "image_count": 7,
            "description_complete": True,
            "has_aplus": True,
            "bullet_count": 5
        },
        "ad_preparation": {
            "keyword_count": 25,
            "campaign_structure": True,
            "daily_budget": 80,
            "bidding_strategy": "dynamic-bids-down"
        },
        "inventory": {
            "fba_stock": 500,
            "target_monthly_sales": 300,
            "warehouse_ready": True,
            "replenishment_plan": True,
            "safety_stock_days": 21
        },
        "review_strategy": {
            "vine_enrolled": True,
            "review_request_enabled": True,
            "packaging_includes_request": True,
            "target_reviews": 30,
            "compliant_review_methods": True
        }
    }
    
    if command == "score":
        report = planner.score(sample_data)
        print(planner.format_report(report))
        
    elif command == "schedule":
        planner.score(sample_data)
        schedule = planner.current_report.schedule
        
        print("=" * 70)
        print("新品上架日程")
        print("=" * 70)
        
        for s in schedule:
            icon = "✅" if s["status"] == "done" else "☐"
            print(f"\n{icon} {s['day']}")
            print(f"   任务: {s['task']}")
        
    elif command == "risk-check":
        planner.score(sample_data)
        risks = planner.current_report.risk_items
        
        print("=" * 70)
        print("风险检查报告")
        print("=" * 70)
        
        if not risks:
            print("\n✅ 未发现重大风险")
        else:
            for risk in risks:
                severity_icon = "🔴" if risk["severity"] == "critical" else "🟠" if risk["severity"] == "high" else "🟡"
                print(f"\n{severity_icon} [{risk['severity'].upper()}] {risk['dimension']}")
                print(f"   问题: {risk['issue']}")
    else:
        print(f"未知命令: {command}")


if __name__ == "__main__":
    main()


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal:  | SkillSpector:  ()