Repository files navigation

文章同步助手 (Wechatsync)

开源免费的跨平台文章同步工具 | Chrome 浏览器扩展 | 自媒体内容分发神器

一键同步微信公众号文章到知乎、头条、掘金、小红书、CSDN 等 29+ 平台,支持 WordPress 等自建博客,告别重复复制粘贴。

🔥 支持 Anthropic MCP 协议,可在 Claude Desktop / Claude Code 中通过 AI 一键发布文章

工作原理

文章同步助手不是爬虫,不模拟登录,不经过任何第三方服务器。

它是一个 Chrome 浏览器扩展,工作方式与浏览器本身一致:

  1. 使用你自己的登录态:你在浏览器里正常登录各平台账号,扩展直接使用浏览器中已有的 Cookie,无需额外授权,无需输入密码
  2. 调用平台官方接口:发布文章时,扩展调用的是各平台 Web 编辑器使用的同一套官方 API,与你手动在网页上发布完全等价
  3. 数据不离开你的设备:所有请求直接从你的浏览器发往各平台,没有中间服务器,没有数据上传,源代码完全开源可审计
  4. 草稿优先:默认将文章同步为草稿,发布前由你人工确认,不会自动发布
你的浏览器(已登录各平台)
↓ 扩展读取 Cookie
↓ 调用平台官方 Web API
各平台(知乎 / 掘金 / 头条 / ...)

功能特性

  • 一键批量发布: 微信公众号文章同步到知乎、掘金、头条、CSDN、简书、微博、小红书、抖音等 29+ 自媒体平台
  • 网页转 Markdown: 任意网页智能提取正文,自动过滤广告噪音,图片本地化,打包为 Markdown + 图片 ZIP 压缩包
  • 自建站支持: WordPress、Typecho、博客园 (MetaWeblog API)
  • 智能提取: 自动从网页提取文章标题、内容、封面图(基于 Safari 阅读模式)
  • 图片自动上传: 自动转存文章图片到目标平台,无需手动处理
  • 草稿模式: 同步后保存为草稿,方便二次编辑后发布
  • 同平台多账号: 在扩展内保存多套登录 Cookie,同一篇文章可同步到不同平台的多个账号
  • AI 集成: 支持 Anthropic MCP / Claude Code Skill / OpenClaw,多种方式接入 AI 工作流

同平台多账号

  1. 在目标平台网页登录第一个账号
  2. 打开扩展「设置 → 多账号登录态」,填写账号名称并保存当前登录态
  3. 在平台网页切换到其他账号,重复上述操作
  4. 同步文章时,可以像选择普通平台一样同时勾选多个账号

多账号 Cookie 仅保存在 chrome.storage.local。同步时扩展会备份当前会话,串行切换到目标账号,完成后在 finally 阶段恢复原会话。扩展不保存平台密码。由于切换期间同域网页也能观察到临时会话,建议同步时不要在目标平台网页同时进行编辑操作。

多 Chrome 用户资料 + 多客户端 Bridge(推荐用于 5 个以上账号)

这种方式不切换 Cookie:每个 Chrome 用户资料拥有独立的浏览器登录态,并各自运行一个扩展客户端;所有客户端同时连接同一个本地 Bridge。

  1. 在 Chrome 中创建多个本地用户资料(不要求登录多个 Google/Chrome 账号)
  2. 在每个用户资料中加载同一份扩展,并分别登录目标平台账号
  3. 打开扩展「设置 → 同步桥接」,为每个用户资料设置唯一名称,例如“知乎-账号A”
  4. 每个用户资料都启用同步桥接,并连接 ws://localhost:9527
  5. 在终端运行 wechatsync bridge 并保持运行,让所有用户资料稳定连接
  6. 另开终端运行 wechatsync clients 查看已连接用户资料
  7. 运行 wechatsync platforms --auth 获取 clientId::platformId 形式的账号 ID
# 精确发送到两个不同 Chrome 用户资料中的知乎账号
wechatsync sync article.md -p '<client-a>::zhihu,<client-b>::zhihu'# 自动发送到所有已登录的知乎账号(仍然只保存为草稿)
wechatsync sync article.md -p zhihu --all-accounts
# 正式公开发布建议始终启用安全模式(会要求输入 PUBLISH 二次确认)
wechatsync sync article.md -p '<client-a>::zhihu' --publish --safe

Bridge 会使用每个扩展注册的独立本地 Token 路由请求,因此多用户资料不需要共享同一个 Token,也不会通过 Bridge 复制平台 Cookie。只有一个用户资料连接时,原来的 zhihujuejin 等普通平台 ID 仍可直接使用。

--publish 只允许用于明确声明 direct_publish 能力的平台。当前代码已接通知乎、掘金、CSDN、开源中国、WordPress、Typecho 和 MetaWeblog;其他平台仍只保存草稿。四个公开平台适配器都会先完整保存草稿,再最多调用一次最终发布流程;发布后只读校验标题和作者,未立即公开时返回 submitted 并转入只读复查。CMS 则把正式发布标志传给对应接口。CSDN 和开源中国已通过自动化回归,但仍需在实际登录账号上完成草稿和单账号正式发布验收。

掘金正式发布建议为 Markdown 提供分类 ID 和标签 ID,避免平台因分类或标签缺失拒绝最终提交:

---
title: 文章标题summary: 不超过 100 字的摘要category: "6809637771511070734"tags: ["7467857238494020000"]
---

也可使用 --category <id> --tags <id1,id2> 覆盖 front matter。分类和标签参数为平台 ID,不是显示名称。

CSDN 正式发布至少需要一个标签;开源中国可选传入分类 ID。可在 Campaign 配置的 platforms.csdnplatforms.oschina 中分别设置。

安全正式发布

完整规则、限制和风险边界见 docs/safe-publish-mode.md

正式发布状态、审核状态和公开页面验证规则见 docs/publish-status-verification.md

正式发布具有账号和内容风险,推荐在 --publish 后同时使用 --safe。安全模式默认执行以下保护:

  • 发布前和每个账号实际执行前再次检查登录身份,并将首次确认的目标 ID 与平台账号用户名锁定
  • 同账号相同文章默认禁止重复发布;同一平台的多个账号默认禁止发布相同文章;不同平台之间允许正常分发
  • 每账号滚动 24 小时最多正式发布 2 篇,同账号两次发布至少间隔 30 分钟
  • 多账号严格串行执行,账号之间默认等待 30 分钟
  • 任一账号失败后默认立即熔断;可用 --continue-on-error 让后续目标继续执行,失败目标始终不自动重试
  • 平台最终发布失败时尽量保留并显示已经创建的草稿链接

首次操作先运行单账号安全预检。--dry-run 会连接 Bridge、确认账号身份并检查安全策略,但不会上传图片、创建草稿或正式发布:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu' \
--publish \
--safe \
--dry-run

同一篇文章选择多个账号时,默认预检不通过:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--dry-run

只有在人工确认确实需要跨账号发布相同内容后,才显式解除该项保护。下面的命令会正式公开发布,非交互环境还必须传入 --yes

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--allow-cross-account-duplicate \
--account-delay 30 \
--yes

可调参数:

--daily-limit <count> 每账号滚动 24 小时发布上限,默认 2
--min-interval <minutes> 同账号最小发布间隔,默认 30 分钟
--account-delay <minutes> 多账号顺序发布间隔,默认 30 分钟
--continue-on-error 关闭级联熔断,单个目标失败后继续后续目标;不重试失败目标
--allow-republish 显式允许同账号重复发布相同文章
--state-dir <path> 安全状态目录,默认 .wechatsync

身份锁定和发布历史保存在 .wechatsync/publish-state.json,文件权限为 0600,不会保存 Cookie、Token 或平台密码。删除该文件会同时清除身份锁定和本地防重复历史,因此不建议把它作为日常“解锁”方式。安全模式只能降低误发、串号和过快发布的风险,不能保证平台不会限流或限制账号。

持久化发布队列

长时间定时或多账号任务建议使用 SQLite 持久化队列,而不是让一次 sync 命令在终端内等待。完整说明见 docs/publish-queue-worker.md。队列功能需要 Node.js 22.5 或更高版本。

# 安全的首次测试:只做预检,不实际发布
wechatsync enqueue article.md \
-p '<client-a>::zhihu' \
--publish --safe --dry-run --yes
# 执行下一个到期任务
wechatsync worker --once
# 创建正式定时任务
wechatsync schedule article.md \
-p '<client-a>::zhihu' \
--at '2026-08-04 10:00' \
--publish --safe --yes
# 队列管理
wechatsync queue list
wechatsync queue show <job-id>
wechatsync queue pause <job-id>
wechatsync queue resume <job-id>
wechatsync queue cancel <job-id>

任务按目标拆分,默认零自动重试发布;源文件在入队后变化或 Worker 异常中断导致执行结果未知时,任务会进入 blocked,避免未经确认地重复发布。已提交/审核中的文章会进入持久化只读复查,复查可重试查询,但绝不重试发布。

一篇文章发布到所有平台和账号(Campaign)

Campaign 会发现所有已连接 Chrome 用户资料中的已登录账号,按平台用户 ID 去重,固定目标清单,并为每个目标创建持久化任务:

# 所有已登录平台和账号保存草稿
wechatsync campaign create article.md
# 只选择知乎和掘金,但包含这两个平台的所有已登录账号
wechatsync campaign create article.md -p zhihu,juejin
# 正式发布。默认只要存在不支持正式发布的平台就中止预检
wechatsync campaign create article.md --publish --safe --yes --config campaign.config.json
# 支持正式发布的平台公开发布,其余平台只保存草稿
wechatsync campaign create article.md --publish --safe --yes --unsupported draft
# 使用平台级分类、标签、摘要和封面配置
wechatsync campaign create article.md --config docs/campaign.config.example.json
wechatsync campaign list
wechatsync campaign show <campaign-id>
wechatsync campaign cancel <campaign-id>

“一次发布”表示一次创建全部目标任务,底层仍由安全队列受控串行执行,不会在同一秒向所有账号并发请求。正式发布能力当前以适配器的 direct_publish 声明为准;保存草稿不能算作公开发布成功。

完整设计和测试说明:

验证码、登录失效、身份不匹配、限流和审核拒绝会生成“待人工处理”记录。该记录明确携带 retryPublish: false,Worker 会阻止任务而不是自动重发。

安装方式

Chrome 浏览器扩展安装

推荐: Chrome 网上应用店 (自动更新)

手动安装: 下载 最新 Release 解压后加载到 Chrome 扩展

支持 Chrome / Edge / 360 / QQ 等 Chromium 内核浏览器

支持 29+ 主流平台

平台ID类型状态
微信公众号weixin主流自媒体
知乎zhihu主流自媒体
微博weibo主流自媒体
小红书xiaohongshu主流自媒体
掘金juejin技术社区
CSDNcsdn技术社区
简书jianshu通用
头条号toutiao通用✅ 草稿模式
抖音图文douyin主流自媒体✅ 🆕
B站专栏bilibili通用
百家号baijiahao通用
语雀yuque技术社区
豆瓣douban通用
搜狐号sohu通用
雪球xueqiu财经
人人都是产品经理woshipm产品
大鱼号dayu通用
一点号yidian通用
51CTO51cto技术社区
慕课网imooc技术社区
开源中国oschina技术社区
SegmentFaultsegmentfault技术社区
博客园cnblogs技术社区
搜狐焦点sohufocus房产
X (Twitter)x海外
东方财富eastmoney财经
什么值得买smzdm通用
网易号netease通用
WordPresswordpress建站/CMS
Typechotypecho建站/CMS
Hexozip-download建站/CMS✅ 通过 Markdown 下载
Hugozip-download建站/CMS✅ 通过 Markdown 下载

CLI 命令行工具

最简单的使用方式,无需配置 MCP,安装即用:

npm install -g @wechatsync/cli

需要先安装 Chrome 扩展并在扩展设置中启用「同步桥接」。新版扩展会把各用户资料自己的本地 Token 注册给 Bridge;WECHATSYNC_TOKEN 仅作为旧版扩展兼容回退项:

# 仅连接旧版扩展时需要:export WECHATSYNC_TOKEN="你的token"# 同步文章到多个平台
wechatsync sync article.md -p zhihu,juejin,csdn
# 查看平台登录状态
wechatsync platforms --auth
# 查看当前连接的 Chrome 用户资料
wechatsync clients
# 多用户资料时建议在单独终端持续运行 Bridge
wechatsync bridge
# 从浏览器当前页面提取文章
wechatsync extract -o article.md

Claude Code Skill 集成

安装后可在 Claude Code 中直接用自然语言操作:

/plugin marketplace add wechatsync
/plugin install wechatsync

然后直接说"把这篇文章同步到掘金和知乎"即可。

OpenClaw 集成

通过 ClawHub 技能市场一键安装:

clawhub install lljxx1/wechatsync

详细文档见 packages/cli/README.md

Claude Code / Claude Desktop 集成 (Anthropic MCP)

通过 Anthropic MCP 协议,可以在 Claude Code 或 Claude Desktop 中使用 AI 同步公众号文章到多个平台。

配置步骤

  1. 构建项目: pnpm build
  2. 在 Chrome 扩展设置中启用「MCP 连接」,并设置 Token
  3. ~/.claude/claude_desktop_config.json 中添加配置:
{
"mcpServers": {
"sync-assistant": {
"command": "node",
"args": ["/path/to/Wechatsync/packages/mcp-server/dist/index.js"],
"env": {
"MCP_TOKEN": "your-secret-token-here"
}
}
}
}

重要: MCP_TOKEN 必须与 Chrome 扩展中设置的 Token 一致。

使用示例

"帮我把这篇文章同步到知乎和掘金"
"检查下哪些平台已登录"

可用工具

工具说明
list_platforms列出所有平台及登录状态
check_auth检查指定平台登录状态
sync_article同步文章到指定平台(草稿)
extract_article从当前浏览器页面提取文章
upload_image_file上传本地图片到平台

详细文档见 packages/mcp-server/README.md

网页发起同步

如果你是文章编辑器开发者,或有内容库需要同步多个渠道,可以使用 JS SDK:

// 拉起同步任务框window.syncPost(article)

开发

项目结构

Wechatsync/
├── packages/
│ ├── extension/ # Chrome 扩展 (MV3)
│ ├── mcp-server/ # MCP Server (stdio/SSE)
│ ├── cli/ # 命令行工具
│ └── core/ # 核心逻辑 (共享)

本地开发

# 安装依赖
pnpm install
# 开发模式
pnpm dev
# 构建
pnpm build

然后在 Chrome 中加载 packages/extension/dist 目录。

更新日志

v2.0.9 (2026-03-24)

  • 🆕 文章识别和提取更准确,支持更多网页
  • 🆕 CLI/MCP 同步 HTML 文件时自动保留排版样式
  • 🆕 同步对话框增加使用提示
  • 🔧 修复部分网页悬浮按钮显示异常

v2.0.8 (2026-03-17)

  • 🆕 新增抖音图文
  • 🆕 统一同步对话框和悬浮按钮
  • 🔧 修复 CLI 同步格式异常
  • 🔧 改善 CLI/MCP 桥接重连稳定性

v2.0.7 (2026-03-10)

  • 🆕 新增什么值得买、网易号平台
  • 🆕 简书支持 Markdown 格式发布
  • 🔧 重新适配简书、一点号、搜狐号

v2.0.6 (2026-02-25)

  • 🆕 新增东方财富
  • 🆕 新增悬浮同步按钮

v2.0.5 (2025-02-05)

  • 🔧 代码块提取兼容性提升
  • 🆕 新增 Markdown 压缩包下载

完整日志见 更新日志页面

贡献代码

欢迎参与项目开发!

使用场景

  • 自媒体运营者: 公众号文章一键同步到知乎、头条、百家号等多平台,提升内容分发效率
  • 技术博主: 技术博客同步到掘金、CSDN、SegmentFault、开源中国等技术社区
  • 内容创作者: 告别重复复制粘贴,一次编写多处发布,多平台发文不再繁琐
  • AI 写作用户: 配合 Claude / GPT 等 AI 写作工具,AIGC 内容一键发布到多平台
  • 独立博主: WordPress、Typecho 博客文章同步到各大自媒体平台引流

常见问题

Q: 这是什么工具?

文章同步助手是一款开源免费的 Chrome 浏览器扩展,帮助自媒体作者、博主、内容创作者将文章一键同步到多个平台,避免重复复制粘贴,是自媒体运营必备的多平台发文工具。

Q: 支持同步微信公众号文章吗?

支持。可以直接从微信公众号编辑器提取文章,一键同步到知乎、头条、掘金等 29+ 平台。支持公众号文章同步到头条号、公众号同步到知乎、微信文章同步到掘金等各种场景。

Q: 支持 AI 写作工具吗?

支持 Anthropic MCP 协议,可配合 Claude Desktop、Claude Code 等 AI 工具使用,实现 AI 写作、AIGC 内容一键发布。也可以配合 ChatGPT、GPT-4 等工具生成的文章使用。

Q: 数据安全吗?会上传我的账号信息吗?

不会。所有操作在本地浏览器内完成,你的 Cookie、文章内容、账号信息不经过任何第三方服务器。代码完全开源,可自行审计:查看源码

Q: 和微小宝、新媒体管家、简媒、蚁小二有什么区别?

文章同步助手是开源免费的,代码完全公开透明,无需付费订阅。作为浏览器扩展运行,数据本地存储,账号信息不上传,支持 MCP 协议可与 AI 工具集成。

Q: 如何同步文章到多个平台?

  1. 安装 Chrome 浏览器扩展
  2. 登录各平台账号(知乎、掘金、头条等)
  3. 打开要同步的文章页面
  4. 点击扩展图标,选择目标平台,一键同步

Author

fun · 独立开发者 · GitHub · 主页

License

GPL-3.0

十账号安全调度与网络组

10 个左右的合规账号推荐使用“一个账号一个隔离 Chrome 用户资料 + 多客户端 Bridge + 稳定逻辑网络组”。网络组只是运维分组,不是轮换代理、指纹伪装或风控绕过手段;系统不会保存 IP、SOCKS/HTTP 代理地址或代理凭据。

Campaign 配置可在 safety 中设置 defaultNetworkGroupplatformIntervalMinutesnetworkGroupIntervalMinutesfreezeOnInterventionaccounts。未配置时使用 default-network。首次安全正式发布会固定账号身份和网络组;后续网络组不一致会在发布前阻止。同平台、同网络组任务按照计划时间串行,正式写入的 maxAttempts 始终为 1。

CAPTCHA、安全验证或审核拒绝只会冻结受影响的 clientId::platformId,不会级联冻结其他账号。人工处理平台验证后运行:

wechatsync safety status --state-dir .wechatsync
wechatsync safety unfreeze 'clientId::platformId' --state-dir .wechatsync

解冻不会自动重发;下一次正式发布仍应先运行 Dry-run。

About

Modified Wechatsync publishing toolkit

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

