Skill: aiworkskills/aws-wechat-article-topics (version 1.0.23)

--- name: aws-wechat-article-topics description: 公众号选题｜爆款标题｜热点追踪｜系列策划 — 公众号 AI 选题与标题生成，覆盖热点调研、选题策划、起标题、写摘要、系列排期。面向自媒体编辑、内容运营。触发词（**单独触发仅限对已有标题/摘要的修改**）：「改标题」「换个标题」「重起标题」「优化标题」「标题再想想」「换个标题试试」「改摘要」「重写摘要」「优化摘要」「摘要再优化下」。新做选题、起新标题、策划系列/内容日历、追热点都请走 aws-wechat-article-main；需要多环节串联（写+审+排+配图+发）也走 main。 homepage: https://aiworkskills.cn url: https://github.com/aiworkskills/wechat-article-skills metadata: openclaw: requires: env: [] bins: - python3 --- # 选题与标题 **公众号选题 & 爆款标题 AI 助手** —— 热点追踪、选题调研、起标题、写摘要、系列排期一次搞定。 > **套件说明** · 本 skill 属 `aws-wechat-article-*` 一条龙套件（共 9 个 slug，入口 `aws-wechat-article-main`）。跨 skill 的相对引用依赖同一 `skills/` 目录，建议一并 `clawhub install` 全套。源码：<https://github.com/aiworkskills/wechat-article-skills> ## 能力披露（Capabilities） 本 skill 主要由 Agent 驱动（对话式选题调研、标题生成），脚本层仅用于更新本篇元数据。 - **凭证**：无 - **网络**：Agent 可能使用 `web_search` / `web_fetch`（Claude Code 内置能力，非本 skill 脚本层发起） - **文件读**：仓库内 `.aws-article/config.yaml`、本篇 `article.yaml`、`.aws-article/products/{产品名}/*.md`（业务介绍 .md，直接挂在产品根；选题涉及用户业务时必读） - **文件写**：本篇目录下 `topic-card.md`、`research.md`；更新本篇 `article.yaml` - **shell**：可能调用同仓库的 `python3 {baseDir}/../aws-wechat-article-publish/scripts/article_init.py` ## 配套 skill（informational） 本 skill 是 `aws-wechat-article-*` 一条龙公众号套件的**选题环节**（入口 `aws-wechat-article-main`）。工作流中的若干步骤会读取同级 `../aws-wechat-article-main/references/*.md` 等共享文档（首次引导、env/config 示例等）。 - **套件完整装齐到同一 `skills/` 根目录**时，跨 skill 引用都能读到。 - **单独安装本 skill** 时，跨 skill 引用的步骤会在读取阶段遇到 `file not found`；本 skill 内的纯本地步骤仍可用。 完整 9 slug 清单见 [源码仓库](https://github.com/aiworkskills/wechat-article-skills)。 ## 路由 要成文并发到公众号、或「今天发什么」需整条编排时 → [aws-wechat-article-main](../aws-wechat-article-main/SKILL.md)。 通过调研生成高质量选题，支持单篇和系列。 ## 配置检查 ⛔ 任何操作执行前，**必须**按 **[首次引导](../aws-wechat-article-main/references/first-time-setup.md)** 执行其中的 **「检测顺序」**。检测通过后才能进行以下操作（或用户明确书面确认「本次不检查」）： ## 四种输入模式 根据用户输入自动识别模式： | 模式 | 触发条件 | 示例 | |------|---------|------| | **A. 明确选题** | 用户给了具体话题 | 「写一篇 AI Agent 的文章」 | | **B. 有方向** | 给了领域但没具体题目 | 「AI 最近有什么好写的」 | | **C. 无方向** | 只说要选题 | 「这周写什么」「帮我找几个选题」 | | **D. 系列策划** | 提到系列/专栏/连载 | 「做个 AI 入门系列」「写 10 篇专栏」 | ## 工作流 ``` 选题进度： - [ ] 第1步：配置检查（见本节「配置检查」） - [ ] 第2步：全局账号三键（`.aws-article/config.yaml` 的 `article_category` / `target_reader` / `default_author`）⛔ 与 [main](../aws-wechat-article-main/SKILL.md)「2) 全局账号约束」一致；缺则**问用户确认后**再写入，**禁止**从 `article.yaml` 擅自填充，**先于**方向确认与调研 - [ ] 第3步：确认是否已有选题或写作方向 ⛔ - [ ] 第4步：调研 - [ ] 第5步：生成选题 - [ ] 第6步：生成标题与大纲 - [ ] 第7步：展示并等待用户选择 ⛔ - [ ] 第8步：输出选题卡片（新建本篇目录时须具备或更新本篇 article.yaml） ``` ## 配置与本篇文件（`config.yaml` + `article.yaml`） - **全局**：**`.aws-article/config.yaml`** 含账号定位、`topic_direction`、`update_frequency`、`title_style`、文风等（模板 **`{baseDir}/../aws-wechat-article-main/references/config.example.yaml`**，字段见 [articlescreening-schema.md](../aws-wechat-article-main/references/articlescreening-schema.md)）。**本 skill 做选题前须能读到该文件**（或用户当次已等价说明）。 - **本篇**：**`{drafts_root}/YYYYMMDD-标题slug/article.yaml`** 含标题、作者、摘要、**`publish_completed`** 等（见 schema；可用 **`{baseDir}/../aws-wechat-article-publish/scripts/article_init.py`** 初始化/更新）。 - **总览一条龙**：[main](../aws-wechat-article-main/SKILL.md) 在「3) 本篇准备」中建目录并优先落 **`article.yaml`**，再进入选题；若目录已存在且含 **`article.yaml`**，**须先读**（与 **`config.yaml`** 一起）再产出 `topic-card.md` / `research.md`。 - **单独使用本 skill**：第 8 步若**新建**本篇目录，须在**同目录**创建或更新 **`article.yaml`**（至少 **`publish_completed: false`**，并尽量写入已定标题/摘要等），**不得**仅有 `topic-card.md` 就引导调用 **`write.py`** 却无任何本篇 YAML——**`write.py`** 依赖仓库 **`config.yaml`** 与本篇目录；本篇 **`article.yaml`** 可缺但推荐补齐以便元数据一致（见 [writing SKILL](../aws-wechat-article-writing/SKILL.md)）。 ### 第1步：环境检查 ⛔ 同本节 **「配置检查」**。 ### 第2步：全局账号约束（`.aws-article/config.yaml`）⛔ **在调用 `web_search`、调研或与用户确认选题方向之前**（环境校验已通过的前提下），打开 **`.aws-article/config.yaml`**，检查 **`article_category`**、**`target_reader`**、**`default_author`** 是否 **trim 后均非空**。任一项缺失：**逐项询问用户**，用户确认后再**写回该文件**；**禁止**从 **`article.yaml`** 等擅自抄录填充。与 [main](../aws-wechat-article-main/SKILL.md)「2) 全局账号约束」一致；**一条龙**下若 main 已在本轮完成本步，可**不再重复**。 ### 第3步：确认是否已有选题或写作方向 ⛔ **在调用 `web_search` / 调研之前**，先与用户对齐当前处于哪种情况（对应上文 **A/B/C/D**）： - **先问清**（可一句话）：是否**已经有**想写的具体主题、还是**只有**大致领域、**完全没想法**要帮找选题、或要做**系列/专栏**。 - 若用户**本条消息里已经说清楚**（例如直接给出话题或明确「这周帮我找几个选题」），可做**简短确认**，不必重复盘问。 - **总览一条龙** 且 main 已在「3) 本篇准备」中问清写作意图：本步**口头确认一句**即可，再进入第 4 步。 **禁止**：在用户仍处于「只说找选题、没说领域/偏好」等模糊状态时，**直接开始联网调研**。 确认后 → 归入 **A/B/C/D**，再进入 **第 4 步：调研**。 ### 第4步：调研 **须先读** **`.aws-article/config.yaml`**：选题边界、`topic_direction`、`update_frequency`、账号定位等以其为准。若本篇目录已存在 **`article.yaml`**（例如已定题），可一并读取已有 **`title` / `digest`** 等，避免与后序冲突。尚无本篇文件时，以用户当次说明与 skill 默认为准。 - 业务资料库：**若选题涉及用户自身业务（产品/软件/服务）**，先 `ls .aws-article/products/`，进入相关产品目录**必读**根下 `*.md`（业务介绍）寻找契合自家业务的选题角度；与业务无关的选题方向则不强求查阅 使用 `web_search` 搜索 + `web_fetch` 深入阅读，为选题提供数据支撑。 | 模式 | 调研目标 | |------|----------| | A | 竞品文章怎么写、数据支撑、独特角度 | | B | 该方向近期热点、读者关注什么 | | C | **`config.yaml`** 中的账号定位、`topic_direction` 与近期热点 | | D | 知识体系拆解、竞品系列分析、读者学习路径 | 各模式的搜索策略和搜索词模板：[references/research-strategy.md](references/research-strategy.md) ### 第5步：生成选题 基于调研结果。用 **`config.yaml` 的 `update_frequency`** 控制本批数量：周更约 3–5 个，日更可略多，月更可略少；无配置时按对话约定或 skill 默认。 | 模式 | 生成规则 | |------|----------| | A | 围绕用户主题，提供 3-4 个不同切入角度 | | B/C | 筛选 3-5 个选题，标注类型（🔥热点 / 🌲常青 / 📚系列） | | D | 规划系列总线 + 拆出每篇选题 | ### 第6步：生成标题与大纲 为每个选题生成完整的「选题卡片」：标题候选（3-5 个，混合风格）、切入角度、大纲预览、工作量评估、摘要候选。 **标题风格**：按优先级加载： 1. 用户指定（「用反问型」） 2. **`config.yaml`** 的 **`title_style`** / **`custom_title_style`** > **`default_title_style`**（若有；**须为 YAML 列表**；多候选时须按选题择一并写回本篇 **`article.yaml`** 同键为**单元素列表**；`custom_*` 非空时优先于 `default_*`） 3. `.aws-article/presets/title-styles/` 下的自定义风格 4. **fallback**：内置 5 种风格（悬念/干货/数字/反问/故事）混合生成，详见 [references/title-presets.md](references/title-presets.md) 输出模板：[references/output-format.md](references/output-format.md) ### 第7步：展示并等待用户选择 ⛔ **⚠️ 必须停下来等用户操作，不要自作主张继续。** 展示所有选题卡片后，提示用户： ``` 请选择： - 输入编号（如 1）→ 选定该选题 - 「调整 + 意见」→ 按意见修改后重新展示 - 「重新选」→ 换一批选题 - 「组合 1+3」→ 融合多个选题 - 系列模式：「先写第 N 篇」→ 按该篇进入写稿 ``` **禁止的行为**： - ❌ 不等用户选择就继续写稿 - ❌ 假设用户会选某个选题 - ❌ 跳过展示直接进入下一步 ### 第8步：输出选题卡片 用户确认后： 1. **文章目录**：若 **main** 已创建本篇目录且内含 **`article.yaml`**，**不要改目录名**，直接在该目录写入；否则创建 `{drafts_root}/{YYYYMMDD}-{标题slug}/`（**`drafts_root`** / **`series_root`** 以 **`config.yaml`** 为准，无则与 [main SKILL](../aws-wechat-article-main/SKILL.md) 及仓库惯例一致）。 2. 将选题卡片保存为 **`topic-card.md`** 3. 将调研摘要保存为 **`research.md`** 4. 系列模式：将系列规划保存到 `{series_root}/{系列slug}/plan.md` 5. **`article.yaml`**：同目录**若无**或需更新已定题信息，**须在本步创建或补全**（**`publish_completed: false`**；标题、摘要等与用户选定一致时可写入）。推荐：`python {baseDir}/../aws-wechat-article-publish/scripts/article_init.py <本篇目录> --title "…" --digest "…"` 等。**总览一条龙**下 main 若已初始化，则**合并更新**缺失键即可。 → 交给 **aws-wechat-article-writing**。须已具备 **`.aws-article/config.yaml`**（仓库根相对路径）；本篇目录建议已有 **`article.yaml`**（见 [writing SKILL](../aws-wechat-article-writing/SKILL.md)）。 ## 过程文件 | 文件 | 说明 | |------|------| | **`.aws-article/config.yaml`** | 全局账号与选题/文风约束；选题全程以之为准 | | **`article.yaml`** | 本篇元数据与 **`publish_completed`**；新建本篇须 **`false`**；单独 topics 须在目录内创建或更新 | | **`topic-card.md`** | 选题卡片（标题、摘要、角度、大纲） | | **`research.md`** | 调研摘要（搜索发现、竞品分析、数据点） | ## `article.yaml` 与文末推荐链接（智能体） 全局 **`.aws-article/config.yaml` 一般不修改**；`embeds.related_articles` 若在全局已配置 `manual`，各篇可用同一套 `{embed:link:名称}`。若全局未配或希望**每篇不同推荐**： 1. **本篇** `article.yaml` 中只增加 **`embeds.related_articles.manual`**（`name` + `url` 列表）；**不要**在本篇写名片/小程序（仍以全局为准）。 2. 排版时 **`format.py` 仅将本篇的 `embeds.related_articles` 与全局同名块深度合并**。 3. **智能体自动获取推荐**（全局 `manual` 为空或本篇需要单独列表时）：运行 `python {baseDir}/../aws-wechat-article-publish/scripts/getdraft.py published-fields` 得到已发布正式文章的 `title` / `digest` / `url`，结合当前篇主题**挑选最多 3 条**，写入**本篇** `article.yaml` 的 `embeds.related_articles.manual`，并在 **`article.md`** 文末使用 `{embed:link:名称}`，`name` 与 `manual` 中一致。 4. 定稿前确认文末 `{embed:link:…}` 与合并后的 **`related_articles`** 一致（参见 [review SKILL](../aws-wechat-article-review/SKILL.md) 定稿说明）。

path: references/output-format.md
content: # 选题输出模板

## 单篇选题卡片

每个选题使用以下格式输出：

```markdown
### 选题 N：[选题名称]  [类型标签]
> 一句话说明切入角度与目标读者痛点

**切入角度**：
为什么这个角度值得写。竞品怎么写的，你的差异化在哪。

**标题候选：**
1.【干货型】...
2.【悬念型】...
3.【数字型】...
4.【反问型】...

**大纲预览**（预计 XXXX 字）：
1. 开头（300字）：[开头方式与内容概要]
2. [小标题一]（800字）：[段落主旨]
3. [小标题二]（800字）：[段落主旨]
4. [小标题三]（600字）：[段落主旨]
5. 结尾（300字）：[结尾方式]

**工作量**：⭐⭐⭐（预计 X 小时）
**需要额外素材**：是/否（如需要，说明）

**摘要候选：**
1. ...（XX字）
2. ...（XX字）
```

### 类型标签

- 🔥 热点型
- 🌲 常青型
- 📚 系列型

---

## 模式 A 输出（明确选题）

用户给了具体话题，输出 3-4 个不同角度的选题卡片：

```markdown
## 选题调研：[用户给的话题]

### 调研发现
- 竞品角度：...
- 关键数据：...
- 读者痛点：...
- 差异化机会：...

---

### 角度 1：[选题卡片]
### 角度 2：[选题卡片]
### 角度 3：[选题卡片]

---

请选择：输入编号选定 / 「调整」修改 / 「组合」融合多个角度
```

