# Li Steam Market Research

> Steam 独立游戏调研。支持指定类别 Top N 付费榜单的两阶段市场研究，也支持深挖单个游戏为什么成功、团队经历、产品与短视频获客，并生成面向美国小读者的英中双语 PDF。

- Skill: `jiangjiax/li-steam-market-research` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add jiangjiax/li-steam-market-research`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jiangjiax/li-steam-market-research/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: jiangjiax (https://skillmd.com/u/jiangjiax)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jiangjiax/li-steam-market-research

---


# Steam 游戏市场调研

## 模式路由

先判断用户要哪一种结果：

- **榜单模式**：用户要某个 Steam Indie 类别的 Top N、价格、评论、团队或人月。执行下文的两阶段榜单工作流。
- **单游戏案例模式**：用户点名一个游戏，询问它为什么成功、经历了什么、如何开发/营销/经营账号，或要求一份该游戏调研报告。读取并执行 [references/single-game-case-study.md](references/single-game-case-study.md)。此模式不受榜单模式“第一阶段完成后必须停下”的限制。

两种模式都必须区分可核实事实与分析判断；但面向读者的 PDF 不放研究过程、证据免责声明或内部工作备注。证据边界应通过自然、简洁的正文表达，研究记录另存。

## 榜单模式

将调研严格分为两个阶段。默认只执行第一阶段；第一阶段交付完成后必须停下，不能顺手开始团队或人月调查。只有用户明确批准第二阶段后，才补查团队、周期和人月。

开始前读取 [references/research-schema.md](references/research-schema.md)，按其中字段、计算和证据口径输出。

## 固定口径与可变类别

以下口径固定：

- 主标签：Indie
- 排序：Top Sellers，保留 Steam 页面原始顺序
- 地区：美国，URL 参数 `cc=us`
- 界面语言：英语，URL 参数 `l=english`
- 评论：评论详情页 `All Languages` 的累计评论数量，不用 Recent Reviews，也不用商店页可能展示的单一语言评论数
- 价格：美国区 USD 的单体游戏 `Basic` 原始标价；不用折后价、套餐价、捆绑包价、DLC 价格或页面正文里碰巧出现的美元数字
- 指标：`All Languages review count × US Basic list price`
- 默认排除免费游戏：`is_free=true`、价格显示为 Free 或仅能游玩而无 Basic 价格的条目不计入 Top N；继续向下加载 Steam 主榜，直到收集到用户要求数量的付费条目。免费条目写入采集日志，不进入结果表。

Indie 之外的第二类别是每次任务的变量，例如 Simulation、Strategy、RPG 或其他用户指定类别：

1. 用户给出类别时，在 Steam Indie 页面选择该类别；
2. 用户给出已经筛选好的链接时，以链接当前显示的类别为准，并在页面上复核类别名称；
3. 用户同时给出类别和链接但两者冲突时，先指出冲突并请用户确认；
4. 用户既未给类别也未给筛选链接时，先询问本次要调研的 Indie 子类别；
5. 不记忆上一次的 Simulation 或任何其他类别为下次默认值，也不硬编码某个 facet 参数。

基础入口可使用 `https://store.steampowered.com/tags/en/Indie/?flavor=contenthub_topsellers&cc=us&l=english`，再按本次任务选择第二类别。最终结果必须记录实际类别名称和最终筛选 URL。

## 硬边界：两阶段

### 第一阶段：Top N 付费条目

第一阶段按用户指定数量 `N`（未指定时为 20）采集和核对 Top N 付费条目、评论数、美国区单价、发售时间和“最少赚了多少钱（粗略估算）”。榜单原始排名保留在 `steam_source_rank`，过滤免费条目后的顺序写入 `source_rank`。不得在此阶段把公司总人数、融资或外包情况当作项目团队事实；团队深挖和人月仍留到第二阶段。

第一阶段必须同时生成以下可读交付物：