文章同步助手 (Wechatsync)

开源免费的跨平台文章同步工具 | Chrome 浏览器扩展 | 自媒体内容分发神器

一键同步微信公众号文章到知乎、头条、掘金、小红书、CSDN 等 29+ 平台,支持 WordPress 等自建博客,告别重复复制粘贴。

🔥 支持 Anthropic MCP 协议,可在 Claude Desktop / Claude Code 中通过 AI 一键发布文章

工作原理

文章同步助手不是爬虫,不模拟登录,不经过任何第三方服务器。

它是一个 Chrome 浏览器扩展,工作方式与浏览器本身一致:

  1. 使用你自己的登录态:你在浏览器里正常登录各平台账号,扩展直接使用浏览器中已有的 Cookie,无需额外授权,无需输入密码
  2. 调用平台官方接口:发布文章时,扩展调用的是各平台 Web 编辑器使用的同一套官方 API,与你手动在网页上发布完全等价
  3. 数据不离开你的设备:所有请求直接从你的浏览器发往各平台,没有中间服务器,没有数据上传,源代码完全开源可审计
  4. 草稿优先:默认将文章同步为草稿,发布前由你人工确认,不会自动发布
你的浏览器(已登录各平台)
↓ 扩展读取 Cookie
↓ 调用平台官方 Web API
各平台(知乎 / 掘金 / 头条 / ...)

功能特性

  • 一键批量发布: 微信公众号文章同步到知乎、掘金、头条、CSDN、简书、微博、小红书、抖音等 29+ 自媒体平台
  • 网页转 Markdown: 任意网页智能提取正文,自动过滤广告噪音,图片本地化,打包为 Markdown + 图片 ZIP 压缩包
  • 自建站支持: WordPress、Typecho、博客园 (MetaWeblog API)
  • 智能提取: 自动从网页提取文章标题、内容、封面图(基于 Safari 阅读模式)
  • 图片自动上传: 自动转存文章图片到目标平台,无需手动处理
  • 草稿模式: 同步后保存为草稿,方便二次编辑后发布
  • 同平台多账号: 在扩展内保存多套登录 Cookie,同一篇文章可同步到不同平台的多个账号
  • AI 集成: 支持 Anthropic MCP / Claude Code Skill / OpenClaw,多种方式接入 AI 工作流

同平台多账号

  1. 在目标平台网页登录第一个账号
  2. 打开扩展「设置 → 多账号登录态」,填写账号名称并保存当前登录态
  3. 在平台网页切换到其他账号,重复上述操作
  4. 同步文章时,可以像选择普通平台一样同时勾选多个账号

多账号 Cookie 仅保存在 chrome.storage.local。同步时扩展会备份当前会话,串行切换到目标账号,完成后在 finally 阶段恢复原会话。扩展不保存平台密码。由于切换期间同域网页也能观察到临时会话,建议同步时不要在目标平台网页同时进行编辑操作。

多 Chrome 用户资料 + 多客户端 Bridge(推荐用于 5 个以上账号)

这种方式不切换 Cookie:每个 Chrome 用户资料拥有独立的浏览器登录态,并各自运行一个扩展客户端;所有客户端同时连接同一个本地 Bridge。

  1. 在 Chrome 中创建多个本地用户资料(不要求登录多个 Google/Chrome 账号)
  2. 在每个用户资料中加载同一份扩展,并分别登录目标平台账号
  3. 打开扩展「设置 → 同步桥接」,为每个用户资料设置唯一名称,例如“知乎-账号A”
  4. 每个用户资料都启用同步桥接,并连接 ws://localhost:9527
  5. 在终端运行 wechatsync bridge 并保持运行,让所有用户资料稳定连接
  6. 另开终端运行 wechatsync clients 查看已连接用户资料
  7. 运行 wechatsync platforms --auth 获取 clientId::platformId 形式的账号 ID
# 精确发送到两个不同 Chrome 用户资料中的知乎账号
wechatsync sync article.md -p '<client-a>::zhihu,<client-b>::zhihu'# 自动发送到所有已登录的知乎账号(仍然只保存为草稿)
wechatsync sync article.md -p zhihu --all-accounts
# 正式公开发布建议始终启用安全模式(会要求输入 PUBLISH 二次确认)
wechatsync sync article.md -p '<client-a>::zhihu' --publish --safe

Bridge 会使用每个扩展注册的独立本地 Token 路由请求,因此多用户资料不需要共享同一个 Token,也不会通过 Bridge 复制平台 Cookie。只有一个用户资料连接时,原来的 zhihujuejin 等普通平台 ID 仍可直接使用。

--publish 只允许用于明确声明 direct_publish 能力的平台。当前代码已接通知乎、掘金、CSDN、开源中国、WordPress、Typecho 和 MetaWeblog;其他平台仍只保存草稿。四个公开平台适配器都会先完整保存草稿,再最多调用一次最终发布流程;发布后只读校验标题和作者,未立即公开时返回 submitted 并转入只读复查。CMS 则把正式发布标志传给对应接口。CSDN 和开源中国已通过自动化回归,但仍需在实际登录账号上完成草稿和单账号正式发布验收。

掘金正式发布建议为 Markdown 提供分类 ID 和标签 ID,避免平台因分类或标签缺失拒绝最终提交:

---
title: 文章标题summary: 不超过 100 字的摘要category: "6809637771511070734"tags: ["7467857238494020000"]
---

也可使用 --category <id> --tags <id1,id2> 覆盖 front matter。分类和标签参数为平台 ID,不是显示名称。

CSDN 正式发布至少需要一个标签;开源中国可选传入分类 ID。可在 Campaign 配置的 platforms.csdnplatforms.oschina 中分别设置。

安全正式发布

完整规则、限制和风险边界见 docs/safe-publish-mode.md

正式发布状态、审核状态和公开页面验证规则见 docs/publish-status-verification.md

正式发布具有账号和内容风险,推荐在 --publish 后同时使用 --safe。安全模式默认执行以下保护:

  • 发布前和每个账号实际执行前再次检查登录身份,并将首次确认的目标 ID 与平台账号用户名锁定
  • 同账号相同文章默认禁止重复发布;同一平台的多个账号默认禁止发布相同文章;不同平台之间允许正常分发
  • 每账号滚动 24 小时最多正式发布 2 篇,同账号两次发布至少间隔 30 分钟
  • 多账号严格串行执行,账号之间默认等待 30 分钟
  • 任一账号失败后默认立即熔断;可用 --continue-on-error 让后续目标继续执行,失败目标始终不自动重试
  • 平台最终发布失败时尽量保留并显示已经创建的草稿链接

首次操作先运行单账号安全预检。--dry-run 会连接 Bridge、确认账号身份并检查安全策略,但不会上传图片、创建草稿或正式发布:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu' \
--publish \
--safe \
--dry-run

同一篇文章选择多个账号时,默认预检不通过:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--dry-run

只有在人工确认确实需要跨账号发布相同内容后,才显式解除该项保护。下面的命令会正式公开发布,非交互环境还必须传入 --yes

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--allow-cross-account-duplicate \
--account-delay 30 \
--yes

可调参数:

--daily-limit <count> 每账号滚动 24 小时发布上限,默认 2
--min-interval <minutes> 同账号最小发布间隔,默认 30 分钟
--account-delay <minutes> 多账号顺序发布间隔,默认 30 分钟
--continue-on-error 关闭级联熔断,单个目标失败后继续后续目标;不重试失败目标
--allow-republish 显式允许同账号重复发布相同文章
--state-dir <path> 安全状态目录,默认 .wechatsync

身份锁定和发布历史保存在 .wechatsync/publish-state.json,文件权限为 0600,不会保存 Cookie、Token 或平台密码。删除该文件会同时清除身份锁定和本地防重复历史,因此不建议把它作为日常“解锁”方式。安全模式只能降低误发、串号和过快发布的风险,不能保证平台不会限流或限制账号。

持久化发布队列

长时间定时或多账号任务建议使用 SQLite 持久化队列,而不是让一次 sync 命令在终端内等待。完整说明见 docs/publish-queue-worker.md。队列功能需要 Node.js 22.5 或更高版本。

# 安全的首次测试:只做预检,不实际发布
wechatsync enqueue article.md \
-p '<client-a>::zhihu' \
--publish --safe --dry-run --yes
# 执行下一个到期任务
wechatsync worker --once
# 创建正式定时任务
wechatsync schedule article.md \
-p '<client-a>::zhihu' \
--at '2026-08-04 10:00' \
--publish --safe --yes
# 队列管理
wechatsync queue list
wechatsync queue show <job-id>
wechatsync queue pause <job-id>
wechatsync queue resume <job-id>
wechatsync queue cancel <job-id>

任务按目标拆分,默认零自动重试发布;源文件在入队后变化或 Worker 异常中断导致执行结果未知时,任务会进入 blocked,避免未经确认地重复发布。已提交/审核中的文章会进入持久化只读复查,复查可重试查询,但绝不重试发布。

一篇文章发布到所有平台和账号(Campaign)

Campaign 会发现所有已连接 Chrome 用户资料中的已登录账号,按平台用户 ID 去重,固定目标清单,并为每个目标创建持久化任务:

# 所有已登录平台和账号保存草稿
wechatsync campaign create article.md
# 只选择知乎和掘金,但包含这两个平台的所有已登录账号
wechatsync campaign create article.md -p zhihu,juejin
# 正式发布。默认只要存在不支持正式发布的平台就中止预检
wechatsync campaign create article.md --publish --safe --yes --config campaign.config.json
# 支持正式发布的平台公开发布,其余平台只保存草稿
wechatsync campaign create article.md --publish --safe --yes --unsupported draft
# 使用平台级分类、标签、摘要和封面配置
wechatsync campaign create article.md --config docs/campaign.config.example.json
wechatsync campaign list
wechatsync campaign show <campaign-id>
wechatsync campaign cancel <campaign-id>

“一次发布”表示一次创建全部目标任务,底层仍由安全队列受控串行执行,不会在同一秒向所有账号并发请求。正式发布能力当前以适配器的 direct_publish 声明为准;保存草稿不能算作公开发布成功。

完整设计和测试说明:

验证码、登录失效、身份不匹配、限流和审核拒绝会生成“待人工处理”记录。该记录明确携带 retryPublish: false,Worker 会阻止任务而不是自动重发。

安装方式

Chrome 浏览器扩展安装

推荐: Chrome 网上应用店 (自动更新)

手动安装: 下载 最新 Release 解压后加载到 Chrome 扩展

支持 Chrome / Edge / 360 / QQ 等 Chromium 内核浏览器

支持 29+ 主流平台

平台ID类型状态
微信公众号weixin主流自媒体
知乎zhihu主流自媒体
微博weibo主流自媒体
小红书xiaohongshu主流自媒体
掘金juejin技术社区
CSDNcsdn技术社区
简书jianshu通用
头条号toutiao通用✅ 草稿模式
抖音图文douyin主流自媒体✅ 🆕
B站专栏bilibili通用
百家号baijiahao通用
语雀yuque技术社区
豆瓣douban通用
搜狐号sohu通用
雪球xueqiu财经
人人都是产品经理woshipm产品
大鱼号dayu通用
一点号yidian通用
51CTO51cto技术社区
慕课网imooc技术社区
开源中国oschina技术社区
SegmentFaultsegmentfault技术社区
博客园cnblogs技术社区
搜狐焦点sohufocus房产
X (Twitter)x海外
东方财富eastmoney财经
什么值得买smzdm通用
网易号netease通用
WordPresswordpress建站/CMS
Typechotypecho建站/CMS
Hexozip-download建站/CMS✅ 通过 Markdown 下载
Hugozip-download建站/CMS✅ 通过 Markdown 下载

CLI 命令行工具

最简单的使用方式,无需配置 MCP,安装即用:

npm install -g @wechatsync/cli

需要先安装 Chrome 扩展并在扩展设置中启用「同步桥接」。新版扩展会把各用户资料自己的本地 Token 注册给 Bridge;WECHATSYNC_TOKEN 仅作为旧版扩展兼容回退项:

# 仅连接旧版扩展时需要:export WECHATSYNC_TOKEN="你的token"# 同步文章到多个平台
wechatsync sync article.md -p zhihu,juejin,csdn
# 查看平台登录状态
wechatsync platforms --auth
# 查看当前连接的 Chrome 用户资料
wechatsync clients
# 多用户资料时建议在单独终端持续运行 Bridge
wechatsync bridge
# 从浏览器当前页面提取文章
wechatsync extract -o article.md

Claude Code Skill 集成

安装后可在 Claude Code 中直接用自然语言操作:

/plugin marketplace add wechatsync
/plugin install wechatsync

然后直接说"把这篇文章同步到掘金和知乎"即可。

OpenClaw 集成

通过 ClawHub 技能市场一键安装:

clawhub install lljxx1/wechatsync

详细文档见 packages/cli/README.md

Claude Code / Claude Desktop 集成 (Anthropic MCP)

通过 Anthropic MCP 协议,可以在 Claude Code 或 Claude Desktop 中使用 AI 同步公众号文章到多个平台。

配置步骤

  1. 构建项目: pnpm build
  2. 在 Chrome 扩展设置中启用「MCP 连接」,并设置 Token
  3. ~/.claude/claude_desktop_config.json 中添加配置:
{
"mcpServers": {
"sync-assistant": {
"command": "node",
"args": ["/path/to/Wechatsync/packages/mcp-server/dist/index.js"],
"env": {
"MCP_TOKEN": "your-secret-token-here"
}
}
}
}

重要: MCP_TOKEN 必须与 Chrome 扩展中设置的 Token 一致。

使用示例

"帮我把这篇文章同步到知乎和掘金"
"检查下哪些平台已登录"

可用工具

工具说明
list_platforms列出所有平台及登录状态
check_auth检查指定平台登录状态
sync_article同步文章到指定平台(草稿)
extract_article从当前浏览器页面提取文章
upload_image_file上传本地图片到平台

详细文档见 packages/mcp-server/README.md

网页发起同步

如果你是文章编辑器开发者,或有内容库需要同步多个渠道,可以使用 JS SDK:

// 拉起同步任务框window.syncPost(article)

开发

项目结构

Wechatsync/
├── packages/
│ ├── extension/ # Chrome 扩展 (MV3)
│ ├── mcp-server/ # MCP Server (stdio/SSE)
│ ├── cli/ # 命令行工具
│ └── core/ # 核心逻辑 (共享)

本地开发

# 安装依赖
pnpm install
# 开发模式
pnpm dev
# 构建
pnpm build

然后在 Chrome 中加载 packages/extension/dist 目录。

更新日志

v2.0.9 (2026-03-24)

  • 🆕 文章识别和提取更准确,支持更多网页
  • 🆕 CLI/MCP 同步 HTML 文件时自动保留排版样式
  • 🆕 同步对话框增加使用提示
  • 🔧 修复部分网页悬浮按钮显示异常

v2.0.8 (2026-03-17)

  • 🆕 新增抖音图文
  • 🆕 统一同步对话框和悬浮按钮
  • 🔧 修复 CLI 同步格式异常
  • 🔧 改善 CLI/MCP 桥接重连稳定性

v2.0.7 (2026-03-10)

  • 🆕 新增什么值得买、网易号平台
  • 🆕 简书支持 Markdown 格式发布
  • 🔧 重新适配简书、一点号、搜狐号

v2.0.6 (2026-02-25)

  • 🆕 新增东方财富
  • 🆕 新增悬浮同步按钮

v2.0.5 (2025-02-05)

  • 🔧 代码块提取兼容性提升
  • 🆕 新增 Markdown 压缩包下载

完整日志见 更新日志页面

贡献代码

欢迎参与项目开发!

使用场景

  • 自媒体运营者: 公众号文章一键同步到知乎、头条、百家号等多平台,提升内容分发效率
  • 技术博主: 技术博客同步到掘金、CSDN、SegmentFault、开源中国等技术社区
  • 内容创作者: 告别重复复制粘贴,一次编写多处发布,多平台发文不再繁琐
  • AI 写作用户: 配合 Claude / GPT 等 AI 写作工具,AIGC 内容一键发布到多平台
  • 独立博主: WordPress、Typecho 博客文章同步到各大自媒体平台引流

常见问题

Q: 这是什么工具?

文章同步助手是一款开源免费的 Chrome 浏览器扩展,帮助自媒体作者、博主、内容创作者将文章一键同步到多个平台,避免重复复制粘贴,是自媒体运营必备的多平台发文工具。

Q: 支持同步微信公众号文章吗?

支持。可以直接从微信公众号编辑器提取文章,一键同步到知乎、头条、掘金等 29+ 平台。支持公众号文章同步到头条号、公众号同步到知乎、微信文章同步到掘金等各种场景。

Q: 支持 AI 写作工具吗?

支持 Anthropic MCP 协议,可配合 Claude Desktop、Claude Code 等 AI 工具使用,实现 AI 写作、AIGC 内容一键发布。也可以配合 ChatGPT、GPT-4 等工具生成的文章使用。

Q: 数据安全吗?会上传我的账号信息吗?

不会。所有操作在本地浏览器内完成,你的 Cookie、文章内容、账号信息不经过任何第三方服务器。代码完全开源,可自行审计:查看源码

Q: 和微小宝、新媒体管家、简媒、蚁小二有什么区别?

文章同步助手是开源免费的,代码完全公开透明,无需付费订阅。作为浏览器扩展运行,数据本地存储,账号信息不上传,支持 MCP 协议可与 AI 工具集成。

Q: 如何同步文章到多个平台?

  1. 安装 Chrome 浏览器扩展
  2. 登录各平台账号(知乎、掘金、头条等)
  3. 打开要同步的文章页面
  4. 点击扩展图标,选择目标平台,一键同步

Author

fun · 独立开发者 · GitHub · 主页

License

GPL-3.0

十账号安全调度与网络组

10 个左右的合规账号推荐使用“一个账号一个隔离 Chrome 用户资料 + 多客户端 Bridge + 稳定逻辑网络组”。网络组只是运维分组,不是轮换代理、指纹伪装或风控绕过手段;系统不会保存 IP、SOCKS/HTTP 代理地址或代理凭据。

Campaign 配置可在 safety 中设置 defaultNetworkGroupplatformIntervalMinutesnetworkGroupIntervalMinutesfreezeOnInterventionaccounts。未配置时使用 default-network。首次安全正式发布会固定账号身份和网络组;后续网络组不一致会在发布前阻止。同平台、同网络组任务按照计划时间串行,正式写入的 maxAttempts 始终为 1。

CAPTCHA、安全验证或审核拒绝只会冻结受影响的 clientId::platformId,不会级联冻结其他账号。人工处理平台验证后运行:

wechatsync safety status --state-dir .wechatsync
wechatsync safety unfreeze 'clientId::platformId' --state-dir .wechatsync

解冻不会自动重发;下一次正式发布仍应先运行 Dry-run。

About

Modified Wechatsync publishing toolkit

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

文章同步助手 (Wechatsync)