---

## 模式 B/C 输出（有方向 / 无方向）

输出 3-5 个选题卡片：

```markdown
## 选题推荐

基于「{方向/领域}」的调研，推荐以下选题：

### 选题 1：[选题卡片] 🔥
### 选题 2：[选题卡片] 🌲
### 选题 3：[选题卡片] 🔥
### 选题 4：[选题卡片] 🌲
### 选题 5：[选题卡片] 📚

---

请选择：输入编号选定 / 「调整」修改 / 「重新选」换一批 / 「组合 1+3」融合
```

---

## 模式 D 输出（系列策划）

先输出系列总览，再输出每篇选题卡片：

```markdown
## 系列规划：[系列名称]（共 N 篇）

**系列定位**：一句话说明系列整体价值
**目标读者**：...
**发布节奏**：每周 X 篇 / 每周 X、X 发布
**系列逻辑**：[拆分逻辑说明，如：由浅入深——认知→工具→实操→进阶]

### 系列总览

| 篇数 | 主题 | 类型 | 关键词 |
|------|------|------|--------|
| 第1篇 | [主题] | 认知篇 | ... |
| 第2篇 | [主题] | 工具篇 | ... |
| 第3篇 | [主题] | 实操篇 | ... |
| ... | | | |

---

### 第1篇：[选题卡片]
### 第2篇：[选题卡片]
### 第3篇：[选题卡片]
...

---

请选择：「先写第 N 篇」进入写稿 / 「调整」修改系列规划 / 「重新规划」
```

