把 Markdown 转化成适合公众号发布的 HTML,其实有个“坑”:公众号的后台编辑器对 CSS 的支持比较刻薄(很多标准的 CSS 样式会被过滤)。因此,最稳妥的方法是使用**行内样式(Inline CSS)**。 我们可以使用 Python 的 `markdown` 库配合 `premailer`(用于将 CSS 自动注入到 HTML 标签的 `style` 属性中)来实现。 ### 准备工作 你需要安装两个库: ```bash pip install markdown premailer ``` --- ### Python 实现代码 这段代码不仅会转换格式,还会为你预设一套适合阅读的“公众号风”样式: ```python import markdown from premailer import transform def md_to_wechat_html(md_text): # 1. 定义基本的 CSS 样式(根据公众号审美习惯调整) css = """ """ # 2. 将 Markdown 转为 HTML(启用表格、代码高亮等常用扩展) html_content = markdown.markdown( md_text, extensions=['extra', 'codehilite', 'toc'] ) # 3. 组合成完整的 HTML 结构 full_html = f"""
{css} {html_content}
""" # 4. 使用 premailer 将 CSS 转化为行内样式(公众号最爱的格式) wechat_friendly_html = transform(full_html) return wechat_friendly_html # 测试使用 if __name__ == "__main__": test_md = """ ## 这是一个标题 这是一段正文,包含 **粗体** 和 `行内代码`。 > 这是一个引言块。 ### 代码示例 ```python print("Hello WeChat!") ``` """ result = md_to_wechat_html(test_md) with open("output.html", "w", encoding="utf-8") as f: f.write(result) print("转换成功!请打开 output.html 复制内容到公众号后台。") ``` --- ### 避坑小贴士 1. **图片链接**:Markdown 里的本地图片链接直接转过去是没用的。你需要先手动上传图片到公众号素材库,或者使用图床,把 MD 里的地址换成 URL。 2. **代码高亮**:公众号对 `pre` 和 `code` 标签的渲染比较特殊。如果上面的代码块样式不够完美,建议考虑使用专门的插件(如 **Markdown Here**)或者将代码块截图上传。 3. **直接粘贴**:运行代码生成的 `output.html` 后,用浏览器打开它,**直接全选复制**,然后粘贴到公众号编辑器里即可,格式基本能保持 90% 以上的一致。 如果你希望样式更精致一点(比如添加特定的配色方案),需要我帮你调整上面的 `css` 变量部分吗?