开源免费的跨平台文章同步工具 | Chrome 浏览器扩展 | 自媒体内容分发神器

一键同步微信公众号文章到知乎、头条、掘金、小红书、CSDN 等 29+ 平台,支持 WordPress 等自建博客,告别重复复制粘贴。

🔥 支持 Anthropic MCP 协议,可在 Claude Desktop / Claude Code 中通过 AI 一键发布文章

工作原理

文章同步助手不是爬虫,不模拟登录,不经过任何第三方服务器。

它是一个 Chrome 浏览器扩展,工作方式与浏览器本身一致:

  1. 使用你自己的登录态:你在浏览器里正常登录各平台账号,扩展直接使用浏览器中已有的 Cookie,无需额外授权,无需输入密码
  2. 调用平台官方接口:发布文章时,扩展调用的是各平台 Web 编辑器使用的同一套官方 API,与你手动在网页上发布完全等价
  3. 数据不离开你的设备:所有请求直接从你的浏览器发往各平台,没有中间服务器,没有数据上传,源代码完全开源可审计
  4. 草稿优先:默认将文章同步为草稿,发布前由你人工确认,不会自动发布
你的浏览器(已登录各平台)
↓ 扩展读取 Cookie
↓ 调用平台官方 Web API
各平台(知乎 / 掘金 / 头条 / ...)

功能特性

  • 一键批量发布: 微信公众号文章同步到知乎、掘金、头条、CSDN、简书、微博、小红书、抖音等 29+ 自媒体平台
  • 网页转 Markdown: 任意网页智能提取正文,自动过滤广告噪音,图片本地化,打包为 Markdown + 图片 ZIP 压缩包
  • 自建站支持: WordPress、Typecho、博客园 (MetaWeblog API)
  • 智能提取: 自动从网页提取文章标题、内容、封面图(基于 Safari 阅读模式)
  • 图片自动上传: 自动转存文章图片到目标平台,无需手动处理
  • 草稿模式: 同步后保存为草稿,方便二次编辑后发布
  • 同平台多账号: 在扩展内保存多套登录 Cookie,同一篇文章可同步到不同平台的多个账号
  • AI 集成: 支持 Anthropic MCP / Claude Code Skill / OpenClaw,多种方式接入 AI 工作流

同平台多账号

  1. 在目标平台网页登录第一个账号
  2. 打开扩展「设置 → 多账号登录态」,填写账号名称并保存当前登录态
  3. 在平台网页切换到其他账号,重复上述操作
  4. 同步文章时,可以像选择普通平台一样同时勾选多个账号

多账号 Cookie 仅保存在 chrome.storage.local。同步时扩展会备份当前会话,串行切换到目标账号,完成后在 finally 阶段恢复原会话。扩展不保存平台密码。由于切换期间同域网页也能观察到临时会话,建议同步时不要在目标平台网页同时进行编辑操作。

多 Chrome 用户资料 + 多客户端 Bridge(推荐用于 5 个以上账号)

这种方式不切换 Cookie:每个 Chrome 用户资料拥有独立的浏览器登录态,并各自运行一个扩展客户端;所有客户端同时连接同一个本地 Bridge。

  1. 在 Chrome 中创建多个本地用户资料(不要求登录多个 Google/Chrome 账号)
  2. 在每个用户资料中加载同一份扩展,并分别登录目标平台账号
  3. 打开扩展「设置 → 同步桥接」,为每个用户资料设置唯一名称,例如“知乎-账号A”
  4. 每个用户资料都启用同步桥接,并连接 ws://localhost:9527
  5. 在终端运行 wechatsync bridge 并保持运行,让所有用户资料稳定连接
  6. 另开终端运行 wechatsync clients 查看已连接用户资料
  7. 运行 wechatsync platforms --auth 获取 clientId::platformId 形式的账号 ID
# 精确发送到两个不同 Chrome 用户资料中的知乎账号
wechatsync sync article.md -p '<client-a>::zhihu,<client-b>::zhihu'# 自动发送到所有已登录的知乎账号(仍然只保存为草稿)
wechatsync sync article.md -p zhihu --all-accounts
# 正式公开发布建议始终启用安全模式(会要求输入 PUBLISH 二次确认)
wechatsync sync article.md -p '<client-a>::zhihu' --publish --safe

Bridge 会使用每个扩展注册的独立本地 Token 路由请求,因此多用户资料不需要共享同一个 Token,也不会通过 Bridge 复制平台 Cookie。只有一个用户资料连接时,原来的 zhihujuejin 等普通平台 ID 仍可直接使用。

--publish 只允许用于明确声明 direct_publish 能力的平台。当前代码已接通知乎、掘金、CSDN、开源中国、WordPress、Typecho 和 MetaWeblog;其他平台仍只保存草稿。四个公开平台适配器都会先完整保存草稿,再最多调用一次最终发布流程;发布后只读校验标题和作者,未立即公开时返回 submitted 并转入只读复查。CMS 则把正式发布标志传给对应接口。CSDN 和开源中国已通过自动化回归,但仍需在实际登录账号上完成草稿和单账号正式发布验收。

掘金正式发布建议为 Markdown 提供分类 ID 和标签 ID,避免平台因分类或标签缺失拒绝最终提交:

---
title: 文章标题summary: 不超过 100 字的摘要category: "6809637771511070734"tags: ["7467857238494020000"]
---

也可使用 --category <id> --tags <id1,id2> 覆盖 front matter。分类和标签参数为平台 ID,不是显示名称。

CSDN 正式发布至少需要一个标签;开源中国可选传入分类 ID。可在 Campaign 配置的 platforms.csdnplatforms.oschina 中分别设置。

安全正式发布

完整规则、限制和风险边界见 docs/safe-publish-mode.md

正式发布状态、审核状态和公开页面验证规则见 docs/publish-status-verification.md

正式发布具有账号和内容风险,推荐在 --publish 后同时使用 --safe。安全模式默认执行以下保护:

  • 发布前和每个账号实际执行前再次检查登录身份,并将首次确认的目标 ID 与平台账号用户名锁定
  • 同账号相同文章默认禁止重复发布;同一平台的多个账号默认禁止发布相同文章;不同平台之间允许正常分发
  • 每账号滚动 24 小时最多正式发布 2 篇,同账号两次发布至少间隔 30 分钟
  • 多账号严格串行执行,账号之间默认等待 30 分钟
  • 任一账号失败后默认立即熔断;可用 --continue-on-error 让后续目标继续执行,失败目标始终不自动重试
  • 平台最终发布失败时尽量保留并显示已经创建的草稿链接

首次操作先运行单账号安全预检。--dry-run 会连接 Bridge、确认账号身份并检查安全策略,但不会上传图片、创建草稿或正式发布:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu' \
--publish \
--safe \
--dry-run

同一篇文章选择多个账号时,默认预检不通过:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--dry-run

只有在人工确认确实需要跨账号发布相同内容后,才显式解除该项保护。下面的命令会正式公开发布,非交互环境还必须传入 --yes

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--allow-cross-account-duplicate \
--account-delay 30 \
--yes

可调参数:

--daily-limit <count> 每账号滚动 24 小时发布上限,默认 2
--min-interval <minutes> 同账号最小发布间隔,默认 30 分钟
--account-delay <minutes> 多账号顺序发布间隔,默认 30 分钟
--continue-on-error 关闭级联熔断,单个目标失败后继续后续目标;不重试失败目标
--allow-republish 显式允许同账号重复发布相同文章
--state-dir <path> 安全状态目录,默认 .wechatsync

身份锁定和发布历史保存在 .wechatsync/publish-state.json,文件权限为 0600,不会保存 Cookie、Token 或平台密码。删除该文件会同时清除身份锁定和本地防重复历史,因此不建议把它作为日常“解锁”方式。安全模式只能降低误发、串号和过快发布的风险,不能保证平台不会限流或限制账号。

持久化发布队列

长时间定时或多账号任务建议使用 SQLite 持久化队列,而不是让一次 sync 命令在终端内等待。完整说明见 docs/publish-queue-worker.md。队列功能需要 Node.js 22.5 或更高版本。

# 安全的首次测试:只做预检,不实际发布
wechatsync enqueue article.md \
-p '<client-a>::zhihu' \
--publish --safe --dry-run --yes
# 执行下一个到期任务
wechatsync worker --once
# 创建正式定时任务
wechatsync schedule article.md \
-p '<client-a>::zhihu' \
--at '2026-08-04 10:00' \
--publish --safe --yes
# 队列管理
wechatsync queue list
wechatsync queue show <job-id>
wechatsync queue pause <job-id>
wechatsync queue resume <job-id>
wechatsync queue cancel <job-id>

任务按目标拆分,默认零自动重试发布;源文件在入队后变化或 Worker 异常中断导致执行结果未知时,任务会进入 blocked,避免未经确认地重复发布。已提交/审核中的文章会进入持久化只读复查,复查可重试查询,但绝不重试发布。

一篇文章发布到所有平台和账号(Campaign)

Campaign 会发现所有已连接 Chrome 用户资料中的已登录账号,按平台用户 ID 去重,固定目标清单,并为每个目标创建持久化任务:

# 所有已登录平台和账号保存草稿
wechatsync campaign create article.md
# 只选择知乎和掘金,但包含这两个平台的所有已登录账号
wechatsync campaign create article.md -p zhihu,juejin
# 正式发布。默认只要存在不支持正式发布的平台就中止预检
wechatsync campaign create article.md --publish --safe --yes --config campaign.config.json
# 支持正式发布的平台公开发布,其余平台只保存草稿
wechatsync campaign create article.md --publish --safe --yes --unsupported draft
# 使用平台级分类、标签、摘要和封面配置
wechatsync campaign create article.md --config docs/campaign.config.example.json
wechatsync campaign list
wechatsync campaign show <campaign-id>
wechatsync campaign cancel <campaign-id>

“一次发布”表示一次创建全部目标任务,底层仍由安全队列受控串行执行,不会在同一秒向所有账号并发请求。正式发布能力当前以适配器的 direct_publish 声明为准;保存草稿不能算作公开发布成功。

完整设计和测试说明:

验证码、登录失效、身份不匹配、限流和审核拒绝会生成“待人工处理”记录。该记录明确携带 retryPublish: false,Worker 会阻止任务而不是自动重发。

安装方式

Chrome 浏览器扩展安装

推荐: Chrome 网上应用店 (自动更新)

手动安装: 下载 最新 Release 解压后加载到 Chrome 扩展

支持 Chrome / Edge / 360 / QQ 等 Chromium 内核浏览器

支持 29+ 主流平台

平台ID类型状态
微信公众号weixin主流自媒体
知乎zhihu主流自媒体
微博weibo主流自媒体
小红书xiaohongshu主流自媒体
掘金juejin技术社区
CSDNcsdn技术社区
简书jianshu通用
头条号toutiao通用✅ 草稿模式
抖音图文douyin主流自媒体✅ 🆕
B站专栏bilibili通用
百家号baijiahao通用
语雀yuque技术社区
豆瓣douban通用
搜狐号sohu通用
雪球xueqiu财经
人人都是产品经理woshipm产品
大鱼号dayu通用
一点号yidian通用
51CTO51cto技术社区
慕课网imooc技术社区
开源中国oschina技术社区
SegmentFaultsegmentfault技术社区
博客园cnblogs技术社区
搜狐焦点sohufocus房产
X (Twitter)x海外
东方财富eastmoney财经
什么值得买smzdm通用
网易号netease通用
WordPresswordpress建站/CMS
Typechotypecho建站/CMS
Hexozip-download建站/CMS✅ 通过 Markdown 下载
Hugozip-download建站/CMS✅ 通过 Markdown 下载

CLI 命令行工具

最简单的使用方式,无需配置 MCP,安装即用:

npm install -g @wechatsync/cli

需要先安装 Chrome 扩展并在扩展设置中启用「同步桥接」。新版扩展会把各用户资料自己的本地 Token 注册给 Bridge;WECHATSYNC_TOKEN 仅作为旧版扩展兼容回退项:

# 仅连接旧版扩展时需要:export WECHATSYNC_TOKEN="你的token"# 同步文章到多个平台
wechatsync sync article.md -p zhihu,juejin,csdn
# 查看平台登录状态
wechatsync platforms --auth
# 查看当前连接的 Chrome 用户资料
wechatsync clients
# 多用户资料时建议在单独终端持续运行 Bridge
wechatsync bridge
# 从浏览器当前页面提取文章
wechatsync extract -o article.md

Claude Code Skill 集成

安装后可在 Claude Code 中直接用自然语言操作:

/plugin marketplace add wechatsync
/plugin install wechatsync

然后直接说"把这篇文章同步到掘金和知乎"即可。

OpenClaw 集成

通过 ClawHub 技能市场一键安装:

clawhub install lljxx1/wechatsync

详细文档见 packages/cli/README.md

Claude Code / Claude Desktop 集成 (Anthropic MCP)

通过 Anthropic MCP 协议,可以在 Claude Code 或 Claude Desktop 中使用 AI 同步公众号文章到多个平台。

配置步骤

  1. 构建项目: pnpm build
  2. 在 Chrome 扩展设置中启用「MCP 连接」,并设置 Token
  3. ~/.claude/claude_desktop_config.json 中添加配置:
{
"mcpServers": {
"sync-assistant": {
"command": "node",
"args": ["/path/to/Wechatsync/packages/mcp-server/dist/index.js"],
"env": {
"MCP_TOKEN": "your-secret-token-here"
}
}
}
}

重要: MCP_TOKEN 必须与 Chrome 扩展中设置的 Token 一致。

使用示例

"帮我把这篇文章同步到知乎和掘金"
"检查下哪些平台已登录"

可用工具

工具说明
list_platforms列出所有平台及登录状态
check_auth检查指定平台登录状态
sync_article同步文章到指定平台(草稿)
extract_article从当前浏览器页面提取文章
upload_image_file上传本地图片到平台

详细文档见 packages/mcp-server/README.md

网页发起同步

如果你是文章编辑器开发者,或有内容库需要同步多个渠道,可以使用 JS SDK:

// 拉起同步任务框window.syncPost(article)

开发

项目结构

Wechatsync/
├── packages/
│ ├── extension/ # Chrome 扩展 (MV3)
│ ├── mcp-server/ # MCP Server (stdio/SSE)
│ ├── cli/ # 命令行工具
│ └── core/ # 核心逻辑 (共享)

本地开发

# 安装依赖
pnpm install
# 开发模式
pnpm dev
# 构建
pnpm build

然后在 Chrome 中加载 packages/extension/dist 目录。

更新日志

v2.0.9 (2026-03-24)

  • 🆕 文章识别和提取更准确,支持更多网页
  • 🆕 CLI/MCP 同步 HTML 文件时自动保留排版样式
  • 🆕 同步对话框增加使用提示
  • 🔧 修复部分网页悬浮按钮显示异常

v2.0.8 (2026-03-17)

  • 🆕 新增抖音图文
  • 🆕 统一同步对话框和悬浮按钮
  • 🔧 修复 CLI 同步格式异常
  • 🔧 改善 CLI/MCP 桥接重连稳定性

v2.0.7 (2026-03-10)

  • 🆕 新增什么值得买、网易号平台
  • 🆕 简书支持 Markdown 格式发布
  • 🔧 重新适配简书、一点号、搜狐号

v2.0.6 (2026-02-25)

  • 🆕 新增东方财富
  • 🆕 新增悬浮同步按钮

v2.0.5 (2025-02-05)

  • 🔧 代码块提取兼容性提升
  • 🆕 新增 Markdown 压缩包下载

完整日志见 更新日志页面

贡献代码

欢迎参与项目开发!

使用场景

  • 自媒体运营者: 公众号文章一键同步到知乎、头条、百家号等多平台,提升内容分发效率
  • 技术博主: 技术博客同步到掘金、CSDN、SegmentFault、开源中国等技术社区
  • 内容创作者: 告别重复复制粘贴,一次编写多处发布,多平台发文不再繁琐
  • AI 写作用户: 配合 Claude / GPT 等 AI 写作工具,AIGC 内容一键发布到多平台
  • 独立博主: WordPress、Typecho 博客文章同步到各大自媒体平台引流

常见问题

Q: 这是什么工具?

文章同步助手是一款开源免费的 Chrome 浏览器扩展,帮助自媒体作者、博主、内容创作者将文章一键同步到多个平台,避免重复复制粘贴,是自媒体运营必备的多平台发文工具。

Q: 支持同步微信公众号文章吗?

支持。可以直接从微信公众号编辑器提取文章,一键同步到知乎、头条、掘金等 29+ 平台。支持公众号文章同步到头条号、公众号同步到知乎、微信文章同步到掘金等各种场景。

Q: 支持 AI 写作工具吗?

支持 Anthropic MCP 协议,可配合 Claude Desktop、Claude Code 等 AI 工具使用,实现 AI 写作、AIGC 内容一键发布。也可以配合 ChatGPT、GPT-4 等工具生成的文章使用。

Q: 数据安全吗?会上传我的账号信息吗?

不会。所有操作在本地浏览器内完成,你的 Cookie、文章内容、账号信息不经过任何第三方服务器。代码完全开源,可自行审计:查看源码

Q: 和微小宝、新媒体管家、简媒、蚁小二有什么区别?

文章同步助手是开源免费的,代码完全公开透明,无需付费订阅。作为浏览器扩展运行,数据本地存储,账号信息不上传,支持 MCP 协议可与 AI 工具集成。

Q: 如何同步文章到多个平台?

  1. 安装 Chrome 浏览器扩展
  2. 登录各平台账号(知乎、掘金、头条等)
  3. 打开要同步的文章页面
  4. 点击扩展图标,选择目标平台,一键同步

Author

fun · 独立开发者 · GitHub · 主页

License

GPL-3.0

十账号安全调度与网络组

10 个左右的合规账号推荐使用“一个账号一个隔离 Chrome 用户资料 + 多客户端 Bridge + 稳定逻辑网络组”。网络组只是运维分组,不是轮换代理、指纹伪装或风控绕过手段;系统不会保存 IP、SOCKS/HTTP 代理地址或代理凭据。

Campaign 配置可在 safety 中设置 defaultNetworkGroupplatformIntervalMinutesnetworkGroupIntervalMinutesfreezeOnInterventionaccounts。未配置时使用 default-network。首次安全正式发布会固定账号身份和网络组;后续网络组不一致会在发布前阻止。同平台、同网络组任务按照计划时间串行,正式写入的 maxAttempts 始终为 1。

CAPTCHA、安全验证或审核拒绝只会冻结受影响的 clientId::platformId,不会级联冻结其他账号。人工处理平台验证后运行:

wechatsync safety status --state-dir .wechatsync
wechatsync safety unfreeze 'clientId::platformId' --state-dir .wechatsync

解冻不会自动重发;下一次正式发布仍应先运行 Dry-run。

About

Modified Wechatsync publishing toolkit

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

文章同步助手 (Wechatsync)

