{"skill":{"slug":"wechat-md-publish","displayName":"wechat-md-publish","summary":"将 Markdown 文章发布到微信公众号。支持 AI 生成封面图片、HTML 卡片渲染、创建草稿、可选自动发布。当用户说'发公众号'、'发布文章到微信'、'公众号发布'时使用此技能。","description":"---\nname: wechat-md-publish\ndescription: \"将 Markdown 文章发布到微信公众号。支持 AI 生成封面图片、HTML 卡片渲染、创建草稿、可选自动发布。当用户说'发公众号'、'发布文章到微信'、'公众号发布'时使用此技能。\"\ndescription_zh: \"Markdown 文章发布到微信公众号（AI 生成封面、内联样式排版、HTML 卡片渲染、创建草稿、可选发布）\"\ndescription_en: \"Publish Markdown articles to WeChat Official Account (AI cover, inline styles, HTML card, draft, optional publish)\"\nversion: 0.3.0\nallowed-tools: Bash,Read,DeferExecuteTool\nmetadata:\n  clawdbot:\n    emoji: \"📢\"\n    requires:\n      bins:\n        - python\n---\n\n# 微信公众号文章发布\n\n将 Markdown 文章发布到微信公众号，支持 AI 生成封面图片。\n\n---\n\n## 首次配置\n\n### 1. 获取公众号 AppID 和 AppSecret\n\n在 [微信公众平台](https://mp.weixin.qq.com/) → 开发 → 基本配置 中获取。\n\n### 2. 设置 IP 白名单\n\n在基本配置页面，将你的出口 IP 加入白名单。查看出口 IP：\n\n```bash\ncurl -s https://ipinfo.io/ip\n```\n\n### 3. 创建配置文件\n\n```bash\nmkdir -p ~/.wechat_publish\ncat > ~/.wechat_publish/config.json << 'EOF'\n{\n  \"app_id\": \"你的AppID\",\n  \"app_secret\": \"你的AppSecret\"\n}\nEOF\n```\n\n### 4. 安装依赖\n\n```bash\npip install requests markdown\n```\n\n如需使用 HTML 卡片渲染功能，额外安装：\n\n```bash\npip install playwright\nplaywright install chromium\n```\n\n---\n\n## 工作流程\n\n当用户要求发布文章时，按以下步骤执行：\n\n### 步骤 1：AI 总结摘要\n\n阅读文章内容，用 AI 总结一段摘要，不超过 120 字节（中文约 40 字）。\n\n### 步骤 2：判断封面来源\n\n**如果用户已提供封面图片** → 直接使用，跳到步骤 4。\n\n**如果用户未提供封面图片** → 进入步骤 3 用 AI 生成。\n\n### 步骤 3：用 ImageGen 生成封面图片（仅当用户未提供封面时）\n\n根据文章标题和内容，调用 ImageGen 工具生成封面。提示词参考：\n\n```\n微信公众号封面图，风格简约专业，比例 16:9，主题：{文章标题关键词}，不要出现文字\n```\n\n更多提示词模板见下方\"AI 封面生成提示词建议\"。\n\n### 步骤 4：（可选）生成 HTML 卡片\n\n如果文章需要插入排版精美的信息卡片（对比图、步骤说明、工具栈展示等），由 AI 生成 HTML 模板，脚本自动渲染为图片插入文章。\n\n微信公众号对 HTML/CSS 支持有限，有些排版效果无法用内联样式实现。HTML 卡片通过 Playwright 将 HTML 渲染为图片，绕过这个限制。\n\n常见卡片类型和 HTML 模板：\n\n**对比卡片**：\n```html\n<!DOCTYPE html>\n<html><head><meta charset=\"UTF-8\">\n<style>\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#f5f5f7;padding:30px 20px}\n.title{font-size:22px;font-weight:bold;color:#1a1a1a;margin-bottom:20px;text-align:center}\n.section{margin-bottom:16px;padding:12px 16px;border-radius:8px}\n.green{background:#e8f5e9;border-left:4px solid #4CAF50}\n.red{background:#fce4ec;border-left:4px solid #f44336}\n.section-title{font-size:15px;font-weight:bold;margin-bottom:8px}\n.item{font-size:14px;color:#333;margin-bottom:4px;line-height:1.6}\n</style></head><body>\n<div class=\"title\">标题</div>\n<div class=\"section green\"><div class=\"section-title\">✅ 能做的</div><div class=\"item\">• 内容1</div></div>\n<div class=\"section red\"><div class=\"section-title\">❌ 不能做的</div><div class=\"item\">• 内容1</div></div>\n</body></html>\n```\n\n保存为 `.html` 文件后通过 `--html-card` 参数传入。可同时传入多个卡片文件。\n\n### 步骤 5：运行发布脚本\n\n```bash\n# 仅创建草稿\npython scripts/wx_publish.py --title \"文章标题\" --content article.md --digest \"AI总结的摘要\" --thumb-image <封面图片路径>\n\n# 带 HTML 卡片\npython scripts/wx_publish.py --title \"文章标题\" --content article.md --digest \"AI总结的摘要\" --thumb-image <封面图片路径> --html-card card.html\n\n# 多个 HTML 卡片\npython scripts/wx_publish.py --title \"文章标题\" --content article.md --digest \"AI总结的摘要\" --thumb-image <封面图片路径> --html-card card1.html card2.html\n\n# 创建草稿并自动发布\npython scripts/wx_publish.py --title \"文章标题\" --content article.md --digest \"AI总结的摘要\" --thumb-image <封面图片路径> --publish\n```\n\n如果用户提供了封面素材 ID 而非图片文件：\n\n```bash\npython scripts/wx_publish.py --title \"文章标题\" --content article.md --thumb-media-id <素材ID>\n```\n\n---\n\n## 完整参数说明\n\n| 参数 | 必填 | 说明 |\n|------|------|------|\n| `--title` | 是 | 文章标题 |\n| `--content` | 是 | Markdown 文件路径 |\n| `--thumb-image` | 否 | 封面图片本地路径（AI 生成或用户提供的封面都用此参数） |\n| `--thumb-media-id` | 否 | 已上传的封面素材 ID |\n| `--html-card` | 否 | HTML 卡片文件路径（可多个），渲染为图片插入文章 |\n| `--card-width` | 否 | HTML 卡片渲染宽度（默认 750px） |\n| `--author` | 否 | 作者名 |\n| `--digest` | 是 | 文章摘要（由 AI 总结，不超过 120 字节/约 40 字） |\n| `--upload-thumb` | 否 | 仅上传封面图片，输出 thumb_media_id |\n| `--publish` | 否 | 创建草稿后自动发布 |\n\n封面优先级：`--thumb-media-id` > `--thumb-image`。均未指定时会提示提供。\n\n---\n\n## AI 封面生成提示词建议\n\n根据文章类型选择合适的提示词：\n\n| 文章类型 | 提示词模板 |\n|---------|-----------|\n| 技术教程 | 微信公众号封面，科技感，深蓝配色，简洁图标，无文字 |\n| 财经分析 | 微信公众号封面，金融主题，数据图表元素，蓝金配色，无文字 |\n| 生活分享 | 微信公众号封面，清新风格，柔和配色，简约图形，无文字 |\n| 量化交易 | 微信公众号封面，K线图表元素，深色背景，科技金融感，无文字 |\n\n---\n\n## 常见问题\n\n| 问题 | 解决方案 |\n|------|---------|\n| 获取 access_token 失败 | 检查 AppID/AppSecret 是否正确，IP 白名单是否已设置 |\n| 上传封面失败 | 封面图片需小于 10MB，支持 bmp/png/jpeg/jpg/gif 格式 |\n| 草稿创建失败 | 确认公众号已认证，具有草稿接口权限 |\n| markdown 模块未找到 | 运行 `pip install markdown` |\n\n---\n\n## 注意事项\n\n- 本工具仅适用于**已认证**的微信公众号（订阅号/服务号均可）\n- access_token 有效期 2 小时，脚本自动缓存和刷新\n- 文章中的本地图片会自动上传到微信并替换 URL\n- 建议先创建草稿确认效果，再加 `--publish` 自动发布\n- 用户已提供封面图片时，不要再用 ImageGen 生成\n","topics":["WeChat","微信"],"tags":{"latest":"0.3.0"},"stats":{"comments":0,"downloads":373,"installsAllTime":14,"installsCurrent":2,"stars":0,"versions":1},"createdAt":1777900662657,"updatedAt":1778492846193},"latestVersion":{"version":"0.3.0","createdAt":1777900662657,"changelog":"wechat-md-publish v0.3.0\n\n- 支持将 Markdown 文章发布到微信公众号，包括 AI 自动生成封面图片、摘要。\n- HTML 卡片支持：可通过 Playwright 渲染自定义 HTML 卡片为图片插入文章，提升排版效果。\n- 实现草稿创建和可选的自动发布功能。\n- 添加详细的首次配置说明和常见问题解答。\n- 明确参数说明和 AI 封面生成提示词建议。","license":"MIT-0"},"metadata":{"setup":[],"os":null,"systems":null},"owner":{"handle":"864446285","userId":"s173f331vbcqqz2rzf5jvjja1x8630v2","displayName":"asdassad","image":"https://avatars.githubusercontent.com/u/191668520?v=4"},"moderation":null}