DEV Community

wxfwxf911
wxfwxf911

Posted on

The Pain of Publishing to 9 Platforms — And How I Automated It Away

写了 40 分钟文章,发了 30 分钟——程序员的发布困境终于有解了

一个周三晚上的真实记录

22:00,写完了一篇 Python 异步编程的教程,2200 字,Markdown 格式,代码块带语法高亮。

22:03,打开掘金。粘贴标题。粘贴正文。代码块的高亮没了。手动调整。选标签。发布。

22:08,打开知乎。粘贴标题。粘贴正文。Draft.js 编辑器把 async def 解析成了 asyncdef。一段一段地修。发布。

22:15,打开 CSDN。粘贴标题。正文正常了。但分类列表有 50 个选项,要找到"Python"得翻半天。发布。

22:20,打开博客园。分类里要加 [Markdown] 标签,不然文章会被当 HTML 解析。上次忘了加,整篇文章变成一团乱码。发布。

22:25,打开思否。标签搜索"Python 异步",返回 0 结果。手动输入。发布。

22:30,打开 Dev.to。标题翻成英文。正文翻成英文。发布。

写完文章用了 40 分钟,发布用了 30 分钟。

22:35,终于全部发完。但第二天醒来,想看各平台数据——又得一个个登录后台。

我不是一个人

在 V2EX、掘金、知乎上搜了一圈,发现这不是我一个人的痛苦:

"每次发文章都要打开七八个页面,复制粘贴七八次,调格式七八次。写完文章的高兴劲都被磨没了。"
— V2EX 用户

"我一般只发掘金,因为多发几个平台太累了。但只发掘金的话,文章在搜索引擎上的曝光又不够。"
— 知乎回答

"之前手动管理 4 个平台,后来放弃了只剩掘金。不是不想维护其他平台,是时间和精力不允许。"
— 掘金沸点

程序员的发布困境:写文章很开心,发布很痛苦,看数据更痛苦。

为什么"复制粘贴"解决不了?

你可能想说:不就是 copy-paste 吗?能有多麻烦?

问题是每个平台的编辑器都不一样

平台 编辑器 对 Markdown 的处理
掘金 自研 Markdown 编辑器 支持好,但代码块高亮有时丢失
知乎 Draft.js 富文本 不支持 Markdown,换行符被吃
CSDN 富文本 + Markdown 双模 切换模式容易乱
博客园 TinyMCE 不加 [Markdown] 分类就当场爆炸
思否 Markdown 还可以,但标签系统难用
Dev.to Markdown 体验最好,英文平台

同一段 Markdown,在不同平台的表现完全不同。这不是复制粘贴能解决的。

自动化能做什么?

我花了两个星期的业余时间,写了一个开源工具——PolyPost

核心逻辑很简单:你写一次 Markdown,它帮你适配到每个平台的格式要求,然后自动发布

写文章(Markdown)
      │
      ▼
  PolyPost 适配层
  ├─ 掘金 → Markdown → API 发布
  ├─ 知乎 → 纯文本 → Draft.js API 发布
  ├─ CSDN → HTML → API + X-Ca 签名发布
  ├─ 博客园 → Markdown → MetaWeblog XML-RPC
  └─ 思否 → 纯文本 → API 发布
      │
      ▼
  全部发完,耗时 ≈ 30 秒
Enter fullscreen mode Exit fullscreen mode

除了发布,还能做什么?

  1. 数据看板:一个页面看所有平台的阅读/点赞/评论,不用一个个登录后台
  2. Cookie 管理:Chrome 浏览器插件一键提取登录态,不用手动 F12
  3. 定时发布:写好了预约时间发,配合平台流量高峰
  4. 发布记录:哪篇发了哪个平台,一目了然

开源 & 自部署

PolyPost 是开源的(MIT License),你可以部署在自己的服务器上:

👉 GitHub: https://github.com/wxfwxf911/polypost

目前支持 9 个平台:掘金、知乎、CSDN、博客园、思否、小红书、抖音、B站、微信视频号。

如果你只用 3-4 个平台,可能不需要这个工具。但如果你像我一样维护 5+ 个平台,这 30 秒 vs 30 分钟的差距,每发一篇文章都能体会一次。

最后

写代码是为了解决问题。自己的问题也是问题。

如果你也被多平台发布折磨过,欢迎 Star ⭐ + 试用。如果你想支持更多平台,提个 Issue,我来适配。

毕竟——写文章已经很累了,发布这件事,交给代码就好。


#Python #自动化 #效率工具 #开源 #技术写作

Top comments (0)