开源免费的跨平台文章同步工具 | Chrome 浏览器扩展 | 自媒体内容分发神器

一键同步微信公众号文章到知乎、头条、掘金、小红书、CSDN 等 29+ 平台,支持 WordPress 等自建博客,告别重复复制粘贴。

🔥 支持 Anthropic MCP 协议,可在 Claude Desktop / Claude Code 中通过 AI 一键发布文章

工作原理

文章同步助手不是爬虫,不模拟登录,不经过任何第三方服务器。

它是一个 Chrome 浏览器扩展,工作方式与浏览器本身一致:

  1. 使用你自己的登录态:你在浏览器里正常登录各平台账号,扩展直接使用浏览器中已有的 Cookie,无需额外授权,无需输入密码
  2. 调用平台官方接口:发布文章时,扩展调用的是各平台 Web 编辑器使用的同一套官方 API,与你手动在网页上发布完全等价
  3. 数据不离开你的设备:所有请求直接从你的浏览器发往各平台,没有中间服务器,没有数据上传,源代码完全开源可审计
  4. 草稿优先:默认将文章同步为草稿,发布前由你人工确认,不会自动发布
你的浏览器(已登录各平台)
↓ 扩展读取 Cookie
↓ 调用平台官方 Web API
各平台(知乎 / 掘金 / 头条 / ...)

功能特性

  • 一键批量发布: 微信公众号文章同步到知乎、掘金、头条、CSDN、简书、微博、小红书、抖音等 29+ 自媒体平台
  • 网页转 Markdown: 任意网页智能提取正文,自动过滤广告噪音,图片本地化,打包为 Markdown + 图片 ZIP 压缩包
  • 自建站支持: WordPress、Typecho、博客园 (MetaWeblog API)
  • 智能提取: 自动从网页提取文章标题、内容、封面图(基于 Safari 阅读模式)
  • 图片自动上传: 自动转存文章图片到目标平台,无需手动处理
  • 草稿模式: 同步后保存为草稿,方便二次编辑后发布
  • 同平台多账号: 在扩展内保存多套登录 Cookie,同一篇文章可同步到不同平台的多个账号
  • AI 集成: 支持 Anthropic MCP / Claude Code Skill / OpenClaw,多种方式接入 AI 工作流

同平台多账号

  1. 在目标平台网页登录第一个账号
  2. 打开扩展「设置 → 多账号登录态」,填写账号名称并保存当前登录态
  3. 在平台网页切换到其他账号,重复上述操作
  4. 同步文章时,可以像选择普通平台一样同时勾选多个账号

多账号 Cookie 仅保存在 chrome.storage.local。同步时扩展会备份当前会话,串行切换到目标账号,完成后在 finally 阶段恢复原会话。扩展不保存平台密码。由于切换期间同域网页也能观察到临时会话,建议同步时不要在目标平台网页同时进行编辑操作。

多 Chrome 用户资料 + 多客户端 Bridge(推荐用于 5 个以上账号)

这种方式不切换 Cookie:每个 Chrome 用户资料拥有独立的浏览器登录态,并各自运行一个扩展客户端;所有客户端同时连接同一个本地 Bridge。

  1. 在 Chrome 中创建多个本地用户资料(不要求登录多个 Google/Chrome 账号)
  2. 在每个用户资料中加载同一份扩展,并分别登录目标平台账号
  3. 打开扩展「设置 → 同步桥接」,为每个用户资料设置唯一名称,例如“知乎-账号A”
  4. 每个用户资料都启用同步桥接,并连接 ws://localhost:9527
  5. 在终端运行 wechatsync bridge 并保持运行,让所有用户资料稳定连接
  6. 另开终端运行 wechatsync clients 查看已连接用户资料
  7. 运行 wechatsync platforms --auth 获取 clientId::platformId 形式的账号 ID
# 精确发送到两个不同 Chrome 用户资料中的知乎账号
wechatsync sync article.md -p '<client-a>::zhihu,<client-b>::zhihu'# 自动发送到所有已登录的知乎账号(仍然只保存为草稿)
wechatsync sync article.md -p zhihu --all-accounts
# 正式公开发布建议始终启用安全模式(会要求输入 PUBLISH 二次确认)
wechatsync sync article.md -p '<client-a>::zhihu' --publish --safe

Bridge 会使用每个扩展注册的独立本地 Token 路由请求,因此多用户资料不需要共享同一个 Token,也不会通过 Bridge 复制平台 Cookie。只有一个用户资料连接时,原来的 zhihujuejin 等普通平台 ID 仍可直接使用。

--publish 只允许用于明确声明 direct_publish 能力的平台。当前代码已接通知乎、掘金、CSDN、开源中国、WordPress、Typecho 和 MetaWeblog;其他平台仍只保存草稿。四个公开平台适配器都会先完整保存草稿,再最多调用一次最终发布流程;发布后只读校验标题和作者,未立即公开时返回 submitted 并转入只读复查。CMS 则把正式发布标志传给对应接口。CSDN 和开源中国已通过自动化回归,但仍需在实际登录账号上完成草稿和单账号正式发布验收。

掘金正式发布建议为 Markdown 提供分类 ID 和标签 ID,避免平台因分类或标签缺失拒绝最终提交:

---
title: 文章标题summary: 不超过 100 字的摘要category: "6809637771511070734"tags: ["7467857238494020000"]
---

也可使用 --category <id> --tags <id1,id2> 覆盖 front matter。分类和标签参数为平台 ID,不是显示名称。

CSDN 正式发布至少需要一个标签;开源中国可选传入分类 ID。可在 Campaign 配置的 platforms.csdnplatforms.oschina 中分别设置。

安全正式发布

完整规则、限制和风险边界见 docs/safe-publish-mode.md

正式发布状态、审核状态和公开页面验证规则见 docs/publish-status-verification.md

正式发布具有账号和内容风险,推荐在 --publish 后同时使用 --safe。安全模式默认执行以下保护:

  • 发布前和每个账号实际执行前再次检查登录身份,并将首次确认的目标 ID 与平台账号用户名锁定
  • 同账号相同文章默认禁止重复发布;同一平台的多个账号默认禁止发布相同文章;不同平台之间允许正常分发
  • 每账号滚动 24 小时最多正式发布 2 篇,同账号两次发布至少间隔 30 分钟
  • 多账号严格串行执行,账号之间默认等待 30 分钟
  • 任一账号失败后默认立即熔断;可用 --continue-on-error 让后续目标继续执行,失败目标始终不自动重试
  • 平台最终发布失败时尽量保留并显示已经创建的草稿链接

首次操作先运行单账号安全预检。--dry-run 会连接 Bridge、确认账号身份并检查安全策略,但不会上传图片、创建草稿或正式发布:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu' \
--publish \
--safe \
--dry-run

同一篇文章选择多个账号时,默认预检不通过:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--dry-run

只有在人工确认确实需要跨账号发布相同内容后,才显式解除该项保护。下面的命令会正式公开发布,非交互环境还必须传入 --yes

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--allow-cross-account-duplicate \
--account-delay 30 \
--yes

可调参数:

--daily-limit <count> 每账号滚动 24 小时发布上限,默认 2
--min-interval <minutes> 同账号最小发布间隔,默认 30 分钟
--account-delay <minutes> 多账号顺序发布间隔,默认 30 分钟
--continue-on-error 关闭级联熔断,单个目标失败后继续后续目标;不重试失败目标
--allow-republish 显式允许同账号重复发布相同文章
--state-dir <path> 安全状态目录,默认 .wechatsync

身份锁定和发布历史保存在 .wechatsync/publish-state.json,文件权限为 0600,不会保存 Cookie、Token 或平台密码。删除该文件会同时清除身份锁定和本地防重复历史,因此不建议把它作为日常“解锁”方式。安全模式只能降低误发、串号和过快发布的风险,不能保证平台不会限流或限制账号。

持久化发布队列

长时间定时或多账号任务建议使用 SQLite 持久化队列,而不是让一次 sync 命令在终端内等待。完整说明见 docs/publish-queue-worker.md。队列功能需要 Node.js 22.5 或更高版本。

# 安全的首次测试:只做预检,不实际发布
wechatsync enqueue article.md \
-p '<client-a>::zhihu' \
--publish --safe --dry-run --yes
# 执行下一个到期任务
wechatsync worker --once
# 创建正式定时任务
wechatsync schedule article.md \
-p '<client-a>::zhihu' \
--at '2026-08-04 10:00' \
--publish --safe --yes
# 队列管理
wechatsync queue list
wechatsync queue show <job-id>
wechatsync queue pause <job-id>
wechatsync queue resume <job-id>
wechatsync queue cancel <job-id>

任务按目标拆分,默认零自动重试发布;源文件在入队后变化或 Worker 异常中断导致执行结果未知时,任务会进入 blocked,避免未经确认地重复发布。已提交/审核中的文章会进入持久化只读复查,复查可重试查询,但绝不重试发布。

一篇文章发布到所有平台和账号(Campaign)

Campaign 会发现所有已连接 Chrome 用户资料中的已登录账号,按平台用户 ID 去重,固定目标清单,并为每个目标创建持久化任务:

# 所有已登录平台和账号保存草稿
wechatsync campaign create article.md
# 只选择知乎和掘金,但包含这两个平台的所有已登录账号
wechatsync campaign create article.md -p zhihu,juejin
# 正式发布。默认只要存在不支持正式发布的平台就中止预检
wechatsync campaign create article.md --publish --safe --yes --config campaign.config.json
# 支持正式发布的平台公开发布,其余平台只保存草稿
wechatsync campaign create article.md --publish --safe --yes --unsupported draft
# 使用平台级分类、标签、摘要和封面配置
wechatsync campaign create article.md --config docs/campaign.config.example.json
wechatsync campaign list
wechatsync campaign show <campaign-id>
wechatsync campaign cancel <campaign-id>

“一次发布”表示一次创建全部目标任务,底层仍由安全队列受控串行执行,不会在同一秒向所有账号并发请求。正式发布能力当前以适配器的 direct_publish 声明为准;保存草稿不能算作公开发布成功。

完整设计和测试说明:

验证码、登录失效、身份不匹配、限流和审核拒绝会生成“待人工处理”记录。该记录明确携带 retryPublish: false,Worker 会阻止任务而不是自动重发。

安装方式

Chrome 浏览器扩展安装

推荐: Chrome 网上应用店 (自动更新)

手动安装: 下载 最新 Release 解压后加载到 Chrome 扩展

支持 Chrome / Edge / 360 / QQ 等 Chromium 内核浏览器

支持 29+ 主流平台

平台ID类型状态
微信公众号weixin主流自媒体
知乎zhihu主流自媒体
微博weibo主流自媒体
小红书xiaohongshu主流自媒体
掘金juejin技术社区
CSDNcsdn技术社区
简书jianshu通用
头条号toutiao通用✅ 草稿模式
抖音图文douyin主流自媒体✅ 🆕
B站专栏bilibili通用
百家号baijiahao通用
语雀yuque技术社区
豆瓣douban通用
搜狐号sohu通用
雪球xueqiu财经
人人都是产品经理woshipm产品
大鱼号dayu通用
一点号yidian通用
51CTO51cto技术社区
慕课网imooc技术社区
开源中国oschina技术社区
SegmentFaultsegmentfault技术社区
博客园cnblogs技术社区
搜狐焦点sohufocus房产
X (Twitter)x海外
东方财富eastmoney财经
什么值得买smzdm通用
网易号netease通用
WordPresswordpress建站/CMS
Typechotypecho建站/CMS
Hexozip-download建站/CMS✅ 通过 Markdown 下载
Hugozip-download建站/CMS✅ 通过 Markdown 下载

CLI 命令行工具

最简单的使用方式,无需配置 MCP,安装即用:

npm install -g @wechatsync/cli

需要先安装 Chrome 扩展并在扩展设置中启用「同步桥接」。新版扩展会把各用户资料自己的本地 Token 注册给 Bridge;WECHATSYNC_TOKEN 仅作为旧版扩展兼容回退项:

# 仅连接旧版扩展时需要:export WECHATSYNC_TOKEN="你的token"# 同步文章到多个平台
wechatsync sync article.md -p zhihu,juejin,csdn
# 查看平台登录状态
wechatsync platforms --auth
# 查看当前连接的 Chrome 用户资料
wechatsync clients
# 多用户资料时建议在单独终端持续运行 Bridge
wechatsync bridge
# 从浏览器当前页面提取文章
wechatsync extract -o article.md

Claude Code Skill 集成

安装后可在 Claude Code 中直接用自然语言操作:

/plugin marketplace add wechatsync
/plugin install wechatsync

然后直接说"把这篇文章同步到掘金和知乎"即可。

OpenClaw 集成

通过 ClawHub 技能市场一键安装:

clawhub install lljxx1/wechatsync

详细文档见 packages/cli/README.md

Claude Code / Claude Desktop 集成 (Anthropic MCP)

通过 Anthropic MCP 协议,可以在 Claude Code 或 Claude Desktop 中使用 AI 同步公众号文章到多个平台。

配置步骤

  1. 构建项目: pnpm build
  2. 在 Chrome 扩展设置中启用「MCP 连接」,并设置 Token
  3. ~/.claude/claude_desktop_config.json 中添加配置:
{
"mcpServers": {
"sync-assistant": {
"command": "node",
"args": ["/path/to/Wechatsync/packages/mcp-server/dist/index.js"],
"env": {
"MCP_TOKEN": "your-secret-token-here"
}
}
}
}

重要: MCP_TOKEN 必须与 Chrome 扩展中设置的 Token 一致。

使用示例

"帮我把这篇文章同步到知乎和掘金"
"检查下哪些平台已登录"

可用工具

工具说明
list_platforms列出所有平台及登录状态
check_auth检查指定平台登录状态
sync_article同步文章到指定平台(草稿)
extract_article从当前浏览器页面提取文章
upload_image_file上传本地图片到平台

详细文档见 packages/mcp-server/README.md

网页发起同步

如果你是文章编辑器开发者,或有内容库需要同步多个渠道,可以使用 JS SDK:

// 拉起同步任务框window.syncPost(article)

开发

项目结构

Wechatsync/
├── packages/
│ ├── extension/ # Chrome 扩展 (MV3)
│ ├── mcp-server/ # MCP Server (stdio/SSE)
│ ├── cli/ # 命令行工具
│ └── core/ # 核心逻辑 (共享)

本地开发

# 安装依赖
pnpm install
# 开发模式
pnpm dev
# 构建
pnpm build

然后在 Chrome 中加载 packages/extension/dist 目录。

更新日志

v2.0.9 (2026-03-24)

  • 🆕 文章识别和提取更准确,支持更多网页
  • 🆕 CLI/MCP 同步 HTML 文件时自动保留排版样式
  • 🆕 同步对话框增加使用提示
  • 🔧 修复部分网页悬浮按钮显示异常

v2.0.8 (2026-03-17)

  • 🆕 新增抖音图文
  • 🆕 统一同步对话框和悬浮按钮
  • 🔧 修复 CLI 同步格式异常
  • 🔧 改善 CLI/MCP 桥接重连稳定性

v2.0.7 (2026-03-10)

  • 🆕 新增什么值得买、网易号平台
  • 🆕 简书支持 Markdown 格式发布
  • 🔧 重新适配简书、一点号、搜狐号

v2.0.6 (2026-02-25)

  • 🆕 新增东方财富
  • 🆕 新增悬浮同步按钮

v2.0.5 (2025-02-05)

  • 🔧 代码块提取兼容性提升
  • 🆕 新增 Markdown 压缩包下载

完整日志见 更新日志页面

贡献代码

欢迎参与项目开发!

使用场景

  • 自媒体运营者: 公众号文章一键同步到知乎、头条、百家号等多平台,提升内容分发效率
  • 技术博主: 技术博客同步到掘金、CSDN、SegmentFault、开源中国等技术社区
  • 内容创作者: 告别重复复制粘贴,一次编写多处发布,多平台发文不再繁琐
  • AI 写作用户: 配合 Claude / GPT 等 AI 写作工具,AIGC 内容一键发布到多平台
  • 独立博主: WordPress、Typecho 博客文章同步到各大自媒体平台引流

常见问题

Q: 这是什么工具?

文章同步助手是一款开源免费的 Chrome 浏览器扩展,帮助自媒体作者、博主、内容创作者将文章一键同步到多个平台,避免重复复制粘贴,是自媒体运营必备的多平台发文工具。

Q: 支持同步微信公众号文章吗?

支持。可以直接从微信公众号编辑器提取文章,一键同步到知乎、头条、掘金等 29+ 平台。支持公众号文章同步到头条号、公众号同步到知乎、微信文章同步到掘金等各种场景。

Q: 支持 AI 写作工具吗?

支持 Anthropic MCP 协议,可配合 Claude Desktop、Claude Code 等 AI 工具使用,实现 AI 写作、AIGC 内容一键发布。也可以配合 ChatGPT、GPT-4 等工具生成的文章使用。

Q: 数据安全吗?会上传我的账号信息吗?

不会。所有操作在本地浏览器内完成,你的 Cookie、文章内容、账号信息不经过任何第三方服务器。代码完全开源,可自行审计:查看源码

Q: 和微小宝、新媒体管家、简媒、蚁小二有什么区别?

文章同步助手是开源免费的,代码完全公开透明,无需付费订阅。作为浏览器扩展运行,数据本地存储,账号信息不上传,支持 MCP 协议可与 AI 工具集成。

Q: 如何同步文章到多个平台?

  1. 安装 Chrome 浏览器扩展
  2. 登录各平台账号(知乎、掘金、头条等)
  3. 打开要同步的文章页面
  4. 点击扩展图标,选择目标平台,一键同步

Author

fun · 独立开发者 · GitHub · 主页

License

GPL-3.0

十账号安全调度与网络组

10 个左右的合规账号推荐使用“一个账号一个隔离 Chrome 用户资料 + 多客户端 Bridge + 稳定逻辑网络组”。网络组只是运维分组,不是轮换代理、指纹伪装或风控绕过手段;系统不会保存 IP、SOCKS/HTTP 代理地址或代理凭据。

Campaign 配置可在 safety 中设置 defaultNetworkGroupplatformIntervalMinutesnetworkGroupIntervalMinutesfreezeOnInterventionaccounts。未配置时使用 default-network。首次安全正式发布会固定账号身份和网络组;后续网络组不一致会在发布前阻止。同平台、同网络组任务按照计划时间串行,正式写入的 maxAttempts 始终为 1。

CAPTCHA、安全验证或审核拒绝只会冻结受影响的 clientId::platformId,不会级联冻结其他账号。人工处理平台验证后运行:

wechatsync safety status --state-dir .wechatsync
wechatsync safety unfreeze 'clientId::platformId' --state-dir .wechatsync

解冻不会自动重发;下一次正式发布仍应先运行 Dry-run。

About

Modified Wechatsync publishing toolkit

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

文章同步助手 (Wechatsync)

