{"skill":{"slug":"wechat-publish-pro","displayName":"wechat-publish-pro","summary":"Pure Python tool to convert Markdown to styled HTML and publish articles to WeChat official account drafts with AI-based content refinement and theme support.","description":"# wechat-publish-pro Skill\n\n微信公众号文章发布工具，完全独立实现，不依赖任何外部 CLI 工具。\n\n## 功能特性\n\n- **纯 Python 实现**: 不依赖 wenyan-cli 或其他外部工具\n- **Markdown 转换**: 内置 Markdown → HTML 转换，参考 wenyan-cli 排版风格\n- **多主题支持**: 多种精美主题（green、blue、purple、orange、default、simple）\n- **代码高亮**: Mac 风格代码块，语法高亮\n- **封面生成**: 自动处理封面图，支持本地/网络图片\n- **直接发布**: 一键发布到微信公众号草稿箱\n\n## 触发条件\n\n当用户需要以下操作时自动触发：\n- 将 Markdown 或 HTML 文章发布到微信公众号草稿箱\n- 转换 Markdown 为公众号格式 HTML\n- 使用特定主题发布公众号文章\n- 测试微信连接\n\n## 安装\n\n```bash\n# 从 GitHub 安装\npip install git+https://github.com/yuesf/wechat-publish-pro.git\n```\n\n## 配置\n\n### 第一步：获取微信公众号凭证\n\n1. 登录 [https://developers.weixin.qq.com/](https://developers.weixin.qq.com/) 公众号平台\n2. 获取 **AppID** 和 **AppSecret**\n\n### 第二步：配置凭证\n\n#### 环境变量\n\n```bash\nexport WECHAT_APP_ID=your_wechat_app_id\nexport WECHAT_APP_SECRET=your_wechat_app_secret\n```\n\n#### 配置文件\n\n```bash\n# 初始化配置\nwechat-publish-pro config init\n\n# 设置配置\nwechat-publish-pro config set wechat.app_id <AppID>\nwechat-publish-pro config set wechat.app_secret <AppSecret>\n```\n\n### 第三步：设置 IP 白名单\n\n把运行机器的 IP 添加到微信公众号后台白名单：\n1. 登录 https://mp.weixin.qq.com/\n2. 设置与开发 → 基本配置 → IP白名单\n\n## 使用方式\n\n### 通过 OpenClaw 直接发送\n\n在 OpenClaw 对话中直接说：\n- \"把这篇文章发到公众号\"\n- \"用蓝色主题发布\"\n- \"帮我发布到微信，测试一下\"\n\n### 命令行方式\n\n#### Markdown 转换\n\n```bash\n# 基本转换（默认绿色主题）\nwechat-publish-pro convert article.md\n\n# 指定蓝色主题\nwechat-publish-pro convert article.md --theme blue\n\n# 指定输出文件\nwechat-publish-pro convert article.md -o output.html\n```\n\n#### 发布到微信\n\n```bash\n# 发布 HTML 文件到草稿箱（需要指定账号，否则会卡在交互提示）\nwechat-publish-pro publish article.html --account <账号标识>\n\n# 指定标题和封面\nwechat-publish-pro publish article.html --title \"文章标题\" --cover cover.jpg --account <账号标识>\n```\n\n**常见问题：**\n- **发布命令卡住不动**：确保使用 `--account` 参数指定账号，避免交互式选择\n- **封面上传失败**：确认封面图片路径存在，不存在时省略 `--cover` 参数\n\n#### 一站式：Markdown → 转换 → 发布\n\n```bash\n# 转换后直接发布\nwechat-publish-pro convert article.md --theme blue -o /tmp/article.html\nwechat-publish-pro publish /tmp/article.html --title \"文章标题\"\n```\n\n#### 测试连接\n\n```bash\nwechat-publish-pro test\n```\n\n#### 上传图片\n\n```bash\nwechat-publish-pro upload-image image.jpg\n```\n\n## Markdown 格式\n\n文件顶部可以包含 frontmatter（建议只用 cover，不用 title，避免重复）：\n\n```markdown\n<!--\ntitle: 文章标题\n---\ncover: ./assets/cover.jpg\n---\n\n你的内容...\n```\n\n**重要注意事项**：\n\n- **不要在正文使用 `#` 大标题**——标题由命令行 `-t` 参数提供，正文里的 `#` 标题会导致标题重复输出\n- **不要使用 `---` 作为章节分隔线**——wenyan-cli 会将其误解析为列表项 `• --`，用空行替代 `---`\n- **frontmatter 的 `title` 会被输出到正文**——如果同时在正文写了 `#` 标题，会导致两个标题重复；建议 frontmatter 的 title 用 `<!-- -->` 包裹，或完全不用 frontmatter 的 title，改由命令行 `-t` 提供标题\n\n**推荐格式**：\n\n```markdown\n<!--\ntitle: 文章标题（可选，用命令行 -t 更稳定）\ncover: ./assets/cover.jpg\n---\n\n第一段内容（直接开始，不要用 `#` 标题）\n\n## 章节标题（使用 ## ，不是 #）\n\n内容...\n\n（章节之间用空行分隔，不要用 ---）\n```\n\n## 可用主题\n\n| 主题 | 风格 |\n|------|------|\n| green | 清新自然（绿色，默认） |\n| blue | 清新专业（蓝色） |\n| purple | 优雅神秘（紫色） |\n| orange | 温暖活力（橙色） |\n| default | 简洁清爽 |\n| simple | 极简风格 |\n\n## 故障排查\n\n### 错误：45166 (IP地址不在白名单中)\n- 原因：运行机器的 IP 未添加到微信白名单\n- 解决：登录公众号后台添加 IP 到白名单\n\n### 发布成功但看不到文章？\n- 原因：文章在草稿箱，需要审核发布\n- 解决：草稿箱 → 选中文章 → 发布\n\n## 架构说明\n\n```\nwechat-publish-pro/\n├── src/wechat_publish_pro/\n│   ├── cli.py         # CLI 入口\n│   ├── config.py      # 配置管理\n│   ├── converter/     # Markdown 转换模块\n│   │   ├── wechat_style.py   # 微信公众号样式转换器\n│   │   ├── themes.py          # 主题配置\n│   │   └── theme_types.py     # 主题数据类型\n│   └── platforms/     # 平台适配器\n│       └── wechat.py # 微信公众号 API\n└── pyproject.toml\n```\n\n## 设计参考\n\n本项目参考了以下优秀项目的设计思路：\n- **wenyan-cli**: Markdown 转微信 HTML 的排版思路\n- **multi-writing-skills**: 转换器和主题系统的实现\n\n但本项目是完全独立实现的，不依赖任何外部代码。\n\n## 作者\n\nyuesf\n\n## 许可证\n\nMIT\n","topics":["WeChat","微信"],"tags":{"latest":"0.3.0"},"stats":{"comments":0,"downloads":401,"installsAllTime":15,"installsCurrent":0,"stars":0,"versions":3},"createdAt":1777708575250,"updatedAt":1779076192915},"latestVersion":{"version":"0.3.0","createdAt":1777712446280,"changelog":"feat: 新增深蓝主题(darkblue) + 修复标题重复bug + 移除AI去痕","license":"MIT-0"},"metadata":null,"owner":{"handle":"yuesf","userId":"s17agyrhs75gf1df0g3r4dw5j183rzjg","displayName":"yuesf","image":"https://avatars.githubusercontent.com/u/20236780?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1780090731999}}