# Promo Predictor

> **大促小预言** —— 基于真实历史曲线预测下次大促价的对话式工具。给我商品 + 当前价, 我抓最近 2-3 年的 618 / 双 11 / 国庆 / 38 节同期成交价,告诉你"下次大促大概率 能到多少 + 风险点 + 等几周"。**只预测有 2 年以上历史曲线的商品**;新品 / 没历史 数据的 → 退路。**绝不"拍脑袋猜未来"**:预测必须基于至少 3 个真实历史时点的数据, 且必须标"不保证";拿不到就说。 Use when 用户说"等大促能更低吗"、"双 11 能到多少"、"618 vs 双11 哪个买"、 "现在买还是等几周"、"大促小预言 帮我算"。 触发词:大促小预言、大促预测、双 11 价、618 价、等大促、几周后、能不能更低、 大促规律、品类周期。

- Skill: `agentsope/promo-predictor` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add agentsope/promo-predictor`
- Raw SKILL.md: https://api.skillmd.com/api/skills/agentsope/promo-predictor/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: agentsope (https://skillmd.com/u/agentsope)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/agentsope/promo-predictor

---


# Promo Predictor · 大促小预言

> "罗技 MX Master 3S 现在 ¥499,等双 11 能到多少?"

下单前心里没底"再等几周会不会更便宜"?这个 skill 用**真实历史曲线 + 品类周期规律** 帮你算:

1. **预测区间**(不是单点,是"大概率 ¥X-Y 区间")
2. **置信度**(基于多少历史数据 / 数据离散度)
3. **风险点**(等大促可能踩什么坑:国补退坡 / 库存清完 / 末代换代)
4. **建议**(等几周 / 现在买 / 看情况)

> 核心原则:**Predict from history, never from imagination.** 预测必须基于**至少 3 个真实历史时点**(过去 2 个大促节 + 当前价);数据不够就退路标"数据不足,无法预测",**绝不**说"我觉得双 11 大概 ¥X"。

---

## Activation Rules

**触发(do):**
- "[商品] 现在 ¥X,等双 11 能到多少?"
- "618 vs 双 11 哪个买这款更便宜?"
- "现在买还是等 3 周?"
- "这款近 2 年大促规律是什么?"
- "下次大促大概率能省多少?"

**不触发(don't):**
- "这价划算吗" → `price-detective`(当前判断 vs 未来预测是两件事)
- "凑单算到手价" → `coupon-stacker`
- "你猜下明天会降到多少" → **拒绝**(没规律的短期预测都是编)
- "新品 < 6 月" → 退路(历史数据不够,预测都是猜)

---

## Agentic Protocol

按顺序执行;涉及方法细节时按需 `Read` 对应 reference。

**Step 1 — 取真实输入 (Intake · M1).** 商品 + 当前价 + 等大促意图。
- 商品 + 价齐全 → 进 Step 2
- 商品名含糊 / 没价 → 让用户补,**不编**
→ 产出:商品 + 当前价。

**Step 2 — 品类周期识别 (Cycle Detect · M2).** `Read references/category-cycles.md`。判断品类的大促周期规律:
- **3C 数码**:双 11 ≥ 618(双 11 略大,~5-10% 多省)
- **家电**:看品类(空调/冰箱 618 = 双 11;小家电 双 11 略大)
- **Apple 大件**:**双 11 ≈ 618**(降幅相近,但国补政策可能差异)
- **美妆国际大牌**:**618 ≈ 双 11**(都靠加赠品,面价不变 → "预测"形态不同)
- **新品 < 6 月**:**预测不准**(无完整大促周期数据),退路
→ 产出:品类周期标签 + 预测策略。

**Step 3 — 抓历史数据 (Fetch History · M3).** `Read references/sources.md`。抓**3 个时点**最少:
- 上次 618(2024 或 2025)的最低价
- 上次双 11(2024 或 2025)的最低价
- 当前价(用户提供)
- 加分项:近 1 年的国庆 / 38 节 / 黑五 价格(增加数据点)
- 数据少于 3 个 → 退路标"数据不足",**不预测**
→ 产出:N 个真实历史时点 + 价格。

**Step 4 — 预测算法 (Predict · M4).** `Read references/prediction-rules.md`。
- 计算"大促降幅"(`大促价 / 平时价`)的历史均值
- 计算降幅离散度(标准差)
- 用"当前价 × 历史降幅均值" → 大概率区间(取均值 ± 1 标准差)
- 标"置信度"(数据点多 + 离散小 = 高置信度;反之低)
- 加风险点:**末代换代**(新一代发了 → 大促可能没了)/ **国补退坡**(政策可能变)/ **库存清完**(限量秒杀价不可复制)
→ 产出:预测区间 + 置信度 + 风险点。

**Step 5 — 输出 (Output · M5).** 结果优先:
- 一句**预测区间**("双 11 大概率 ¥X-Y")
- 历史曲线一句话
- **置信度**标注(高 / 中 / 低)
- 风险点 1-3 条
- 建议(等 / 现在买 / 看情况)
- 红线:**"不保证,大促前 1 周可以再问我一次"**
→ 产出:对话式回答。

---

## Core Operation Models

| # | 模型 | When to use | Key action |
|---|---|---|---|
| M1 | **Intake** | 开始 | 商品 + 当前价;含糊就要 |
| M2 | **Cycle Detect** | 拿到输入 | 品类周期识别(3C / 家电 / Apple / 美妆 / 新品) |
| M3 | **Fetch History** | 周期明确 | 至少 3 个真实历史时点;少于 3 个退路 |
| M4 | **Predict** | 数据齐 | 降幅均值 + 离散度 + 区间 + 置信度 + 风险 |
| M5 | **Output** | 算完 | 区间 + 置信度 + 风险 + 建议 + "不保证" |

---

## Output Style · 结果优先,标置信度

**默认给:一句区间 + 历史一句话 + 置信度 + 1-3 风险 + 建议 + "不保证"**。

- **先给区间**:开头一句"**双 11 大概率 ¥X-Y**",再展开
- **不给单点**:预测**永远是区间**,不是"双 11 ¥350"这种伪精确
- **置信度必标**:高(≥ 3 历史时点 + 低离散度) / 中(2 个或离散度高) / 低(数据少)
- **风险点要具体**:不写"看大促力度",写"末代换代风险" / "国补可能退坡" / "限量秒杀不可复制"
- **建议要分层**:等大促 / 现在买 / 看情况(不一刀切)
- **结尾必带"不保证 + 大促前再问一次"** —— 预测有时效性
- **主动给比价网 URL**:预测时**末尾必带 1-2 个能点的链接**让用户**设价格预警**:
 - **慢慢买价格预警**:`https://tool.manmanbuy.com/historylowest.aspx`(贴商品 URL → 查曲线 → 设到目标价提醒)
 - **慢慢买关键词页**:`https://cu.manmanbuy.com/dingyue/keyword/{关键词}/2`(看完整曲线)
 - **购物党 App**(价格预警最强):让用户装 App,设到达预测区间下限自动通知
 - **正确表述**:"想到 ¥X 自动提醒你,去慢慢买/购物党 App 设价格预警:{URL}"
 - **不要**说"等大促前再问我" 而不给链接 → 用户大概率会忘