开源免费的跨平台文章同步工具 | Chrome 浏览器扩展 | 自媒体内容分发神器

一键同步微信公众号文章到知乎、头条、掘金、小红书、CSDN 等 29+ 平台,支持 WordPress 等自建博客,告别重复复制粘贴。

🔥 支持 Anthropic MCP 协议,可在 Claude Desktop / Claude Code 中通过 AI 一键发布文章

工作原理

文章同步助手不是爬虫,不模拟登录,不经过任何第三方服务器。

它是一个 Chrome 浏览器扩展,工作方式与浏览器本身一致:

  1. 使用你自己的登录态:你在浏览器里正常登录各平台账号,扩展直接使用浏览器中已有的 Cookie,无需额外授权,无需输入密码
  2. 调用平台官方接口:发布文章时,扩展调用的是各平台 Web 编辑器使用的同一套官方 API,与你手动在网页上发布完全等价
  3. 数据不离开你的设备:所有请求直接从你的浏览器发往各平台,没有中间服务器,没有数据上传,源代码完全开源可审计
  4. 草稿优先:默认将文章同步为草稿,发布前由你人工确认,不会自动发布
你的浏览器(已登录各平台)
↓ 扩展读取 Cookie
↓ 调用平台官方 Web API
各平台(知乎 / 掘金 / 头条 / ...)

功能特性

  • 一键批量发布: 微信公众号文章同步到知乎、掘金、头条、CSDN、简书、微博、小红书、抖音等 29+ 自媒体平台
  • 网页转 Markdown: 任意网页智能提取正文,自动过滤广告噪音,图片本地化,打包为 Markdown + 图片 ZIP 压缩包
  • 自建站支持: WordPress、Typecho、博客园 (MetaWeblog API)
  • 智能提取: 自动从网页提取文章标题、内容、封面图(基于 Safari 阅读模式)
  • 图片自动上传: 自动转存文章图片到目标平台,无需手动处理
  • 草稿模式: 同步后保存为草稿,方便二次编辑后发布
  • 同平台多账号: 在扩展内保存多套登录 Cookie,同一篇文章可同步到不同平台的多个账号
  • AI 集成: 支持 Anthropic MCP / Claude Code Skill / OpenClaw,多种方式接入 AI 工作流

同平台多账号

  1. 在目标平台网页登录第一个账号
  2. 打开扩展「设置 → 多账号登录态」,填写账号名称并保存当前登录态
  3. 在平台网页切换到其他账号,重复上述操作
  4. 同步文章时,可以像选择普通平台一样同时勾选多个账号

多账号 Cookie 仅保存在 chrome.storage.local。同步时扩展会备份当前会话,串行切换到目标账号,完成后在 finally 阶段恢复原会话。扩展不保存平台密码。由于切换期间同域网页也能观察到临时会话,建议同步时不要在目标平台网页同时进行编辑操作。

多 Chrome 用户资料 + 多客户端 Bridge(推荐用于 5 个以上账号)

这种方式不切换 Cookie:每个 Chrome 用户资料拥有独立的浏览器登录态,并各自运行一个扩展客户端;所有客户端同时连接同一个本地 Bridge。

  1. 在 Chrome 中创建多个本地用户资料(不要求登录多个 Google/Chrome 账号)
  2. 在每个用户资料中加载同一份扩展,并分别登录目标平台账号
  3. 打开扩展「设置 → 同步桥接」,为每个用户资料设置唯一名称,例如“知乎-账号A”
  4. 每个用户资料都启用同步桥接,并连接 ws://localhost:9527
  5. 在终端运行 wechatsync bridge 并保持运行,让所有用户资料稳定连接
  6. 另开终端运行 wechatsync clients 查看已连接用户资料
  7. 运行 wechatsync platforms --auth 获取 clientId::platformId 形式的账号 ID
# 精确发送到两个不同 Chrome 用户资料中的知乎账号
wechatsync sync article.md -p '<client-a>::zhihu,<client-b>::zhihu'# 自动发送到所有已登录的知乎账号(仍然只保存为草稿)
wechatsync sync article.md -p zhihu --all-accounts
# 正式公开发布建议始终启用安全模式(会要求输入 PUBLISH 二次确认)
wechatsync sync article.md -p '<client-a>::zhihu' --publish --safe

Bridge 会使用每个扩展注册的独立本地 Token 路由请求,因此多用户资料不需要共享同一个 Token,也不会通过 Bridge 复制平台 Cookie。只有一个用户资料连接时,原来的 zhihujuejin 等普通平台 ID 仍可直接使用。

--publish 只允许用于明确声明 direct_publish 能力的平台。当前代码已接通知乎、掘金、CSDN、开源中国、WordPress、Typecho 和 MetaWeblog;其他平台仍只保存草稿。四个公开平台适配器都会先完整保存草稿,再最多调用一次最终发布流程;发布后只读校验标题和作者,未立即公开时返回 submitted 并转入只读复查。CMS 则把正式发布标志传给对应接口。CSDN 和开源中国已通过自动化回归,但仍需在实际登录账号上完成草稿和单账号正式发布验收。

掘金正式发布建议为 Markdown 提供分类 ID 和标签 ID,避免平台因分类或标签缺失拒绝最终提交:

---
title: 文章标题summary: 不超过 100 字的摘要category: "6809637771511070734"tags: ["7467857238494020000"]
---

也可使用 --category <id> --tags <id1,id2> 覆盖 front matter。分类和标签参数为平台 ID,不是显示名称。

CSDN 正式发布至少需要一个标签;开源中国可选传入分类 ID。可在 Campaign 配置的 platforms.csdnplatforms.oschina 中分别设置。

安全正式发布

完整规则、限制和风险边界见 docs/safe-publish-mode.md

正式发布状态、审核状态和公开页面验证规则见 docs/publish-status-verification.md

正式发布具有账号和内容风险,推荐在 --publish 后同时使用 --safe。安全模式默认执行以下保护:

  • 发布前和每个账号实际执行前再次检查登录身份,并将首次确认的目标 ID 与平台账号用户名锁定
  • 同账号相同文章默认禁止重复发布;同一平台的多个账号默认禁止发布相同文章;不同平台之间允许正常分发
  • 每账号滚动 24 小时最多正式发布 2 篇,同账号两次发布至少间隔 30 分钟
  • 多账号严格串行执行,账号之间默认等待 30 分钟
  • 任一账号失败后默认立即熔断;可用 --continue-on-error 让后续目标继续执行,失败目标始终不自动重试
  • 平台最终发布失败时尽量保留并显示已经创建的草稿链接

首次操作先运行单账号安全预检。--dry-run 会连接 Bridge、确认账号身份并检查安全策略,但不会上传图片、创建草稿或正式发布:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu' \
--publish \
--safe \
--dry-run

同一篇文章选择多个账号时,默认预检不通过:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--dry-run

只有在人工确认确实需要跨账号发布相同内容后,才显式解除该项保护。下面的命令会正式公开发布,非交互环境还必须传入 --yes

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--allow-cross-account-duplicate \
--account-delay 30 \
--yes

可调参数:

--daily-limit <count> 每账号滚动 24 小时发布上限,默认 2
--min-interval <minutes> 同账号最小发布间隔,默认 30 分钟
--account-delay <minutes> 多账号顺序发布间隔,默认 30 分钟
--continue-on-error 关闭级联熔断,单个目标失败后继续后续目标;不重试失败目标
--allow-republish 显式允许同账号重复发布相同文章
--state-dir <path> 安全状态目录,默认 .wechatsync

身份锁定和发布历史保存在 .wechatsync/publish-state.json,文件权限为 0600,不会保存 Cookie、Token 或平台密码。删除该文件会同时清除身份锁定和本地防重复历史,因此不建议把它作为日常“解锁”方式。安全模式只能降低误发、串号和过快发布的风险,不能保证平台不会限流或限制账号。

持久化发布队列

长时间定时或多账号任务建议使用 SQLite 持久化队列,而不是让一次 sync 命令在终端内等待。完整说明见 docs/publish-queue-worker.md。队列功能需要 Node.js 22.5 或更高版本。

# 安全的首次测试:只做预检,不实际发布
wechatsync enqueue article.md \
-p '<client-a>::zhihu' \
--publish --safe --dry-run --yes
# 执行下一个到期任务
wechatsync worker --once
# 创建正式定时任务
wechatsync schedule article.md \
-p '<client-a>::zhihu' \
--at '2026-08-04 10:00' \
--publish --safe --yes
# 队列管理
wechatsync queue list
wechatsync queue show <job-id>
wechatsync queue pause <job-id>
wechatsync queue resume <job-id>
wechatsync queue cancel <job-id>

任务按目标拆分,默认零自动重试发布;源文件在入队后变化或 Worker 异常中断导致执行结果未知时,任务会进入 blocked,避免未经确认地重复发布。已提交/审核中的文章会进入持久化只读复查,复查可重试查询,但绝不重试发布。

一篇文章发布到所有平台和账号(Campaign)

Campaign 会发现所有已连接 Chrome 用户资料中的已登录账号,按平台用户 ID 去重,固定目标清单,并为每个目标创建持久化任务:

# 所有已登录平台和账号保存草稿
wechatsync campaign create article.md
# 只选择知乎和掘金,但包含这两个平台的所有已登录账号
wechatsync campaign create article.md -p zhihu,juejin
# 正式发布。默认只要存在不支持正式发布的平台就中止预检
wechatsync campaign create article.md --publish --safe --yes --config campaign.config.json
# 支持正式发布的平台公开发布,其余平台只保存草稿
wechatsync campaign create article.md --publish --safe --yes --unsupported draft
# 使用平台级分类、标签、摘要和封面配置
wechatsync campaign create article.md --config docs/campaign.config.example.json
wechatsync campaign list
wechatsync campaign show <campaign-id>
wechatsync campaign cancel <campaign-id>

“一次发布”表示一次创建全部目标任务,底层仍由安全队列受控串行执行,不会在同一秒向所有账号并发请求。正式发布能力当前以适配器的 direct_publish 声明为准;保存草稿不能算作公开发布成功。

完整设计和测试说明:

验证码、登录失效、身份不匹配、限流和审核拒绝会生成“待人工处理”记录。该记录明确携带 retryPublish: false,Worker 会阻止任务而不是自动重发。

安装方式

Chrome 浏览器扩展安装

推荐: Chrome 网上应用店 (自动更新)

手动安装: 下载 最新 Release 解压后加载到 Chrome 扩展

支持 Chrome / Edge / 360 / QQ 等 Chromium 内核浏览器

支持 29+ 主流平台

平台ID类型状态
微信公众号weixin主流自媒体
知乎zhihu主流自媒体
微博weibo主流自媒体
小红书xiaohongshu主流自媒体
掘金juejin技术社区
CSDNcsdn技术社区
简书jianshu通用
头条号toutiao通用✅ 草稿模式
抖音图文douyin主流自媒体✅ 🆕
B站专栏bilibili通用
百家号baijiahao通用
语雀yuque技术社区
豆瓣douban通用
搜狐号sohu通用
雪球xueqiu财经
人人都是产品经理woshipm产品
大鱼号dayu通用
一点号yidian通用
51CTO51cto技术社区
慕课网imooc技术社区
开源中国oschina技术社区
SegmentFaultsegmentfault技术社区
博客园cnblogs技术社区
搜狐焦点sohufocus房产
X (Twitter)x海外
东方财富eastmoney财经
什么值得买smzdm通用
网易号netease通用
WordPresswordpress建站/CMS
Typechotypecho建站/CMS
Hexozip-download建站/CMS✅ 通过 Markdown 下载
Hugozip-download建站/CMS✅ 通过 Markdown 下载

CLI 命令行工具

最简单的使用方式,无需配置 MCP,安装即用:

npm install -g @wechatsync/cli

需要先安装 Chrome 扩展并在扩展设置中启用「同步桥接」。新版扩展会把各用户资料自己的本地 Token 注册给 Bridge;WECHATSYNC_TOKEN 仅作为旧版扩展兼容回退项:

# 仅连接旧版扩展时需要:export WECHATSYNC_TOKEN="你的token"# 同步文章到多个平台
wechatsync sync article.md -p zhihu,juejin,csdn
# 查看平台登录状态
wechatsync platforms --auth
# 查看当前连接的 Chrome 用户资料
wechatsync clients
# 多用户资料时建议在单独终端持续运行 Bridge
wechatsync bridge
# 从浏览器当前页面提取文章
wechatsync extract -o article.md

Claude Code Skill 集成

安装后可在 Claude Code 中直接用自然语言操作:

/plugin marketplace add wechatsync
/plugin install wechatsync

然后直接说"把这篇文章同步到掘金和知乎"即可。

OpenClaw 集成

通过 ClawHub 技能市场一键安装:

clawhub install lljxx1/wechatsync

详细文档见 packages/cli/README.md

Claude Code / Claude Desktop 集成 (Anthropic MCP)

通过 Anthropic MCP 协议,可以在 Claude Code 或 Claude Desktop 中使用 AI 同步公众号文章到多个平台。

配置步骤

  1. 构建项目: pnpm build
  2. 在 Chrome 扩展设置中启用「MCP 连接」,并设置 Token
  3. ~/.claude/claude_desktop_config.json 中添加配置:
{
"mcpServers": {
"sync-assistant": {
"command": "node",
"args": ["/path/to/Wechatsync/packages/mcp-server/dist/index.js"],
"env": {
"MCP_TOKEN": "your-secret-token-here"
}
}
}
}

重要: MCP_TOKEN 必须与 Chrome 扩展中设置的 Token 一致。

使用示例

"帮我把这篇文章同步到知乎和掘金"
"检查下哪些平台已登录"

可用工具

工具说明
list_platforms列出所有平台及登录状态
check_auth检查指定平台登录状态
sync_article同步文章到指定平台(草稿)
extract_article从当前浏览器页面提取文章
upload_image_file上传本地图片到平台

详细文档见 packages/mcp-server/README.md

网页发起同步

如果你是文章编辑器开发者,或有内容库需要同步多个渠道,可以使用 JS SDK:

// 拉起同步任务框window.syncPost(article)

开发

项目结构

Wechatsync/
├── packages/
│ ├── extension/ # Chrome 扩展 (MV3)
│ ├── mcp-server/ # MCP Server (stdio/SSE)
│ ├── cli/ # 命令行工具
│ └── core/ # 核心逻辑 (共享)

本地开发

# 安装依赖
pnpm install
# 开发模式
pnpm dev
# 构建
pnpm build

然后在 Chrome 中加载 packages/extension/dist 目录。

更新日志

v2.0.9 (2026-03-24)

  • 🆕 文章识别和提取更准确,支持更多网页
  • 🆕 CLI/MCP 同步 HTML 文件时自动保留排版样式
  • 🆕 同步对话框增加使用提示
  • 🔧 修复部分网页悬浮按钮显示异常

v2.0.8 (2026-03-17)

  • 🆕 新增抖音图文
  • 🆕 统一同步对话框和悬浮按钮
  • 🔧 修复 CLI 同步格式异常
  • 🔧 改善 CLI/MCP 桥接重连稳定性

v2.0.7 (2026-03-10)

  • 🆕 新增什么值得买、网易号平台
  • 🆕 简书支持 Markdown 格式发布
  • 🔧 重新适配简书、一点号、搜狐号

v2.0.6 (2026-02-25)

  • 🆕 新增东方财富
  • 🆕 新增悬浮同步按钮

v2.0.5 (2025-02-05)

  • 🔧 代码块提取兼容性提升
  • 🆕 新增 Markdown 压缩包下载

完整日志见 更新日志页面

贡献代码

欢迎参与项目开发!

使用场景

  • 自媒体运营者: 公众号文章一键同步到知乎、头条、百家号等多平台,提升内容分发效率
  • 技术博主: 技术博客同步到掘金、CSDN、SegmentFault、开源中国等技术社区
  • 内容创作者: 告别重复复制粘贴,一次编写多处发布,多平台发文不再繁琐
  • AI 写作用户: 配合 Claude / GPT 等 AI 写作工具,AIGC 内容一键发布到多平台
  • 独立博主: WordPress、Typecho 博客文章同步到各大自媒体平台引流

常见问题

Q: 这是什么工具?

文章同步助手是一款开源免费的 Chrome 浏览器扩展,帮助自媒体作者、博主、内容创作者将文章一键同步到多个平台,避免重复复制粘贴,是自媒体运营必备的多平台发文工具。

Q: 支持同步微信公众号文章吗?

支持。可以直接从微信公众号编辑器提取文章,一键同步到知乎、头条、掘金等 29+ 平台。支持公众号文章同步到头条号、公众号同步到知乎、微信文章同步到掘金等各种场景。

Q: 支持 AI 写作工具吗?

支持 Anthropic MCP 协议,可配合 Claude Desktop、Claude Code 等 AI 工具使用,实现 AI 写作、AIGC 内容一键发布。也可以配合 ChatGPT、GPT-4 等工具生成的文章使用。

Q: 数据安全吗?会上传我的账号信息吗?

不会。所有操作在本地浏览器内完成,你的 Cookie、文章内容、账号信息不经过任何第三方服务器。代码完全开源,可自行审计:查看源码

Q: 和微小宝、新媒体管家、简媒、蚁小二有什么区别?

文章同步助手是开源免费的,代码完全公开透明,无需付费订阅。作为浏览器扩展运行,数据本地存储,账号信息不上传,支持 MCP 协议可与 AI 工具集成。

Q: 如何同步文章到多个平台?

  1. 安装 Chrome 浏览器扩展
  2. 登录各平台账号(知乎、掘金、头条等)
  3. 打开要同步的文章页面
  4. 点击扩展图标,选择目标平台,一键同步

Author

fun · 独立开发者 · GitHub · 主页

License

GPL-3.0

十账号安全调度与网络组

10 个左右的合规账号推荐使用“一个账号一个隔离 Chrome 用户资料 + 多客户端 Bridge + 稳定逻辑网络组”。网络组只是运维分组,不是轮换代理、指纹伪装或风控绕过手段;系统不会保存 IP、SOCKS/HTTP 代理地址或代理凭据。

Campaign 配置可在 safety 中设置 defaultNetworkGroupplatformIntervalMinutesnetworkGroupIntervalMinutesfreezeOnInterventionaccounts。未配置时使用 default-network。首次安全正式发布会固定账号身份和网络组;后续网络组不一致会在发布前阻止。同平台、同网络组任务按照计划时间串行,正式写入的 maxAttempts 始终为 1。

CAPTCHA、安全验证或审核拒绝只会冻结受影响的 clientId::platformId,不会级联冻结其他账号。人工处理平台验证后运行:

wechatsync safety status --state-dir .wechatsync
wechatsync safety unfreeze 'clientId::platformId' --state-dir .wechatsync

解冻不会自动重发;下一次正式发布仍应先运行 Dry-run。

About

Modified Wechatsync publishing toolkit

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

文章同步助手 (Wechatsync)

