# Dby Write

> 公众号文章写作主干（都爆鸭）——一包三件事：①**写一篇**：按用户的号章程与创作 DNA 写一篇像号主本人写的公众号文章； ②**复盘一篇**：拉用户已发文章的真实数据，按这个号自己的历史中位数分四象限，只指出该修的那一处； ③**按审稿意见改一版**：拉稿件面的审稿包，逐条回应评论与拒绝后提交新版。成稿一定先给用户过目，绝不自作主张发进用户的号。 触发词：帮我写篇公众号文章、写篇文章、写个初稿、按我的风格写、代笔、公众号写作、帮我起草、这篇怎么写、写作全流程、 用我记的东西写、把灵感库里记的整理成选题、 这篇为什么没人看、复盘、复盘一下、数据怎么样、上次那篇效果、阅读量为什么低、文章表现、发出去没人看、 按审稿意见改一版、按我的评论再改一遍、读一下稿件的意见、按拒绝重新改一版。

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

---


# 公众号文章写作主干 · dby-write

> 🔀 「写篇文章 / 写个初稿」= **写一篇**（模式 A）；「为什么没人看 / 复盘」= **复盘一篇**（模式 B）；
> 「按审稿意见改一版 / 按我的评论再改一遍」= **模式 C**（`references/review-turn.md`）。
> ⚠️ **已写好的文案**要改平台风格 → `dby-rewrite`；**已写好的正文**只要排版 / 存草稿 → `dby-publish`。

---

## 🔴 四条红线（任何终态下都不许跳过）

### 红线一：写进正文的每一样具体东西，都要能指出来源

**细节、案例、数字、品牌与产品事实、第一人称场景 —— 每一样都必须能指回素材单里的一条**（第 4 步收的）。
指不回的，留 `【待补：…—— 请给一个真值】` 式显式占位并告诉用户要补什么，绝不填一个看起来合理的值。
⚠️ **不误伤**：细节都能指回素材单的场景不拦 —— 判的是能不能核对。成稿末尾附「素材出处」列表。
→ 判据、占位样式与实证见 `references/materials.md`。

### 红线二：标题没定，不往下走

出候选 → 用户选定 → 才继续。用户没选就停在这儿等，不许自己挑一个继续写。

### 红线三：标题必须与正文匹配

标题承诺了什么，正文就得兑现什么。标题写「5 个方法」正文只有 3 个 → 自检不通过，改一侧再交付。

### 红线四：成稿必须先给用户过目

**用户没看过正文之前，绝不进入写进他公众号后台的那一步**——哪怕他一开始就说了「写完直接推草稿箱」。

---

## 模式 A：写一篇（九步主干）

**九步一口气走完，别逐步征求同意。** 只停两处：第 3 步让用户选标题、第 9 步后问终态。

取数走 `dby write prep|topics|review|articles`（`$SKILL_DIR` = 本包目录）。绕开它自拼请求才读 `dby-gateway/references/protocol.md`。

### 第 1 步 · 读档案 + 拉写作规范（必须早于任何生成动作）

```bash
node "$SKILL_DIR/scripts/dby.mjs" write prep          # 五样一次拉齐；--json 另带章程全文与 samples[].content
```

五样：**号章程**、**创作 DNA**、**范文样本**、**写作规范**（平台硬约束）、**素材卡索引**。
脚本已做降级：401 直接红、**档案为空直接拦下**、规范拉不到照常走、范文少于 3 篇提醒。

🔴 规范里**硬约束那一节不是建议**，动笔前进上下文；第 5、6、9 步都照它走。
→ 要**封面卡 / 导语**这类「家具」或五样没拉齐时读 `references/writing-spec.md`，不需要就别读。

### 第 2 步 · 确定选题

🔴 **用户已经说了写什么 → 直接用，不要再问，也不要再调接口。**
没说时才取候选：`node "$SKILL_DIR/scripts/dby.mjs" write topics [赛道]`（不传赛道用档案里的）。
候选过两道筛（号章程 / 有用性）；筛法、**每月一篇复利文**与常青回看读 `references/topic.md`。

### 第 3 步 · 定目标，再定标题（🔴 唯一的中途停顿点）

