公众号文章写作主干 · 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 步 · 读档案 + 拉写作规范(必须早于任何生成动作)
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`) |
| 3 | 号档案 + 范文 | 总是(第 1 步已拉到,不再取) |
| 4 | 自己往期文章 | 写过相近题 |
| 5 | 素材库(`material list | get |
| 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 步 · 成稿自检
六件事,一件都不能少:
- 违禁词与极限词 → 走
dby-banned-words,标题 + 摘要 + 正文一起查,只查公众号一个平台;任何终态都要跑。命令行见references/api-contract.md。 - 广告标识:正文带购买方式(链接 / 二维码 / 店名)就必须文首标「广告」,没标不交付;诱导关注句删。→ 法条与适用范围读
references/craft.md「结尾的行动号召」。 - AI 声明:这稿由 agent 起草,《标识办法》(2025-09-01 施行)要求发布者主动声明;交稿时告诉用户、由他决定,不许替他省略。→ 法条与各平台要求读
dby-deai/references/平台标注.md。 - 标题与正文匹配(红线三):对照第 5 步那句一句话中心。
- 事实来源核对(红线一):每个细节 / 案例 / 数字 / 品牌事实 / 第一人称场景逐个指回素材单编号,指不回的改占位。
- 平台硬约束逐条对:按第 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 步已按这个号的声音写过,再叠一层会把它磨平。