开源免费的跨平台文章同步工具 | Chrome 浏览器扩展 | 自媒体内容分发神器

一键同步微信公众号文章到知乎、头条、掘金、小红书、CSDN 等 29+ 平台,支持 WordPress 等自建博客,告别重复复制粘贴。

🔥 支持 Anthropic MCP 协议,可在 Claude Desktop / Claude Code 中通过 AI 一键发布文章

工作原理

文章同步助手不是爬虫,不模拟登录,不经过任何第三方服务器。

它是一个 Chrome 浏览器扩展,工作方式与浏览器本身一致:

  1. 使用你自己的登录态:你在浏览器里正常登录各平台账号,扩展直接使用浏览器中已有的 Cookie,无需额外授权,无需输入密码
  2. 调用平台官方接口:发布文章时,扩展调用的是各平台 Web 编辑器使用的同一套官方 API,与你手动在网页上发布完全等价
  3. 数据不离开你的设备:所有请求直接从你的浏览器发往各平台,没有中间服务器,没有数据上传,源代码完全开源可审计
  4. 草稿优先:默认将文章同步为草稿,发布前由你人工确认,不会自动发布
你的浏览器(已登录各平台)
↓ 扩展读取 Cookie
↓ 调用平台官方 Web API
各平台(知乎 / 掘金 / 头条 / ...)

功能特性

  • 一键批量发布: 微信公众号文章同步到知乎、掘金、头条、CSDN、简书、微博、小红书、抖音等 29+ 自媒体平台
  • 网页转 Markdown: 任意网页智能提取正文,自动过滤广告噪音,图片本地化,打包为 Markdown + 图片 ZIP 压缩包
  • 自建站支持: WordPress、Typecho、博客园 (MetaWeblog API)
  • 智能提取: 自动从网页提取文章标题、内容、封面图(基于 Safari 阅读模式)
  • 图片自动上传: 自动转存文章图片到目标平台,无需手动处理
  • 草稿模式: 同步后保存为草稿,方便二次编辑后发布
  • 同平台多账号: 在扩展内保存多套登录 Cookie,同一篇文章可同步到不同平台的多个账号
  • AI 集成: 支持 Anthropic MCP / Claude Code Skill / OpenClaw,多种方式接入 AI 工作流

同平台多账号

  1. 在目标平台网页登录第一个账号
  2. 打开扩展「设置 → 多账号登录态」,填写账号名称并保存当前登录态
  3. 在平台网页切换到其他账号,重复上述操作
  4. 同步文章时,可以像选择普通平台一样同时勾选多个账号

多账号 Cookie 仅保存在 chrome.storage.local。同步时扩展会备份当前会话,串行切换到目标账号,完成后在 finally 阶段恢复原会话。扩展不保存平台密码。由于切换期间同域网页也能观察到临时会话,建议同步时不要在目标平台网页同时进行编辑操作。

多 Chrome 用户资料 + 多客户端 Bridge(推荐用于 5 个以上账号)

这种方式不切换 Cookie:每个 Chrome 用户资料拥有独立的浏览器登录态,并各自运行一个扩展客户端;所有客户端同时连接同一个本地 Bridge。

  1. 在 Chrome 中创建多个本地用户资料(不要求登录多个 Google/Chrome 账号)
  2. 在每个用户资料中加载同一份扩展,并分别登录目标平台账号
  3. 打开扩展「设置 → 同步桥接」,为每个用户资料设置唯一名称,例如“知乎-账号A”
  4. 每个用户资料都启用同步桥接,并连接 ws://localhost:9527
  5. 在终端运行 wechatsync bridge 并保持运行,让所有用户资料稳定连接
  6. 另开终端运行 wechatsync clients 查看已连接用户资料
  7. 运行 wechatsync platforms --auth 获取 clientId::platformId 形式的账号 ID
# 精确发送到两个不同 Chrome 用户资料中的知乎账号
wechatsync sync article.md -p '<client-a>::zhihu,<client-b>::zhihu'# 自动发送到所有已登录的知乎账号(仍然只保存为草稿)
wechatsync sync article.md -p zhihu --all-accounts
# 正式公开发布建议始终启用安全模式(会要求输入 PUBLISH 二次确认)
wechatsync sync article.md -p '<client-a>::zhihu' --publish --safe

Bridge 会使用每个扩展注册的独立本地 Token 路由请求,因此多用户资料不需要共享同一个 Token,也不会通过 Bridge 复制平台 Cookie。只有一个用户资料连接时,原来的 zhihujuejin 等普通平台 ID 仍可直接使用。

--publish 只允许用于明确声明 direct_publish 能力的平台。当前代码已接通知乎、掘金、CSDN、开源中国、WordPress、Typecho 和 MetaWeblog;其他平台仍只保存草稿。四个公开平台适配器都会先完整保存草稿,再最多调用一次最终发布流程;发布后只读校验标题和作者,未立即公开时返回 submitted 并转入只读复查。CMS 则把正式发布标志传给对应接口。CSDN 和开源中国已通过自动化回归,但仍需在实际登录账号上完成草稿和单账号正式发布验收。

掘金正式发布建议为 Markdown 提供分类 ID 和标签 ID,避免平台因分类或标签缺失拒绝最终提交:

---
title: 文章标题summary: 不超过 100 字的摘要category: "6809637771511070734"tags: ["7467857238494020000"]
---

也可使用 --category <id> --tags <id1,id2> 覆盖 front matter。分类和标签参数为平台 ID,不是显示名称。

CSDN 正式发布至少需要一个标签;开源中国可选传入分类 ID。可在 Campaign 配置的 platforms.csdnplatforms.oschina 中分别设置。

安全正式发布

完整规则、限制和风险边界见 docs/safe-publish-mode.md

正式发布状态、审核状态和公开页面验证规则见 docs/publish-status-verification.md

正式发布具有账号和内容风险,推荐在 --publish 后同时使用 --safe。安全模式默认执行以下保护:

  • 发布前和每个账号实际执行前再次检查登录身份,并将首次确认的目标 ID 与平台账号用户名锁定
  • 同账号相同文章默认禁止重复发布;同一平台的多个账号默认禁止发布相同文章;不同平台之间允许正常分发
  • 每账号滚动 24 小时最多正式发布 2 篇,同账号两次发布至少间隔 30 分钟
  • 多账号严格串行执行,账号之间默认等待 30 分钟
  • 任一账号失败后默认立即熔断;可用 --continue-on-error 让后续目标继续执行,失败目标始终不自动重试
  • 平台最终发布失败时尽量保留并显示已经创建的草稿链接

首次操作先运行单账号安全预检。--dry-run 会连接 Bridge、确认账号身份并检查安全策略,但不会上传图片、创建草稿或正式发布:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu' \
--publish \
--safe \
--dry-run

同一篇文章选择多个账号时,默认预检不通过:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--dry-run

只有在人工确认确实需要跨账号发布相同内容后,才显式解除该项保护。下面的命令会正式公开发布,非交互环境还必须传入 --yes

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--allow-cross-account-duplicate \
--account-delay 30 \
--yes

可调参数:

--daily-limit <count> 每账号滚动 24 小时发布上限,默认 2
--min-interval <minutes> 同账号最小发布间隔,默认 30 分钟
--account-delay <minutes> 多账号顺序发布间隔,默认 30 分钟
--continue-on-error 关闭级联熔断,单个目标失败后继续后续目标;不重试失败目标
--allow-republish 显式允许同账号重复发布相同文章
--state-dir <path> 安全状态目录,默认 .wechatsync

身份锁定和发布历史保存在 .wechatsync/publish-state.json,文件权限为 0600,不会保存 Cookie、Token 或平台密码。删除该文件会同时清除身份锁定和本地防重复历史,因此不建议把它作为日常“解锁”方式。安全模式只能降低误发、串号和过快发布的风险,不能保证平台不会限流或限制账号。

持久化发布队列

长时间定时或多账号任务建议使用 SQLite 持久化队列,而不是让一次 sync 命令在终端内等待。完整说明见 docs/publish-queue-worker.md。队列功能需要 Node.js 22.5 或更高版本。

# 安全的首次测试:只做预检,不实际发布
wechatsync enqueue article.md \
-p '<client-a>::zhihu' \
--publish --safe --dry-run --yes
# 执行下一个到期任务
wechatsync worker --once
# 创建正式定时任务
wechatsync schedule article.md \
-p '<client-a>::zhihu' \
--at '2026-08-04 10:00' \
--publish --safe --yes
# 队列管理
wechatsync queue list
wechatsync queue show <job-id>
wechatsync queue pause <job-id>
wechatsync queue resume <job-id>
wechatsync queue cancel <job-id>

任务按目标拆分,默认零自动重试发布;源文件在入队后变化或 Worker 异常中断导致执行结果未知时,任务会进入 blocked,避免未经确认地重复发布。已提交/审核中的文章会进入持久化只读复查,复查可重试查询,但绝不重试发布。

一篇文章发布到所有平台和账号(Campaign)

Campaign 会发现所有已连接 Chrome 用户资料中的已登录账号,按平台用户 ID 去重,固定目标清单,并为每个目标创建持久化任务:

# 所有已登录平台和账号保存草稿
wechatsync campaign create article.md
# 只选择知乎和掘金,但包含这两个平台的所有已登录账号
wechatsync campaign create article.md -p zhihu,juejin
# 正式发布。默认只要存在不支持正式发布的平台就中止预检
wechatsync campaign create article.md --publish --safe --yes --config campaign.config.json
# 支持正式发布的平台公开发布,其余平台只保存草稿
wechatsync campaign create article.md --publish --safe --yes --unsupported draft
# 使用平台级分类、标签、摘要和封面配置
wechatsync campaign create article.md --config docs/campaign.config.example.json
wechatsync campaign list
wechatsync campaign show <campaign-id>
wechatsync campaign cancel <campaign-id>

“一次发布”表示一次创建全部目标任务,底层仍由安全队列受控串行执行,不会在同一秒向所有账号并发请求。正式发布能力当前以适配器的 direct_publish 声明为准;保存草稿不能算作公开发布成功。

完整设计和测试说明:

验证码、登录失效、身份不匹配、限流和审核拒绝会生成“待人工处理”记录。该记录明确携带 retryPublish: false,Worker 会阻止任务而不是自动重发。

安装方式

Chrome 浏览器扩展安装

推荐: Chrome 网上应用店 (自动更新)

手动安装: 下载 最新 Release 解压后加载到 Chrome 扩展

支持 Chrome / Edge / 360 / QQ 等 Chromium 内核浏览器

支持 29+ 主流平台

平台ID类型状态
微信公众号weixin主流自媒体
知乎zhihu主流自媒体
微博weibo主流自媒体
小红书xiaohongshu主流自媒体
掘金juejin技术社区
CSDNcsdn技术社区
简书jianshu通用
头条号toutiao通用✅ 草稿模式
抖音图文douyin主流自媒体✅ 🆕
B站专栏bilibili通用
百家号baijiahao通用
语雀yuque技术社区
豆瓣douban通用
搜狐号sohu通用
雪球xueqiu财经
人人都是产品经理woshipm产品
大鱼号dayu通用
一点号yidian通用
51CTO51cto技术社区
慕课网imooc技术社区
开源中国oschina技术社区
SegmentFaultsegmentfault技术社区
博客园cnblogs技术社区
搜狐焦点sohufocus房产
X (Twitter)x海外
东方财富eastmoney财经
什么值得买smzdm通用
网易号netease通用
WordPresswordpress建站/CMS
Typechotypecho建站/CMS
Hexozip-download建站/CMS✅ 通过 Markdown 下载
Hugozip-download建站/CMS✅ 通过 Markdown 下载

CLI 命令行工具

最简单的使用方式,无需配置 MCP,安装即用:

npm install -g @wechatsync/cli

需要先安装 Chrome 扩展并在扩展设置中启用「同步桥接」。新版扩展会把各用户资料自己的本地 Token 注册给 Bridge;WECHATSYNC_TOKEN 仅作为旧版扩展兼容回退项:

# 仅连接旧版扩展时需要:export WECHATSYNC_TOKEN="你的token"# 同步文章到多个平台
wechatsync sync article.md -p zhihu,juejin,csdn
# 查看平台登录状态
wechatsync platforms --auth
# 查看当前连接的 Chrome 用户资料
wechatsync clients
# 多用户资料时建议在单独终端持续运行 Bridge
wechatsync bridge
# 从浏览器当前页面提取文章
wechatsync extract -o article.md

Claude Code Skill 集成

安装后可在 Claude Code 中直接用自然语言操作:

/plugin marketplace add wechatsync
/plugin install wechatsync

然后直接说"把这篇文章同步到掘金和知乎"即可。

OpenClaw 集成

通过 ClawHub 技能市场一键安装:

clawhub install lljxx1/wechatsync

详细文档见 packages/cli/README.md

Claude Code / Claude Desktop 集成 (Anthropic MCP)

通过 Anthropic MCP 协议,可以在 Claude Code 或 Claude Desktop 中使用 AI 同步公众号文章到多个平台。

配置步骤

  1. 构建项目: pnpm build
  2. 在 Chrome 扩展设置中启用「MCP 连接」,并设置 Token
  3. ~/.claude/claude_desktop_config.json 中添加配置:
{
"mcpServers": {
"sync-assistant": {
"command": "node",
"args": ["/path/to/Wechatsync/packages/mcp-server/dist/index.js"],
"env": {
"MCP_TOKEN": "your-secret-token-here"
}
}
}
}

重要: MCP_TOKEN 必须与 Chrome 扩展中设置的 Token 一致。

使用示例

"帮我把这篇文章同步到知乎和掘金"
"检查下哪些平台已登录"

可用工具

工具说明
list_platforms列出所有平台及登录状态
check_auth检查指定平台登录状态
sync_article同步文章到指定平台(草稿)
extract_article从当前浏览器页面提取文章
upload_image_file上传本地图片到平台

详细文档见 packages/mcp-server/README.md

网页发起同步

如果你是文章编辑器开发者,或有内容库需要同步多个渠道,可以使用 JS SDK:

// 拉起同步任务框window.syncPost(article)

开发

项目结构

Wechatsync/
├── packages/
│ ├── extension/ # Chrome 扩展 (MV3)
│ ├── mcp-server/ # MCP Server (stdio/SSE)
│ ├── cli/ # 命令行工具
│ └── core/ # 核心逻辑 (共享)

本地开发

# 安装依赖
pnpm install
# 开发模式
pnpm dev
# 构建
pnpm build

然后在 Chrome 中加载 packages/extension/dist 目录。

更新日志

v2.0.9 (2026-03-24)

  • 🆕 文章识别和提取更准确,支持更多网页
  • 🆕 CLI/MCP 同步 HTML 文件时自动保留排版样式
  • 🆕 同步对话框增加使用提示
  • 🔧 修复部分网页悬浮按钮显示异常

v2.0.8 (2026-03-17)

  • 🆕 新增抖音图文
  • 🆕 统一同步对话框和悬浮按钮
  • 🔧 修复 CLI 同步格式异常
  • 🔧 改善 CLI/MCP 桥接重连稳定性

v2.0.7 (2026-03-10)

  • 🆕 新增什么值得买、网易号平台
  • 🆕 简书支持 Markdown 格式发布
  • 🔧 重新适配简书、一点号、搜狐号

v2.0.6 (2026-02-25)

  • 🆕 新增东方财富
  • 🆕 新增悬浮同步按钮

v2.0.5 (2025-02-05)

  • 🔧 代码块提取兼容性提升
  • 🆕 新增 Markdown 压缩包下载

完整日志见 更新日志页面

贡献代码

欢迎参与项目开发!

使用场景

  • 自媒体运营者: 公众号文章一键同步到知乎、头条、百家号等多平台,提升内容分发效率
  • 技术博主: 技术博客同步到掘金、CSDN、SegmentFault、开源中国等技术社区
  • 内容创作者: 告别重复复制粘贴,一次编写多处发布,多平台发文不再繁琐
  • AI 写作用户: 配合 Claude / GPT 等 AI 写作工具,AIGC 内容一键发布到多平台
  • 独立博主: WordPress、Typecho 博客文章同步到各大自媒体平台引流

常见问题

Q: 这是什么工具?

文章同步助手是一款开源免费的 Chrome 浏览器扩展,帮助自媒体作者、博主、内容创作者将文章一键同步到多个平台,避免重复复制粘贴,是自媒体运营必备的多平台发文工具。

Q: 支持同步微信公众号文章吗?

支持。可以直接从微信公众号编辑器提取文章,一键同步到知乎、头条、掘金等 29+ 平台。支持公众号文章同步到头条号、公众号同步到知乎、微信文章同步到掘金等各种场景。

Q: 支持 AI 写作工具吗?

支持 Anthropic MCP 协议,可配合 Claude Desktop、Claude Code 等 AI 工具使用,实现 AI 写作、AIGC 内容一键发布。也可以配合 ChatGPT、GPT-4 等工具生成的文章使用。

Q: 数据安全吗?会上传我的账号信息吗?

不会。所有操作在本地浏览器内完成,你的 Cookie、文章内容、账号信息不经过任何第三方服务器。代码完全开源,可自行审计:查看源码

Q: 和微小宝、新媒体管家、简媒、蚁小二有什么区别?

文章同步助手是开源免费的,代码完全公开透明,无需付费订阅。作为浏览器扩展运行,数据本地存储,账号信息不上传,支持 MCP 协议可与 AI 工具集成。

Q: 如何同步文章到多个平台?

  1. 安装 Chrome 浏览器扩展
  2. 登录各平台账号(知乎、掘金、头条等)
  3. 打开要同步的文章页面
  4. 点击扩展图标,选择目标平台,一键同步

Author

fun · 独立开发者 · GitHub · 主页

License

GPL-3.0

十账号安全调度与网络组

10 个左右的合规账号推荐使用“一个账号一个隔离 Chrome 用户资料 + 多客户端 Bridge + 稳定逻辑网络组”。网络组只是运维分组,不是轮换代理、指纹伪装或风控绕过手段;系统不会保存 IP、SOCKS/HTTP 代理地址或代理凭据。

Campaign 配置可在 safety 中设置 defaultNetworkGroupplatformIntervalMinutesnetworkGroupIntervalMinutesfreezeOnInterventionaccounts。未配置时使用 default-network。首次安全正式发布会固定账号身份和网络组;后续网络组不一致会在发布前阻止。同平台、同网络组任务按照计划时间串行,正式写入的 maxAttempts 始终为 1。

CAPTCHA、安全验证或审核拒绝只会冻结受影响的 clientId::platformId,不会级联冻结其他账号。人工处理平台验证后运行:

wechatsync safety status --state-dir .wechatsync
wechatsync safety unfreeze 'clientId::platformId' --state-dir .wechatsync

解冻不会自动重发;下一次正式发布仍应先运行 Dry-run。

About

Modified Wechatsync publishing toolkit

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

文章同步助手 (Wechatsync)

开源免费的跨平台文章同步工具 | Chrome 浏览器扩展 | 自媒体内容分发神器