- UTF-8 CSV：完整字段和证据口径；
- 双语 HTML/PDF：封面（使用 Steam 封面）、方法说明、按排名纵向排列的条目页。每页至少包含英文标题、中文标题或译名、双语简介、All Languages 评论数、美国区 Basic 原价、最少赚了多少钱（粗略估算）、发售时间、开发商/发行商。团队和人月栏在第二阶段未批准前明确写“待补查 / Pending second-stage research”，不得留空或猜测。

### 第二阶段：团队与人月

用户明确批准后，可查全部 N 个或用户指定的候选游戏。全量任务优先按数量近似均分为三组；例如 Top 20 分为 1–7、8–14、15–20，Top 50 分为 1–17、18–34、35–50。每组独立保存 JSON，最后由主任务合并、去重并校验排名 1–N。没有可用子 Agent 时按同一分组顺序串行执行，不改变证据口径。

只有用户在看过第一阶段结果后明确同意，才进入第二阶段。用户可以要求调查全部 N 个，也可以只选择候选游戏。

第一阶段完成后，必须询问：

> Top N Steam 付费条目数据和可读版 PDF 已经完成。是否进入第二步，补查团队人数、开发周期和人月？可以查全部 N 个，也可以先由你选出感兴趣的候选游戏。

发出问题后停止，不自行继续。

## 第一阶段执行流程

### 1. 打开并校验榜单

使用用户可见的应用内浏览器打开榜单。不要只依赖搜索引擎摘要或第三方聚合站。

在采集前确认：

- 页面界面为英语；
- 地区为美国，价格显示为 `$`；
- 主标签为 `Indie`，且当前选择为用户本次指定的第二类别；
- 当前榜单为 `Top Sellers`；
- 数据来自主结果列表。

排除 `Featured`、`Popular Discounted`、`Popular Titles`、`Top Demos`、活动推荐、相似产品和个性化推荐等非主榜模块。

### 2. 获取榜单前 N 个付费条目

按主榜现有顺序记录结果。持续点击 `Show More` 或滚动加载，直到获得至少 N 个唯一、付费的 App ID，然后截取过滤后的排名 1–N；免费条目跳过并记入 notes/log。

- 以 App ID 去重，不按标题去重；
- 不因个人判断调整 Steam 排名；
- 遇到免费游戏时排除并继续向下补齐；DLC、序章、试玩版、软件或其他异常条目仍保留其付费排名并标注，不静默替换；
- 每条保留带 `cc=us&l=english` 的可复查详情页 URL。

### 3. 逐个打开详情页

从榜单进入每个条目的 Steam 详情页，记录开发商、发行商、发布日期、支持语言数量和条目类型。

价格读取规则：

1. 找到该单体条目的购买区；
2. 读取 `Basic` 对应的原始/标准售价；
3. 页面促销时仍记录划线前原价；
4. 不取 `Deluxe`、`Complete Edition`、订阅、套餐或捆绑包价格；
5. 不从整页文本抓取第一个 `$`，游戏标题和正文也可能含美元数字；
6. 无 Basic 价格时留空并写明原因，不猜价。

### 4. 获取所有语言评论数

点击详情页的评论入口，进入评论页并打开语言筛选。读取 `All Languages` 后括号或旁边显示的累计数量。

- 必须记录精确整数，保留 Steam 页面显示的原始值；
- 同时记录 `All Languages` 的评价标签；
- 能可靠取得时记录全球好评率，否则留空，不反推；
- 不把 `English`、`Recent` 或商店页摘要评论数当作 All Languages。

### 5. 计算和保存

逐行计算：

```text
review_based_lower_bound_signal_usd = all_languages_review_count × us_basic_list_price_usd
```

该值展示为“最少赚了多少钱（粗略估算）”，但不是实际收入、净收入、销量或购买人数。它没有计入未评论购买者，也没有扣除退款、平台分成、税费、地区价格、免费 Key、折扣和历史价格差异；因此只适合作为统一口径的粗筛信号。

默认保存为 UTF-8 CSV（保存到当前项目的调研输出目录）：

`research-output/YYYY-MM-DD-indie-<类别>-topN-paid-us-en.csv`

同时生成到同一输出目录：

- `YYYY-MM-DD-indie-<类别>-topN-paid-bilingual.html`
- `YYYY-MM-DD-indie-<类别>-topN-paid-bilingual.pdf`

