# Tech Article Creator

> 技术文章全流程创作：选题→大纲→素材收集→大纲评审→Agent Team双版本写作与内部评审→外部终稿评审→人工终审→配图→排版→发布。 触发短语："写一篇技术文章"、"技术写作"、"写篇教程"、"写个技术分享"、"本周选题"、"博文选题"、"文章大纲"、"帮我写blog"、"文章评审"、"收集素材"、"长文写作"、"写篇文档"、"内容创作流程"。 也适用于提到具体平台的场景（如"公众号文章"、"知识星球文章"、"写篇newsletter"），会根据配置适配目标平台。 即使用户只提到某个阶段（如"帮我选题"或"评审一下大纲"），也应触发本 skill 并定位到对应阶段。

- Skill: `deletexiumu/tech-article-creator` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add deletexiumu/tech-article-creator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/deletexiumu/tech-article-creator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: deletexiumu (https://skillmd.com/u/deletexiumu)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/deletexiumu/tech-article-creator

---


# 技术文章全流程创作

从选题到发布的生产管线。每个阶段有明确输入、产出和质量门禁。支持从任意阶段切入。

## 配置

本 skill 通过 `config.yaml` 管理所有可配置项。配置文件位置：

- **模板文件**：`{skill_dir}/config.yaml`（本 skill 目录下，包含完整注释和默认值）
- **运行时配置**：`{root_dir}/.tech-article-creator.yaml`（文章根目录下的实际配置）

### 配置加载流程

每次启动时：
1. 检查 `{root_dir}/.tech-article-creator.yaml` 是否存在
2. **存在** → 直接读取，进入对应阶段
3. **不存在** → 进入首次配置引导

### 首次配置引导

从模板文件复制一份到运行时路径，然后通过交互引导用户填写核心配置。每个配置项提供默认选项，用户可直接接受默认值。

**[交互] AskUserQuestion**：依次确认以下核心配置（一次只问一个）：

1. **文章根目录**：从工作目录推断候选路径，让用户确认或指定
   - 默认：当前工作目录
2. **版本策略**：单版本 / 双版本 / 自定义
   - 默认：双版本（技术深度版 + 通俗故事版）
3. **外部评审**：是否启用外部模型评审，如启用则确认可用模型
   - 默认：不启用（仅用 Agent Team 内部评审）
4. **发布平台**：仅本地 / 博客 / 微信公众号 / 社交媒体（可多选）
   - 默认：仅本地（只生成 markdown 文件）

用户确认后将选择写入 `{root_dir}/.tech-article-creator.yaml`。后续使用直接读取，不再重复询问。用户可随时手动编辑该文件调整配置。

### 目录结构

根据 `config.yaml` 中的模板生成：

```
{root_dir}/
├── {topics_dir}/                     # 选题文件
├── {compliance.rules_file}           # 平台合规规范（如配置）
├── {article_dir}/                    # 单篇文章目录（按模板生成）
│   ├── 大纲.md                       # 含版本标注
│   ├── 原始素材/                      # 素材 + 评审意见
│   ├── {image.output_dir}/           # 配图（如启用）
│   ├── {variant.file_prefix}{标题}.md # 每个版本一个文件
│   └── *.html                        # 排版产物（如需要）
```

## 阶段总览

| # | 阶段 | 产出 | 门禁 | 条件 | 推进方式 |
|---|------|------|------|------|---------|
| 1 | 选题 | 选题推荐（含优先级） | 用户选择 | 始终 | **等用户选择** |
| 2 | 大纲 | 大纲.md + 文章目录 | 版本标注完整 | 始终 | 自动推进→3 |
| 3 | 素材收集 | 原始素材/*.md | 覆盖大纲所有章节 | 始终 | 自动推进→4 |
| 4 | 大纲评审 | 评审意见 → 更新大纲 | 采纳后大纲定稿 | `review.models` 非空 | 自动推进→5 |
| 5 | 写作+内部评审 | 各版本文章（评审通过） | Agent Team 迭代通过 | 始终 | 自动推进→5.5 |
| 5.5 | 标题定稿 | 各版本最终标题 | 用户选定 | 始终 | **等用户选择** |
| 6 | 外部终稿评审 | 外部评审通过 | 多轮迭代通过 | `review.models` 非空 | 自动推进→7 |
| 7 | 人工终审 | 用户确认终稿 | 用户 approve | 始终 | **等用户确认** |
| 8 | 配图 | 封面图 + 示意图 | 图片齐全 | `image.enabled` | 自动推进→9 |
| 9 | 排版/发布 | 各平台产物 | 发布完成 | `publish.platforms` 非空 | 完成 |

### 推进规则

- **自动推进**：阶段完成后直接进入下一阶段，不等用户说"继续"
- **等用户选择/确认**：仅在阶段 1（选题）、5.5（标题）、7（人工终审）停下来等用户
- **所有交互一律用 AskUserQuestion 的 options**：给选项让用户选，不要让用户打字描述。如果确实需要自由输入，在 options 中加一个"自定义"选项

---

## 阶段 1：选题

1. **扫描已有文章**：读取根目录下已有文章目录，提取系列脉络
2. **采集热点源**：WebSearch 查询近期技术热点
3. **交叉分析**：已有文章 × 热点 → 系列缺口 / 热点卡位 / 长尾价值
4. **输出 3-5 个选题**：每个含标题、热点依据、衔接关系、核心内容
5. **保存**到 `{topics_dir}/week{N}-{日期}.md`

**[交互] AskUserQuestion（options）**：将 3-5 个选题作为选项展示，用户选择一个。选项中包含标题和一句话核心内容。用户可选"自定义选题"输入自己的想法。确认后确定文章序号（如启用）和标题。

---

## 阶段 2：大纲

1. 按 `config.yaml` 中的 `article_dir_template` 创建文章目录（含 `原始素材/`）
2. 撰写大纲.md：元信息 + 各章节结构 + **每节标注版本归属** + 素材清单 + 配图清单

**多版本核心差异**——大纲阶段就要规划。根据 `config.yaml` 中 `variants` 的定义，为每个版本规划差异化内容。

详细写作规范见 `references/dual-version-writing-guide.md`。

---

## 阶段 3：素材收集（自动推进）

> **本阶段自动执行，不等用户确认。** 大纲完成后直接启动素材收集。

启动**并行 subagent** 按主题分工收集（如运行时不支持 subagent 则串行执行），典型分组：
- 个人实战素材（真实案例、配置、工作流）
- 工具/技术素材（功能、对比、配置方式）
- 行业趋势素材（热点新闻、定价、论文）

每个 subagent 产出 `原始素材/{分类}素材.md`，含原始内容和来源标注。收集完检查：每个大纲章节是否都有素材支撑。

素材收集完成后，输出覆盖情况表（章节 × 素材来源），然后**自动进入阶段 4**。

详细指南见 `references/material-collection-guide.md`。

---

## 阶段 4：大纲评审（自动推进）

> 仅在 `config.yaml` 的 `review.models` 配置了评审模型时执行。未配置则跳过此阶段，直接进入阶段 5。
> **本阶段自动执行。** 素材收集完成后直接发起评审。

将**大纲 + 全部素材文件路径**发送给配置的评审模型。不发摘要——让评审模型读完整文件。

每个评审模型按其配置的 `role` 侧重不同维度。评审结果保存到 `原始素材/评审意见-{模型名}.md`。

**评审意见处理规则（自动采纳 + 展示）：**
- **高严重度**：自动采纳并更新大纲，向用户展示修改内容
- **中严重度**：自动采纳并更新大纲，向用户展示修改内容
- **低严重度**：展示给用户但不自动采纳（可忽略）
- 汇总评审发现（表格 + 严重度 + 采纳状态），向用户展示后**自动进入阶段 5**
- 如有争议性问题（评审模型之间意见冲突），用 **AskUserQuestion（options）** 让用户选择采纳哪方

限流处理：限流时用 **AskUserQuestion（options）** 让用户选择"等待重试 / 降级模型 / 跳过评审"。

详细模板见 `references/review-prompt-templates.md`。

---

## 阶段 5：写作 + 内部评审（Agent Team，自动推进）

> **本阶段自动执行。** 大纲评审完成后直接启动写作团队，内部评审迭代通过后自动进入阶段 5.5。

这是核心阶段，使用 **Agent Team** 实现并行写作和多轮迭代评审。

如 `writing_team.parallel` 为 false 或运行时不支持 subagent，改为串行模式：依次完成每个版本的写作和评审。

### Team 编制

根据 `config.yaml` 中的 `variants` 和 `writing_team.reviewers` 动态组建：
- 每个 variant 分配一个 **writer**
- 按 `writing_team.reviewers` 配置分配 **reviewer**

### 执行流程

1. **创建 Team**，设置任务依赖：评审任务 blocked by 写作任务
2. **Writer 并行写作**：各 writer 读取大纲（注意版本标注）和素材
3. **补充规范**：如配置了 `compliance.rules_file`，发给相关 writer 和 reviewer
4. **初稿完成** → reviewer 开始评审
5. **迭代循环**：
   - reviewer 读取文章，输出评审意见（问题列表 + 严重度），发给对应 writer
   - writer 修改后通知 reviewer 再审
   - **迭代直到所有 reviewer 都认为通过**（无高/中严重度问题）
6. **Team 解散**：所有任务 completed 后，shutdown 所有 teammate

### Writer Prompt 要点

- 必须读完大纲和所有素材再动笔
- 按 `config.yaml` 中该 variant 的 `style`、`word_count`、`target_audience` 写作
- 不要 AI 味（"值得注意的是"、过度排比、空洞连接词）
- 案例脱敏：遵循 `compliance.redaction_strategy`

### Reviewer Prompt 要点

按 `writing_team.reviewers` 中配置的 `focus` 评审。通用评审维度包括：
- 事实准确性、数据口径一致性
- 代码可执行性（技术版）
- AI 痕迹检测
- 版本间差异化是否到位（不是简单删减）
- 可读性、段落长度适配目标读者
- 合规检查（如有 compliance 配置）

详细写作模板见 `references/dual-version-writing-guide.md`。

---

## 阶段 5.5：标题定稿

Agent Team 内部评审通过后、外部终稿评审之前，确定各版本的最终标题。

### 流程

1. 基于各版本终稿内容，为每个版本生成 4-5 个标题备选
2. **[交互] AskUserQuestion（options）**：每个版本单独一个问题，标题备选作为选项展示（含 preview 预览标题效果）。用户可选"自定义标题"输入自己的
3. 用户选定后更新文件标题和文件名

### 标题规则

根据版本特性生成标题。参考公式见 `references/dual-version-writing-guide.md`。

---

## 阶段 6：外部终稿评审（自动推进）

> 仅在 `config.yaml` 的 `review.models` 配置了评审模型时执行。未配置则跳过此阶段。
> **本阶段自动执行。** 标题定稿后直接发起外部评审，评审通过后自动进入阶段 7。

### 流程

1. 将各版本终稿文件路径发给配置的评审模型（尽量并行）
2. 评审维度与阶段 4 类似，但针对完整正文而非大纲
3. 收到评审意见后修改文章
4. **多轮迭代**：修改后附"已修改项"清单再发评审，方便 reviewer 聚焦变更点
5. 迭代直到所有模型都输出"终稿审查通过"
6. 通知用户进入人工终审

### 常见问题类型（按历史经验排序）

1. **数据口径不一致**：不同版本引用同一数据但表述不同
2. **配置步骤错误**：描述与实际操作不符
3. **产品命名不精确**：缩写或版本号不准确
4. **来源标注缺失**：引用数据但没给出处
5. **截图占位符未处理**：`（截图：...）`应替换为实际图片或改为 HTML 注释

### 限流处理

与阶段 4 相同：限流时由用户决定，不自动降级。

---

## 阶段 7：人工终审

外部评审通过后（或跳过外部评审时内部评审通过后），通知用户进行最终人工审核。

**[交互] AskUserQuestion（options）**：通知用户终稿已就绪，提供选项：
- "通过，进入下一步"（继续配图/发布）
- "有修改意见"（用户在 Other 中输入具体意见）
- "需要再看看，稍后回复"（暂停流程）

同时在问题描述中列出常见关注点供参考：标题、干货密度、工具推荐平衡、引流内容。

用户选择"通过"后自动进入配图/排版/发布。

---

## 阶段 8：配图

> 仅在 `config.yaml` 的 `image.enabled` 为 true 时执行。未启用则跳过。

**[交互] AskUserQuestion（options, multiSelect）**：根据大纲中的配图清单，列出建议配图作为多选选项，用户勾选需要生成的。选项示例："封面图（自动生成）"、"架构/流程图（自动生成）"、"工具截图（需手动提供）"。

### 配图分类

根据 `config.yaml` 中 `image.types` 配置生成。使用 `image.skill` 指定的图片生成工具。

### 配图规范

- 示意图文字建议使用文章语言（如中文文章用中文标注），专有名词保留英文
- 封面图带精简标题（2-4 字关键词）
- 图片统一存放到 `{image.output_dir}/` 目录
- 截图类素材需用户手动提供，不可 AI 生成

---

## 阶段 9：排版 / 发布

> 仅在 `config.yaml` 的 `publish.platforms` 非空时执行。未配置则文章以本地 markdown 形式完成。

**[交互] AskUserQuestion（options, multiSelect）**：根据 `publish.platforms` 配置列出可发布平台作为多选选项，用户勾选本次要发布的。默认全选。

根据 `publish.platforms` 配置，调用对应的发布 skill：

| 平台 | 配置字段 | 产出 |
|------|---------|------|
| 博客 | `publish.blog.skill` | 发布到 `publish.blog.url` |
| 微信公众号 | `publish.wechat.converter_skill` + `publisher_skill` | 先转 HTML 再发布到草稿箱 |
| 社交媒体 | `publish.x.skill` | 推文（可选） |

每个平台发布前确认，发布后验证。

---

## 安全与合规

### 敏感数据三原则

跨模型评审时：最小披露、先脱敏再送出、可审计可回滚。

文章涉及真实项目时：按 `compliance.redaction_strategy` 脱敏，用户确认脱敏程度后才发布。

### 平台合规

如配置了 `compliance.rules_file`，以下阶段会自动加载该规范：
- **阶段 5 写作**：writer 和 content-reviewer 遵守合规规范
- **阶段 6 外部评审**：评审 prompt 中附带合规要求
- **阶段 8 配图**：检查图片是否符合合规（如品牌 Logo 限制）
- **阶段 9 发布**：发布前对照合规规范自查

未配置 `compliance.rules_file` 时，上述阶段跳过合规检查。

### 合规规范通用红线（供参考）

- 不用第三方品牌 Logo（文字提及品牌名可以）
- 不出现诱导性营销文案
- 引用他人内容标注来源
- 发布前对照合规规范自查

