用 Python 写一个可扩展的多平台发布器
在日常技术写作中,我们常常要把同一篇文章同步到微信公众号、掘金、CSDN 和自建的 WordPress 站点。重复排版、手动上传封面既耗时又容易出错。本文介绍一个可扩展的多平台发布脚本设计思路。
为什么需要发布器
- 一次写作,多端分发:Markdown 作为单一内容源,各平台按需渲染。
- 视觉统一:公众号只认内联样式,Web 平台则适合语义化 HTML + 代码高亮。
- 易于扩展:新增平台只需继承一个基类并注册。
核心抽象:BasePublisher
我们把每个平台抽象为一个发布器,统一返回发布结果:
class BasePublisher:
name = "base"
def publish(self, ctx: dict) -> PublishResult:
raise NotImplementedError
ctx 里携带三种内容形态:html_wechat(公众号内联样式)、html_web(语义 HTML)、markdown_raw(原始 Markdown),以及随机配图信息。
统一分类 / 标签映射
通过一张 category_map / tag_map 表,把”语义化”的 canonical key(java、ai、spring)映射到各平台的原生 ID(WP slug / 掘金 tag_id)。CLI 只需传 --category java,ai --tag java,spring,各 Publisher 自动取自己平台的值。
随机技术配图
从内置的技术图池里随机挑选一张,走 Unsplash CDN;抓取失败时回退到 picsum。
小结
通过”配置驱动 + 基类注册”的方式,我们可以在不大改主流程的前提下,持续接入新的内容平台。
希望这篇小文对你搭建自己的发布流水线有所帮助。

