DEV Community

wxfwxf911
wxfwxf911

Posted on

多平台内容分发的一点自动化实践

每次写完一篇技术文章,最花时间的往往不是写,而是往各个平台分发。掘金、知乎、CSDN、博客园、思否,每个平台打开、粘贴、调格式、选标签、发布——五个平台走完,半小时就过去了。如果还做视频内容,抖音、B站、视频号各上传一遍,工作量直接翻倍。

于是就写了一个小工具来解决这个问题。思路很朴素:写一次,到处发。

把文章写成 Markdown,选好目标平台,点一下发布,后端自动去各个平台完成登录、填内容、调格式、发布。整个过程不需要任何平台的 API 权限——大部分国内平台本来也没有公开的发布 API。实现方式是通过浏览器自动化,模拟真实用户的每一步操作。

听起来简单,但每个平台都有不同的坑。知乎的编辑器是 Draft.js,直接设 innerHTML 不管用,得用 insertText 触发 React 内部事件。小红书是一个 Vue SPA,路由切换要用 Vue Router 的 push 方法,不能直接点 DOM。视频号更特别,整个页面跑在无界微前端框架里,真实 DOM 藏在 wujie-app 元素的 Shadow DOM 里,操作必须用链式 locator 进去。抖音的登录页直接渲染在发布页的 URL 下,不跳转,只能靠 body text 检测扫码状态。B站的上传组件有独立的上传进度管理,得等到"重新上传"按钮出现才算上传完成。

具体实现上,后端用 Python 加 FastAPI,前端是简单的单页应用。每个平台封装成一个独立的模块,通过 Playwright 子进程做浏览器自动化。Cookie 和登录态通过 storageState 持久化,下次发不用重新扫码。

目前接入了 9 个国内主流平台:

平台 类型
掘金 文章
知乎 文章
CSDN 文章(存草稿)
博客园 文章
思否 文章
小红书 图文
抖音 视频
B站 视频
微信视频号 视频
后续考虑加上定时发布和数据统计功能。

如果你也是多平台写作者,被重复发布困扰过,这个思路希望对你有启发。自己动手解决日常工作中的痛点,是写代码最让人有满足感的事。

Top comments (0)