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…
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,
Claude Code
$ npx -y skills add xiaomoBoy/claude-writing-skills --skill publisher-wechatsync --agent claude-code
Codex
$ npx skills add xiaomoBoy/claude-writing-skills --skill publisher-wechatsync -a codex -y
Cursor
$ npx skills add xiaomoBoy/claude-writing-skills --skill publisher-wechatsync -a cursor -y
Gemini CLI
$ npx skills add xiaomoBoy/claude-writing-skills --skill publisher-wechatsync -a gemini-cli -y
GitHub Copilot
$ npx skills add xiaomoBoy/claude-writing-skills --skill publisher-wechatsync -a github-copilot -y
OpenCode
$ npx skills add xiaomoBoy/claude-writing-skills --skill publisher-wechatsync -a opencode -y
Windsurf
$ npx skills add xiaomoBoy/claude-writing-skills --skill publisher-wechatsync -a windsurf -y
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…
Use when the user wants to collect research material for an article or topic by gathering YouTube videos and web articles into a…
Use when the user wants to iterate on a viral-article scoring system itself, calibrate or improve a scoring prompt against…
Use when the user wants to download or inspect online audio/video directly with the installed `yt-dlp` CLI. Best for single…
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…
AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…
Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…
Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to…