上一章的排版是自己写转换器,这一章改成操作一个现成的排版平台(墨滴)。思路变了:把【工具擅长的】交给工具(主题、样式、美观),把【流程需要的】写成代码(体检、批量、调用、回读)。 于是本节最值钱的不是那六步操作,而是补上工具不管的那一块——排版前的体检器。
4.4.2 收回来一批合格的 Markdown 稿,本节把它们变成【能粘进头条正文框的富文本】,交给 4.4.4 上传。它对应 3.4.3 的位置(都是排版),但做法从【自己写】换成了【用现成的】——本节第三节会把这个转变讲清楚。
一、墨滴(mdnice)是什么
一句话:一个把 Markdown 渲染成【带主题样式的富文本】的编辑器,它的产物是剪贴板里的一段富文本,你粘到哪儿,样式就带到哪儿。
| 项 | 内容 |
|---|---|
| 网页版 | editor.mdnice.com |
| 产品站 | product.mdnice.com |
| 客户端 | 有桌面版(体积百兆量级),另有浏览器插件形态 |
| 核心能力 | Markdown 渲染 + 多套主题 + 免费图床 + 一键复制 |
| 招牌能力 | 支持数学公式(这是它在公众号排版工具里的一个差异点) |
| 公开支持的平台 | 公众号、知乎、掘金、CSDN 等 |
用法极简:左边写 Markdown,右边实时预览,选一个主题,点复制,粘到目标平台的编辑器里。
二、先记住一条边界:墨滴解决【好看】,不解决【能过】
这是本节最容易误解的地方,先把它钉死:
| 问题 | 谁解决 |
|---|---|
| 排版好不好看、主题统不统一 | 墨滴 |
| 图片会不会丢、公式能不能显示 | 墨滴(它的图床) |
| 内容里有没有表格、外链图、代码块(这些在头条里必坏) | 你的脚本(本节的体检器) |
| 字数够不够、标题重复不重复 | 你的脚本 |
| 内容合不合规 | 4.4.4 的预检 |
墨滴提供免费图床,它解决的是【图片链接不会失效】——这跟公众号的场景很配。 但头条的正文图只认【它自己素材库里的图】。 所以你把带墨滴图床地址的稿子粘进头条,发布后照样可能变成裂图——图和图床不是一回事,平台的信任范围也不一样。 正确做法:正文图先上传到头条自己的素材库,再把地址换掉(这一步在 4.4.4 做)。
三、RPA 要做的六步
① 打开墨滴编辑器 → ② 清空上一次的内容
↓
③ 把这一篇的 Markdown 粘贴进去
↓
④ 选中本批统一用的主题(一次选定,整批复用)
↓
⑤ 点【复制】——此时样式进了剪贴板的富文本槽位
↓
⑥ 切到头条编辑器 → Ctrl+V → 回读校验(样式真的进来了吗)
六步里有三步值得单独说:
| 步 | 为什么要注意 |
|---|---|
| ② 清空 | 墨滴会记住上一次的内容(有本地与云端存储)。不清空,你会把上一篇的尾巴带进这一篇——这类事故在批量里极难发现 |
| ④ 主题 | 主题要一次性定好,整批复用。 批量里【每篇换个主题】看起来更丰富,实际会让账号看起来很乱;而且换主题意味着多一次人工决策 |
| ⑥ 回读 | 【点了复制】不等于【样式真的在剪贴板里】。 必须回读一次确认——这一点和第三章一模一样(3.4.3 也强调过【预览正常不能作为通过标准】) |
四、⚠️ 2026 现状:墨滴不在头条上【一键发布】
这是本节最重要的一条现状,直接决定了流程的形状。
墨滴的公开支持平台列表里是公众号、知乎、掘金、CSDN——今日头条不在其中(至少不在主推列表里)。所以:
| 你以为的 | 实际的 |
|---|---|
| 墨滴排版完,一键发到头条 | 墨滴只负责排版和复制,头条那一步还是要你自己粘 |
这对本章不完全是坏事——因为本章本来就不打算让它自动发布(4.1 的定盘星是【机器送到草稿箱,人点发布】)。但流程上要说清楚:本节结束时的产物是【剪贴板里的富文本】,不是【草稿箱里的文章】。 后一步归 4.4.4。
另外两条与本节相关的 2026 情况:
- 墨滴本身在持续更新(客户端、浏览器插件都有近期版本),说明它是活的工具——但也意味着界面会变,所以本节的 RPA 以【控件名/区域】定位,不写死坐标(同 4.4.4);
- 同类工具很多(在线的、命令行的、写在自己笔记软件里的都有)。本节选墨滴不代表它是唯一答案——按第三节那张分工表,任何【能稳定把 Markdown 变成富文本】的工具都能替进来,唯一不能省的是你补的那一层体检。
五、动手 Demo:排版前体检器
这是本节真正属于你自己的那部分代码。 它做一件事:在把稿子送进墨滴之前,把【粘过去就会坏】的东西挑出来。
它检查七类问题,每一类都对应一次真实事故:
| # | 检查 | 为什么 |
|---|---|---|
| 1 | Markdown 表格 | 表格在头条正文里最容易错乱 → 必须改截图 |
| 2 | 外链图片 | 发布后才爆(裂图)→ 必须先传平台素材库 |
| 3 | 带 style 的行内 HTML |
粘贴时样式被剥 → 建议改成纯 Markdown |
| 4 | 代码块 | 头条对代码块支持差 → 建议改截图 |
| 5 | 一级标题 # |
会与平台标题框重复 → 正文里不该出现 |
| 6 | 同一小标题出现两次 | 平台标题是独立字段,正文里重复 → 删掉正文里那一份 |
| 7 | 字数 | 低于 100 字是阻断,低于 800 字是提示 |
# -*- coding: utf-8 -*-
"""4.4.3 Demo:排版前体检器 —— 挑出【粘到墨滴就会坏】的东西(纯标准库)"""
import re
DOCS = {
"T01": """## 玄关收纳三件套,我最后只留了这三样
玄关永远堆着鞋和快递盒,出门前翻三分钟找不到钥匙。我把玄关重新收拾了一遍,只留三件东西。
### 一、先做减法
- 清掉不穿的鞋
- 清掉攒着的袋子
- 清掉广告单

## 玄关收纳三件套,我最后只留了这三样
(正文第二段)三件加起来占不到半平米,门口却清爽了一倍。""",
"T03": """## 厨房台面分区
| 区域 | 放什么 |
|---|---|
| 备菜区 | 砧板、刀 |
| 灶台区 | 锅、铲 |
| 出菜区 | 盘子、隔热垫 |
台面乱,多半不是东西太多,而是没有分区。
~~~python
print("这段代码块在头条里会摊平")
~~~""",
"T05": """## 换季衣柜整理
换季整理衣柜,扔东西比买收纳盒有用得多。
<img src="https://cdn.example.com/wardrobe.jpg" style="width:100%" />
把衣服全摊在床上,按三条标准过一遍。""",
}
checks = []
print("=" * 64)
print("一、排版前体检(共 %d 篇)" % len(DOCS))
print("=" * 64)
for tid, md in DOCS.items():
issues = []
# 1. 表格:头条与墨滴都吃不稳,必须改成图片
if re.search(r"^\s*\|", md, re.M):
issues.append("含 Markdown 表格 —— 必须改成截图(表格在头条正文里最容易错乱)")
# 2. 图片:外链图在发布后才爆
urls = re.findall(r"!\[.*?\]\((https?://[^)]+)\)", md) + \
re.findall(r'<img[^>]+src="(https?://[^"]+)"', md)
if urls:
issues.append("含外链图片 %d 张 —— 必须先上传到平台素材库,否则发布后变裂图" % len(urls))
# 3. 行内 HTML:墨滴能容一部分,但带 style 的 img 会被剥
if re.search(r"<[a-zA-Z]+[^>]*style=", md):
issues.append("含带 style 的行内 HTML 标签 —— 粘贴时样式会被剥掉,建议改成纯 Markdown")
# 4. 代码块:头条对代码块支持差
if "```" in md or "~~~" in md:
issues.append("含代码块 —— 头条正文里格式易乱,建议改截图")
# 5. 标题层级:一级标题会与平台标题重复
if re.search(r"^#\s+", md, re.M):
issues.append("含一级标题 # —— 会与平台标题框重复,正文里不要出现")
# 6. 标题行重复出现(正文里又写了一遍标题)
hs = set(re.findall(r"^#{2,3}\s+(.+)$", md, re.M))
for h in hs:
if md.count(h) > 1:
issues.append("标题【%s】在正文里出现了两次 —— 平台标题是独立字段,正文不该重复" % h[:18])
# 7. 字数
plain = re.sub(r"[#*`>|\-\[\]()!]", "", md)
n = len(re.sub(r"\s+", "", plain))
if n < 100:
issues.append("正文仅 %d 字,低于平台底线 100 字" % n)
elif n < 800:
issues.append("正文 %d 字,低于建议值 800 字(提示,不阻断)" % n)
print(" [%s] %s" % (tid, "OK" if not issues else "%d 个问题" % len(issues)))
for it in issues:
print(" - %s" % it)
checks.append((tid, issues))
print()
print("=" * 64)
print("二、汇总")
print("=" * 64)
hard = sum(1 for _, iss in checks if any(("必须" in i or "低于平台底线" in i or "不要出现" in i) for i in iss))
print(" 总问题 %d 条;其中有 %d 篇含【必须改】项,不能直接进墨滴"
% (sum(len(i) for _, i in checks), hard))
print(" 结论:先把上面每条改掉,再生成可粘贴稿;改不了的(表格、代码块)一律走截图。")
实际运行输出(真跑,不是示意):
================================================================
一、排版前体检(共 3 篇)
================================================================
[T01] 3 个问题
- 含外链图片 1 张 —— 必须先上传到平台素材库,否则发布后变裂图
- 标题【玄关收纳三件套,我最后只留了这三样】在正文里出现了两次 —— 平台标题是独立字段,正文不该重复
- 正文 171 字,低于建议值 800 字(提示,不阻断)
[T03] 3 个问题
- 含 Markdown 表格 —— 必须改成截图(表格在头条正文里最容易错乱)
- 含代码块 —— 头条正文里格式易乱,建议改截图
- 正文仅 84 字,低于平台底线 100 字
[T05] 3 个问题
- 含外链图片 1 张 —— 必须先上传到平台素材库,否则发布后变裂图
- 含带 style 的行内 HTML 标签 —— 粘贴时样式会被剥掉,建议改成纯 Markdown
- 正文 109 字,低于建议值 800 字(提示,不阻断)
读结果,四个值得注意的地方:
T01被抓到【标题在正文里出现了两次】——这是上一章那个【双标题】坑的批量版。批量时它更阴险:你抽检的那两篇可能恰好没问题,剩下十几篇里混着几篇双标题,你发出去才发现。 所以这条检查必须逐篇跑,不能靠抽检;T03的两条都是【必须改】,且都指向同一个解法:截图。 表格和代码块在头条正文里都不稳,而它们又恰好是最需要保留结构的东西——截图是唯一可靠的表达方式。注意这不是妥协,这是平台的现状(3.4.3 讲公众号时也是同一个结论);T05用的是<img ... style="width:100%" />这种 HTML 写法——在墨滴里它可能还能渲染(墨滴对 HTML 有一定容忍),粘到头条就被剥样式。这就是【工具能容、平台不容】的典型差异:如果你只用眼睛看墨滴的预览,你永远发现不了这条;- 字数这一栏又出现了【阻断 / 提示】两档:
T03的 78 字是低于平台底线(阻断),T01的 171 字是低于建议值(提示)。这个分档在 4.3.2、4.4.1、4.4.3 三处都出现了——它不是巧合,它是本课的一条固定纪律。
因为墨滴会把 Markdown 渲染成 HTML,而渲染之后,很多问题就被【藏起来了】:
- 表格渲染成了一张漂亮的表 → 你从预览上看,它完全正常;
- 外链图渲染成了一张缩略图 → 预览里图片好好地在;
- <img style> 渲染成了带样式的图 → 预览里比纯 Markdown 还好看。
渲染让问题变得【更好看】,而好看会骗人。 所以要在变成 HTML 之前查 Markdown 原文——这是位置选择上的一个关键判断。
六、为什么这一章不自己写转换器(与 3.4.3 的对照)
上一章 3.4.3 花了一整节自己写转换器,还配了审计函数。为什么这一章换成用现成工具? 两张表说清楚:
第一张:两边各管什么
| 事 | 工具(墨滴) | 你的代码 |
|---|---|---|
| 主题、配色、样式美观 | 它更强 | 不必重复造 |
| 数学公式、代码高亮 | 它做得很成熟 | 不必重复造 |
| 内容里有没有不该有的东西 | 它不管 | 你补(本节 Demo) |
| 批量、调度、回读、回写任务表 | 它不管 | 你补 |
第二张:两种做法的取舍
| 维度 | 3.4.3 自己写转换器 | 4.4.3 用墨滴 |
|---|---|---|
| 稳定性 | 自己完全可控 | 依赖第三方界面,它改版你就得跟 |
| 样式质量 | 自己调,能到 80 分 | 现成主题,起步就 90 分 |
| 维护成本 | 自己改 | 等作者更新 |
| 与人的关系 | 只有机器用 | 人也会想用它 |
| 适合 | 流水线里的一个工序 | 人机共用的一件工具 |
第三章说的判据是:工具服务【人】,代码服务【流程】。 本章要补一句:如果一件工具【人本来就在用】,而流程只是【借用它】,那就用工具,然后把【它不管的那一段】自己写掉。 判据升级为:把工具擅长的交给工具,把流程需要的写成代码。 两章的结论并不矛盾——它们共同的意思是【不要重复造轮子,但一定要把轮子外面的那圈护栏自己装上】。
七、⚠️ 一条实操提醒:剪贴板要用【富文本槽位】
这一点与第三章完全相同,但它在本节更容易出错,因为多了一层工具:
| 做法 | 结果 |
|---|---|
| 在墨滴里点【复制】按钮 | 富文本进剪贴板 → 粘到头条样式完整 |
| 把墨滴右侧的 HTML 源码手工抠出来当文本粘 | 满屏尖括号,或者被清成裸文本 |
RPA 的做法是固定的:不要试图绕过工具的【复制】按钮。它存在的意义就是把富文本正确放进剪贴板——你自己拼 HTML 放进纯文本槽位,是在替工具做一件它做得更好的事。
30 秒实验
把 Demo 里【7. 字数】那一段临时删掉,再跑一次。
会发生什么:
T03的 78 字不会被报出来——它带着一个低于平台底线的正文,安静地通过了这道关;- 它会在 4.4.4 的上传环节被拦(如果那里有这条检查),或者更糟——没被拦,进了草稿箱。
结论:每一道关都在替后面省钱。 本节的检查少一条,代价不是【这篇有问题】,而是问题被推到了更贵的地方(4.4.4 的拦下意味着前面几步白做)。
顺着这个思路想一层:既然越靠前越便宜,为什么不在最早的 4.3.2 就把所有检查都做完? 因为有些问题在早阶段【看不出来】——比如表格、代码块、外链图,它们是在稿子成型之后、要进平台之前才成为问题的。所以检查不是【能提前就提前】,而是【在这一层能判定的,就别留给下一层】。
常见误区
- 【用了墨滴,排版就没有坑了】——错。 墨滴解决的是好不好看,它不管【内容里有没有不该有的东西】。表格、外链图、代码块、双标题,都要你自己在进墨滴之前查。
- 【墨滴有图床,图片问题就解决了】——错,这个坑很贵。 墨滴图床解决的是链接不失效;头条的正文图只认它自己素材库里的图。带墨滴图床地址的图,在头条发布后照样可能裂图。
- 【在墨滴预览里看着没问题就行了】——错。 渲染会让问题更好看:表格渲染成漂亮的表、外链图渲染成正常的图、
<img style>渲染得比纯 Markdown 还顺眼。所以要在【变成 HTML 之前】查 Markdown 原文。 - 【检查越早做越好,所以都放到 4.3.2 去】——错。 有些问题(表格、代码块、外链图)在稿子成型之后才成为问题,早阶段看不出来。正确原则是:这一层能判定的,就别留给下一层。
- 【RPA 直接拼 HTML 放进剪贴板更可控】——错。 剪贴板要的是富文本槽位,不是纯文本。墨滴的【复制】按钮就是干这个的——绕过它,你就得自己处理一大堆格式细节,还会丢掉【回读预览】这个校验点。
自测三问(点开对答案)
1. **用了墨滴之后,你的代码还要做什么?** 补上**工具不管的那两块**:**一是【内容里有没有不该有的东西】**(表格、外链图、代码块、双标题、字数——本节的体检器);**二是【流程需要的能力】**(批量、调度、回读校验、回写任务表)。**一句话:工具管【好看】,你的代码管【能过】与【能跑】。** 2. **为什么体检要放在【进墨滴之前】,而不能放在【看完墨滴预览之后】?** 因为**墨滴会把 Markdown 渲染成 HTML,而渲染会让问题变得更好看**:表格变成漂亮的表、外链图正常显示、`- ☐ 下一节(4.4.4 RPA上传文章到今日头条)
相关笔记
- 排版 GPT 创作结果 —— 自己写转换器的那一版,与本节对照着读
- RPA获取创作结果 —— 本节体检的稿子从哪来
- 网页自动化 —— 本节六步操作的通用方法
- RPA上传文章到今日头条 —— 本节产出的富文本下一节要粘进头条后台
- 🤖 Agent+RPA实战 · 索引 —— 全课路线图