article-optimizer
Use when the user wants to improve a specific article under a fixed viral-scoring rubric, iterate on one article to raise its score, or run single-article…
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,
$ npx -y skills add xiaomoBoy/claude-writing-skills --skill publisher-wechatsync --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/publisher-wechatsyncContext preview
The summary Claude sees to decide when to auto-load this skill.
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,
name: publisher-wechatsync description: 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.
这个 skill 只负责一件事:把已经写完的博客母稿通过 `@wechatsync/cli` 发到多个平台的草稿箱。
边界很明确:
一句话原则:这一层只做"把现有 md 送到各家草稿箱"这一段,改写是另一个 skill 的事。
适用场景:
不适用场景:
以上任意一种都不在这个 skill 的边界内。停住,告诉用户"发布 skill 不做改写,这是另一段流程"。
每次执行前至少要拿到:
1. **源文件路径**:一个已写完的 `.md` 文件路径(例如 `path/to/your-article.md`) 2. **目标平台列表**:逗号分隔的平台名(例如 `zhihu,juejin,csdn`)
可选补充:
开始前必须先确认这 3 件事:
1. **CLI 已安装**
2. **Chrome 扩展已连通**
3. **目标平台已登录**
如果上面任何一条没满足,停住报错,不要试图绕过。
这个 skill 的标准输出:
1. 预检报告(CLI 版本、Token 是否配置、目标平台登录状态) 2. dry-run 预览(将要发到哪几个平台、文件路径、标题) 3. 用户确认后的真正同步结果(每个平台是否成功、草稿链接或 id) 4. 一句总结,告诉用户下一步要去哪些平台后台审核
不生成任何中间文件。不修改源文件。不写入仓库任何位置。
先做这几件事:
1. 读 `CLAUDE.md` / `AGENTS.md`,确认当前仓库流程允许发布 2. 确认用户要发的文件确实存在 3. 运行 `which wechatsync`,确认 CLI 可用 4. 运行 `echo $WECHATSYNC_TOKEN | wc -c`,确认 Token 非空
任意一条失败就停住,别继续。
Obsidian 写出的 markdown 默认会把图片路径 URL 编码(空格变 `%20`,中文字符也被编码),wechatsync CLI **不会自动 decode**,直接发会导致图片全部跳过。
每次发布前**必须**先跑预处理:
python3 scripts/normalize_image_paths.py "<md 文件路径>" --dry-run
看预览:
脚本做的事:
预处理对 Obsidian 完全兼容 —— Obsidian 既接受编码路径也接受未编码路径,改完继续在 Obsidian 里看没问题。
如果用户没指定平台,默认只发 `zhihu,juejin` 两个技术平台:
推荐分组:
跑一次 `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"
同步完成后,按每个平台列一行结果:
错误最常见的几类:
给用户一句收尾话:
# 安装 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
| 报错 | 原因 | 解法 | |---|---|---| | `已有实例正在运行但 Chrome Extension 未连接` | 扩展没开同步桥接 | 打开扩展 → 启用 MCP Connection → 确认 Token | | `连接超时` | 扩展挂了 / Token 不一致 | 重启扩展,重新导出 Token,重新 `export` | | `未登录 zhihu` | 当前 Chrome 没登录 | 去 zhihu.com 登录后,再跑 `wechatsync auth zhihu -r` 刷新 | | `图片上传失败` | 正文外链图片拉不到 | 图片先本地化到 `assets/`,再重跑 |
一句话定位:**这是创作链路的终点,不是终稿的润色层**。
A toolkit of Claude Code skills for long-form content creators — research, score, rewrite, and publish, end to end. 中文版: README.zh-CN.md 5 skills extracted from a real working writing setup. They are opinionated, narrow in scope, and meant to compose.
Use when the user wants to improve a specific article under a fixed viral-scoring rubric, iterate on one article to raise its score, or run single-article…
Use when the user wants to collect research material for an article or topic by gathering YouTube videos and web articles into a NotebookLM notebook, then…
Use when the user wants to iterate on a viral-article scoring system itself, calibrate or improve a scoring prompt against labeled samples, or run batch…
Use when the user wants to download or inspect online audio/video directly with the installed `yt-dlp` CLI. Best for single videos, playlists, audio…