**先写一行「本篇：目标（涨粉 / 变现 / 常青）/ 素材形态 / 读者意识阶段 / 人称语气」**，阶段决定标题答哪个问题；五阶段、三目标差异与**变现文的 offer 表**读 `references/goals.md`。

**素材形态 = 手里已有什么**（不是"算哪一类"）：带转折的真实经历 / 被访者原话 → **A 组**；可复现步骤 / 并列多项 / 可核实的具体事件 / 待解释的现象或机制 → B 组。判别读 `references/goals.md`。

出 **5 个候选**，各过五项自检，**停下来让用户选一个**（也可自己给）。群发后标题只能改 3 个字。

| 检查项 | 通过标准 |
|---|---|
| 完整陈述句 | 单独发给不知情的人能复述文章讲什么；15–28 字（**汉字计数，一个英文词算 1 字**，后台上限 64），核心信息放**前 20 字**（列表约 25–31 字后截断） |
| 缺口 | **看本篇目标**：涨粉 / 变现 → 好奇缺口 / 颠覆认知 二选一，正文必须兑现；**常青 → 不强制**，平实陈述句照过 |
| 具体 | 含具体数字优先；禁「让你哭 / 只有 X 才懂 / 测一测」式短语 |
| 受众匹配 | 目标读者一眼认出「这是写给我的」（人群词进标题）——**常青也要过** |
| 搜索适配 | 含读者真会去搜的关键词——**常青尤其要过**（它靠搜索吃长尾） |

🔴 **常青放宽的是「制造缺口」这个手段，不是「让人愿意点」这个目标**——老实标题仍要过「完整陈述句」与「受众匹配」。
→ 写法清单、字数出处与常青范例见 `references/title.md`。

### 第 4 步 · 收素材

按下表从上往下取，够写就停；每条素材进**素材单**（编号 / 原句或数字 / 出处），没进单的不许进正文。
**A 组必须收到第一人称真实经历细节**（时间 / 地点 / 数字），纯观点拼接不被推荐。**B 组不因缺经历被阻断**——它缺的是"内容不够"，标注或缩范围即可。

| 层 | 来源 | 何时用 |
|---|---|---|
| 1 | 用户当轮给的（含留言 / 私信原话） | 有就先用 |
| 2 | 用户记下的（灵感库；`insp list|add`） | 点名「用我记的」必取；否则默认扫近 30 天，无相关就过 |
| 3 | 号档案 + 范文 | 总是（第 1 步已拉到，不再取） |
| 4 | 自己往期文章 | 写过相近题 |
| 5 | 素材库（`material list|get|add|rm`，prep 已带索引） | A 组缺锚点先查这里 |
| 6 | 用户知识库（ima / `$DBY_WIKI_DIR`） | 配了才用，没配跳过不问（**A 组例外**） |
| 7 | 平台取数 | 用户点名或前六层不够 —— 🔴 **这一层计费** |
| 8 | 联网查证 | 只核实前面拿到的事实，不引入新数据 |

→ 各层取法与素材单格式读 `references/materials.md`。
第 2 层的条目带记录 id，建稿/提交新版（`draft create`/`draft submit`）时作 `sourceItemIds`（血缘）；灵感库为空如实说、不虚构。
🔴 **A 组八层取完仍拿不到锚点 → 停下，不许开始写正文。** 处置阶梯读 `references/materials.md` 的「锚点收不到时」。

### 第 5 步 · 列提纲

🔴 **先读 `references/genre/<你声明的素材形态>.md`（名字逐字照抄）；没读不列提纲。** 收完素材发现与声明不符 → 改声明、换读那份。
**第一行写一句话中心**（读者带走的那一个想法），指不回它的块删掉。**每块标注用素材单里的哪几条**（编号）—— 指不上的回第 4 步补，或按红线一留占位。
→ 结构与小标题读 `references/craft.md`（**选一种，别混着来**）。

### 第 6 步 · 写正文

