痛点
每次写完技术文章,发布才是最痛苦的环节。我有 9 个平台的账号要维护:掘金、知乎、CSDN、博客园、思否、小红书、抖音、B站、微信视频号。
过去的标准操作:
- 打开掘金 → 粘贴标题 → 粘贴正文 → 选标签 → 发布
- 打开知乎 → 粘贴标题 → 粘贴正文 → 调格式(Draft.js 各种吞换行)→ 发布
- 打开 CSDN → 粘贴标题 → 粘贴正文 → 设分类 → 发布
- ...重复 ×6
写文章 40 分钟,发布 30 分钟。而且每次都要忍受不同平台编辑器的怪癖——有的不认 Markdown、有的吃空格、有的代码块语法高亮全丢。
于是我写了个工具:PolyPost。一次编辑,9 平台同步发布。开源。
效果
在 PolyPost 的编辑器里写好文章(支持 Markdown + 富文本),勾选要发布的平台,点一下「发布」按钮。后端自动完成格式转换和推送。
对于不需要复杂交互的平台(掘金、CSDN、博客园、思否),直接调用 API 发布,秒级完成。对于需要浏览器操作的平台(知乎、小红书、抖音等),用 Playwright 模拟操作,但也比手动快得多——关键是你不用守着。
同时附带一个 Chrome 浏览器插件,一键提取各平台 Cookie,告别手工配置的麻烦。
技术实现
后端:Python FastAPI + SQLite。前端:原生 HTML/CSS/JS(无框架依赖,体积极小)。
支持平台及实现方式:
| 平台 | 类型 | 实现方式 |
|---|---|---|
| 掘金 | 文章 | HTTP API(Markdown 原生支持) |
| CSDN | 文章 | HTTP API |
| 思否 | 文章 | HTTP API |
| 博客园 | 文章 | MetaWeblog API |
| 知乎 | 文章 | Playwright 浏览器自动化 |
| 小红书 | 图文 | Playwright 浏览器自动化 |
| 抖音 | 视频 | Playwright 浏览器自动化 |
| B站 | 视频 | Playwright 浏览器自动化 |
| 微信视频号 | 视频 | Playwright + 微前端集成 |
一些有意思的技术细节
-
知乎 使用 Draft.js 富文本编辑器,不能直接设
innerHTML,必须用keyboard.insertText()触发 React 合成事件 - 小红书 是 Vue SPA,编辑器路由切换要走 Vue Router 内部导航
-
视频号 用 wujie 微前端框架,DOM 藏在
<wujie-app>的 Shadow DOM 里,普通的 CSS 选择器全部失效 - 抖音 登录页直接内嵌在发布页 URL 里,需要靠 body text 实时检测扫码状态
- B站 视频上传有独立的分片上传组件,要等「重新上传」按钮出现才算上传完毕,期间还需要等待转码
每个平台都是独立的小工程,做完之后再回头看,这些"脏活累活"才是自动化最能发挥价值的地方。
其他功能
除了核心的一键多发,还陆续加了:
- ⏰ 定时发布 — 可以预约发布时间,全自动
- 📊 数据看板 — 实时统计发布成功率、各平台阅读量/点赞数
- 👥 多账号管理 — 支持多个同平台账号切换
- 🔍 文章管理 — 已发布文章列表、重发、删除
为什么开源
这个工具一开始只是为了解决自己的痛点。但后来发现很多做自媒体的朋友都有类似的困扰——内容分发是所有创作者绕不开的时间黑洞,但又不是每个人的核心业务,不值得花精力去优化。
开源出来,希望更多的人能用上。也欢迎提 Issue 和 PR。
GitHub 地址:https://github.com/wxfwxf911/polypost
觉得有用的话,给个 Star ⭐️ 就是最大的鼓励
后续计划
- 海外平台接入(Medium / Dev.to / Hashnode / Reddit)
- 文章翻译(中英互译,方便发海外平台)
- AI 辅助优化标题和摘要
Top comments (0)