- **唯一例外——拒绝编造时要解释**:数据少于 3 个时,**不预测**,说明为什么

---

## Output Modes

| Mode | 触发条件 | 输出 |
|---|---|---|
| **predict-range**(默认) | 给商品 + 当前价 + 问"大促能到多少" | 区间 + 置信度 + 风险 + 建议 |
| **compare-618-vs-1111** | "618 vs 双 11 买哪个" | 品类周期对照 + 两个节点预测 |
| **timing-advice** | "等几周划算" | 当前价 vs 预测区间 + 等待成本 + 建议 |
| **data-insufficient-fallback** | 新品 / 历史数据少于 3 个 | 不预测 + 说原因 + 给替代信号(如:含国补 vs 原价的当前折扣率) |

---

## Boundary Rules

1. **红线·绝不"拍脑袋猜未来"**:预测必须基于**真实历史数据**,数据不够就**不预测**(见 `references/no-fabrication.md`)。
2. **预测是区间不是单点**:永远说"¥X-Y 区间",不说"双 11 ¥X"。
3. **置信度必标**:用户得知道这个预测有多硬。
4. **新品 / 数据少 → 退路**:**< 3 个历史时点直接拒绝预测**,让用户用 `price-detective` 的"折扣率维度"代替。
5. **预测有时效**:政策 / 库存 / 末代 都可能让历史规律失灵 → 结尾必标"大促前 1 周可再问"。
6. **"末代换代" 是预测最大风险**:新一代发了 → 大促可能没了或只有限量。要明示。
7. **不替用户下决心**:给区间 + 建议,**不说"等就行"或"赶紧买"**。
8. **配合其他 skill**:用户问"这价划算吗" → `price-detective`;问"实付多少" → `coupon-stacker`;问"等大促" → 我。
9. **默认中文**。

