
公众号排版这件事做内容的朋友应该都深有体会。用微信自带的编辑器排版样式基础、操作繁琐尤其是写过技术文章、用过Markdown的朋友回去用公众号原生编辑器简直就是一种折磨。好在GitHub上一直有开发者在做开源免费的排版工具我陆陆续续试用过不少今天挑几个真正能提升效率的聊聊顺便把我在实际使用过程中踩过的坑和积累下来的经验一并分享出来。1. 公众号排版工具的核心痛点与选型思路1.1 为什么公众号自带编辑器这么难用先说一个最根本的问题微信公众号后台的编辑器本质上是一个在线富文本编辑器它在设计之初就考虑的是“能用”而不是“好用”。我自己的体感是这几个点最让人难受样式不可复用调整好的字号、行间距、段间距换一篇文章就得重新来一遍即使有“收藏样式”功能种类也很有限且不支持自定义CSS。代码块缺失对技术类文章极不友好。微信编辑器没有原生的代码块只能通过第三方工具或手动改样式。即使你手动设置了背景色和等宽字体在手机上显示也经常错位。图片处理能力弱不能直接调整图片圆角、阴影更不用说批量处理了。复制格式错乱从Word、网页或其他编辑器复制内容到公众号后台格式大概率会乱掉需要手动清理非常浪费时间。所以我从很早开始就形成了自己的排版原则不在公众号后台写字更不在后台排版。我的工作流是“本地写、工具排、一键粘贴”。这个工作流的最后一环也就是“排版”就是GitHub上这些开源工具要解决的问题。1.2 开源排版工具的整体方案分类我试用过的所有公众号排版工具可以分成三类了解了这个分类你就不容易在众多项目里挑花眼第一类Markdown本地预览转换型代表作是md2all这类工具。它们提供的其实是一个本地网页编辑器你在左侧用Markdown语法写作右侧实时预览公众号文章效果排好后一键复制到公众号后台。这类工具的好处是完全离线可用速度极快数据不出本地。缺点是需要自己手动启动服务或者打开本地HTML文件写作和复制是两个独立动作整体“仪式感”比较强。第二类在线服务型代表作是Doocs/md、WeChat Format等。它们属于在线网站开箱即用浏览器打开就能写。这类工具的优势是跨平台、无需部署、样式丰富还能保存配置。但问题在于在线服务依赖服务器稳定万一项目维护者停止维护或者服务器过期工具就不能用了。第三类浏览器插件或编辑器插件型代表作有Markdown Editor for WeChat、各种VS Code插件。它们是寄生在现有编辑器如VS Code、Typora里的插件你在自己熟悉的编辑器里写文章用插件自带的命令或快捷键一键转换成公众号格式并复制到剪贴板。这类工具的最大好处是“写作与排版一体化”我最终主力使用的方案就是这种。三类方案各有优劣具体选择取决于你是“重排版”还是“重写作”。如果你对排版要求很高喜欢细腻的样式控制第一类和第二类更合适如果像我们这种写技术博客出身的习惯在代码编辑器里写字那第三类才是最终归宿。1.3 选型时我考察的几个关键维度在深度使用之前我给自己定了一些选型的判断标准这里分享出来供大家参考代码维护活跃度直接看GitHub仓库的最后提交时间。超过半年没更新的项目原则上直接排除因为公众号后台的HTML结构偶尔会变长期不维护的工具迟早会失效。样式简约程度我个人的审美偏简约工具默认样式如果花里胡哨比如大量彩色边框、渐变背景、卡通分割线基本直接淘汰。因为这类样式在编辑器里看着还行出了文章正文跟整体品牌调性很难统一。是否支持自定义CSS这是一个分水岭。不能自定义CSS的工具意味着你只能用它预置的皮肤无法形成自己的排版风格。能调CSS的你就能完全掌控文章的视觉呈现。扩展能力比如是否支持图片上传到图床、是否支持自定义代码高亮主题、是否支持字数统计等。这些辅助能力能省下不少时间。2. 主流开源工具的对比分析与实测体验2.1 工具Amd2allmd2all是我最早使用的一批工具之一。它是一个项目地址在github.com/yangweigbh/md2all的本地工具不需要联网整个工具就是一个HTML文件。实测体验首次使用需要有一些耐心因为你需要自己用浏览器打开index.html文件。打开后的界面很“朴素”左侧是Markdown编辑区右侧是公众号样式预览区。你写完左侧内容右侧会实时渲染。这款工具的亮点在于它内置了几套还算耐看的主题比如“绿意”、“清雅”等并且支持调整字体、字号、行间距、代码块样式。它还提供了“复制到公众号”按钮一键就能把格式化好的内容复制到剪贴板。存在的问题界面语言是英文居多对有些朋友不太友好。样式虽然可以改但CSS修改的入口藏得比较深对不熟悉前端的朋友来说有一定门槛。图片处理相对简单虽然有“本地图片转Base64”功能但处理大图时粘贴到公众号后台容易超出字符限制。适合人群喜欢折腾、有一定技术基础、追求完全离线的用户。2.2 工具BDoocs/mdDoocs/md是后来社区热度非常高的一个开源项目仓库地址是github.com/doocs/md。它提供了在线预览的Web版本也支持Docker私有化部署。实测体验Doocs/md的界面现代化程度比md2all高出不少左侧编辑区右侧预览区样式干净。它最大的特点是“主题丰富”内置了多套主流配色基本上你看到的很多公众号大V的排版风格在它的主题库里都能找到影子。它有一个功能让我印象很深一键复制整个公众号文章内容。你写完文章后点复制粘贴到公众号后台时不仅正文格式正确连标题、摘要、作者等元信息的占位符都能一起复制进去省了很多重复劳动。它还支持同步文章到多个平台如掘金、博客园、CSDN等。如果你的内容是多平台分发的这个功能非常实用。存在的问题在线版本偶尔会有网络延迟打开慢。免费版本有一些高级主题不支持需要自己部署才能解锁。因为项目太热门在线网站的访问量很大偶尔会碰到服务不稳定的情况。适合人群追求开箱即用、喜欢丰富主题、有多平台分发需求的创作者。2.3 工具CWeChat FormatWeChat Format是一款VS Code插件仓库地址在github.com/lyricat/wechat-format。它也是我目前主力在使用的一个方案。实测体验安装方式非常简单在VS Code扩展市场搜索“wechat-format”安装即可。使用的时候只需要在写好的Markdown文件里点击右键选择“一键排版”命令。插件会自动将当前文档转化成公众号风格的HTML并复制到剪贴板。你再回到公众号后台粘贴即可。它的内置样式比较克制没有太多花哨的元素整体走的是干净、清晰的路线。代码高亮使用highlight.js支持大多数主流代码风格。最让我喜欢的是它的“图片外链自动转Base64”功能。因为公众号后台无法直接使用外链图片如果你文章中引用了远程服务器上的图片粘贴到后台会裂掉。这个插件在复制前会检测外链图片并自动转成Base64嵌入虽然会让HTML文件变大但至少保证了图片不会丢。存在的问题高度依赖VS Code如果你不用VS Code就白搭。默认样式不够丰富如果你想换皮肤需要手动修改插件的CSS文件对CSS不熟的朋友有点难。它只负责“转换并复制”不提供预览界面所以你把内容粘贴到公众号后台前看不到最终的渲染效果。不过这一点我基本可以接受因为熟练后对样式心里有数。适合人群VS Code重度用户、技术文章写作者、追求写作与排版一体化的人。2.4 工具DThesecretary / Markdown-Nice之流除了上面三个还有一些偏门但好用的小工具比如“Thesecretary开源秘书”它是一个Obsidian插件专门针对Obsidian笔记软件用户设计。因为Obsidian本身就是一个Markdown编辑器配套这个插件后写完笔记一键就能转成公众号文章非常顺滑。如果你在用Obsidian管理自己的内容库这是一个不容错过的小众神器。还有“Markdown-Nice”曾经也很火现在因为维护力度下降我在实际使用中发现它偶尔会有渲染上的小问题所以逐渐不再作为主力推荐。2.5 工具横向对比总表工具名称类型是否需要部署自定义CSS多平台分发推荐指数md2all本地HTML不需要可以不支持三星Doocs/md在线服务/自托管在线版不需要支持支持五星WeChat FormatVS Code插件不需要支持需改文件不支持四星ThesecretaryObsidian插件不需要支持不支持四星3. 实操过程与核心环节实现3.1 快速体验方案使用Doocs/md在线版如果你只是想快速体验一下不折腾本地环境那我建议你直接用Doocs/md的在线版。它的官方地址是md.doocs.org。打开之后整个界面是中文的上手成本极低。实操步骤在左侧编辑器区域用Markdown语法写好内容。在右侧预览区确认显示效果。点击顶部的“主题”按钮浏览内置主题选择一个自己看着舒服的。点击“复制”按钮然后打开公众号后台新建图文在正文区域直接粘贴即可。我在实际操作中发现一个细节Doocs/md默认主题的代码块在手机端的字体大小偏小如果想调整可以在它的源码里修改默认字体大小参数。如果你是在线版本无法改源码那就只能在微信公众号后台再手动选中代码块调整一遍字号。3.2 进阶方案部署自己的Doocs/md实例在线版本虽然方便但如果你对数据隐私有要求或者希望自定义主题就需要自己部署一套。不用担心部署难度不大我实测过两种方式。方式一使用Docker部署推荐确保你的机器安装了Docker然后执行以下命令docker run -d --name doocs-md -p 8080:80 doocs/md:latest等待容器启动后浏览器访问http://localhost:8080即可使用。这里如果想正式使用建议用-v参数挂载一个数据卷把配置文件放出来方便后续升级不丢配置。方式二手动下载源码部署git clone https://github.com/doocs/md.git cd md npm install npm run dev本地开发环境启动后默认访问http://localhost:3000。生产构建用npm run build构建产物在dist目录下扔到任意静态服务器就能跑。我个人建议如果你只是自己用Docker方案最省心如果你想深度定制UI就需要源码方式。3.3 主力方案VS Code WeChat Format 配合使用作为一个VS Code重度用户我最终长期用的是这套组合拳。下面详细讲讲我的配置流程。第一步安装插件打开VS Code在扩展市场搜索“wechat-format”找到插件后点击安装。第二步调整插件样式关键步骤插件默认的字体是14px行间距也不算大我实测在公众号后台看会略显拥挤。所以我一般会修改插件的CSS文件。先在VS Code的设置里找到wechat-format.editorFontSize把它改成16px。然后找到wechat-format.lineHeight调成1.8。这两项在插件设置面板里都能直接看到解释说明不需要改代码。如果你需要完全自定义也可以直接修改插件的style.js文件。方法是安装好插件后在VS Code的扩展文件夹里找到wechat-format打开src/style.js里面就是全局CSS字符串。你可以把.wechat-format类下面的font-size、line-height、color等参数都改成自己的偏好值。我自己的经验是公众号文章的字号在15px到16px之间最合适行间距1.7到1.8段间距0.5em以上这样的长文阅读体验最好。第三步写作和排版在VS Code里打开你的Markdown文件写完内容后在编辑器任意位置点击右键选择“一键排版”。此时插件会自动做三件事将Markdown转换为带公众号样式的HTML。将外链图片自动转成Base64格式。将转换好的HTML复制到剪贴板。回到公众号后台直接粘贴即可。整个过程不超过5秒。第四步处理代码块和图片代码块通常占版面较大如果代码行数很多在手机上显示体验并不好。我的习惯是在公众号后台粘贴完成后手动检查一下代码块部分尤其是长代码我会把代码块折叠成一行或者手动截图上传。这个动作虽然多一步但能显著提升阅读体验。3.4 自定义主题的思路以WeChat Format为例聊点进阶内容。很多朋友问我“如何让自己的公众号排版看起来特别一点”我的答案永远是“自己做一套样式”。以WeChat Format为例它在src/style.js里定义了一个大字符串变量所有样式都在这里面。你完全可以自己写一套CSS做到和别人完全不一样的视觉效果。比如我给自己博客配的样式是这样的思路正文文字颜色不用纯黑用#3f3f3f观感更柔和。标题用品牌色#007AFF加粗但不加大太多。引用块用左边框线加浅灰背景不用花哨的底色。代码块用深色背景、浅色文字代码字体用JetBrains Mono或Consolas。改成自己的样式后每次排版复制出来的就是你的专属风格读者一眼就能认出你的文章。这个优势是在线工具无法比拟的。4. 常见问题与排查技巧实录4.1 复制粘贴到公众号后代码块没有高亮这是我被问得最多的问题。原因是WeChat Format这类插件在复制后会使用highlight.js生成代码高亮的HTML结构但公众号后台编辑器会过滤掉大部分class属性导致颜色样式丢失。解决办法在公众号后台粘贴后选中代码块区域看顶部的工具栏是否出现了“代码块”相关的处理按钮。如果没有手动给代码块文字加一个背景色或者单独用截图工具把代码区域截图后插入图片。这是我目前最稳定的做法。4.2 图片粘贴后显示异常公众号后台对复制过去的Base64图片正常情况下是支持的。但如果你一篇文章中有大量高清大图Base64后的字符数量会很大这时候粘贴到后台可能出现上传失败或者内容过长无法保存的情况。解决办法尽量压缩图片再插入文章或者先用图床服务如七牛云、阿里云OSS上传图片再在Markdown里用外链方式引用。但是要注意外链图片在公众号后台保存后通常会失效所以要么用Base64要么就直接在公众号后台手动上传图片。4.3 在线版工具打不开或非常慢Doocs/md免费在线版时常会因为流量高峰而变慢这时候不要着急可以先检查本地网络如果没问题再考虑用Docker方式自己部署一份。部署之后不仅速度飞快还能解锁全部高级主题。4.4 格式化后排版在手机上错位很多朋友在电脑上看着好好的一用手机预览就乱了。最典型的是表格排版。公众号后台对表格的兼容性非常差它会强制每个单元格自动换行导致表格变形。解决办法尽量避免在公众号文章中使用复杂表格。如果要展示二维数据建议用截图的方式把表格做成图片稳稳当当。如果你确实需要实时更新的数据表格建议用简单的一维列表代替。4.5 自定义CSS后工具升级被覆盖很多朋友遇到过这种情况辛苦修改的样式因为插件升级被重置了。这个问题的根源在于升级的时候旧配置被新安装包覆盖了。解决办法在修改样式文件之前先把原始文件复制一份到本地比如存到你的笔记软件里。升级后如果需要重新修改对照旧配置再改一遍就行。还有一个更好的办法使用支持“自定义CSS路径”的工具。比如我目前在用的WeChat Format新版它支持在设置里指定一个外部CSS文件路径插件在加载时会优先读取这个外部文件。这样一来样式跟插件本体就解耦了升级随便升样式永远都在。4.6 工具体验总结表场景推荐工具原因快速排版不折腾Doocs/md在线版开箱即用主题多多平台分发方便技术文章、代码多WeChat Format与VS Code结合紧密代码高亮好注重隐私、离线使用md2all纯本地无网络请求Obsidian用户Thesecretary与笔记软件无缝衔接需要完全自定义品牌风格WeChat Format 自定义CSS样式完全可控升级不覆盖5. 后续可以扩展的方向这套排版工作流稳定用了一段时间后我开始琢磨怎么让内容产出效率再高一点。目前比较可行的扩展方向有这么几个第一个方向是把排版工具接入自动化发布流程。比如利用GitHub Actions在你推送到仓库时自动将Markdown文章构建成公众号格式的HTML并自动上传素材到草稿箱。虽然微信目前没有官方开放“发布文章”接口但部分第三方平台已经能实现半自动化操作了。第二个方向是样式组件化。不要满足于一篇文章的排版可以把常用模块比如提示框、代码块、待办列表做成一套组件需要的时候像搭积木一样组合。这个思路也可以用在你自己的个人网站或双平台分发上保持所有平台视觉一致。第三个方向是把公众号排版和你的个人知识库打通。我现在的文章产出路径是先写进Obsidian做积累再复制到VS Code排版最后粘贴到公众号。如果你能把Obsidian、VS Code和公众号后台三者之间的切换做到一键完成就省掉了大量重复的复制粘贴动作。这也是我一直想进一步优化的方向。公众号排版工具的生态在GitHub上一直都很活跃。我上面提到的这些方案只是众多优秀项目中的一小部分如果你有自己私藏的神器欢迎在评论区留言分享。毕竟工具是死的生产效率是活的一套顺手的排版流程真的能让写作这件事愉快很多。