Wechatsync 将文章同步放在浏览器扩展中执行,再通过 CLI 和 MCP 接收外部任务。研究它的源码时,最值得看的是这条链路:命令行或 Agent 不必分别实现每个平台的登录流程,而是把任务交给已登录的浏览器,再由平台适配器转换内容、上传图片和建立草稿。本文按仓库 v2 分支说明,当前扩展清单标注 2.0.9。

任务进入扩展后,谁负责哪一步
本地 Markdown / Agent 工具调用
↓
CLI / MCP → WebSocket 桥接
↓
浏览器扩展 Service Worker
↓
core 平台适配器 → 目标平台接口 → 草稿
CLI、MCP 与浏览器之间依靠本地桥接通信。适配器在扩展环境中运行,借助浏览器的登录态访问目标平台;所以装好了 npm 包,还要安装配套扩展、开启相应连接,并在目标平台完成登录。
| 源码区域 | 主要职责 | 修改入口 |
|---|---|---|
| packages/core | 平台适配、文章类型、运行时抽象与内容转换 | 增加平台或修正接口与格式适配 |
| packages/extension | Manifest V3 扩展、界面与浏览器运行时 | 账号检测、同步交互和扩展权限 |
| packages/cli | 本地文章与命令行任务 | 文件输入、参数、预览与任务输出 |
| packages/mcp-server | 将同步能力提供给 Agent 客户端 | 工具定义、参数和桥接调用 |
同步后通常先得到平台草稿,再去目标编辑器检查标题、正文、图片和平台格式。成功响应并不等于文章已经正式发布;维护平台接口时,要把草稿创建和发布状态明确区分。
新增平台,先沿着文章经过的路径读代码
登录检测与接口调用
先阅读 docs/adapter-spec.md,再找一个机制接近的现有适配器。理解它如何检查账号、接受文章字段、发请求并返回结果,随后实现相应接口和注册。仅把平台名加入列表,扩展还不会知道怎样创建文章。
规范中的 RuntimeInterface 将 fetch、Cookie、存储和请求头规则等能力抽象出来。平台调用应通过这些接口配合扩展环境,避免把浏览器窗口脚本或 Node.js 示例原样搬进适配器。
图片上传与正文转换
目标平台可能要求先上传图片,再将正文中的原地址替换成平台地址;HTML、Markdown 与编辑器结构也可能不同。要分别检查图片返回值、正文替换和文章响应,不能只证明一个请求返回成功就认定整篇内容正确。
适配器主要运行在 Chrome Extension Service Worker 中,不能默认有 window、document 或 DOMParser。转换逻辑必须适合实际运行环境,确实需要 DOM 时另选扩展支持的处理方式。平台调整接口以后,优先定位相应适配器和请求契约,其他入口未必都需要改。
Hexo、Hugo 等导出路线生成 Markdown 和 ZIP 材料,和直接向平台建立草稿是不同交付方式。导出的文章与资源仍要放进自己的站点,再走该站的构建和部署流程。

先预览一篇文章,再接自动化入口
CLI 文档提供以下安装和检查方式。先确认平台登录态,再用 dry-run 查看解析结果;这里只展示命令,没有执行同步:
npm install -g @wechatsync/cli
wechatsync platforms --auth
wechatsync sync article.md --dry-run
确认标题、正文和选定平台后,才发送草稿任务,例如:
wechatsync sync article.md -p zhihu,juejin
--dry-run 用于预览,不等于已经验证了目标平台的写入结果。正式同步以后,仍要在平台草稿中检查内容。先同步一篇短文章,检查图片、排版和接口,再考虑批量分发。
- MCP 提供平台列表、认证检查、文章同步和页面提取等工具,工具参数仍要限定目标与操作范围。
- CLI 的
WECHATSYNC_TOKEN、MCP 的对应 Token 配置,应与扩展侧设置一致;令牌不一致会影响桥接认证。 - 远程桥接涉及默认 9527 端口和明文 WebSocket,不能把令牌认证当作传输加密。需要跨机器连接时,限制访问范围并使用受控加密通道。
扩展清单申请 Cookie、标签页、脚本注入、下载和请求规则等权限,并有较广的 HTTP/HTTPS 主机权限。它需要接触文章页面和登录会话;执行同步时,正文和图片也会提交给选定平台,因此“在浏览器中运行”不能理解成全部数据永远不离开设备。
源码开发需要按同一分支准备依赖与扩展构建,根配置要求 Node.js 20+。CLI、MCP 和扩展分别有包版本,不能用根包的版本号推断已安装扩展。仓库根许可为 GPL-3.0,部分子包元数据标注 MIT;抽取组件独立分发时需确认具体授权范围,不只看一项 package 字段。
- v2 源码与架构:
https://github.com/wechatsync/Wechatsync/tree/v2 - 平台适配器规范:
https://github.com/wechatsync/Wechatsync/blob/v2/docs/adapter-spec.md - CLI 用法:
https://github.com/wechatsync/Wechatsync/tree/v2/packages/cli - MCP 桥接说明:
https://github.com/wechatsync/Wechatsync/tree/v2/packages/mcp-server














暂无评论内容