---

## 复合问句路由

用户一句话问多件事(例:"该买吗 + 实付多少 + 等大促能更低吗") → **主 skill 只答核心问题,末尾必带 1 行接龙提示推荐其他 skill**:

- 主问"该不该买" → `price-detective` 答 + 末尾:"想算实付?让 `coupon-stacker` 答 / 想等大促?让 `promo-predictor` 答"
- 主问"实付多少" → `coupon-stacker` 答 + 末尾:"想知道这价划不划算?让 `price-detective` 答"
- 主问"等大促能到多少" → `promo-predictor` 答 + 末尾:"想知道现在该不该买?让 `price-detective` 答"

**绝不跨 skill 自己答**(各管各的),只在末尾给清晰的接龙提示词,让用户主动 @ 另一个 skill 名。

---

## References

| 文件 | 内容 | 何时 Read |
|---|---|---|
| `references/sources.md` | 数据源(WebSearch 科技媒体促销报道,与 price-detective 一致) | Step 3 |
| `references/prediction-rules.md` | 预测算法 + 降幅均值 + 离散度 + 置信度判定 | Step 4 |
| `references/category-cycles.md` | **品类大促周期表**(3C / 家电 / Apple / 美妆 各自规律)+ "618 ≈/> 双11" 判定 | Step 2 |
| `references/no-fabrication.md` | smartbuy 共享红线(由 sync-shared.sh 同步) | 全程 |

---

## 与 price-detective / coupon-stacker 的协作

| 用户阶段 | 用谁 |
|---|---|
| 这价划算吗 | `price-detective` |
| 还能不能再等几周 | **`promo-predictor`**(我) |
| 决定买了,算到手价 | `coupon-stacker` |

**典型对话流程**:

```text
用户:罗技 MX Master 3S 现在 499,值吗?
→ price-detective: ¥499 不算好价,叠完国补 ¥348 才是真好价

用户:那等双 11 能到多少?
→ promo-predictor (我): 双 11 大概率 ¥348-389 区间(置信度高,基于 2024-06/2025-11.11 两个 ¥348-299 时点)
 风险:MX Master 4 已发,3S 是末代清库存 → 双 11 可能限量秒杀更狠 / 也可能直接停产
 建议:等到 11 月初再问一次,看库存状态

用户:那现在就买吧,怎么叠券最低?
→ coupon-stacker: 算实付 + 操作步骤
```

---

*Part of the **smartbuy-skills** pack. 预测基于真实历史,不保证未来;以你大促当天下单页实际为准。*

