AM

aaaaanson/mbeditor

开发工具
80 stars 质量 63 趋势 18MIT

首款支持 CLI 化操作的微信公众号编辑器 — 让你的Agent直接写出精美推文

概览

MBEditor 想让这件事变简单: 模型自带(BYOK,如 DeepSeek)——你的 API key 只存在自己的机器上,不经过任何第三方。 写完不满意,还能接着改:选中一段让 AI 润色,或者直接对话「把开头写得更轻松点」「整体换个调子」——像和一个懂排版的编辑聊天。 而且它天生**:每个功能都是一个 API 端点。你可以在 Claude Code 里说一句「写一篇 Docker 入门推文,杂志风排版,发到草稿箱」,剩下的交给 Agent。 输入一个主题,AI 流式生成整篇排版好的推文。按「调子」分派多套结构性不同的版式,不是只换配色。模型自带(BYOK),key 只存本地。 选中段落让 AI 润色 / 缩短 / 换说法;或用自然语言对话指挥修改。原生 function calling、块级增量更新,改写不会丢图片和 SVG。 预览画布就是编辑器,直接在公众号样式下改文字。文章背景色可一键设置、随复制保留;复制到公众号,粘贴效果 = 预览效果。 文章后端持久化 + 版本历史 + 回收站,改坏了能回退。一键复制富文本或推送到公众号草稿箱,自动上传图片到微信 CDN。 还是 :完整 RESTful API + Typer CLI + Skill 文件,Claude Code / Codex / OpenClaw 任意一个 Agent 都能直接操控编辑器,适合 CI/CD、定时任务、批量生产。

README


为什么做了这个

写公众号最累的不是想法,是排版。

MBEditor 想让这件事变简单:输入一句话,AI 流式生成一整篇排版好看的推文,预览即所得,一键存草稿。 模型自带(BYOK,如 DeepSeek)——你的 API key 只存在自己的机器上,不经过任何第三方。

写完不满意,还能接着改:选中一段让 AI 润色,或者直接对话「把开头写得更轻松点」「整体换个调子」——像和一个懂排版的编辑聊天。

而且它天生为 AI Agent 设计:每个功能都是一个 API 端点。你可以在 Claude Code 里说一句「写一篇 Docker 入门推文,杂志风排版,发到草稿箱」,剩下的交给 Agent。

四个核心能力

还是 Agent 优先:完整 RESTful API + Typer CLI + Skill 文件,Claude Code / Codex / OpenClaw 任意一个 Agent 都能直接操控编辑器,适合 CI/CD、定时任务、批量生产。

五套排版调子

一句话生成时 AI 会按内容气质自动选版式;也可以在「套个好看模板」里手动挑,或通过 CLI / API 一键导入。全部纯 inline `` + SVG 装饰,100% 过微信 sanitizer 白名单。

模板源文件在 docs/cli/examples/templates/tpl_*.json,每篇 ≥ 1500 字,内容全是具体事实或研究数据,可以直接拿来练手 / 做对标。

快速开始

第一步:部署 MBEditor

git clone https://github.com/AAAAAnson/mbeditor.git
cd mbeditor
docker compose up -d

部署完成后:

升级只需 git pull && docker compose up --build -d,不会丢数据——文章和图片存在 data/ 目录 + Docker 具名卷里,不受容器重建影响。

第二步:配置 AI 模型(BYOK)

打开编辑器 → 「设置 → AI 引擎」,填入你自己的模型 API key(如 DeepSeek)。key 只存在后端具名卷,不经过任何第三方。配好后,在起稿台输入一句话即可流式生成整篇推文。

第三步:安装 Agent 技能(可选)

skill/mbeditor.skill.md 安装后,AI Agent 就能直接操控编辑器。

默认端口:Docker 部署下 API 在 7072,编辑器在 7073。

第四步:连接微信公众号(可选)

要一键推草稿箱,在「设置 → 公众号」填 AppID / AppSecret 并保存。AppSecret 写入后端具名卷(按 appid,写后不回显),刷新免重输;也可调 API:

curl -X PUT http://localhost:7072/api/v1/settings/credentials \
  -H "Content-Type: application/json" \
  -d '{"appid":"wx你的appid","appsecret":"你的appsecret"}'

凭据存 Docker 具名卷 mbeditor-data:/app/data/credentials.json(明文 + chmod 600、仓库树外)——永远不会进 git。

推草稿报「非白名单 IP」? 公众号 API 卡的是出口 IP。若服务器出口 IP 不便加白名单,可在「设置 → 发布服务器」配置一台固定 IP 的中转网关。详见 Wiki › 微信网关配置。

Agent 工作流

MBEditor 的每个操作都是一个 REST API 端点,Agent 全程无需打开浏览器:

# 1. 套用"极简商务"模板创建文章并写入内容
TEMPLATE=docs/cli/examples/templates/tpl_biz_minimal.json
ID=$(curl -s -X POST http://localhost:7072/api/v1/articles \
     -H 'Content-Type: application/json' \
     -d "$(python -c "import json;d=json.load(open('$TEMPLATE',encoding='utf-8'));print(json.dumps({'title':d['title'],'mode':d['mode']}))")" \
     | python -c "import json,sys;print(json.load(sys.stdin)['data']['id'])")

curl -s -X PUT "http://localhost:7072/api/v1/articles/$ID" \
  -H 'Content-Type: application/json' -d @"$TEMPLATE"

# 2. 推送到微信草稿箱(stateless:带上公众号凭据 + 文章内容,正文图片自动传微信 CDN)
curl -s "http://localhost:7072/api/v1/articles/$ID" \
  | python -c "import json,sys;a=json.load(sys.stdin)['data']['article'];print(json.dumps({'appid':'wx你的appid','appsecret':'你的appsecret','article':a}))" \
  | curl -s -X POST http://localhost:7072/api/v1/wechat/draft -H 'Content-Type: application/json' -d @-

或者一句话搞定:

claude "套用极简商务模板写一篇 Q2 行业观察,推到草稿箱"

编辑器功能

三种编辑方式

模式 适合谁 能做什么
所见即所得 所有人 直接在预览里改文字,停顿后自动回写源码;一键设置文章背景色
Markdown 模式 写作者 用最简洁的语法写作,服务端自动编译成 HTML 同步预览
HTML 模式 设计师 / Agent HTML + CSS + JS 三栏编辑(可拖拽自由调宽),像素级控制每个元素

AI 协作

  • 一句话生成:起稿台输入想法,AI 流式产出整篇排版好的推文(BYOK)。
  • 选中即改:预览里选一段 → 润色 / 缩短 / 换个说法 / 自由指令,流式替换,采用 / 再来一版 / 还原。
  • 对话式编辑:用自然语言指挥修改整篇——换调子、缩长度、改背景色,块级增量更新。
  • 媒体守恒:AI 改写永远不会丢失文中的图片 / SVG(改写让媒体总数变少会被硬拦截并回退)。

内容安全

  • 版本历史:每次 AI 改写 / 恢复前自动落快照,随时回退。
  • 回收站:删除是软删,可恢复;彻底清除才真正删。
  • 后端持久化:文章存后端(离线可写、重连补同步),不再只存浏览器。

发布

  • 一键复制富文本到剪贴板,预览效果 = 粘贴效果;或一键推送到微信草稿箱,自动上传图片到微信 CDN。
  • CSS 自动内联化 + 基础排版样式注入,`` / SVG / 内联 style 全保留;发布前对 SVG-SMIL 动画等微信不支持的写法给出预警。

推荐搭配技能

MBEditor 负责编辑和发布,排版设计和内容风格可以搭配以下技能:

技能 用途 链接
Anthropic Frontend Design 排版设计风格 — 生成有设计感的 HTML 排版,告别 AI 味 anthropics/skills/frontend-design
Khazix Skills 内容写作风格 — 公众号长文写作、个人风格化输出 KKKKhazix/khazix-skills

搭配使用:Khazix 负责内容、Frontend Design 负责排版、MBEditor 负责预览和发布——从写作到草稿箱全链路自动化。

技术栈

前端 后端 部署
React 19 + TypeScript FastAPI + Python 3.11 Docker Compose
Tailwind CSS 4 + Zustand premailer(CSS 内联化) Nginx 反代
可编辑预览 + Monaco SSE 流式 AI(BYOK) docker compose up -d 一键启
亮/暗两套暖调主题 + 字体族切换 微信公众号 API 端口 7073 / 7072

API 参考

项目结构

mbeditor/
├── frontend/               # React 19 + TypeScript + Tailwind 4
│   └── src/
│       ├── surfaces/       # editor / home / settings
│       ├── components/     # UI 原子组件 + icons
│       └── stores/         # uiStore / articlesStore(Zustand)
├── backend/                # FastAPI + Python
│   └── app/
│       ├── api/v1/         # REST API 路由(articles / agent / publish / settings)
│       ├── cli/            # Typer CLI
│       └── services/       # 文章 / 图片 / AI 编排 / 微信 API / renderers
├── skill/                  # AI Agent Skill 定义
│   └── mbeditor.skill.md   # Claude Code / Codex / OpenClaw 兼容
├── docs/
│   ├── cli/examples/templates/  # 五套示例模板 tpl_*.json
│   └── screenshots/        # README 截图
├── docker-compose.yml      # 一键部署
└── LICENSE                 # MIT

本地开发

# 后端
cd backend
uv sync            # 或 pip install -e .
uvicorn app.main:app --reload --port 7072

# 前端(新终端)
cd frontend && npm install && npm run dev

贡献

欢迎提交 Issue 和 Pull Request。

AAAAAnson — 创建者与维护者

许可证

MIT © 2025 Anson

专注内容,其他交给 MBEditor。

在 GitHub 查看完整 README

推荐工具

换一个关键词,或者移除筛选条件。

安装

npx skillfish add aaaaanson/mbeditor
新手?先看 mcpskill.org 教程 →