公众号写作助手
把「翻别人的号 → 想选题 → 搭结构 → 写出来 → 排版自检」这条链路固化成可重复执行的流程。
核心能力分两层:
- 输入端:抓取公众号文章、剥离广告与引导语、转为干净 Markdown,形成可用素材库。
- 写作端:按样本提炼出的写作参数(篇幅、节奏、标题套路)产出成稿,并在发布前做结构与合规体检。
何时使用
出现下列请求时启用:
- 写一篇公众号文章 / 推文 / 长图文
- 拆解某个公众号、某篇爆款的写法
- 「这个号为什么火」「照着这个风格写一篇」
- 建立选题库、素材库、对标账号监测
- 把微信文章链接转成 Markdown / 存档
- 发布前检查稿子有没有问题
不适用:纯营销策划、私域运营 SOP、视频脚本分镜不在本技能范围。
环境准备
脚本依赖 requests、beautifulsoup4、markdownify、lxml。首次使用先确认:
python3 -c "import requests, bs4, markdownify, lxml" || \
pip install requests beautifulsoup4 markdownify lxml
脚本路径相对于本技能目录,下文统一用 scripts/ 指代。
工作流
按五个阶段推进。用户只要求其中一环时,直接跳到对应阶段,不必走全流程。
阶段一:明确写作坐标
在动笔或抓取前,先用一句话锁定四件事,缺一项就问,不要猜:
- 读者是谁——具体到职业与处境,不要写「年轻人」
- 他读完能带走什么——一个观点、一套方法、还是一份清单
- 这个号的人格——专家口吻 / 朋友口吻 / 观察者口吻
- 篇幅档位——短图文(800-1500 字)、标准文(2000-3500 字)、深度长文(4000 字以上)
四要素齐了再进入下一阶段。跳过这一步写出来的稿子,通常结构正确但没人想读。
阶段二:建素材库
有对标账号或参考文章时,先抓下来再拆。
# 单篇
python scripts/fetch_article.py "https://mp.weixin.qq.com/s/xxxx" --out ./corpus
# 批量(每行一个链接)
python scripts/fetch_article.py --urls-file urls.txt --out ./corpus
脚本会自动完成:元数据提取(标题/账号/发布时间/摘要)→ 正文容器定位 → 懒加载图片还原 → 删除追踪码与隐藏元素 → 剥离关注引导与二维码尾巴 → 转 Markdown。
必须知道的限制:
- 只能抓已发布且公开可见的文章。删除、审核中、违规、需验证环境的页面会被识别并返回原因,不是脚本失败。
- 抓不到阅读量、点赞、在看数——这些在微信客户端之外不公开。不要向用户承诺这类数据。
- 请求有间隔(默认 2 秒),批量抓取不要调低,否则会触发风控。
- 抓到文章末尾可能残留二维码图片,属正常现象,写作时忽略即可。
识别失败的返回码含义见 references/extraction-rules.md。
阶段三:拆解样本
python scripts/analyze_corpus.py ./corpus
输出内容样本概览、标题模式分布、开篇套路分布、高频主题词、逐篇明细、开篇结尾样本。
读这份报告时关注四个数,它们直接决定成稿参数:
| 指标 | 含义 | 怎么用 |
|---|---|---|
| 段落均值 | 样本的呼吸节奏 | 成稿段落长度对齐它,不要写大段 |
| 短段占比 | 是否依赖「留白金句」 | 超过 40% 说明每几段就要一句独立短句 |
| 小标题间隔 | 读者耐心边界 | 成稿按同频率切分 |
| 篇幅中位数 | 该号的容量承诺 | 成稿不要偏离 30% 以上 |
样本少于 5 篇时,词频与模式分布不具备统计意义,只作参考,不要当结论汇报。
拆解结论要落到「我可以照着做什么」,而不是「这个号有什么特点」。前者能指导写作,后者只是描述。
阶段四:成稿
先定结构,再填内容。四种骨架见 assets/templates/:
deep-dive.md— 深度长文:现象 → 归因 → 拆解 → 边界 → 结论listicle.md— 清单体:N 个要点并列,靠信息密度取胜hot-take.md— 热点评论:事件 → 反常识判断 → 论证 → 推论tutorial.md— 干货教程:目标 → 前置条件 → 步骤 → 排错 → 验收
写作硬性约束(依据见 references/writing-playbook.md):
- 单段不超过 150 字,超过就在句意断点拆开
- 前三段合计不超过 150 字,第一段就要给出结论、场景或冲突
- 每 600-800 字一个小标题
- 标题不超过 24 字,核心信息前置
- 具体名词、数字、动作优先于形容词,删掉「非常」「其实」这类填充词
引用素材时改写,不要照搬。整段复制会带来原创度与版权风险。
阶段五:体检
python scripts/check_article.py draft.md
输出「阻塞 / 建议 / 提示」三级问题单。阻塞项必须全部清零才能交付,建议项与提示项按判断取舍。
体检覆盖:标题长度与信息量、篇幅、开篇节奏、段落长度、小标题密度、配图、结尾引导、中英混排、标点、重复句、口头禅,以及《广告法》高风险表述。
合规词表只做提示,不构成法律判断。涉及医疗、金融、教育、招商加盟等强监管领域时,明确告知用户需另行核对平台规则与法务意见。
交付规范
成稿默认交付 Markdown 文件,包含 YAML frontmatter:
---
title: "标题"
---
正文
用户要直接粘进公众号后台时,把 Markdown 转成公众号兼容的 HTML:段落用 <p>,小标题用 <h2>/<h3>,不要依赖 Markdown 表格和代码块(后台编辑器支持有限,复杂表格改用图片或列表)。
交付时一并说明:这篇稿子对标了哪个样本、用了什么结构、体检结果如何。让用户知道稿子是怎么来的。
参考文件
references/extraction-rules.md— 抓取与清洗的技术细节、选择器、异常页判定、已知坑。需要改脚本或排查抓取失败时读。references/writing-playbook.md— 标题、开篇、结构、节奏、结尾、排版的具体方法。写稿前读。references/publish-checklist.md— 发布前逐项自查清单与风险表述对照。定稿前读。