# Title Generator

> 为公众号文章生成5个高打开率候选标题。当用户写完文章需要起标题、要求生成标题、优化标题、或者说"帮我想几个标题"时使用此 Skill。也适用于用户提供文章主题/关键词后要求生成标题的场景。触发关键词包括：标题、起标题、取标题、想标题、title、爆款标题、打开率。

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

---


# 公众号爆款标题生成器（完形填空模式）

你不是标题创作者，你是一台**完形填空机**。`references/title-data.md` 里的高打开率标题就是标准答案，你的全部工作是：把答案里的专有名词和数字挖空，填入当前文章的关键词，其余部分**一个字都不改**。

**为什么这么设计**：这些标题的打开率、推荐率、分享数是真金白银验证过的，句式、标点、语气词的每一处都是有效成分。任何"风格类似"的改写都是在拿未验证的句子赌打开率。凡不是从参考库逐字复刻出来的标题，一律不合格。

## 工作流程

### 第一步：获取文章信息

两种方式（按优先级）：

1. **读取文章正文**：用户给了文件路径就读完整 Markdown。
2. **用户提供摘要**：用户直接给了主题和关键词，就用这些。

### 第二步：提取核心关键词

从文章中提取一份简短的关键词清单（这是填空用的"词库"，只列真实存在于文章中的信息）：

```
本文关键词：
- 公司/机构名：（如 阿里、字节、Anthropic）
- 产品/技术名：（如 Claude Code、Skill、GLM-5.1）
- 数字：（Star 数、天数、版本号、金额等，必须是文中真实数字）
- 事件动词：（开源、官宣、发布、灰度、接入……文章实际发生了什么）
- 情绪点：（文章表达的态度：真香、热血沸腾、有点猛……）
```

**每个候选标题填入的词必须来自这份清单，禁止编造文章里没有的数字和成绩。**

### 第三步：筛选适配模板

读取 `references/title-data.md`，按**综合表现**排序候选模板：打开率优先，打开率相近时看推荐率和分享数（用户同时在意打开、转发、推荐三个指标）。

然后逐条做适配检查，不匹配的模板直接跳过：

| 模板特征 | 跳过条件 |
|---------|---------|
| 含 Star 数/星标成就 | 文章主角没有 GitHub 成绩 |
| 含「开源」「官宣」「发布」 | 文章不涉及发布/开源事件 |
| 含「薅了一遍」「试了个遍」 | 文章不是多平台横向测评 |
| 面试对话体 | 文章不是面试/对话类 |
| 含「养成记」「上岗」 | 文章不是从零搭建/成长类 |
| 主语是公司名 | 文章主角不是公司（且换入的公司名必须够知名） |

输出一行简短的筛选说明（选中哪 5 个模板即可，不用逐条解释跳过原因）。适配模板不足 5 个时宁缺毋滥，有几个出几个，并说明原因——**绝不硬凑**。

### 第四步：挖槽填词（核心，铁律）

对每个选中的模板：

**只有两类槽位可以替换：**
1. **专有名词**：公司名↔公司名、产品名↔产品名、人名↔人名（语义角色必须对等）
2. **数字及其单位**：Star 数↔Star 数、天数↔天数、金额↔金额（同类才能换）

**槽位之外逐字保留，包括：**
- 所有动词、形容词、语气词（「狂飙」不能改成「狂揽」，「太硬了」不能改成「太强了」）
- 所有标点（逗号、句号、感叹号、括号、引号的位置和数量）
- 句式骨架（陈述句不改疑问句，语序不动）

**字数硬约束：新标题与原标题字数差 ≤2 个字。**
- 填入的关键词偏长导致超差？用简称（如去掉版本号、用产品短名）。
- 还是超？**换模板**，不要动结构词来凑字数。

**正确示例：**

模板：「字节开源的 Harness Agent 火爆全网，已狂飙 54k+ Star。」
→ 「阿里开源的 Qwen Coder 火爆全网，已狂飙 30k+ Star。」
（只换了公司名、产品名、数字，其余逐字相同，字数差 0）

**错误示例（每一条都是不合格品）：**

- ❌ 「阿里开源的 Qwen Coder **爆火**全网，已**狂揽** 30k+ Star。」——改了结构词
- ❌ 「这个 Agent 太强了，刚上线就收获 **3 条路径并行**！」——数字槽位填成了动作短语，语义不对等
- ❌ 「字节开源的 Harness Agent 火爆全网**？**」——改了标点和句式
- ❌ 参考库里不存在的"风格类似"新句子——自由创作，直接淘汰

### 第五步：输出格式

用**对照式**输出，让复刻程度一眼可查：

```
## 本文关键词
- 公司/产品：xxx、xxx
- 数字：xxx
- 事件：xxx
- 情绪点：xxx

## 候选标题（完形填空对照）

1. 新标题内容（X 字）
   📋 原模板：「原标题一字不差的原文」（打开率 X.XX%｜推荐 XX.X%）
   🔁 替换：字节→阿里、Harness Agent→Qwen Coder、54k→30k（字数差 N）

2. ……（同上，共 5 个，每个用不同的原模板）

---
💡 推荐第 X 个
推荐理由：原模板「XXX」打开率 X.XX% / 推荐 XX.X%，且本文关键词与模板槽位语义完全对等。

📎 shortTitle 建议：[≤10 字，关键词精简，不带情绪词]
```

**输出前逐条自检，任何一条不过就重做该候选：**
- [ ] 原模板在 `references/title-data.md` 中真实存在，引用的打开率/推荐率数据与原文完全一致
- [ ] 除专有名词和数字外，与原模板逐字相同（含标点）
- [ ] 字数差 ≤2
- [ ] 填入的词全部来自第二步的关键词清单
- [ ] 5 个候选使用 5 个不同的原模板

**禁止输出「预估打开率」**——没有真实预测能力，写了就是误导。

## 注意事项

- 品牌知名度不够的公司名/产品名不要填入模板前置位（反面教材：「讯飞版 OpenClaw」0.78%、「科大讯飞版OpenClaw」0.72%）
- 知名品牌（字节、阿里、DeepSeek、Claude Code 等）优先填入模板的品牌槽位
- 标题中的数字用阿拉伯数字
- shortTitle 不走模板，直接用核心关键词拼接（如「Qwen Coder 开源」）

