# Nigao

> 拟稿（nigao）—— 公众号草稿生成工坊。一句话触发，自动产出 markdown 文章 + 富文本 HTML + 大小封面 + 120 字摘要，端到端绕开 mdnice。 名字寓意：「拟」=起草、酝酿，「稿」=文稿；古人「拟稿」是构思文章的过程。 方法论：先以口语化、故事流、段落长短不一的风格写 markdown；再用 draft.py 一键产出全部产物（含「一键复制」按钮的浏览器预览页，复制粘贴公号编辑器即可，跳过 mdnice 转换这一步）。 当用户需要写一篇公众号文章 / 把某次会话或某次工作总结成可发布的文章时使用。最终产出 7 个文件汇总到 drafts/<date>-<slug>/。 触发词包括但不限于：写一篇关于 X 的公号文、帮我把 X 写成公众号、写个公众号 / 写篇推文、把这次会话写成文章、起草个 X 的发布稿、用拟稿写一篇、拟稿一下、把 X 这事写一下发出去。 即使用户只是说「把 X 整理一下发出去」、「X 这事写一篇」，只要上下文指向公众号 / 写作发布，都应该触发。 不要用于：纯技术文档（用 README / 代码注释）、单纯写代码（其他 skill）、写邮件 / 备忘录（用通用对话）、内部草稿没有发布意图。

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

---


# 拟稿 · nigao | 公众号草稿生成工坊

> **工坊规矩**
> 公号文章 ≠ 技术文档。说人话、有故事感、肯自嘲、敢下判断。如果写出来像 GPT 默认输出（"起承转合 + 每段标题 + 总结陈词"），就是失败品。

## 接活：用户给的输入

用户通常给以下之一：

1. **完整素材**：「把今天这次会话写成公号文」/「把 X 项目从头到尾发个推文」
2. **一个点子**：「写一篇关于 X 的公号」
3. **隐含触发**：「这事挺有意思的，整理一下发出去」

不需要追问细节就开始——先按本 SKILL 的写作风格出第一版 markdown 草稿，让用户看到东西再调整。

## 班规：写作风格铁律

参考 [姐妹示例](./examples/sansheng-weidu.md)。这些不是建议，是底线：

- **故事流，不是结构流**。不要"起源 / 发展 / 转折 / 总结"四段式工整结构；不要每段都套小标题。该长就长，该一行就一行。
- **段段不能都有金句**。AI 节奏的典型特征是每段都漂亮收尾。让两三段**草草结束**没有收束句，节奏才像真人写的。（2026-06-17 dbs-ai-check 实测发现：v0.1 的实测文章命中此问题）
- **不写 AI 套话**：「反直觉判断」「核心机制」「关键洞察」「最戳我的是」「整个人不好了」「读完整个人愣了一下」（最后三个被 AI 模仿之后已经反成 AI 味）
- **不替读者说蠢话再纠正**：「但你跟我说『就这？』——是的就这」这种 prolepsis 是 AI 最爱的修辞，整篇 0 次或最多 1 次
- **不滥用「这就是 X 的 Y」命名仪式**：偶尔一次是修辞，超过 2 次就成了 AI 模板
- **平常话开头**：「事情是这样的」/「那天我让 X 做 Y」/「打开一看」——但**这些本身已经成套路**，能换更自然的开法尽量换
- **段落长短不一**。有的段两三句就够，紧凑感是节奏。故意让 1-2 段拉成 80+ 字的长句，或者缩到 5 字短句
- **偶尔自嘲一句**，不刻意但要有
- **结尾收口语化**：「完事」/「就这样」/ 或者直接戛然而止
- **不滥用 emoji**。GitHub 链接前用一个标识 emoji 可以（🧠 🇨🇳 等），但段落里不要插
- **关键技术细节给具体**：报错文本、代码片段、命令、文件路径、字节数——这些是 texture

## 流程

### Step 0（强烈推荐）：先装 dbs-ai-check 当质量门

nigao 的班规是事前约束，但写完没人审。`dbs-ai-check`（[dontbesilent2025/dbskill](https://github.com/dontbesilent2025/dbskill) 里的子 skill）正好是事后审计——从 22 个 AI 写作特征里逐处扫，找出"段段金句""替读者说蠢话""命名仪式"等痕迹。

```bash
npx -y skills add dontbesilent2025/dbskill -g --all
```

实测：用 nigao 风格手写的文章，dbs-ai-check 仍然能抓到结构性问题（每段都有漂亮收束句、"整个人愣了一下"等被 AI 模仿到失效的口语化表达）。详见 [examples/sansheng-weidu.md](./examples/sansheng-weidu.md)。

### Step 1：写 markdown

按上面的风格写一篇 markdown 文章。结构通常：

```markdown
# 标题（有钩子，不端正）

把核心结论 / 主链接先甩出来——读者只想抄走也能直接走。

---

事情是这样的（故事流开始）。

[中间段]

[关键技术点]

[踩坑]（自嘲）

[安装命令 / 怎么用]（如果是工具）

[致谢 / 完事]（用一段话收口，不用"总结"小标题）
```

字数控制：1500-2300 字（公号舒服阅读区间）。

把 markdown 写到一个临时位置，比如 `E:\github\article-<slug>.md`。

### Step 2：调 draft.py

```bash
python E:/github/publish-skill/draft.py path/to/article.md \
  --title "封面主标" \
  --subtitle "封面副标" \
  --byline "github.com/<用户>"
```

参数都是可选的——`--title` 不传就自动从文章首个 `#` 标题取前 10 字。

产出 7 个文件到 `drafts/<YYYY-MM-DD>-<slug>/`：

| 文件 | 用途 |
|---|---|
| `article.md` | 原 markdown |
| `article.html` | 公号编辑器粘贴用富文本（fragment） |
| `preview.html` | ⭐ **Chrome 打开 → 点「一键复制」→ 公号 Ctrl+V** |
| `cover_wide.png` | 1080×460 大封面 |
| `cover_square.png` | 800×800 小封面 |
| `summary.txt` | 120 字摘要（公号「摘要」框） |
| `meta.json` | 全部元数据汇总 |

### Step 3：Chrome 打开预览页

```bash
chrome.exe "drafts/<date>-<slug>/preview.html"
```

预览页是个**实战工坊**——顶部有按钮「一键复制正文」，点完直接切到公号编辑器 Ctrl+V。Chrome 的 `execCommand('copy')` 走 UTF-8 富文本剪贴板，公号粘贴格式 100% 保留（包括中文）。

### Step 4：告诉用户去公号粘

给用户一段操作清单：

```
✅ 草稿已产出：drafts/<date>-<slug>/
预览页已用 Chrome 打开。接下来：
1. 点预览页顶部「一键复制正文」
2. 切到公号编辑器 → 正文区 Ctrl+V
3. 标题贴：<文章 # 标题>
4. 摘要贴：<summary.txt 内容>
5. 上传 cover_wide.png 当封面
6. 公号会让你裁小封面，可直接用 cover_square.png 替换
7. 预览没问题 → 发表
```

## 已知陷阱

| 陷阱 | 原因 | 解决 |
|---|---|---|
| 粘贴到公号中文乱码 | PowerShell `.NET Clipboard.SetData(string)` 把 UTF-8 字符串按系统 ANSI 码页（cp936/GBK）编码 | 不直接写剪贴板，让 Chrome 的 `execCommand('copy')` 来做（已内置） |
| `python draft.py` 输出 emoji 报 `UnicodeEncodeError` | Windows PowerShell 控制台默认 GBK | 已在 draft.py 头部强制 stdout UTF-8 |
| `import` extract_summary 后 stdout 句柄被关 | 模块级 `sys.stdout = ...` 替换全局句柄 | extract_summary 的 stdout 替换只放 `__main__` 里 |
| 公号编辑器结构对但中文 ��� | 上面第一个陷阱的症状 | 同上 |
| 中间用了微信截图，剪贴板被冲 | 截图工具会覆盖剪贴板内容 | 复制完立刻粘贴，别中间截图 |

## 实测案例

[`examples/sansheng-weidu.md`](./examples/sansheng-weidu.md) —— 用本 skill 产出的真实文章，2337 字，已发到公号「拧 AI 螺丝」，端到端验证。

## 一句话出师证书

> 拟稿不是「用 AI 写文章」，是「用一套固化的工作流让发布变快」。AI 写的内容必须**像人写的**——故事流、段落不工整、肯自嘲、敢下判断。结构感是写作的敌人。

---

发现日期：2026-06-17 · 按鲁班五步法打磨过