一键同步微信公众号文章到知乎、头条、掘金、小红书、CSDN 等 29+ 平台,支持 WordPress 等自建博客,告别重复复制粘贴。

🔥 支持 Anthropic MCP 协议,可在 Claude Desktop / Claude Code 中通过 AI 一键发布文章

工作原理

文章同步助手不是爬虫,不模拟登录,不经过任何第三方服务器。

它是一个 Chrome 浏览器扩展,工作方式与浏览器本身一致:

  1. 使用你自己的登录态:你在浏览器里正常登录各平台账号,扩展直接使用浏览器中已有的 Cookie,无需额外授权,无需输入密码
  2. 调用平台官方接口:发布文章时,扩展调用的是各平台 Web 编辑器使用的同一套官方 API,与你手动在网页上发布完全等价
  3. 数据不离开你的设备:所有请求直接从你的浏览器发往各平台,没有中间服务器,没有数据上传,源代码完全开源可审计
  4. 草稿优先:默认将文章同步为草稿,发布前由你人工确认,不会自动发布
你的浏览器(已登录各平台)
↓ 扩展读取 Cookie
↓ 调用平台官方 Web API
各平台(知乎 / 掘金 / 头条 / ...)

功能特性

  • 一键批量发布: 微信公众号文章同步到知乎、掘金、头条、CSDN、简书、微博、小红书、抖音等 29+ 自媒体平台
  • 网页转 Markdown: 任意网页智能提取正文,自动过滤广告噪音,图片本地化,打包为 Markdown + 图片 ZIP 压缩包
  • 自建站支持: WordPress、Typecho、博客园 (MetaWeblog API)
  • 智能提取: 自动从网页提取文章标题、内容、封面图(基于 Safari 阅读模式)
  • 图片自动上传: 自动转存文章图片到目标平台,无需手动处理
  • 草稿模式: 同步后保存为草稿,方便二次编辑后发布
  • 同平台多账号: 在扩展内保存多套登录 Cookie,同一篇文章可同步到不同平台的多个账号
  • AI 集成: 支持 Anthropic MCP / Claude Code Skill / OpenClaw,多种方式接入 AI 工作流

同平台多账号

  1. 在目标平台网页登录第一个账号
  2. 打开扩展「设置 → 多账号登录态」,填写账号名称并保存当前登录态
  3. 在平台网页切换到其他账号,重复上述操作
  4. 同步文章时,可以像选择普通平台一样同时勾选多个账号

多账号 Cookie 仅保存在 chrome.storage.local。同步时扩展会备份当前会话,串行切换到目标账号,完成后在 finally 阶段恢复原会话。扩展不保存平台密码。由于切换期间同域网页也能观察到临时会话,建议同步时不要在目标平台网页同时进行编辑操作。

多 Chrome 用户资料 + 多客户端 Bridge(推荐用于 5 个以上账号)

这种方式不切换 Cookie:每个 Chrome 用户资料拥有独立的浏览器登录态,并各自运行一个扩展客户端;所有客户端同时连接同一个本地 Bridge。

  1. 在 Chrome 中创建多个本地用户资料(不要求登录多个 Google/Chrome 账号)
  2. 在每个用户资料中加载同一份扩展,并分别登录目标平台账号
  3. 打开扩展「设置 → 同步桥接」,为每个用户资料设置唯一名称,例如“知乎-账号A”
  4. 每个用户资料都启用同步桥接,并连接 ws://localhost:9527
  5. 在终端运行 wechatsync bridge 并保持运行,让所有用户资料稳定连接
  6. 另开终端运行 wechatsync clients 查看已连接用户资料
  7. 运行 wechatsync platforms --auth 获取 clientId::platformId 形式的账号 ID
# 精确发送到两个不同 Chrome 用户资料中的知乎账号
wechatsync sync article.md -p '<client-a>::zhihu,<client-b>::zhihu'# 自动发送到所有已登录的知乎账号(仍然只保存为草稿)
wechatsync sync article.md -p zhihu --all-accounts
# 正式公开发布建议始终启用安全模式(会要求输入 PUBLISH 二次确认)
wechatsync sync article.md -p '<client-a>::zhihu' --publish --safe

Bridge 会使用每个扩展注册的独立本地 Token 路由请求,因此多用户资料不需要共享同一个 Token,也不会通过 Bridge 复制平台 Cookie。只有一个用户资料连接时,原来的 zhihujuejin 等普通平台 ID 仍可直接使用。

--publish 只允许用于明确声明 direct_publish 能力的平台。当前代码已接通知乎、掘金、CSDN、开源中国、WordPress、Typecho 和 MetaWeblog;其他平台仍只保存草稿。四个公开平台适配器都会先完整保存草稿,再最多调用一次最终发布流程;发布后只读校验标题和作者,未立即公开时返回 submitted 并转入只读复查。CMS 则把正式发布标志传给对应接口。CSDN 和开源中国已通过自动化回归,但仍需在实际登录账号上完成草稿和单账号正式发布验收。

掘金正式发布建议为 Markdown 提供分类 ID 和标签 ID,避免平台因分类或标签缺失拒绝最终提交:

---
title: 文章标题summary: 不超过 100 字的摘要category: "6809637771511070734"tags: ["7467857238494020000"]
---

也可使用 --category <id> --tags <id1,id2> 覆盖 front matter。分类和标签参数为平台 ID,不是显示名称。

CSDN 正式发布至少需要一个标签;开源中国可选传入分类 ID。可在 Campaign 配置的 platforms.csdnplatforms.oschina 中分别设置。

安全正式发布

完整规则、限制和风险边界见 docs/safe-publish-mode.md

正式发布状态、审核状态和公开页面验证规则见 docs/publish-status-verification.md

正式发布具有账号和内容风险,推荐在 --publish 后同时使用 --safe。安全模式默认执行以下保护:

  • 发布前和每个账号实际执行前再次检查登录身份,并将首次确认的目标 ID 与平台账号用户名锁定
  • 同账号相同文章默认禁止重复发布;同一平台的多个账号默认禁止发布相同文章;不同平台之间允许正常分发
  • 每账号滚动 24 小时最多正式发布 2 篇,同账号两次发布至少间隔 30 分钟
  • 多账号严格串行执行,账号之间默认等待 30 分钟
  • 任一账号失败后默认立即熔断;可用 --continue-on-error 让后续目标继续执行,失败目标始终不自动重试
  • 平台最终发布失败时尽量保留并显示已经创建的草稿链接

首次操作先运行单账号安全预检。--dry-run 会连接 Bridge、确认账号身份并检查安全策略,但不会上传图片、创建草稿或正式发布:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu' \
--publish \
--safe \
--dry-run

同一篇文章选择多个账号时,默认预检不通过:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--dry-run

只有在人工确认确实需要跨账号发布相同内容后,才显式解除该项保护。下面的命令会正式公开发布,非交互环境还必须传入 --yes

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--allow-cross-account-duplicate \
--account-delay 30 \
--yes

可调参数:

--daily-limit <count> 每账号滚动 24 小时发布上限,默认 2
--min-interval <minutes> 同账号最小发布间隔,默认 30 分钟
--account-delay <minutes> 多账号顺序发布间隔,默认 30 分钟
--continue-on-error 关闭级联熔断,单个目标失败后继续后续目标;不重试失败目标
--allow-republish 显式允许同账号重复发布相同文章
--state-dir <path> 安全状态目录,默认 .wechatsync

身份锁定和发布历史保存在 .wechatsync/publish-state.json,文件权限为 0600,不会保存 Cookie、Token 或平台密码。删除该文件会同时清除身份锁定和本地防重复历史,因此不建议把它作为日常“解锁”方式。安全模式只能降低误发、串号和过快发布的风险,不能保证平台不会限流或限制账号。

持久化发布队列

长时间定时或多账号任务建议使用 SQLite 持久化队列,而不是让一次 sync 命令在终端内等待。完整说明见 docs/publish-queue-worker.md。队列功能需要 Node.js 22.5 或更高版本。

# 安全的首次测试:只做预检,不实际发布
wechatsync enqueue article.md \
-p '<client-a>::zhihu' \
--publish --safe --dry-run --yes
# 执行下一个到期任务
wechatsync worker --once
# 创建正式定时任务
wechatsync schedule article.md \
-p '<client-a>::zhihu' \
--at '2026-08-04 10:00' \
--publish --safe --yes
# 队列管理
wechatsync queue list
wechatsync queue show <job-id>
wechatsync queue pause <job-id>
wechatsync queue resume <job-id>
wechatsync queue cancel <job-id>

任务按目标拆分,默认零自动重试发布;源文件在入队后变化或 Worker 异常中断导致执行结果未知时,任务会进入 blocked,避免未经确认地重复发布。已提交/审核中的文章会进入持久化只读复查,复查可重试查询,但绝不重试发布。

一篇文章发布到所有平台和账号(Campaign)

Campaign 会发现所有已连接 Chrome 用户资料中的已登录账号,按平台用户 ID 去重,固定目标清单,并为每个目标创建持久化任务:

# 所有已登录平台和账号保存草稿
wechatsync campaign create article.md
# 只选择知乎和掘金,但包含这两个平台的所有已登录账号
wechatsync campaign create article.md -p zhihu,juejin
# 正式发布。默认只要存在不支持正式发布的平台就中止预检
wechatsync campaign create article.md --publish --safe --yes --config campaign.config.json
# 支持正式发布的平台公开发布,其余平台只保存草稿
wechatsync campaign create article.md --publish --safe --yes --unsupported draft
# 使用平台级分类、标签、摘要和封面配置
wechatsync campaign create article.md --config docs/campaign.config.example.json
wechatsync campaign list
wechatsync campaign show <campaign-id>
wechatsync campaign cancel <campaign-id>

“一次发布”表示一次创建全部目标任务,底层仍由安全队列受控串行执行,不会在同一秒向所有账号并发请求。正式发布能力当前以适配器的 direct_publish 声明为准;保存草稿不能算作公开发布成功。

完整设计和测试说明:

验证码、登录失效、身份不匹配、限流和审核拒绝会生成“待人工处理”记录。该记录明确携带 retryPublish: false,Worker 会阻止任务而不是自动重发。

安装方式

Chrome 浏览器扩展安装

推荐: Chrome 网上应用店 (自动更新)

手动安装: 下载 最新 Release 解压后加载到 Chrome 扩展

支持 Chrome / Edge / 360 / QQ 等 Chromium 内核浏览器

支持 29+ 主流平台

平台ID类型状态
微信公众号weixin主流自媒体
知乎zhihu主流自媒体
微博weibo主流自媒体
小红书xiaohongshu主流自媒体
掘金juejin技术社区
CSDNcsdn技术社区
简书jianshu通用
头条号toutiao通用✅ 草稿模式
抖音图文douyin主流自媒体✅ 🆕
B站专栏bilibili通用
百家号baijiahao通用
语雀yuque技术社区
豆瓣douban通用
搜狐号sohu通用
雪球xueqiu财经
人人都是产品经理woshipm产品
大鱼号dayu通用
一点号yidian通用
51CTO51cto技术社区
慕课网imooc技术社区
开源中国oschina技术社区
SegmentFaultsegmentfault技术社区
博客园cnblogs技术社区
搜狐焦点sohufocus房产
X (Twitter)x海外
东方财富eastmoney财经
什么值得买smzdm通用
网易号netease通用
WordPresswordpress建站/CMS
Typechotypecho建站/CMS
Hexozip-download建站/CMS✅ 通过 Markdown 下载
Hugozip-download建站/CMS✅ 通过 Markdown 下载

CLI 命令行工具

最简单的使用方式,无需配置 MCP,安装即用:

npm install -g @wechatsync/cli

需要先安装 Chrome 扩展并在扩展设置中启用「同步桥接」。新版扩展会把各用户资料自己的本地 Token 注册给 Bridge;WECHATSYNC_TOKEN 仅作为旧版扩展兼容回退项:

# 仅连接旧版扩展时需要:export WECHATSYNC_TOKEN="你的token"# 同步文章到多个平台
wechatsync sync article.md -p zhihu,juejin,csdn
# 查看平台登录状态
wechatsync platforms --auth
# 查看当前连接的 Chrome 用户资料
wechatsync clients
# 多用户资料时建议在单独终端持续运行 Bridge
wechatsync bridge
# 从浏览器当前页面提取文章
wechatsync extract -o article.md

Claude Code Skill 集成

安装后可在 Claude Code 中直接用自然语言操作:

/plugin marketplace add wechatsync
/plugin install wechatsync

然后直接说"把这篇文章同步到掘金和知乎"即可。

OpenClaw 集成

通过 ClawHub 技能市场一键安装:

clawhub install lljxx1/wechatsync

详细文档见 packages/cli/README.md

Claude Code / Claude Desktop 集成 (Anthropic MCP)

通过 Anthropic MCP 协议,可以在 Claude Code 或 Claude Desktop 中使用 AI 同步公众号文章到多个平台。

配置步骤

  1. 构建项目: pnpm build
  2. 在 Chrome 扩展设置中启用「MCP 连接」,并设置 Token
  3. ~/.claude/claude_desktop_config.json 中添加配置:
{
"mcpServers": {
"sync-assistant": {
"command": "node",
"args": ["/path/to/Wechatsync/packages/mcp-server/dist/index.js"],
"env": {
"MCP_TOKEN": "your-secret-token-here"
}
}
}
}

重要: MCP_TOKEN 必须与 Chrome 扩展中设置的 Token 一致。

使用示例

"帮我把这篇文章同步到知乎和掘金"
"检查下哪些平台已登录"

可用工具

工具说明
list_platforms列出所有平台及登录状态
check_auth检查指定平台登录状态
sync_article同步文章到指定平台(草稿)
extract_article从当前浏览器页面提取文章
upload_image_file上传本地图片到平台

详细文档见 packages/mcp-server/README.md

网页发起同步

如果你是文章编辑器开发者,或有内容库需要同步多个渠道,可以使用 JS SDK:

// 拉起同步任务框window.syncPost(article)

开发

项目结构

Wechatsync/
├── packages/
│ ├── extension/ # Chrome 扩展 (MV3)
│ ├── mcp-server/ # MCP Server (stdio/SSE)
│ ├── cli/ # 命令行工具
│ └── core/ # 核心逻辑 (共享)

本地开发

# 安装依赖
pnpm install
# 开发模式
pnpm dev
# 构建
pnpm build

然后在 Chrome 中加载 packages/extension/dist 目录。

更新日志

v2.0.9 (2026-03-24)

  • 🆕 文章识别和提取更准确,支持更多网页
  • 🆕 CLI/MCP 同步 HTML 文件时自动保留排版样式
  • 🆕 同步对话框增加使用提示
  • 🔧 修复部分网页悬浮按钮显示异常

v2.0.8 (2026-03-17)

  • 🆕 新增抖音图文
  • 🆕 统一同步对话框和悬浮按钮
  • 🔧 修复 CLI 同步格式异常
  • 🔧 改善 CLI/MCP 桥接重连稳定性

v2.0.7 (2026-03-10)

  • 🆕 新增什么值得买、网易号平台
  • 🆕 简书支持 Markdown 格式发布
  • 🔧 重新适配简书、一点号、搜狐号

v2.0.6 (2026-02-25)

  • 🆕 新增东方财富
  • 🆕 新增悬浮同步按钮

v2.0.5 (2025-02-05)

  • 🔧 代码块提取兼容性提升
  • 🆕 新增 Markdown 压缩包下载

完整日志见 更新日志页面

贡献代码

欢迎参与项目开发!

使用场景

  • 自媒体运营者: 公众号文章一键同步到知乎、头条、百家号等多平台,提升内容分发效率
  • 技术博主: 技术博客同步到掘金、CSDN、SegmentFault、开源中国等技术社区
  • 内容创作者: 告别重复复制粘贴,一次编写多处发布,多平台发文不再繁琐
  • AI 写作用户: 配合 Claude / GPT 等 AI 写作工具,AIGC 内容一键发布到多平台
  • 独立博主: WordPress、Typecho 博客文章同步到各大自媒体平台引流

常见问题

Q: 这是什么工具?

文章同步助手是一款开源免费的 Chrome 浏览器扩展,帮助自媒体作者、博主、内容创作者将文章一键同步到多个平台,避免重复复制粘贴,是自媒体运营必备的多平台发文工具。

Q: 支持同步微信公众号文章吗?

支持。可以直接从微信公众号编辑器提取文章,一键同步到知乎、头条、掘金等 29+ 平台。支持公众号文章同步到头条号、公众号同步到知乎、微信文章同步到掘金等各种场景。

Q: 支持 AI 写作工具吗?

支持 Anthropic MCP 协议,可配合 Claude Desktop、Claude Code 等 AI 工具使用,实现 AI 写作、AIGC 内容一键发布。也可以配合 ChatGPT、GPT-4 等工具生成的文章使用。

Q: 数据安全吗?会上传我的账号信息吗?

不会。所有操作在本地浏览器内完成,你的 Cookie、文章内容、账号信息不经过任何第三方服务器。代码完全开源,可自行审计:查看源码

Q: 和微小宝、新媒体管家、简媒、蚁小二有什么区别?

文章同步助手是开源免费的,代码完全公开透明,无需付费订阅。作为浏览器扩展运行,数据本地存储,账号信息不上传,支持 MCP 协议可与 AI 工具集成。

Q: 如何同步文章到多个平台?

  1. 安装 Chrome 浏览器扩展
  2. 登录各平台账号(知乎、掘金、头条等)
  3. 打开要同步的文章页面
  4. 点击扩展图标,选择目标平台,一键同步

Author

fun · 独立开发者 · GitHub · 主页

License

GPL-3.0

十账号安全调度与网络组

10 个左右的合规账号推荐使用“一个账号一个隔离 Chrome 用户资料 + 多客户端 Bridge + 稳定逻辑网络组”。网络组只是运维分组,不是轮换代理、指纹伪装或风控绕过手段;系统不会保存 IP、SOCKS/HTTP 代理地址或代理凭据。

Campaign 配置可在 safety 中设置 defaultNetworkGroupplatformIntervalMinutesnetworkGroupIntervalMinutesfreezeOnInterventionaccounts。未配置时使用 default-network。首次安全正式发布会固定账号身份和网络组;后续网络组不一致会在发布前阻止。同平台、同网络组任务按照计划时间串行,正式写入的 maxAttempts 始终为 1。

CAPTCHA、安全验证或审核拒绝只会冻结受影响的 clientId::platformId,不会级联冻结其他账号。人工处理平台验证后运行:

wechatsync safety status --state-dir .wechatsync
wechatsync safety unfreeze 'clientId::platformId' --state-dir .wechatsync

解冻不会自动重发;下一次正式发布仍应先运行 Dry-run。

About

Modified Wechatsync publishing toolkit

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

文章同步助手 (Wechatsync)

开源免费的跨平台文章同步工具 | Chrome 浏览器扩展 | 自媒体内容分发神器

