将Markdown文件转换为符合微信公众号规范的HTML文件,支持7种预设样式(默认/泛黄怀旧/科技蓝紫/青绿引号/角标绿条/中轴蓝卡/紫绿清韵),自动适配微信公众号渲染,并可一键推送至微信公众号草稿箱或稀土掘金草稿箱。零API依赖,仅需配置文件Cookie即可使用。
Markdown转微信公众号HTML工具
【适用场景】
当用户需要将本地Markdown文档发布到微信公众号或稀土掘金平台时,使用此工具。主要解决以下问题:
- 格式转换难:Markdown语法在微信公众号后台直接复制会丢失样式,需要转换为HTML - 样式适配乱:不同主题文章(技术博客/新闻日报/学术笔记)需要不同视觉风格 - 多平台发布繁琐:同一篇文章需要发布到微信公众号和掘金两个平台,手动转换工作量大
适用对象:技术博主、内容创作者、自媒体运营者、新闻编辑
【操作步骤】
第一步:确认执行模式
根据用户意图判断使用哪种模式:
| 用户意图 | 执行模式 | 脚本命令 |
|---|---|---|
| 「把这篇md转成微信html」 | 仅转换HTML | `python3 ${CODEBUDDY_SKILL_DIR}/scripts/md2wechat_html.py` |
| 「推送/发布到公众号」 | 转换+推送草稿箱 | `python3 ${CODEBUDDY_SKILL_DIR}/scripts/push_daily.py` |
| 「推送到掘金」 | 推送掘金草稿箱 | `python3 ${CODEBUDDY_SKILL_DIR}/scripts/push_juejin.py` |
第二步:选择预设样式
用户未指定时默认使用「默认样式」。可根据文章类型选择:
| 预设样式 | 视觉特征 | 触发关键词 |
|---|---|---|
| 默认(白底灰字) | 白底灰字+棕橘胶囊标题 | 默认、白色、白底、简洁、干净 |
| 泛黄怀旧 | 古卷泛黄底色+深棕标题 | 怀旧、古风、黄底、复古 |
| 科技蓝紫 | 白底+蓝紫渐变标题 | 科技、AI、技术、前沿 |
| 青绿引号 | 米白底+青绿引号线H2 | 文艺、杂志、专栏、清爽 |
| 角标绿条 | 黄编号角标+绿色标签块 | 运营、资讯、拆解、模块化 |
| 中轴蓝卡 | 冷灰底+中轴蓝色编号卡 | 产品文档、技术手册、结构化 |
| 紫绿清韵 | 白底+紫色胶囊框H2 | 学术、研究笔记、深度技术 |
第三步:执行转换或推送
纯转换模式: ```bash
默认样式转换
python3 ${CODEBUDDY_SKILL_DIR}/scripts/md2wechat_html.py article.md article_wechat.html指定预设样式
python3 ${CODEBUDDY_SKILL_DIR}/scripts/md2wechat_html.py \ --config ${CODEBUDDY_SKILL_DIR}/references/article_nostalgic.yaml \ article.md article_wechat.html新闻模式(板块化日报)
python3 ${CODEBUDDY_SKILL_DIR}/scripts/md2wechat_html.py --news news.md news_wechat.html ```推送草稿箱模式: ```bash
从frontmatter提取标题和摘要
python3 ${CODEBUDDY_SKILL_DIR}/scripts/push_daily.py input.md手动指定标题和摘要
python3 ${CODEBUDDY_SKILL_DIR}/scripts/push_daily.py input.md \ --title "文章标题" --digest "120字以内摘要" ```第四步:验证输出
- 转换模式:检查生成的HTML文件是否完整 - 推送模式:登录微信公众号后台确认草稿箱内容
【代码模板】
前置条件:配置文件 `~/.md_push_wechat/config.yaml` 必须包含微信公众号的 `appid` 和 `secret`
```yaml
~/.md_push_wechat/config.yaml 示例
wechat: appid: "wx_your_appid" secret: "your_secret_key"juejin: cookie: "你的掘金Cookie字符串" ```
完整工作流脚本: ```python import subprocess import sys
skill_dir = "${CODEBUDDY_SKILL_DIR}" input_file = "article.md"
步骤1:转换为HTML
result = subprocess.run([ "python3", f"{skill_dir}/scripts/md2wechat_html.py", input_file, "output.html" ], capture_output=True, text=True)步骤2:推送草稿箱
if result.returncode == 0: push_result = subprocess.run([ "python3", f"{skill_dir}/scripts/push_daily.py", input_file, "--title", "文章标题" ], capture_output=True, text=True) print(push_result.stdout) ```【复盘要点】
容易出现的问题:
1. 配置文件缺失:推送草稿箱前必须确认 `~/.md_push_wechat/config.yaml` 存在 2. 摘要超长:`--digest` 参数必须控制在120字以内,否则会被微信公众号截断 3. Cookie过期:掘金Cookie有效期约30天,过期后需重新获取 4. 图片上传失败:脚本采用尽力而为模式,图片上传失败会保留原引用
优化建议:
- 技术博客类文章推荐使用「科技蓝紫」或「紫绿清韵」样式 - 新闻日报类文章使用「新闻模式」并指定 `--news` 参数 - 批量发布时可将样式偏好写入frontmatter实现自动化
来源:GitHub https://github.com/MuKunZiAI/mukun_md_push