**按「块」写，一个一级小标题算一块。** 顺序：先导语 → 再正文 → 最后结尾。开头 150 字内兑现标题。
→ 开头/结尾/句子级规则见 `references/craft.md`。**内容不够时不要扩写，去写细节**——细节只从素材单取（红线一）。
🔴 **硬约束边写边守**，以第 1 步规范为准，**别照记忆里的旧清单写**。
🔴 **口吻按这个号自己的声音写，不是默认 AI 腔**。`prep` 输出的 `voiceSystemPrompt`（当写作设定）与 `taboos`（**一条都不准违反**，写完逐条扫）动笔前就要用上；两样为空照常写，交付时说明是通用口吻（去 `dby-charter` 蒸），**别因此停下来问**。
**结尾的行动号召从档案里取**（`productsJson[].ctaScript`；没有就按红线一留占位，**绝不自己编一个背书**）——取法见 `references/craft.md`。

### 第 7 步 · 重写

🔴 **初稿不直接交。** 四步减法（口述摘要重写 / 朗读标打结处 / 先大后小删 / 不确定为真的删掉重来）读 `references/craft.md`。

### 第 8 步 · 写摘要与留言

**摘要**按「备用标题」写，别写成正文缩写。**留言**（作者给自己文章的第一条留言）**是可选的**——不写不影响交付，别记成未完成项。→ 写法见 `references/craft.md`。

### 第 9 步 · 成稿自检

六件事，一件都不能少：

1. **违禁词与极限词** → 走 `dby-banned-words`，标题 + 摘要 + 正文一起查，只查公众号一个平台；**任何终态都要跑**。命令行见 `references/api-contract.md`。
2. **广告标识**：正文带购买方式（链接 / 二维码 / 店名）就必须文首标「广告」，没标不交付；诱导关注句删。→ 法条与适用范围读 `references/craft.md`「结尾的行动号召」。
3. **AI 声明**：这稿由 agent 起草，《标识办法》（2025-09-01 施行）要求发布者**主动声明**；交稿时告诉用户、由他决定，**不许替他省略**。→ 法条与各平台要求读 `dby-deai/references/平台标注.md`。
4. **标题与正文匹配**（红线三）：对照第 5 步那句一句话中心。
5. **事实来源核对**（红线一）：每个细节 / 案例 / 数字 / 品牌事实 / **第一人称场景**逐个指回素材单编号，指不回的改占位。
6. **平台硬约束逐条对**：按第 1 步规范的「硬约束」小节过一遍；没拉到时如实说「这次没按硬约束核」，**别假装核过了**。

自检过了 → 把成稿**交给用户看**（红线四），只问「哪里看不懂 / 哪里拖」，然后问终态。
A 组且用户这轮口述了新经历 → 展示拟存卡面提议存进素材库：**确认才写、一次即止、连拒两次不再提**。

---

## 交棒：问终态

成稿之后**必须问**，不许推断：

> 这篇你想要到哪一步？
> ① 就要这份成稿，我自己发 ② 要排版好的公众号 HTML ③ 存进我自己的公众号草稿箱

① 到此为止。②③ 走 `dby-publish` —— 命令行、绑号条件、先落盘 `.md`、回执四行 → `references/api-contract.md`。

---

## 模式 B：复盘一篇

→ 读 `references/review-mode.md`（`write review` 归四象限，**只给一处修复动作**）。
🔴 三条不许简化掉：**写明用的是哪一档指标**（代理档绝不能说成「打开率 × 分享率」）、**基准只能是这个号自己的历史中位数**、**样本少于 5 篇要把「仅供参考」带给用户**。

→ 用户想练写作 / 问「怎么提高」读 `references/practice.md`。
模式 C（按审稿意见改一版）→ `references/review-turn.md`（`draft review-packet`→逐条回应→提交新版）。

---

## 下一步

API 契约表见 `references/api-contract.md`；档案的**写入**不在本包，走 `dby-charter`。
成稿要 HTML / 进草稿箱 → `dby-publish`；要发别的平台 → `dby-rewrite`（七平台调性，免费）；不确定 → `dby`（公众号飞轮总导航）。

用户说「读着像 AI」→ `dby-deai`（逐句指出哪里像，改不改由用户定）。**别自作主张替他跑**：第 6 步已按这个号的声音写过，再叠一层会把它磨平。