---

## 用户选择后的输出

用户确认选题后，输出精简版选题卡片作为交接物：

```markdown
## ✅ 已确认选题

**标题**：[用户选定的标题]
**摘要**：[用户选定的摘要]
**切入角度**：[一句话]
**大纲**：
1. ...
2. ...
3. ...
4. ...
5. ...
**预计字数**：XXXX 字

→ 下一步：交给 aws-wechat-article-writing 写稿
```

系列模式额外输出：

```markdown
**所属系列**：[系列名称] 第 N / 总 M 篇
**系列规划已保存到**：[drafts_root]/[系列名称]-规划.md
```

---

## 贴图选题卡片

当用户需要贴图/多图推送时，输出贴图专用格式：

```markdown
## ✅ 已确认贴图选题

**主题**：[贴图主题]
**张数**：N 张
**叙事线**：[叙事逻辑，如：场景递进/知识点递进/对比展示]
**调性**：[轻松/专业/趣味/温暖]

| 序号 | 图片概念 | 配文 |
|------|---------|------|
| 1 | [画面内容概要] | 「配文内容」 |
| 2 | [画面内容概要] | 「配文内容」 |
| ... | | |

→ 下一步：交给 aws-wechat-sticker 创作
```

贴图选题的调研重点不同于长文：
- 搜索同主题的热门贴图/轮播图作为参考
- 关注视觉叙事逻辑而非文字大纲
- 配文要短（通常 1-2 句）


