wechatsync 扩展 开发文档
这个项目是什么
wechatsync 是 WechatSync 的一个 Chrome 扩展 fork:一个免费开源的「文章一键多平台同步」工具,把当前页面的内容一键同步到知乎、掘金、CSDN、百家号、微信公众号等 29+ 内容平台,统一走各平台官方创作者后台接口、默认存为草稿,数据只在本机处理——不会经过任何第三方服务器,作者看不到你的内容。
本 fork 在上游基础上补了两块自有能力:公众号多账号保持在线(多个公众号账号同时保活、同步时指定目标账号、Cookie 轮换自动保存),以及常开同步桥接(扩展默认开启一个本地 WebSocket 桥接,供 CLI、MCP、Claude Code 等外部工具发起同步)。
工作原理
- 在浏览器中登录各内容平台,扩展从登录态获取操作所需的凭证。
- 在当前页面打开扩展,选择目标平台并同步。
- 扩展调用各平台官方创作者后台接口创建草稿,不依赖第三方中转。
- 结果默认保存为草稿,到目标平台后台二次编辑确认后再发布。
- 基础同步功能完全免费;商用、批量分发与商业授权需遵守项目协议。
技术栈与仓库结构
| 层 | 技术 |
|---|---|
| 扩展 | Chrome MV3(packages/extension,v2.0.0 起为全新 React UI) |
| 核心 | TypeScript 5.x、Vite 4、unified/rehype/remark/turndown 内容转换 |
| 桥接 | 本地 WebSocket(CLI / MCP / 外部工具连接) |
| 工程 | pnpm(README 命令)+ yarn workspace 脚本(package.json scripts 为 yarn workspace … 形式),engines.node >= 20 |
wechatsync/
├── README.md / CHANGELOG.md / CONTRIBUTING.md / LICENSE (GPL-3.0)
├── docs/ # 使用与开发文档
├── skills/ # Claude Code 等 AI 工具的 skill 资产(.claude-plugin)
├── packages/
│ ├── extension/ # Chrome 扩展(加载 packages/extension/dist)
│ ├── core/ # 各平台适配器、状态、登录、账号管理
│ │ └── src/content/ # 内容转换模块(统一/rehype/remark,ProseMirror JSON、capabilities.ts)
│ ├── cli/ # @wechatsync/cli
│ └── mcp-server/ # Model Context Protocol 服务
└── pnpm-workspace.yaml / pnpm-lock.yaml / yarn.lock / tsconfig.json
本地开发
git clone <本仓库地址>
cd wechatsync
pnpm install
pnpm dev # 构建 packages/extension/dist
Chrome 开启开发者模式 →「加载已解压的扩展程序」→ 选择 packages/extension/dist。Node 版本要求 >=20。
配置项说明
| 配置 | 位置 | 说明 |
|---|---|---|
| 扩展设置 →「MCP 连接」Token | 扩展 Options | CLI / MCP 连接扩展时必须配置;本 fork 默认内置 Token,改后端需同步 |
WECHATSYNC_TOKEN |
shell 环境变量 | CLI 使用 |
MCP_TOKEN |
MCP 配置 JSON(如 claude_desktop_config.json) |
MCP 客户端使用 |
| 桥接服务器地址 | 扩展设置页(CLI 桥接地址) | 本 fork v2.1.1 起桥接默认开启、始终连接、不可关闭;v2.1.2 起默认地址为 ws://192.168.68.19:9600(默认 Token 内置,CLI 与 MCP 默认端口同为 9600;旧的 localhost:9527 地址已清理) |
| 悬浮同步按钮 | 扩展设置页 | v2.0.6 起可开启,浏览文章时右下角常驻入口,不刷新页面即可同步 |
| 文章/图片接口地址 | 扩展设置页 | 私有部署时可配置 |
CLI 与 MCP
npm install -g @wechatsync/cli
export WECHATSYNC_TOKEN=<Token>
wechatsync sync <url> --targets "csdn,zhihu"
{
"mcpServers": {
"wechatsync": {
"command": "npx",
"args": ["-y", "@wechatsync/mcp-server"],
"env": { "MCP_TOKEN": "<Token>" }
}
}
}
MCP 提供 getSupportedTargets、getUserInfo、syncArticle 等工具;syncArticle 支持 content / markdown 内容、HTML 转 Markdown、图片自动下载上传。仓库还带 .claude-plugin(Claude Code skill,自然语言下达「同步到知乎和掘金」)和 OpenClaw 平台技能接入。
二次开发要点
- 新增平台适配器:在
packages/core按上游的 适配器规范 实现(依赖登录态的账号管理与各平台官方发布接口),在扩展面板暴露目标并接syncArticle。 - 内容转换模块:
packages/core/src/content/统一处理 HTML→Markdown/富文本,支持按平台能力裁剪(capabilities.ts);小红书等平台输出 ProseMirror JSON。改格式问题优先动这个模块,而不是在 UI 层打补丁。 - 超时保护(v2.0.3 引入):
checkAuth10s、publish10min、runtime.fetch30s、tabs.waitForLoad30s。扩展调用外部接口必须受保护,失败直接失败优于无限等待。 - 桥接保持:桥接是「公众号在线页 + 外部工具同步」的基座,v2.1.1 起不可关闭;改桥接协议时同步更新 CLI / MCP 的默认端口与 Token 说明。
- Cookie 轮换:公众号账号运行中 Cookie 会自动轮换保存(v2.1.0),保活状态不可用页面刷新代替。
- 贡献规范:上游 GPL-3.0;PR 前跑
pnpm dev构建确认扩展可加载,涉及平台接口的改动要说明测试账号类型(订阅号/服务号等)。
更新记录(摘自 CHANGELOG.md,本 fork)
- v2.1.3:新增「窗口」入口,扩展可在独立窗口打开并常驻保持(长期挂后台保活时使用)。
- v2.1.2:桥接地址与 Token 内置默认值(
ws://192.168.68.19:9600);清理已废弃的localhost:9527地址;CLI 默认端口统一为 9600。 - v2.1.1:桥接服务始终连接、默认开启且不可关闭;默认桥接地址提示更新。
- v2.1.0:新增公众号多账号保持在线能力与「公众号在线」管理页(popup 顶部导航「在线」入口),支持多账号保活、指定目标账号同步、Cookie 轮换自动保存。
- 更早的 v2.0.x 为上游迭代(v2.0.0 全新 React UI、v2.0.3 超时保护、v2.0.6 悬浮同步按钮、v2.0.9 多项修复),详见仓库
CHANGELOG.md。
相关链接
- Gitea 仓库:http://127.0.0.1:3200/jinghui/wechatsync
- 上游项目:https://github.com/wechatsync/WechatSync | 官网 https://wechatsync.com/ | 更新日志 https://wechatsync.com/changelog/
- Chrome 应用商店:https://chromewebstore.google.com/detail/wechatsync-%E4%B8%80%E9%94%AE%E5%90%8C%E6%AD%A5/fepbnieinmmkbmhalkkaipjnmemfggjc
- 许可:GPL-3.0(上游协议)