Use when the user has a finished blog master draft and wants to publish it to multiple content platforms (知乎/掘金/CSDN/公众号 等) via the @wechatsync/cli tool. Handles pre-flight auth checks, platform selection, dry-run preview, and the actual sync. Do NOT use for writing, rewriting, compliance rewriting, or topic selection — this skill only publishes existing drafts as-is.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-writing-skills:publisher-wechatsyncThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
这个 skill 只负责一件事:把已经写完的博客母稿通过 `@wechatsync/cli` 发到多个平台的草稿箱。
这个 skill 只负责一件事:把已经写完的博客母稿通过 @wechatsync/cli 发到多个平台的草稿箱。
边界很明确:
一句话原则:这一层只做"把现有 md 送到各家草稿箱"这一段,改写是另一个 skill 的事。
适用场景:
不适用场景:
以上任意一种都不在这个 skill 的边界内。停住,告诉用户"发布 skill 不做改写,这是另一段流程"。
每次执行前至少要拿到:
.md 文件路径(例如 path/to/your-article.md)zhihu,juejin,csdn)可选补充:
--title:显式覆盖标题(默认从 frontmatter 或首个 # 提取)--cover:封面图 URL 或本地路径(知乎/公众号/小红书需要)开始前必须先确认这 3 件事:
which wechatsync 能拿到路径wechatsync --version 不报错npm install -g @wechatsync/cli 再回来export WECHATSYNC_TOKEN="xxx"SYNC_WS_PORT 覆盖wechatsync platforms -a 查各平台登录状态如果上面任何一条没满足,停住报错,不要试图绕过。
这个 skill 的标准输出:
不生成任何中间文件。不修改源文件。不写入仓库任何位置。
先做这几件事:
CLAUDE.md / AGENTS.md,确认当前仓库流程允许发布which wechatsync,确认 CLI 可用echo $WECHATSYNC_TOKEN | wc -c,确认 Token 非空任意一条失败就停住,别继续。
Obsidian 写出的 markdown 默认会把图片路径 URL 编码(空格变 %20,中文字符也被编码),wechatsync CLI 不会自动 decode,直接发会导致图片全部跳过。
每次发布前必须先跑预处理:
python3 scripts/normalize_image_paths.py "<md 文件路径>" --dry-run
看预览:
找不到: 0,跑一次去掉 --dry-run 的版本,原地修正找不到 大于 0,停住,先排查图片文件到底在哪。不要带着 broken 图去发已修复: 0,说明这篇不需要预处理,直接进下一步脚本做的事:
预处理对 Obsidian 完全兼容 —— Obsidian 既接受编码路径也接受未编码路径,改完继续在 Obsidian 里看没问题。
如果用户没指定平台,默认只发 zhihu,juejin 两个技术平台:
推荐分组:
tech-min: zhihu,juejin — 默认,合规成本最低tech-full: zhihu,juejin,csdn,segmentfault,oschina — 技术平台全家桶with-wechat: 在上面基础上加 wechat,但要同时传 --cover 和确认标题social: xiaohongshu,weibo,toutiao — 社交向,注意平台对风格差异敏感跑一次 wechatsync platforms -a 把当前登录状态调出来,不要直接假设。
必须先 dry-run,不允许直接实跑。
wechatsync sync "path/to/your-article.md" -p zhihu,juejin --dry-run
把 dry-run 输出完整贴给用户,让用户确认:
只要用户说"不对",停住,别修正后直接跑。先问清楚问题在哪。
用户明确说"可以"或"发"之后,去掉 --dry-run 再跑一次同样的命令:
wechatsync sync "path/to/your-article.md" -p zhihu,juejin
如果要传封面或自定义标题:
wechatsync sync "path/to/your-article.md" \
-p zhihu,juejin,wechat \
-t "可能改过的标题" \
--cover "path/to/cover.png"
同步完成后,按每个平台列一行结果:
错误最常见的几类:
未登录:让用户去那个平台网页版登录后重试超时:Chrome 扩展掉线,重启扩展或重开浏览器图片上传失败:正文里有外链图片,某些平台拉不到内容超长/过短:平台有字数限制给用户一句收尾话:
wechatsync platforms -a 就假设平台已登录# 安装
npm install -g @wechatsync/cli
# 版本检查
wechatsync --version
# 平台列表(带登录状态)
wechatsync platforms -a
# 查某个平台登录状态
wechatsync auth zhihu
# 预览(dry-run,不实跑)
wechatsync sync article.md -p zhihu,juejin --dry-run
# 实跑
wechatsync sync article.md -p zhihu,juejin
# 带标题和封面
wechatsync sync article.md -p zhihu,juejin,wechat -t "自定义标题" --cover ./cover.png
# 从当前浏览器页面反向抽取(不常用)
wechatsync extract -o out.md
WECHATSYNC_TOKEN:和 Chrome 扩展里的 Token 保持一致,必填SYNC_WS_PORT:WebSocket 端口,默认 9527,只有端口冲突时才改| 报错 | 原因 | 解法 |
|---|---|---|
已有实例正在运行但 Chrome Extension 未连接 | 扩展没开同步桥接 | 打开扩展 → 启用 MCP Connection → 确认 Token |
连接超时 | 扩展挂了 / Token 不一致 | 重启扩展,重新导出 Token,重新 export |
未登录 zhihu | 当前 Chrome 没登录 | 去 zhihu.com 登录后,再跑 wechatsync auth zhihu -r 刷新 |
图片上传失败 | 正文外链图片拉不到 | 图片先本地化到 assets/,再重跑 |
.md 母稿(写作工具不限)一句话定位:这是创作链路的终点,不是终稿的润色层。
npx claudepluginhub xiaomoboy/claude-writing-skills --plugin claude-writing-skillsCreates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.