PDF 必须达到项目既有最终版的可读级别：封面图片、双语方法页、每个条目独立页面、稳定的指标卡片和来源链接。未经用户明确要求，不上传飞书或其他外部服务。

## 第一阶段交付检查

交付前逐项确认：

- 恰好 N 行，`source_rank` 连续为 1–N，`steam_source_rank` 唯一且按 Steam 主榜顺序递增；
- N 个付费 App ID 唯一，结果表不含免费条目；
- 过滤后的排名与 Steam 主榜来源顺序一致；
- 评论数来自 `All Languages`；
- 价格来自美国区 USD Basic 原价；
- 每个可计算结果都能由评论数和单价复算；
- 被排除的免费条目、缺价、DLC、非游戏或其他异常均有备注或采集日志；
- 输出明确写明采集日期、来源 URL、地区、语言和指标免责声明。

若 Steam 页面无法验证某字段，不伪造也不拿第三方估算填成事实。保留空值，写明失败原因和已尝试的页面。

## 第二阶段执行要求

用户明确批准后，再对用户指定的游戏调查：

- 核心团队规模与岗位构成；
- 开发开始时间、抢先体验时间、正式发行时间；
- 有效开发月数；
- 人月估算及计算区间；
- 外包、兼职、发行商支持、融资等会扭曲人月判断的因素；
- 每条结论的可追溯来源、发布日期和置信度。

### 外部多源核查协议

Steam 没有提供官网入口、官网页面没有团队资料或链接无法打开时，不得直接停止并写成“查不到”。必须继续做一次定向外查，至少覆盖以下路径中的可用项：

1. 用“游戏名 + 开发商 + team / founder / credits / interview”等组合词搜索；
2. 直接检查开发商官网、发行商官网、公司 About / Team / Credits / Careers 页面；
3. 检查开发日志、GDC/公开演讲、开发者访谈、发行商新闻稿和可信媒体报道；
4. Steam 的社交账号、Discord、LinkedIn、个人主页只作为线索，只有能明确归属于该开发团队且可追溯的内容才可入表。

来源优先级：开发者/发行商一手页面 > 开发者访谈、公开演讲、开发日志 > 可信媒体 > 搜索摘要。搜索摘要和 AI 回答只能作为线索，不能作为最终证据。每条已确认结论至少保存来源标题、URL、日期（若有）和短引文/准确摘要。

公司总人数、发行商人数或“数十人”等模糊表述不得直接当作单个项目人数。必须标明“公司级 / 项目级 / 核心团队 / 贡献者”，不能归因时保留未知。

### 人月估算纪律

事实字段（团队规模、开发开始、Early Access、正式发行）与估算字段分列。只有团队人数和有效开发月数都有可追溯依据时才计算：

```text
person_month_estimate = team_size × effective_development_months
```

优先输出区间或保守下限，并在 `support_factors` / `research_notes` 写明口径、是否只覆盖核心团队、是否包含外包/发行商支持。缺少任一关键事实时写 `Not estimable`，不得把未知人数乘未知周期包装成精确值。

### 第二阶段交付

第二阶段默认生成：

- `YYYY-MM-DD-indie-<类别>-team-personmonths.json`：N 条独立证据记录；
- 双语可读 PDF：每个游戏一页，包含封面、简介、评论数、美国区单价、最少赚了多少钱（粗略估算）、发售时间、团队/人员、开发周期和人月；
- 可编辑 HTML（如使用项目内报告生成器）。

如果使用脚本生成报告，脚本应把类别、数量、日期和输入文件作为参数；更换类别时，文件名、输入数据和报告标题必须同步更换，不得把某个类别写死。脚本输出应保持本 Skill 规定的字段、证据和免责声明。

PDF 交付前检查：页数应为封面 + 方法说明 + 游戏条目数；排名连续、App ID 唯一；抽查免费游戏、DLC、超长标题和末页；确认“最少赚了多少钱”仍明确标注为粗略估算，不是实际收入。`Not disclosed` / `Not estimable` 必须保留原因和来源检索范围。

