Skip to content

jingyu525/markdown-to-wechat

Repository files navigation

Markdown to WeChat

将 Markdown 转换为微信公众号兼容的 HTML 格式,支持丰富的样式和预览功能。

✨ 特性

  • 📝 完整 Markdown 支持:标题、列表、代码块、表格、引用等
  • 🎨 微信优化样式:内联 CSS 样式,完美适配微信公众号编辑器
  • 📱 响应式设计:自动适配移动端和桌面端
  • 🖼️ 分屏预览:支持 Markdown 和 HTML 并排对比预览
  • 🚀 命令行工具:简单易用的 CLI,支持批量转换和全局别名
  • 🔧 Python API:可编程接口,轻松集成到你的工作流
  • 🔒 安全可靠:HTML 转义防止 XSS 攻击

📦 安装

使用 pip 安装

pip install markdown-to-wechat

从源码安装

git clone https://github.com/jingyu525/markdown-to-wechat.git
cd markdown-to-wechat
pip install -e .

可选依赖

为了更好的 Markdown 转换质量,建议安装 markdown 库:

pip install markdown

🚀 快速开始

命令行使用

基本转换

# 将 Markdown 文件转换为 HTML(自动生成输出文件名)
markdown-to-wechat article.md

# 或指定输出文件名
markdown-to-wechat article.md article.html

# 查看转换结果
open article.html

批量转换目录

# 转换目录中所有 Markdown 文件
markdown-to-wechat ./articles/

# 批量转换并生成分屏预览
markdown-to-wechat ./articles/ --split

批量转换会:

  • 自动扫描目录中所有 .md 文件
  • 为每个文件生成对应的 .html 文件
  • 显示转换统计信息(总数、成功、失败)

安装全局别名

# 安装简短别名 md2wx
markdown-to-wechat --install-alias
source ~/.zshrc  # 或 source ~/.bashrc

# 之后可以使用简短命令
md2wx article.md
md2wx ./articles/

# 卸载别名
markdown-to-wechat --uninstall-alias
source ~/.zshrc

生成分屏预览

# 生成包含 Markdown 和 HTML 的分屏预览
markdown-to-wechat article.md preview.html --split

# 或使用简写
markdown-to-wechat article.md preview.html -s

输出到标准输出

# 不指定输出文件,结果输出到终端
markdown-to-wechat article.md

不包含 CSS

# 只输出 HTML,不包含样式
markdown-to-wechat article.md output.html --no-css

Python API 使用

基本转换

from markdown_to_wechat import MarkdownToWeChatConverter

# 初始化转换器
converter = MarkdownToWeChatConverter()

# 转换 Markdown 文本
markdown_text = """
# 欢迎使用

这是一个 **Markdown** 示例。

- 列表项 1
- 列表项 2
"""

print('Hello, WeChat!')

html_content = converter.convert(markdown_text)

# 保存到文件
with open('output.html', 'w', encoding='utf-8') as f:
    f.write(html_content)

转换文件

from markdown_to_wechat import MarkdownToWeChatConverter

converter = MarkdownToWeChatConverter()

# 转换文件
html_content = converter.convert_file(
    'input.md',
    'output.html',
    include_css=True
)

print(f"转换成功!")

生成分屏预览

from markdown_to_wechat import MarkdownToWeChatConverter, PreviewGenerator

# 转换 Markdown
converter = MarkdownToWeChatConverter()
html_content = converter.convert_file('article.md')

# 生成分屏预览
preview_generator = PreviewGenerator()
preview_html = preview_generator.generate_from_file(
    'article.md',
    html_content,
    output_file='preview.html',
    split=True
)

📖 Markdown 支持

本项目支持以下 Markdown 元素:

标题

# 一级标题
## 二级标题
### 三级标题

文本格式

**粗体文本**
*斜体文本*
`行内代码`
[链接文本](https://example.com)

列表

- 无序列表项 1
- 无序列表项 2

1. 有序列表项 1
2. 有序列表项 2

代码块

使用 4 个反引号可以展示代码块语法:

```python
def hello():
    print('Hello, WeChat!')
```

表格

| 列1 | 列2 | 列3 |
|-----|-----|-----|
| 数据1 | 数据2 | 数据3 |
| 数据4 | 数据5 | 数据6 |

引用

> 这是一段引用文本

分隔线

---

🎯 使用场景

  • 微信公众号运营:将 Markdown 技术文档转换为微信富文本
  • 技术博客:编写博客文章,一键转换发布
  • 文档编写:编写产品文档,生成友好的预览界面
  • 自动化发布:集成到 CI/CD 流程,自动转换和发布

🔧 配置选项

自定义 CSS

如果需要自定义样式,可以修改转换器的 CSS:

from markdown_to_wechat import MarkdownToWeChatConverter

converter = MarkdownToWeChatConverter()
converter.css_styles = """
<style>
    /* 自定义样式 */
    body {
        font-family: 'Your Font', sans-serif;
        line-height: 2.0;
    }
</style>
"""

标题前缀处理

默认会自动移除标题中的"目前"前缀,可以通过修改配置改变:

from markdown_to_wechat.config import TITLE_PREFIX_TO_REMOVE

# 修改要移除的前缀
TITLE_PREFIX_TO_REMOVE = '自定义前缀'

📚 API 文档

详细的 API 文档请参考 API 文档

🤝 贡献

欢迎贡献代码!请参考 贡献指南

📄 许可证

本项目采用 MIT 许可证

🙏 致谢

感谢所有为本项目做出贡献的开发者

📮 联系方式

🐛 问题反馈

如果遇到问题或有功能建议,请在 GitHub Issues 中提交。


享受使用 Markdown to WeChat! 🎉

About

将 Markdown 转换为微信公众号兼容的 HTML 格式,支持丰富的样式和预览功能。

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors