# Topic Selection

> henry 的选题会 / 发散前置 skill。当用户丢来素材说「开个选题会」「先发散一下」「这素材怎么写」「帮我想几个角度」，或素材厚、角度还不清、自己也没想清怎么切的时候触发。它做三件事：宽搜索把素材铺到最厚、抛多个互相拉开的角度提纲、停在提纲等用户取舍并锁定契约。产出的契约直接交给 henry-writer / tech-blog-writer / commercial-article 执行。不要用于：用户心里已有明确角度的一眼新闻（那种直接走写作 skill）、纯标题生成（走 qbitai-title-generator）、发表后复盘（走 skill-editor）。

- Skill: `imtangyujing/topic-selection` (Agent Skill)
- Install (CLI): `npx skillmds@latest add imtangyujing/topic-selection`
- Raw SKILL.md: https://api.skillmd.com/api/skills/imtangyujing/topic-selection/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: imtangyujing (https://skillmd.com/u/imtangyujing)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/imtangyujing/topic-selection

---


# 选题会 topic-selection v1.0

这个 skill 是写作 loop 的前置环节，做一件事：**在下笔之前，把「人作为判别器」该做的角度取舍提前做完。**

它的底层逻辑（详见 `决策记录-decisions.md` 第 1、2、3 条）：方向阶段是最便宜、最不会被锚定、杠杆最高的判别位置。在这个环节里，**AI 是生成器**（廉价地把素材铺厚、把角度抛多），**人是判别器**（取舍）。这是 GAN 框架最干净的应用——比让人去判别成稿里「这句话好不好」高好几个量级的杠杆。

输出不是成稿，是**提纲**。提纲是骨架，没有那层诱惑人的 prose，用户能冷静地只判断角度本身值不值，同时省 token。

---

## 触发前的一秒判断（交给用户，不替他做）

这一步不是 skill 的动作，是提醒。**不是每篇都该开选题会。**

- 一眼新闻、用户心里已有角度 → 跳过本 skill，直接走写作 skill。硬塞选题会是负担。
- 素材厚、角度不明、用户自己也没想清怎么切 → 走本 skill 全流程。

用户说「直接写」就直接写，不要强行拉他开会。

---

## 三步流程

### 第一步：宽搜索铺素材（AI 主导）

用户给的素材永远是入口，不是全貌。这一步的任务**不是解读用户给的素材**（那是浪费——用户自己会读），而是**扩展搜索边界**，把用户原本不会去找的那部分铺到桌上。素材的厚度直接决定角度的数量，角度的数量决定文章的纵深。

**三层搜索动作**（继承 henry-writer 第 1.25 步，强化向外发散）：

1. **吃透用户给的链接，建关键词库**：web_fetch 完整读每个链接，记下主角、产品、引用方、数据点的关键词。
2. **向外发散，找用户没给你的那部分**：拿词库去 web_search。四个方向——主角的个人轨迹/前作/行业上下文（补背景）、争议/批评/社区讨论（找反面）、相邻领域里的同构现象（找横向映射的素材）、可以当叙事主体的具体的人（找人物）。
3. **消化吸收**：搜索发现由你自己判断取舍，除非撞到明显事实错误或时间线矛盾，否则不打断用户。

**搜索深度**：12-15 次起步，素材厚的选题可到 20 次。雪球滚动要主动刹住。

#### 产出：带信源的素材地图

不要给用户一段解读，给一张**素材地图**。每个事实后面挂出处 URL，并按可靠度分级——这是为了让用户的复核从「扫全部」变成「只看标红的少数」。

```markdown
# 素材地图：{选题}

## 可当叙事主体的人 / 事 / 物
- [候选主体 1]（来源 URL）
- [候选主体 2]（来源 URL）

## 核心事实
- ✅硬 [事实]（来源 URL，已 fetch 验证）
- ⚠️待查 [事实]（综合多源推断，未直接验证——你的眼睛值得花在这里）

## 数据点
- [数字 + 对比锚点]（来源 URL）

## 反面 / 争议 / 社区反应
- [争议点]（来源 URL）

## 潜在横向映射素材
- [相邻领域的同构现象，可供「新现象 = 旧人性新外衣」的角度调用]
```