path: references/research-strategy.md
content: # 调研策略

各模式的调研方法、搜索词模板和深入阅读策略。

## 模式 A：明确选题

用户已给具体话题，调研目的是「这个题怎么写得好」。

### 搜索策略

执行 3 轮搜索：

**第1轮：竞品文章**
```
web_search("{选题} 公众号文章")
web_search("{选题} 深度解析")
```

**第2轮：数据与观点**
```
web_search("{选题} 数据报告 2025")
web_search("{选题} 行业趋势")
```

**第3轮：读者视角**
```
web_search("{选题} 知乎 热门回答")
web_search("{选题} 常见问题 痛点")
```

### 深入阅读

从搜索结果中选 2-3 篇高质量文章，用 `web_fetch` 读取全文，提取：
- 文章结构和切入角度
- 核心论点和数据
- 评论区热议点（如有）
- 该文章的不足（= 你的差异化机会）

### 产出

```
调研摘要：
- 竞品角度：[列出 2-3 篇竞品的切入角度]
- 关键数据：[可引用的数据点]
- 读者痛点：[知乎/评论区的高频问题]
- 差异化机会：[竞品没覆盖或写得不好的角度]
```

---

## 模式 B：有方向无选题

用户给了领域，调研目的是「这个方向最近有什么值得写」。

### 搜索策略

**第1轮：热点搜索**
```
web_search("{方向} 最新热点 {当前月份}")
web_search("{方向} 公众号 爆款文章")
```

**第2轮：趋势挖掘**
```
web_search("{方向} 趋势 变化 2025")
web_search("{方向} {target_reader} 关注什么")
```

### 深入阅读

对搜索到的热点，用 `web_fetch` 读 1-2 篇确认话题价值：
- 话题是否有足够信息量撑起一篇文章
- 是否已被写烂（如果是 → 需要找差异化角度）
- 时效性如何（纯新闻热点 vs 可延伸的趋势）

### 筛选标准

从调研结果中筛选选题，优先级：
1. 🔥 **热点型**：近 7 天热度高，时效性强
2. 🌲 **常青型**：长期有价值，搜索量稳定
3. 📚 **系列型**：可拆为多篇的大主题

---

## 模式 C：完全无方向

与模式 B 相同，搜索词中用 **`config.yaml`**（无则用户当次说明）中的 `article_category` 和 `topic_direction` 替代用户方向：

```
web_search("{article_category} 公众号 热点选题 {当前月份}")
web_search("{article_category} {target_reader} 最关心的话题")
web_search("{topic_direction} 最新动态")
```

---

## 模式 D：系列策划

调研目的是「这个主题怎么拆成系列」。

### 搜索策略

**第1轮：知识体系**
```
web_search("{系列主题} 从入门到精通")
web_search("{系列主题} 学习路线 知识体系")
```

**第2轮：竞品系列**
```
web_search("{系列主题} 系列文章 公众号")
web_search("{系列主题} 专栏 目录")
```

**第3轮：读者需求分层**
```
web_search("{系列主题} 初学者 常见问题")
web_search("{系列主题} 进阶 难点")
```

### 深入阅读

用 `web_fetch` 读 1-2 个竞品系列的目录页或汇总页，分析：
- 分篇逻辑（按难度？按场景？按时间线？）
- 每篇的主题和侧重
- 哪些篇目反响好（标题/阅读量线索）
- 缺失的内容（= 你的补充机会）

### 系列拆分策略

| 拆分逻辑 | 适用场景 | 示例 |
|---------|---------|------|
| 由浅入深 | 教程/入门 | 概念→工具→实操→进阶 |
| 按场景 | 实战/应用 | 场景A→场景B→场景C |
| 按时间线 | 趋势/历史 | 过去→现在→未来 |
| 按角色 | 职场/团队 | 新手→骨干→管理者 |
| 按问题 | 痛点/FAQ | 问题1→问题2→问题3 |

---

## 通用规则

- 每个模式的 `web_search` 调用控制在 4-6 次，避免过度搜索
- `web_fetch` 只读最有价值的 2-3 篇，不要贪多
- 调研结果简洁记录，不需要全文转述，只提取对选题有用的信息
- 如果搜索结果不理想，换关键词重试一次，不要硬凑


path: references/title-presets.md
content: # 标题风格预设

根据配置 `title_style` 或用户指定，选择对应风格生成标题。每个选题建议混合 3-5 种风格供选择。

## 风格一览

| 风格 | 特点 | 适用场景 |
|------|------|---------|
| 悬念型 | 制造信息差或认知冲突，激发好奇心 | 经验分享、反常识内容 |
| 干货型 | 直接给结论、承诺价值 | 教程、方法论、工具推荐 |
| 数字型 | 用数字增强可信度和具体感 | 清单、技巧汇总、数据型 |
| 反问型 | 用问句引发思考，制造共鸣 | 痛点型、观点型 |
| 故事型 | 场景感或故事开头，拉近距离 | 个人经历、案例分析 |

## 各风格示例

### 悬念型
- 我在 XX 行业干了 5 年，才发现这个真相
- 为什么大厂都在用这个方法？答案出乎意料
- 别再这样做 XX 了，你可能一直都做错了

### 干货型
- XX 入门指南：从零开始的 3 个关键步骤
- 一文讲透 XX 的底层逻辑
- 手把手教你用 XX 提效 200%

### 数字型
- 5 个让你少走弯路的 XX 技巧
- 3 分钟学会 XX，效率提升 10 倍
- 2025 年最值得关注的 8 个 XX 趋势

### 反问型
- 你还在用老方法做 XX？难怪效率这么低
- 为什么你的 XX 总是做不好？
- XX 真的有用吗？看完这篇你就懂了

### 故事型
- 从月薪 5000 到年薪百万，我只做对了这件事
- 那个用 XX 逆袭的同事，后来怎么样了
- 我花了 3 年试错，总结出这套 XX 方法论

## 禁用套路

以配置 `forbidden_title_phrases` 为准，常见禁用项：
- 浅谈、万字长文、建议收藏、震惊、不转不是中国人
- UC 震惊体、过度夸张的承诺


path: skill.json
content: {
  "name": "aws-wechat-article-topics",
  "version": "0.2.0",
  "author": "aiworkskills",
  "description": "为公众号找选题、起标题、写摘要，支持热点调研和系列策划。",
  "license": "MIT",
  "homepage": "https://github.com/aiworkskills/wechat-article-skills",
  "tags": ["wechat", "公众号", "topics", "research"],
  "permissions": ["filesystem", "network"],
  "entryPoint": {
    "type": "natural",
    "path": "SKILL.md"
  }
}


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