将 Markdown 转成适合微信公众号发布的排版内容。
MD2WE 是一个面向微信公众号场景的 Markdown 编辑器,提供实时预览、主题排版、 Mermaid 图表、AI 创作辅助、分享页生成和公众号草稿推送。
- Markdown 实时编辑与预览
- 12 种排版主题和 8 种代码高亮方案
- Mermaid 图表渲染
- AI 标题建议、摘要生成、单图配图和一键批量配图
- 上传图片后自动插入 Markdown 图片语法
- 复制 HTML、下载 HTML、长图导出
- 公开分享页、二维码和独立图片 URL
- 一键推送到微信公众号草稿箱
- 浏览器本地自动保存
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -r requirements.txt
python3 app.pyOpen http://localhost:5566
健康检查:
curl http://localhost:5566/api/health默认使用 Docker named volume 持久化 /app/data 和 /app/instance:
docker compose pull
docker compose up -ddocker pull ghcr.io/zuoa/md2we:latest
docker run -d \
--name md2we \
-p 5566:5566 \
-v md2we-data:/app/data \
-v md2we-instance:/app/instance \
-e SITE_URL=https://md2we.com \
-e DEFAULT_OG_IMAGE_URL=https://md2we.com/static/og-cover.png \
ghcr.io/zuoa/md2we:latest如果你需要将分享数据直接映射到宿主机目录:
mkdir -p data/shares
chmod 0777 data data/shares否则容器内非 root 用户可能无法写入 /app/data/shares。
默认情况下,不需要在服务端配置 AI 环境变量。可以直接在页面里填写,本地配置优先于服务端环境变量。
OPENAI_API_KEY=your_key_here
OPENAI_BASE_URL=https://generativelanguage.googleapis.com/v1beta/openai
OPENAI_TEXT_MODEL=gemini-2.5-flash
OPENAI_IMAGE_TOOL_MODEL=gemini-2.5-flash-imageSITE_URL=https://md2we.com
DEFAULT_OG_IMAGE_URL=https://md2we.com/static/og-cover.png
SITE_NAME=MD2WE
SITE_DESCRIPTION=MD2WE 是一个面向微信公众号排版的 Markdown 编辑器
GA_MEASUREMENT_ID=G-XXXXXXXXXX
SHARE_STORAGE_DIR=/app/data/sharesSITE_URL用于生成分享页、二维码、canonical、robots.txt、sitemap.xml和 AI 配图 URLGA_MEASUREMENT_ID配置后会在首页和分享页自动加载 Google Analytics 4SHARE_STORAGE_DIR用于显式指定分享页 JSON 和 AI 配图的存储目录
后端会自动生成 RSA 私钥,默认保存在:
instance/ai_config_private_key.pem也可以显式提供:
export AI_CONFIG_PRIVATE_KEY_PEM='-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n'生成环境变量值:
python3 scripts/generate_ai_crypto_key.pyPOST /api/share生成公开分享页- 分享页内容保存在
data/shares/*.json - AI 配图保存在
data/shares/images/ - 分享页底部显示当前链接二维码和
Powered by MD2WE
- 支持保存
AppKey / AppSecret、作者、原文链接到浏览器本地 - 标题默认取 Markdown 第一条
# H1 - 摘要默认取正文前 120 个字符
- 支持 AI 标题、摘要和封面生成
- 自动上传正文图片和封面图到微信素材域名
- 需要同时配置文本模型和图片模型
- 支持选择画风,一键分析全文
- 只抽取核心段落,不超过 5 个
- 文本模型先返回插图计划,再逐段生图
- 生成后自动将 Markdown 图片语法精确插回原文
- 任务状态保存在
instance/illustration_jobs/*.json,Docker 多 worker 下也可轮询同一任务
- 首页和分享页的
title、description、canonical - Open Graph 和 Twitter Card
WebApplication/Article结构化数据/robots.txt/sitemap.xml
{
"markdown": "# Hello World\n\nThis is a test.",
"theme": "default",
"code_theme": "github",
"font_size": "medium",
"background": "warm"
}根据当前 Markdown 内容生成公开分享页。
上传图片后返回公开 URL 和可直接插入编辑器的 Markdown 语法。
将文章推送到微信公众号草稿箱。
{
"markdown": "# 一篇文章\n\n正文内容"
}{
"markdown": "# 一篇文章\n\n正文内容"
}{
"markdown": "# 一篇文章\n\n正文内容",
"focus_prompt": "科技感、极简插画"
}{
"markdown": "# 一篇文章\n\n正文内容",
"style": "editorial"
}响应包含:
- 插回图片后的完整
markdown - 实际插入的
segments - 当前使用的
style
响应示例:
{
"success": true,
"image_url": "https://md2we.com/share/images/ai-20260228183000-ab12cd34ef.png",
"revised_prompt": "已根据文章内容调整画面重点"
}仓库内置了可安装的 Claude Skills,目录位于 skills/。
安装方式参考 skills.sh。
单独安装总控发布 skill md2we-publish:
npx skills add https://github.com/zuoa/md2we --skill md2we-publish安装整个仓库的 skills:
npx skills add https://github.com/zuoa/md2we安装后会得到一个一键工作流 skill,自动完成:
- 起标题
- 生成摘要
- 生成封面配图
- 校验 render
- 推送到微信公众号草稿箱
.
├── app.py
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── static/
├── templates/
├── scripts/
├── data/shares/ # 分享页 JSON 与 AI 配图文件
└── instance/ # AI 加密私钥等运行时文件
Ctrl/Cmd + S: 复制 HTMLCtrl/Cmd + ,: 打开设置Esc: 关闭设置面板
技术栈:
- Flask
- 原生 HTML / CSS / JavaScript
- Python-Markdown
- Pygments
- Mermaid
- html2canvas
- Gunicorn
- Docker Compose
CI workflow: .github/workflows/ci.yml
Container image: ghcr.io/zuoa/md2we
MIT