Skip to content

zuoa/md2we

Repository files navigation

MD2WE

将 Markdown 转成适合微信公众号发布的排版内容。

MD2WE 是一个面向微信公众号场景的 Markdown 编辑器,提供实时预览、主题排版、 Mermaid 图表、AI 创作辅助、分享页生成和公众号草稿推送。

Highlights

  • Markdown 实时编辑与预览
  • 12 种排版主题和 8 种代码高亮方案
  • Mermaid 图表渲染
  • AI 标题建议、摘要生成、单图配图和一键批量配图
  • 上传图片后自动插入 Markdown 图片语法
  • 复制 HTML、下载 HTML、长图导出
  • 公开分享页、二维码和独立图片 URL
  • 一键推送到微信公众号草稿箱
  • 浏览器本地自动保存

Quick Start

Local

python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -r requirements.txt
python3 app.py

Open http://localhost:5566

健康检查:

curl http://localhost:5566/api/health

Docker Compose

默认使用 Docker named volume 持久化 /app/data/app/instance

docker compose pull
docker compose up -d

Docker

docker 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

Configuration

默认情况下,不需要在服务端配置 AI 环境变量。可以直接在页面里填写,本地配置优先于服务端环境变量。

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-image

Site

SITE_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/shares
  • SITE_URL 用于生成分享页、二维码、canonicalrobots.txtsitemap.xml 和 AI 配图 URL
  • GA_MEASUREMENT_ID 配置后会在首页和分享页自动加载 Google Analytics 4
  • SHARE_STORAGE_DIR 用于显式指定分享页 JSON 和 AI 配图的存储目录

AI Config Private Key

后端会自动生成 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.py

Core Workflows

Share Pages

  • POST /api/share 生成公开分享页
  • 分享页内容保存在 data/shares/*.json
  • AI 配图保存在 data/shares/images/
  • 分享页底部显示当前链接二维码和 Powered by MD2WE

WeChat Draft Publishing

  • 支持保存 AppKey / AppSecret、作者、原文链接到浏览器本地
  • 标题默认取 Markdown 第一条 # H1
  • 摘要默认取正文前 120 个字符
  • 支持 AI 标题、摘要和封面生成
  • 自动上传正文图片和封面图到微信素材域名

AI One-Click Illustration

  • 需要同时配置文本模型和图片模型
  • 支持选择画风,一键分析全文
  • 只抽取核心段落,不超过 5 个
  • 文本模型先返回插图计划,再逐段生图
  • 生成后自动将 Markdown 图片语法精确插回原文
  • 任务状态保存在 instance/illustration_jobs/*.json,Docker 多 worker 下也可轮询同一任务

SEO

  • 首页和分享页的 titledescriptioncanonical
  • Open Graph 和 Twitter Card
  • WebApplication / Article 结构化数据
  • /robots.txt
  • /sitemap.xml

API

POST /api/convert

{
  "markdown": "# Hello World\n\nThis is a test.",
  "theme": "default",
  "code_theme": "github",
  "font_size": "medium",
  "background": "warm"
}

POST /api/share

根据当前 Markdown 内容生成公开分享页。

POST /api/upload/image

上传图片后返回公开 URL 和可直接插入编辑器的 Markdown 语法。

POST /api/wechat/draft

将文章推送到微信公众号草稿箱。

POST /api/ai/title-suggestions

{
  "markdown": "# 一篇文章\n\n正文内容"
}

POST /api/ai/summary

{
  "markdown": "# 一篇文章\n\n正文内容"
}

POST /api/ai/generate-image

{
  "markdown": "# 一篇文章\n\n正文内容",
  "focus_prompt": "科技感、极简插画"
}

POST /api/ai/illustrate-article

{
  "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

仓库内置了可安装的 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
  • 推送到微信公众号草稿箱

Project Structure

.
├── app.py
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── static/
├── templates/
├── scripts/
├── data/shares/     # 分享页 JSON 与 AI 配图文件
└── instance/        # AI 加密私钥等运行时文件

Development

  • Ctrl/Cmd + S: 复制 HTML
  • Ctrl/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

License

MIT

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors