aws-wechat-article-topics · diff
git:20260911.1a7fdc6 to git:20260911.8ff5532
54 added, 90 removed. Audit A to A.
---
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 驱动(对话式选题调研、标题生成),脚本层仅用于更新本篇元数据。
+ 本 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**:可能调用同仓库的 `{python} {baseDir}/../aws-wechat-article-publish/scripts/article_init.py`(`{python}` = 本机 Python 3 解释器,见 [首次引导「检测顺序」](../aws-wechat-article-main/references/first-time-setup.md):Windows 用 `py -3 -X utf8`,macOS / Linux 用 `python3`)
-
- ## 配套 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)。
+ - **网络**:Agent 可能使用 `web_search` / `web_fetch`(宿主内置能力,非本 skill 脚本层发起)。**本 skill 不调任何需要凭证的接口**——查已发布文章要微信凭证,那是 [publish](../aws-wechat-article-publish/SKILL.md) 的事
+ - **文件读**:`.aws-article/config.yaml`、本篇 `article.yaml`、`.aws-article/products/{产品名}/*.md`(选题涉及用户业务时必读)
+ - **文件写**:本篇目录下 `topic-card.md`、`research.md`、`article.yaml`;系列模式下 `{series_root}/{系列slug}/plan.md`
+ - **shell**:只可能调 `{python} {baseDir}/../aws-wechat-article-publish/scripts/article_init.py`(纯本地写 YAML,不联网)
## 路由
- 要成文并发到公众号、或「今天发什么」需整条编排时 → [aws-wechat-article-main](../aws-wechat-article-main/SKILL.md)。
-
- 通过调研生成高质量选题,支持单篇和系列。
+ 要成文并发到公众号、或「今天发什么」需整条编排 → [aws-wechat-article-main](../aws-wechat-article-main/SKILL.md)。本 skill 单独触发仅限**已有标题/摘要的修改**。
## 配置检查 ⛔
- 任何操作执行前,**必须**按 **[首次引导](../aws-wechat-article-main/references/first-time-setup.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步:确认是否已有选题或写作方向 ⛔
+ - [ ] 第1步:⛔ 配置检查
+ - [ ] 第2步:⛔ 全局账号三键
+ - [ ] 第3步:⛔ 归类 A/B/C/D(先于任何联网调研)
- [ ] 第4步:调研
- [ ] 第5步:生成选题
- [ ] 第6步:生成标题与大纲
- - [ ] 第7步:展示并等待用户选择 ⛔
- - [ ] 第8步:输出选题卡片(新建本篇目录时须具备或更新本篇 article.yaml)
+ - [ ] 第7步:⛔ 展示并等用户选
+ - [ ] 第8步:落盘(topic-card.md + research.md + 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步:环境检查 ⛔
-
- 同本节 **「配置检查」**。
+ 一条龙下哪几步可以省、单独使用时要补什么,见 [branches.md「一」](references/branches.md)。
- ### 第2步:全局账号约束(`.aws-article/config.yaml`)⛔
+ ### 第2步:全局账号三键 ⛔
- **在调用 `web_search`、调研或与用户确认选题方向之前**(环境校验已通过的前提下),打开 **`.aws-article/config.yaml`**,检查 **`article_category`**、**`target_reader`**、**`default_author`** 是否 **trim 后均非空**。任一项缺失:**逐项询问用户**,用户确认后再**写回该文件**;**禁止**从 **`article.yaml`** 等擅自抄录填充。与 [main](../aws-wechat-article-main/SKILL.md)「2) 全局账号约束」一致;**一条龙**下若 main 已在本轮完成本步,可**不再重复**。
+ **在调用 `web_search`、调研或与用户确认方向之前**,打开 `.aws-article/config.yaml`,检查 `article_category`、`target_reader`、`default_author` 是否 **trim 后均非空**。任一项缺失:**逐项询问用户**,取得当轮明确答复后**写回该文件**。
- ### 第3步:确认是否已有选题或写作方向 ⛔
+ **禁止**从 `article.yaml` 或其它草稿擅自抄录填充。与 [main「2) 全局账号约束」](../aws-wechat-article-main/SKILL.md) 一致。
- **在调用 `web_search` / 调研之前**,先与用户对齐当前处于哪种情况(对应上文 **A/B/C/D**):
+ ### 第3步:归类 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 默认为准。
+ **先读 `.aws-article/config.yaml`**:选题边界、`topic_direction`、`update_frequency`、账号定位以它为准。本篇目录已有 `article.yaml`(例如已定题)时一并读 `title` / `digest`,避免与后序冲突。
- - 业务资料库:**若选题涉及用户自身业务(产品/软件/服务)**,先 `ls .aws-article/products/`,进入相关产品目录**必读**根下 `*.md`(业务介绍)寻找契合自家业务的选题角度;与业务无关的选题方向则不强求查阅
+ 选题涉及用户自身业务时须读业务资料库,口径见 [branches.md「三」](references/branches.md)。
- 使用 `web_search` 搜索 + `web_fetch` 深入阅读,为选题提供数据支撑。
+ 用 `web_search` 搜 + `web_fetch` 深读,为选题提供数据支撑:
| 模式 | 调研目标 |
|------|----------|
| A | 竞品文章怎么写、数据支撑、独特角度 |
| B | 该方向近期热点、读者关注什么 |
- | C | **`config.yaml`** 中的账号定位、`topic_direction` 与近期热点 |
+ | C | `config.yaml` 的账号定位、`topic_direction` 与近期热点 |
| D | 知识体系拆解、竞品系列分析、读者学习路径 |
- 各模式的搜索策略和搜索词模板:[references/research-strategy.md](references/research-strategy.md)
+ 各模式的搜索策略与搜索词模板见 [references/research-strategy.md](references/research-strategy.md)。
### 第5步:生成选题
- 基于调研结果。用 **`config.yaml` 的 `update_frequency`** 控制本批数量:周更约 3–5 个,日更可略多,月更可略少;无配置时按对话约定或 skill 默认。
+ 数量用 `config.yaml` 的 `update_frequency` 控制:周更约 3–5 个,日更略多,月更略少;无配置时按对话约定。
| 模式 | 生成规则 |
|------|----------|
- | A | 围绕用户主题,提供 3-4 个不同切入角度 |
- | B/C | 筛选 3-5 个选题,标注类型(🔥热点 / 🌲常青 / 📚系列) |
- | D | 规划系列总线 + 拆出每篇选题 |
+ | A | 围绕用户主题,给 3-4 个不同切入角度 |
+ | B/C | 筛 3-5 个选题,标类型(🔥热点 / 🌲常青 / 📚系列) |
+ | D | 规划系列总线 + 拆出每篇选题(见 [branches.md「四」](references/branches.md)) |
### 第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)
+ 每个选题出一张**选题卡片**:标题候选(3-5 个,混合风格)、切入角度、大纲预览、工作量评估、摘要候选。输出模板见 [references/output-format.md](references/output-format.md)。
- 输出模板:[references/output-format.md](references/output-format.md)
+ **标题风格**的加载优先级与多候选收敛规则见 [branches.md「二」](references/branches.md);内置 5 种风格(悬念/干货/数字/反问/故事)见 [references/title-presets.md](references/title-presets.md)。
- ### 第7步:展示并等待用户选择 ⛔
+ **摘要候选**要能独立成立:它会进 `article.yaml` 的 `digest`,显示在后台文章列表里。**别写成正文开头那段的复述**——正文首个 `>` 导语是另一段文字,两者逐字相同的话读者等于同一段读两遍([review](../aws-wechat-article-review/SKILL.md) 会拦这一条)。
- **⚠️ 必须停下来等用户操作,不要自作主张继续。**
+ ### 第7步:展示并等用户选 ⛔
- 展示所有选题卡片后,提示用户:
+ **必须停下来等用户操作。** 展示所有选题卡片后提示:
```
请选择:
- 输入编号(如 1)→ 选定该选题
- 「调整 + 意见」→ 按意见修改后重新展示
- 「重新选」→ 换一批选题
- 「组合 1+3」→ 融合多个选题
- 系列模式:「先写第 N 篇」→ 按该篇进入写稿
```
- **禁止的行为**:
- - ❌ 不等用户选择就继续写稿
- - ❌ 假设用户会选某个选题
- - ❌ 跳过展示直接进入下一步
+ **禁止**:不等用户选就继续写稿;假设用户会选某一个;跳过展示直接进下一步。
- ### 第8步:输出选题卡片
+ ### 第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 若已初始化,则**合并更新**缺失键即可。
+ 1. **文章目录**:main 已建好目录且内含 `article.yaml` → **不要改目录名**,直接往里写。否则创建 `{drafts_root}/{YYYYMMDD}-{标题slug}/`(`drafts_root` / `series_root` 以 `config.yaml` 为准)。
+ 2. 选题卡片 → `topic-card.md`
+ 3. 调研摘要 → `research.md`
+ 4. 系列模式:系列规划 → `{series_root}/{系列slug}/plan.md`
+ 5. **`article.yaml`**:同目录若无、或已定题信息需更新,**本步必须创建或补全**(`publish_completed: false`;标题、摘要与用户选定一致时写入):
- → 交给 **aws-wechat-article-writing**。须已具备 **`.aws-article/config.yaml`**(仓库根相对路径);本篇目录建议已有 **`article.yaml`**(见 [writing SKILL](../aws-wechat-article-writing/SKILL.md))。
+ ```bash
+ {python} {baseDir}/../aws-wechat-article-publish/scripts/article_init.py <本篇目录> --title "…" --digest "…"
+ ```
- ## 过程文件
+ → 交给 [aws-wechat-article-writing](../aws-wechat-article-writing/SKILL.md)。须已具备 `.aws-article/config.yaml`,本篇目录建议已有 `article.yaml`。
- | 文件 | 说明 |
- |------|------|
- | **`.aws-article/config.yaml`** | 全局账号与选题/文风约束;选题全程以之为准 |
- | **`article.yaml`** | 本篇元数据与 **`publish_completed`**;新建本篇须 **`false`**;单独 topics 须在目录内创建或更新 |
- | **`topic-card.md`** | 选题卡片(标题、摘要、角度、大纲) |
- | **`research.md`** | 调研摘要(搜索发现、竞品分析、数据点) |
+ ## 分支与细则
- ## `article.yaml` 与文末推荐链接(智能体)
+ 一条龙 vs 单独使用、预设候选池收敛、业务资料库、系列策划、文末推荐链接归谁做 → [references/branches.md](references/branches.md)。
- 全局 **`.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) 定稿说明)。
+ | 文件 | 说明 |
+ |------|------|
+ | `.aws-article/config.yaml` | 全局账号与选题/文风约束;选题全程以之为准 |
+ | `article.yaml` | 本篇元数据与 `publish_completed`;新建本篇须 `false` |
+ | `topic-card.md` | 选题卡片(标题、摘要、角度、大纲) |
+ | `research.md` | 调研摘要(搜索发现、竞品分析、数据点) |