`✅硬` = 我实际 fetch 过的信源，可靠；`⚠️待查` = 我断言了但背后没挂一个我打开过的链接，或跨多源综合可能揉混，**用户只需复核这些**。这不是不信任，是让信任省着用。

### 第二步：角度发散（AI 主导，用户不打断）

基于素材地图，**一次性抛 3 个互相足够远的角度提纲**。3 个是默认值：少于 3 不够比较，多于 3 用户取舍成本反而高，3 个正好拉开「安全 / 主流 / 冒险」的差异。

关键纪律：**三个角度要互相足够远，不是一个角度的微调**。要敢于给彼此冲突的选项。

每个角度提纲一屏能看完，固定包含：

```markdown
## 角度 X：[一句话角度名]

- **thesis**：一句话，这篇最想让读者记住的那个点
- **叙事主体**：谁/什么（人 > 机构，见 henry-writer 取材原则）
- **骨架**：3-5 个段落转折（What is New → How → Why 的具体填充）
- **赌哪个 HKR**：H 快乐感 / K 知识增量 / R 共鸣感，主赌哪个
- **倚重素材地图哪几块**：点名用到的主体/事实/数据
- **横向映射**：这个角度有没有一个纯技术解读给不出的对照？（没有就直说「无，靠信息增量取胜」）
- **风险**：这个角度的代价（太冒险读者跟不上？太安全没记忆点？读者画像不吃？）
```

三个角度按梯度排：
- **安全角**：信息密度取胜，不赌共鸣，稳妥但记忆点弱。
- **主流角**：量子位常规爆款打法，HKR 均衡。
- **冒险角**：押一个横向映射或一个反常识切入，赢面高但可能曲高和寡。

### 第三步：取舍锁契约（用户主导）

用户砍。**让用户砍的时候说理由**——是读者画像不吃、是公司定位的硬约束（有些选题明知没人看也必须写）、是这个角度没有他的横向映射优势、还是冒险角风险太高。

用户砍的理由本身就是在喂养「选题判断」的校准（对应 skill-editor 那条校准回路，只不过这次校准的是选题判断而非成稿质量）。把反复出现的取舍理由记下来，够格就升级回本 skill 的发散逻辑。

选定后，固化成**契约**，直接交给写作 skill：

```markdown
# 写作契约：{选题}

- **角度**：[选定的 thesis]
- **叙事主体**：[谁]
- **骨架**：[锁定的 3-5 段转折]
- **边界**：MUST HAVE [核心信息] / 砍掉 [明确不写的] / 红线 [客户敏感/不能碰的]
- **赌的 HKR**：[主赌维度]
- **目标字数 + 文章类型 + 走哪个写作 skill**
- **素材地图**：[附在后面，供写作 skill 取用]
```

**契约的作用是防锚定**：方向的决定是在还没有任何 prose 能诱惑用户的时候，单独冷静做出的。之后写作 skill 对着契约执行，用户也对着契约验收（「这稿有没有兑现我们选的角度」），而不是看到 prose 又被重新勾引去推翻角度。

---

## 与其它 skill 的关系

- **上游**：用户的素材 + 一秒元判断。
- **可调用**：素材地图阶段的 HKR 价值分析、叙事主体识别，可复用 `qbitai-material-processor` 的框架，不重复造。
- **下游**：契约交给 henry-writer / tech-blog-writer / commercial-article / prospectus-decoder 执行。
- **不碰**：语言风格规则全部由 henry-writer 定，本 skill 只管「写什么角度」，不管「怎么遣词」。

一句话：本 skill 负责把搜索边界铺宽、把角度摆开；人负责收窄到最准；写作 skill 对着契约执行。各管各的，不越界。

