{"skill":{"slug":"md2wechat-skill","displayName":"md2WeChat-python","summary":"将 Markdown 文件转换为微信公众号兼容的内联样式 HTML，并一键发送到微信草稿箱。支持 Front Matter 元数据、表格、代码块、列表、图片自动上传等完整排版能力。","description":"---\nname: md2wechat-skill\nversion: 1.0.2\ndescription: 将 Markdown 文件转换为微信公众号兼容的内联样式 HTML，并一键发送到微信草稿箱。支持 Front Matter 元数据、表格、代码块、列表、图片自动上传等完整排版能力。\nmetadata:\n  openclaw:\n    primaryEnv: WECHAT_APPID\n    requires:\n      bins:\n        - python3\n      env:\n        - WECHAT_APPID\n        - WECHAT_SECRET\n    permissions:\n      declared_purpose: \"将 Markdown 转换为微信兼容 HTML，可选上传到微信公众号草稿箱。写操作包括：保存本地预览 HTML、生成临时封面图到系统 temp 目录\"\n      network: true\n      filesystem: read-write\n---\n\n# md2wechat-skill — Markdown 转微信草稿箱\n\n将 Markdown 文件经过排版引擎转换为微信图文编辑器兼容的内联样式 HTML，并通过微信公众号 API 发送到草稿箱。\n\n## 核心能力\n\n- **Markdown → 微信 HTML**：完整解析标准 Markdown 语法（标题、列表、表格、代码块、引用等），自动转换为微信兼容的内联样式\n- **Front Matter 元数据**：支持 YAML Front Matter 定义标题、作者、摘要、发布模式等\n- **图片自动处理**：正文内嵌的本地图片自动上传到微信 CDN 并替换为永久链接\n- **封面图上传**：支持指定封面图上传为微信永久素材\n- **代码块深色主题**：代码块自动适配深色背景样式\n- **超长内容截断**：超过微信 2MB 限制的内容自动安全截断\n\n## 前置条件\n\n### 依赖安装\n\n```bash\npip install wechatpy markdown beautifulsoup4 requests python-dotenv pillow\n```\n\n### 微信公众号配置（仅草稿箱发布需要）\n\n需要设置以下环境变量（可通过 .env 文件或系统环境变量）：\n\n```\nWECHAT_APPID=你的公众号AppID\nWECHAT_SECRET=你的公众号AppSecret\n```\n\n获取方式：登录 [微信公众平台](https://mp.weixin.qq.com/) →「开发」→「基本配置」→ 获取 AppID 和 AppSecret。\n\n配置模板见 `{baseDir}/resources/env_template.txt`。\n\n> **提示**：如果仅需要将 Markdown 转换为微信兼容 HTML（`--convert-only` 模式），则不需要配置微信密钥。\n\n## 使用方式\n\n### 模式一：仅转换 HTML（无需微信密钥）\n\n将 Markdown 文件转换为微信兼容的内联样式 HTML，输出到本地文件：\n\n```bash\npython {baseDir}/scripts/md2wechat.py <markdown文件路径> --convert-only --output <输出HTML路径>\n```\n\n示例：\n\n```bash\npython {baseDir}/scripts/md2wechat.py ./article.md --convert-only --output ./preview.html\n```\n\n### 模式二：转换并上传到微信草稿箱\n\n```bash\npython {baseDir}/scripts/md2wechat.py <markdown文件路径> --draft --env-file <.env路径>\n```\n\n支持的可选参数：\n- `--title \"自定义标题\"`：覆盖自动提取的标题\n- `--author \"作者名\"`：指定作者\n- `--cover ./cover.png`：指定封面图\n- `--output ./preview_dir/`：同时保存本地预览 HTML\n- `--env-file .env`：指定环境变量配置文件\n\n完整示例：\n\n```bash\npython {baseDir}/scripts/md2wechat.py ./my_article.md --draft \\\n    --title \"我的文章标题\" \\\n    --cover ./images/cover.png \\\n    --env-file ./.env \\\n    --output ./preview/\n```\n\n### 查看帮助\n\n```bash\npython {baseDir}/scripts/md2wechat.py --help\n```\n\n## Markdown 文件格式\n\n### 基本格式\n\n标准的 GitHub Flavored Markdown 语法均受支持：\n\n```markdown\n# 文章标题\n\n正文段落...\n\n## 二级标题\n\n- 无序列表项\n- 列表项\n\n1. 有序列表项\n2. 列表项\n\n> 引用文本\n\n**加粗** 和 *斜体*\n\n| 表头1 | 表头2 |\n|-------|-------|\n| 单元格 | 单元格 |\n```\n\n### Front Matter 元数据（可选）\n\n在文件最顶部添加 YAML 格式的元数据块：\n\n```markdown\n---\ntitle: 自定义标题\nauthor: 作者名\nsummary: 文章摘要描述\npublish_mode: draft\n---\n\n正文内容...\n```\n\n支持的字段：`title`、`author`、`summary`、`cover`、`publish_at`、`publish_mode`、`account_id`\n\n### 图片引用\n\n使用相对路径引用图片，上传草稿时会自动处理：\n\n```markdown\n![图片描述](images/photo.png)\n```\n\n## 示例文件\n\n示例 Markdown 文章：`{baseDir}/examples/sample_article.md`\n\n## 脚本文件说明\n\n| 文件 | 说明 |\n|------|------|\n| `scripts/md2wechat.py` | 主入口脚本（CLI） |\n| `scripts/md_converter.py` | Markdown → 微信 HTML 转换引擎 |\n| `scripts/html_formatter.py` | HTML 内联样式适配器 |\n| `scripts/wechat_client.py` | 微信公众号 API 客户端 |\n\n## Rules\n\n1. 在执行 `--draft` 模式前，必须确认用户已正确配置 `WECHAT_APPID` 和 `WECHAT_SECRET`\n2. 如果用户只需要转换 HTML 而不需要上传，应使用 `--convert-only` 模式\n3. 所有脚本的工作目录应在 `{baseDir}/scripts/` 下执行，以确保模块导入正确\n4. 转换生成的 HTML 使用内联样式，不依赖外部 CSS 文件，确保微信兼容性\n","topics":["微信"],"tags":{"latest":"2.0.0"},"stats":{"comments":0,"downloads":931,"installsAllTime":35,"installsCurrent":3,"stars":1,"versions":4},"createdAt":1773235355877,"updatedAt":1778491832663},"latestVersion":{"version":"2.0.0","createdAt":1773291964440,"changelog":"**Major update:** v2.0.0 introduces new files and possible binary/distribution changes.\n\n- Added origin.json for .clawhub, likely for version/source tracking.\n- Compiled Python bytecode files added for html_formatter, md_converter, and wechat_client, improving execution readiness and deployment.\n- No visible changes to documentation or SKILL.md.\n- No core feature or interface changes documented for end users.","license":"MIT-0"},"metadata":{"setup":[{"key":"WECHAT_APPID","required":true},{"key":"WECHAT_SECRET","required":true}],"os":null,"systems":null},"owner":{"handle":"koraihub","userId":"s172z4zaevvt8akc43jsfz7a1183gyzp","displayName":"koraiHub","image":"https://avatars.githubusercontent.com/u/32049957?v=4"},"moderation":null}