一键同步微信公众号文章到知乎、头条、掘金、小红书、CSDN 等 29+ 平台,支持 WordPress 等自建博客,告别重复复制粘贴。

🔥 支持 Anthropic MCP 协议,可在 Claude Desktop / Claude Code 中通过 AI 一键发布文章

工作原理

文章同步助手不是爬虫,不模拟登录,不经过任何第三方服务器。

它是一个 Chrome 浏览器扩展,工作方式与浏览器本身一致:

  1. 使用你自己的登录态:你在浏览器里正常登录各平台账号,扩展直接使用浏览器中已有的 Cookie,无需额外授权,无需输入密码
  2. 调用平台官方接口:发布文章时,扩展调用的是各平台 Web 编辑器使用的同一套官方 API,与你手动在网页上发布完全等价
  3. 数据不离开你的设备:所有请求直接从你的浏览器发往各平台,没有中间服务器,没有数据上传,源代码完全开源可审计
  4. 草稿优先:默认将文章同步为草稿,发布前由你人工确认,不会自动发布
你的浏览器(已登录各平台)
↓ 扩展读取 Cookie
↓ 调用平台官方 Web API
各平台(知乎 / 掘金 / 头条 / ...)

功能特性

  • 一键批量发布: 微信公众号文章同步到知乎、掘金、头条、CSDN、简书、微博、小红书、抖音等 29+ 自媒体平台
  • 网页转 Markdown: 任意网页智能提取正文,自动过滤广告噪音,图片本地化,打包为 Markdown + 图片 ZIP 压缩包
  • 自建站支持: WordPress、Typecho、博客园 (MetaWeblog API)
  • 智能提取: 自动从网页提取文章标题、内容、封面图(基于 Safari 阅读模式)
  • 图片自动上传: 自动转存文章图片到目标平台,无需手动处理
  • 草稿模式: 同步后保存为草稿,方便二次编辑后发布
  • 同平台多账号: 在扩展内保存多套登录 Cookie,同一篇文章可同步到不同平台的多个账号
  • AI 集成: 支持 Anthropic MCP / Claude Code Skill / OpenClaw,多种方式接入 AI 工作流

同平台多账号

  1. 在目标平台网页登录第一个账号
  2. 打开扩展「设置 → 多账号登录态」,填写账号名称并保存当前登录态
  3. 在平台网页切换到其他账号,重复上述操作
  4. 同步文章时,可以像选择普通平台一样同时勾选多个账号

多账号 Cookie 仅保存在 chrome.storage.local。同步时扩展会备份当前会话,串行切换到目标账号,完成后在 finally 阶段恢复原会话。扩展不保存平台密码。由于切换期间同域网页也能观察到临时会话,建议同步时不要在目标平台网页同时进行编辑操作。

多 Chrome 用户资料 + 多客户端 Bridge(推荐用于 5 个以上账号)

这种方式不切换 Cookie:每个 Chrome 用户资料拥有独立的浏览器登录态,并各自运行一个扩展客户端;所有客户端同时连接同一个本地 Bridge。

  1. 在 Chrome 中创建多个本地用户资料(不要求登录多个 Google/Chrome 账号)
  2. 在每个用户资料中加载同一份扩展,并分别登录目标平台账号
  3. 打开扩展「设置 → 同步桥接」,为每个用户资料设置唯一名称,例如“知乎-账号A”
  4. 每个用户资料都启用同步桥接,并连接 ws://localhost:9527
  5. 在终端运行 wechatsync bridge 并保持运行,让所有用户资料稳定连接
  6. 另开终端运行 wechatsync clients 查看已连接用户资料
  7. 运行 wechatsync platforms --auth 获取 clientId::platformId 形式的账号 ID
# 精确发送到两个不同 Chrome 用户资料中的知乎账号
wechatsync sync article.md -p '<client-a>::zhihu,<client-b>::zhihu'# 自动发送到所有已登录的知乎账号(仍然只保存为草稿)
wechatsync sync article.md -p zhihu --all-accounts
# 正式公开发布建议始终启用安全模式(会要求输入 PUBLISH 二次确认)
wechatsync sync article.md -p '<client-a>::zhihu' --publish --safe

Bridge 会使用每个扩展注册的独立本地 Token 路由请求,因此多用户资料不需要共享同一个 Token,也不会通过 Bridge 复制平台 Cookie。只有一个用户资料连接时,原来的 zhihujuejin 等普通平台 ID 仍可直接使用。

--publish 只允许用于明确声明 direct_publish 能力的平台。当前代码已接通知乎、掘金、CSDN、开源中国、WordPress、Typecho 和 MetaWeblog;其他平台仍只保存草稿。四个公开平台适配器都会先完整保存草稿,再最多调用一次最终发布流程;发布后只读校验标题和作者,未立即公开时返回 submitted 并转入只读复查。CMS 则把正式发布标志传给对应接口。CSDN 和开源中国已通过自动化回归,但仍需在实际登录账号上完成草稿和单账号正式发布验收。

掘金正式发布建议为 Markdown 提供分类 ID 和标签 ID,避免平台因分类或标签缺失拒绝最终提交:

---
title: 文章标题summary: 不超过 100 字的摘要category: "6809637771511070734"tags: ["7467857238494020000"]
---

也可使用 --category <id> --tags <id1,id2> 覆盖 front matter。分类和标签参数为平台 ID,不是显示名称。

CSDN 正式发布至少需要一个标签;开源中国可选传入分类 ID。可在 Campaign 配置的 platforms.csdnplatforms.oschina 中分别设置。

安全正式发布

完整规则、限制和风险边界见 docs/safe-publish-mode.md

正式发布状态、审核状态和公开页面验证规则见 docs/publish-status-verification.md

正式发布具有账号和内容风险,推荐在 --publish 后同时使用 --safe。安全模式默认执行以下保护:

  • 发布前和每个账号实际执行前再次检查登录身份,并将首次确认的目标 ID 与平台账号用户名锁定
  • 同账号相同文章默认禁止重复发布;同一平台的多个账号默认禁止发布相同文章;不同平台之间允许正常分发
  • 每账号滚动 24 小时最多正式发布 2 篇,同账号两次发布至少间隔 30 分钟
  • 多账号严格串行执行,账号之间默认等待 30 分钟
  • 任一账号失败后默认立即熔断;可用 --continue-on-error 让后续目标继续执行,失败目标始终不自动重试
  • 平台最终发布失败时尽量保留并显示已经创建的草稿链接

首次操作先运行单账号安全预检。--dry-run 会连接 Bridge、确认账号身份并检查安全策略,但不会上传图片、创建草稿或正式发布:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu' \
--publish \
--safe \
--dry-run

同一篇文章选择多个账号时,默认预检不通过:

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--dry-run

只有在人工确认确实需要跨账号发布相同内容后,才显式解除该项保护。下面的命令会正式公开发布,非交互环境还必须传入 --yes

node packages/cli/dist/index.js sync article.md \
-p '<client-a>::zhihu,<client-b>::zhihu' \
--publish \
--safe \
--allow-cross-account-duplicate \
--account-delay 30 \
--yes

可调参数:

--daily-limit <count> 每账号滚动 24 小时发布上限,默认 2
--min-interval <minutes> 同账号最小发布间隔,默认 30 分钟
--account-delay <minutes> 多账号顺序发布间隔,默认 30 分钟
--continue-on-error 关闭级联熔断,单个目标失败后继续后续目标;不重试失败目标
--allow-republish 显式允许同账号重复发布相同文章
--state-dir <path> 安全状态目录,默认 .wechatsync

身份锁定和发布历史保存在 .wechatsync/publish-state.json,文件权限为 0600,不会保存 Cookie、Token 或平台密码。删除该文件会同时清除身份锁定和本地防重复历史,因此不建议把它作为日常“解锁”方式。安全模式只能降低误发、串号和过快发布的风险,不能保证平台不会限流或限制账号。

持久化发布队列

长时间定时或多账号任务建议使用 SQLite 持久化队列,而不是让一次 sync 命令在终端内等待。完整说明见 docs/publish-queue-worker.md。队列功能需要 Node.js 22.5 或更高版本。

# 安全的首次测试:只做预检,不实际发布
wechatsync enqueue article.md \
-p '<client-a>::zhihu' \
--publish --safe --dry-run --yes
# 执行下一个到期任务
wechatsync worker --once
# 创建正式定时任务
wechatsync schedule article.md \
-p '<client-a>::zhihu' \
--at '2026-08-04 10:00' \
--publish --safe --yes
# 队列管理
wechatsync queue list
wechatsync queue show <job-id>
wechatsync queue pause <job-id>
wechatsync queue resume <job-id>
wechatsync queue cancel <job-id>

任务按目标拆分,默认零自动重试发布;源文件在入队后变化或 Worker 异常中断导致执行结果未知时,任务会进入 blocked,避免未经确认地重复发布。已提交/审核中的文章会进入持久化只读复查,复查可重试查询,但绝不重试发布。

一篇文章发布到所有平台和账号(Campaign)

Campaign 会发现所有已连接 Chrome 用户资料中的已登录账号,按平台用户 ID 去重,固定目标清单,并为每个目标创建持久化任务:

# 所有已登录平台和账号保存草稿
wechatsync campaign create article.md
# 只选择知乎和掘金,但包含这两个平台的所有已登录账号
wechatsync campaign create article.md -p zhihu,juejin
# 正式发布。默认只要存在不支持正式发布的平台就中止预检
wechatsync campaign create article.md --publish --safe --yes --config campaign.config.json
# 支持正式发布的平台公开发布,其余平台只保存草稿
wechatsync campaign create article.md --publish --safe --yes --unsupported draft
# 使用平台级分类、标签、摘要和封面配置
wechatsync campaign create article.md --config docs/campaign.config.example.json
wechatsync campaign list
wechatsync campaign show <campaign-id>
wechatsync campaign cancel <campaign-id>

“一次发布”表示一次创建全部目标任务,底层仍由安全队列受控串行执行,不会在同一秒向所有账号并发请求。正式发布能力当前以适配器的 direct_publish 声明为准;保存草稿不能算作公开发布成功。

完整设计和测试说明:

验证码、登录失效、身份不匹配、限流和审核拒绝会生成“待人工处理”记录。该记录明确携带 retryPublish: false,Worker 会阻止任务而不是自动重发。

安装方式

Chrome 浏览器扩展安装

推荐: Chrome 网上应用店 (自动更新)

手动安装: 下载 最新 Release 解压后加载到 Chrome 扩展

支持 Chrome / Edge / 360 / QQ 等 Chromium 内核浏览器

支持 29+ 主流平台

平台ID类型状态
微信公众号weixin主流自媒体
知乎zhihu主流自媒体
微博weibo主流自媒体
小红书xiaohongshu主流自媒体
掘金juejin技术社区
CSDNcsdn技术社区
简书jianshu通用
头条号toutiao通用✅ 草稿模式
抖音图文douyin主流自媒体✅ 🆕
B站专栏bilibili通用
百家号baijiahao通用
语雀yuque技术社区
豆瓣douban通用
搜狐号sohu通用
雪球xueqiu财经
人人都是产品经理woshipm产品
大鱼号dayu通用
一点号yidian通用
51CTO51cto技术社区
慕课网imooc技术社区
开源中国oschina技术社区
SegmentFaultsegmentfault技术社区
博客园cnblogs技术社区
搜狐焦点sohufocus房产
X (Twitter)x海外
东方财富eastmoney财经
什么值得买smzdm通用
网易号netease通用
WordPresswordpress建站/CMS
Typechotypecho建站/CMS
Hexozip-download建站/CMS✅ 通过 Markdown 下载
Hugozip-download建站/CMS✅ 通过 Markdown 下载

CLI 命令行工具

最简单的使用方式,无需配置 MCP,安装即用:

npm install -g @wechatsync/cli

需要先安装 Chrome 扩展并在扩展设置中启用「同步桥接」。新版扩展会把各用户资料自己的本地 Token 注册给 Bridge;WECHATSYNC_TOKEN 仅作为旧版扩展兼容回退项:

# 仅连接旧版扩展时需要:export WECHATSYNC_TOKEN="你的token"# 同步文章到多个平台
wechatsync sync article.md -p zhihu,juejin,csdn
# 查看平台登录状态
wechatsync platforms --auth
# 查看当前连接的 Chrome 用户资料
wechatsync clients
# 多用户资料时建议在单独终端持续运行 Bridge
wechatsync bridge
# 从浏览器当前页面提取文章
wechatsync extract -o article.md

Claude Code Skill 集成

安装后可在 Claude Code 中直接用自然语言操作:

/plugin marketplace add wechatsync
/plugin install wechatsync

然后直接说"把这篇文章同步到掘金和知乎"即可。

OpenClaw 集成

通过 ClawHub 技能市场一键安装:

clawhub install lljxx1/wechatsync

详细文档见 packages/cli/README.md

Claude Code / Claude Desktop 集成 (Anthropic MCP)

通过 Anthropic MCP 协议,可以在 Claude Code 或 Claude Desktop 中使用 AI 同步公众号文章到多个平台。

配置步骤

  1. 构建项目: pnpm build
  2. 在 Chrome 扩展设置中启用「MCP 连接」,并设置 Token
  3. ~/.claude/claude_desktop_config.json 中添加配置:
{
"mcpServers": {
"sync-assistant": {
"command": "node",
"args": ["/path/to/Wechatsync/packages/mcp-server/dist/index.js"],
"env": {
"MCP_TOKEN": "your-secret-token-here"
}
}
}
}

重要: MCP_TOKEN 必须与 Chrome 扩展中设置的 Token 一致。

使用示例

"帮我把这篇文章同步到知乎和掘金"
"检查下哪些平台已登录"

可用工具

工具说明
list_platforms列出所有平台及登录状态
check_auth检查指定平台登录状态
sync_article同步文章到指定平台(草稿)
extract_article从当前浏览器页面提取文章
upload_image_file上传本地图片到平台

详细文档见 packages/mcp-server/README.md

网页发起同步

如果你是文章编辑器开发者,或有内容库需要同步多个渠道,可以使用 JS SDK:

// 拉起同步任务框window.syncPost(article)

开发

项目结构

Wechatsync/
├── packages/
│ ├── extension/ # Chrome 扩展 (MV3)
│ ├── mcp-server/ # MCP Server (stdio/SSE)
│ ├── cli/ # 命令行工具
│ └── core/ # 核心逻辑 (共享)

本地开发

# 安装依赖
pnpm install
# 开发模式
pnpm dev
# 构建
pnpm build

然后在 Chrome 中加载 packages/extension/dist 目录。

更新日志

v2.0.9 (2026-03-24)

  • 🆕 文章识别和提取更准确,支持更多网页
  • 🆕 CLI/MCP 同步 HTML 文件时自动保留排版样式
  • 🆕 同步对话框增加使用提示
  • 🔧 修复部分网页悬浮按钮显示异常

v2.0.8 (2026-03-17)

  • 🆕 新增抖音图文
  • 🆕 统一同步对话框和悬浮按钮
  • 🔧 修复 CLI 同步格式异常
  • 🔧 改善 CLI/MCP 桥接重连稳定性

v2.0.7 (2026-03-10)

  • 🆕 新增什么值得买、网易号平台
  • 🆕 简书支持 Markdown 格式发布
  • 🔧 重新适配简书、一点号、搜狐号

v2.0.6 (2026-02-25)

  • 🆕 新增东方财富
  • 🆕 新增悬浮同步按钮

v2.0.5 (2025-02-05)

  • 🔧 代码块提取兼容性提升
  • 🆕 新增 Markdown 压缩包下载

完整日志见 更新日志页面

贡献代码

欢迎参与项目开发!

使用场景

  • 自媒体运营者: 公众号文章一键同步到知乎、头条、百家号等多平台,提升内容分发效率
  • 技术博主: 技术博客同步到掘金、CSDN、SegmentFault、开源中国等技术社区
  • 内容创作者: 告别重复复制粘贴,一次编写多处发布,多平台发文不再繁琐
  • AI 写作用户: 配合 Claude / GPT 等 AI 写作工具,AIGC 内容一键发布到多平台
  • 独立博主: WordPress、Typecho 博客文章同步到各大自媒体平台引流

常见问题

Q: 这是什么工具?

文章同步助手是一款开源免费的 Chrome 浏览器扩展,帮助自媒体作者、博主、内容创作者将文章一键同步到多个平台,避免重复复制粘贴,是自媒体运营必备的多平台发文工具。

Q: 支持同步微信公众号文章吗?

支持。可以直接从微信公众号编辑器提取文章,一键同步到知乎、头条、掘金等 29+ 平台。支持公众号文章同步到头条号、公众号同步到知乎、微信文章同步到掘金等各种场景。

Q: 支持 AI 写作工具吗?

支持 Anthropic MCP 协议,可配合 Claude Desktop、Claude Code 等 AI 工具使用,实现 AI 写作、AIGC 内容一键发布。也可以配合 ChatGPT、GPT-4 等工具生成的文章使用。

Q: 数据安全吗?会上传我的账号信息吗?

不会。所有操作在本地浏览器内完成,你的 Cookie、文章内容、账号信息不经过任何第三方服务器。代码完全开源,可自行审计:查看源码

Q: 和微小宝、新媒体管家、简媒、蚁小二有什么区别?

文章同步助手是开源免费的,代码完全公开透明,无需付费订阅。作为浏览器扩展运行,数据本地存储,账号信息不上传,支持 MCP 协议可与 AI 工具集成。

Q: 如何同步文章到多个平台?

  1. 安装 Chrome 浏览器扩展
  2. 登录各平台账号(知乎、掘金、头条等)
  3. 打开要同步的文章页面
  4. 点击扩展图标,选择目标平台,一键同步

Author

fun · 独立开发者 · GitHub · 主页

License

GPL-3.0

十账号安全调度与网络组

10 个左右的合规账号推荐使用“一个账号一个隔离 Chrome 用户资料 + 多客户端 Bridge + 稳定逻辑网络组”。网络组只是运维分组,不是轮换代理、指纹伪装或风控绕过手段;系统不会保存 IP、SOCKS/HTTP 代理地址或代理凭据。

Campaign 配置可在 safety 中设置 defaultNetworkGroupplatformIntervalMinutesnetworkGroupIntervalMinutesfreezeOnInterventionaccounts。未配置时使用 default-network。首次安全正式发布会固定账号身份和网络组;后续网络组不一致会在发布前阻止。同平台、同网络组任务按照计划时间串行,正式写入的 maxAttempts 始终为 1。

CAPTCHA、安全验证或审核拒绝只会冻结受影响的 clientId::platformId,不会级联冻结其他账号。人工处理平台验证后运行:

wechatsync safety status --state-dir .wechatsync
wechatsync safety unfreeze 'clientId::platformId' --state-dir .wechatsync

解冻不会自动重发;下一次正式发布仍应先运行 Dry-run。

About

Modified Wechatsync publishing toolkit

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages