文章目录
- 前言
- 一、它解决什么问题
-
- [1. 先把定位说清楚](#1. 先把定位说清楚)
- [2. 三个真实痛点](#2. 三个真实痛点)
- 二、它是怎么工作的
-
- [1. 拿大纲](#1. 拿大纲)
- [2. 按模板扩写](#2. 按模板扩写)
- [3. 跑自检](#3. 跑自检)
- [三、check.py 到底查什么](#三、check.py 到底查什么)
- 四、几条踩过才知道的规则
- 五、怎么用
- 总结
前言
写 CSDN 有件很烦的事:内容想清楚了,格式还得再折腾一遍。
首行缩进两格、段落之间不留空行、代码块前后要留空行,一条条手动调。
调完还要数一遍字数,看有没有超长句子。
我把这套流程写成了一个 skill,名字叫 csdn-writer。本文讲讲它怎么用、为什么这么设计。
一、它解决什么问题
1. 先把定位说清楚
它不是替你写文章,是替你把手里的要点讲清楚。
你给一份大纲,它按固定骨架扩写成能直接发出去的稿子。
所以它管的是三件事:结构别散、话说短、格式别错。
2. 三个真实痛点
第一是结构。想到哪写到哪,读者三行就划走了。
第二是句子。技术人写东西爱堆定语,一句话四五十个字,读着喘不上气。
第三是格式。CSDN 不会自动首行缩进,得手动补上两个实体空格。
这三件事都不是灵感问题,是流程问题。是流程就能交给脚本。
二、它是怎么工作的
1. 拿大纲
第一步是把大纲变成纯文本,输出到同目录的 _outline.txt。
docx 其实就是个压缩包,脚本直接解里面的 XML,不依赖 python-docx。
doc 是老二进制格式,得靠 antiword 转换,或者用 LibreOffice。
md 和 txt 就直接读,编码依次试 utf-8、gb18030、utf-16。
2. 按模板扩写
骨架是固定的:目录宏、前言、正文大章节、总结。
模板里那些写给自己看的占位提示,必须一个字不剩地删掉。
正文每个段落开头补上两个 em 空格,这就是 CSDN 的首行缩进。
段落之间反而不能留空行,缩进本身就是分段的信号。
还有一个硬要求:大纲里的每个要点都得保留,一个不能丢。
3. 跑自检
写完必须跑一遍 check.py,退出码是 0 才算过。
我不信肉眼估的字数,估出来基本都不准。
三、check.py 到底查什么
它把"读起来还行"翻译成了七个能自动判定的条件:
- 正文字数落在 700 到 1000 之间。只数中文字符,代码块和表格不计入。
- 单个小句不超过 25 字,逗号顿号分号都算断句。
- 每个段落不超过 4 句。
- 模板占位文字有没有删干净。
- 结构是否完整:目录宏、前言、总结、一级章节。
- 每个正文段落是否都加了首行缩进。
- 段落之间有没有多余空行,以及分隔线前面有没有留空行。
前六条好理解,第七条最容易翻车,下一节展开说。
四、几条踩过才知道的规则
规则本身不复杂,坑都在细节里。
- 文字紧跟分隔线,会被 Markdown 当成二级标题,上一段会被整段吞掉。
- 图片那一行不带标点,会和下一行的文字粘成一条超长小句,得手动断开。
- 代码块里的空行也会被自检脚本当成段落间空行,换成一行注释就行。
- 链接直接写在正文里,很容易撑爆小句上限,塞进代码块最省事。
- 官方模板里的代码语言标签是 c,只是占位,必须改成真实语言。
这几条都不是文档里写的,是实际跑的时候撞出来的。第三条尤其反直觉,因为脚本区分不了代码块内外。
五、怎么用
bash
# 1. 提取大纲,doc/docx/md/txt 都支持,输出到同目录的 *_outline.txt
python ~/.claude/skills/csdn-writer/scripts/extract_outline.py "D:/docs/大纲.docx"
#
# 2. 读 _outline.txt,按模板扩写,写到指定路径
# 3. 自检,必须跑到「全部通过」为止
python ~/.claude/skills/csdn-writer/scripts/check.py "D:/docs/文章.md"

或者更省事:把大纲文件路径甩给 /csdn-writer,剩下的它自己走。
总结
这个 skill 的核心不是让 AI 写文章,是把写作里能标准化的部分抽出来。
结构、句式、格式、字数,交给模板和脚本;真正要人想的是观点和取舍。
写完跑一遍自检,比反复肉眼检查靠谱得多。
如果你也常年写 CSDN,建议照这套思路做一个自己的版本。
有需要这个skill的可关注+私聊。