微信 MCP:让 Muse 直接操作公众号
@shynloc 全链路实战:从申请开发者密钥、过 IP 白名单,到部署 MCP 服务、让 Muse 排版并写入草稿箱。
开篇:这条管线解决什么问题
以下来自 @shynloc 的实战教程,一句话概括:把微信公众号接到 Muse——从申请开发者密钥、解决 IP 白名单,到部署 MCP 服务、让 Muse 排版并写入草稿箱,全链路跑通。读完你能复刻出和作者一样的管线。
先看清边界:
先看懂链路(30 秒)
Muse(云电脑) → MCP 服务(你的微信管家) → 微信 API(api.weixin.qq.com) → 你的公众号
MCP 服务是关键:它把微信那一堆 HTTP 接口翻译成 Muse 能调用的"工具"(tool),比如 create_draft(建草稿)、upload_image(传封面)。Muse 不需要懂微信 API 文档,只需要会调用工具。
MCP 服务就像一个翻译官:微信只说 HTTP 方言,Muse 只会调工具,翻译官站在中间,两边都听得懂。
准备:去微信后台拿"钥匙"
第一步是拿开发者的三件套,顺序不能乱:
浏览器打开 developers.weixin.qq.com,用管理员微信扫码登录(必须是管理员,运营者权限不够)。左侧菜单 → 我的业务与服务 → 公众号,记下 AppID(开发者 ID,明文显示)。
部署三选一:核心矛盾只有一个
点下面看三条路的完整做法:
让 Muse 查自己云电脑的出口 IP:curl -s ifconfig.me,把输出填进微信后台 IP 白名单;MCP 服务跑在云电脑本机(比如 127.0.0.1:18787),Muse 直接连本机。
实测过的坑:云电脑出口 IP 会变,且可能有多个 IP 轮替。IP 一变,所有微信接口调用立刻报错,你得重新查 IP、重新加白名单。结论:只适合"我先跑通一次看看",不适合长期用。
怎么选,看这棵决策树
- 只是想验证"Muse 写公众号"这件事行不行 → 方案 A,今天就能跑;
- 有固定 IP 服务器、想稳定用 → 方案 C,一次到位;
- 服务器上有现成的网关习惯、或想自己拼装 → 方案 B。
9 个工具:Muse 手里的武器库
不管你选 B 还是 C,最终 Muse 手里应该是这样一套工具。以下来自作者线上实测可用的 9 个工具:
| 工具 | 干什么 | 备注 |
|---|---|---|
| get_access_token | 拿调用凭证 | Muse 一般不用直接调,服务内部自动处理 |
| upload_image | 传封面,返回 media_id | 微信要正方形封面,提前按官方尺寸裁好 |
| upload_content_image | 传正文插图,返回微信 CDN 地址 | 正文里用 img 标签引用该地址 |
| create_draft | 建草稿 | 标题、作者、摘要走字段,正文走 content |
| update_draft | 更新草稿正文 | 只换 content,标题/作者/摘要/封面原样保留 |
| get_draft / list_drafts | 查看、列出草稿 | 回读验证用 |
| delete_draft | 删草稿 | 微信要 media_id 参数,不是 article_id |
| publish_draft | 发布 | 建议默认不上,或上了也不让 Muse 自己调 |
排版调了 10 版,调的都是 content——标题、作者、摘要、封面原样保留,只换正文。这也是"测试草稿验证法"能成立的前提:草稿可以反复改,零成本。
服务端的 server.py 里用了 article_id 参数,微信 API 要的是 media_id,调用直接报错。修了一行代码、重启服务解决。教训:微信的报错信息很吝啬,调不通时先对着官方文档逐个核对参数名。
因为微信的发布 API 是"裸发"——只接受一个 media_id 就发出去了,而后台那一堆设置(原创声明、赞赏、留言、合集)微信根本没开放 API。发布这一步,留给人。
微信清洗铁律:排版前必须知道
以下来自作者实测——排版前不知道这些,调 10 版都白搭:
铁律 1(最阴):style 属性里不能出现 '(HTML 实体单引号)。一旦出现,微信会静默清空整个 style 属性,那一段排版直接裸奔。解法:字体名用直引号(如 font-family 冒号后直接写引号),style 属性本身用双引号包裹。
铁律 2:svg 标签会被剥离。想做标题装饰、印章效果,别用 svg,用字符排出来(◆ ▲ ● ━ ═ 这类)。
铁律 3:a href 会被剥离。外链变纯文本 URL,那就把 URL 本身设计成好看的样式(下划线、品牌色),别指望可点击跳转。
铁律 4:列表别用 ul/ol/li。某些渲染路径下样式不可控,改成分段 + 菱形 / 数字符号,效果更稳。
铁律 5:正文一字不许动。排版只加装饰性标签和样式,不增删改文字、不改变原观点。
可直接喂给 Muse 的排版提示词(复制即用)
你要为微信公众号排版一篇文章。先读懂微信的清洗规则,再动手:
铁律(违反任何一条都会导致排版丢失):
1. style 属性值里不许出现 '(HTML 实体单引号)。字体名用直引号,如 font-family 冒号后直接写引号,style 属性本身用双引号包裹。
2. 不许用 svg 标签,微信会整段剥离。装饰用文字符号(◆ ▲ ● ━ ═ 等)。
3. 不许用 a href,微信会剥离。URL 保留为带样式的纯文本(如下划线 + 品牌色),不要指望可点击。
4. 列表内容一律转成分段呈现,不用 ul/ol/li,用符号(◆ ① ② 或自定义编号徽章)引导。
5. 不得擅自改动正文一字一句:排版只加装饰性标签和样式,不增删改文字、不改变原观点。装饰字符(如章节号 CHAPTER 01)例外,但要事先说明。
工作流:
1. 先问我想要的风格(或按我给定的品牌色 / 参考图出 1 版)。
2. 生成完整 HTML 后,先在本地渲染截图给我看效果,我确认后再进草稿。
3. 进草稿前走"测试草稿验证":新建测试草稿 → 回读 → 检查 0 空 style、图片数量对得上、正文逐字一致 → 再写入正式草稿 → 删除测试草稿。
4. 正式草稿只更新 content 字段,标题、作者、摘要、封面保持不动。
输出:可直接写入草稿的完整 HTML + 本地预览截图。
这套提示词的要点:把"微信会洗掉什么"前置,Muse 就不会在雷区里反复横跳;把"测试草稿验证"写进流程,排版事故率直接归零。
作者的真实跑法:先让 Muse 出 4 版主题,挑一版(当时选了第 3 个「宋式·雅」);4 版一次看完,挑顺眼的直接套进草稿(只换排版,文字不动)。
测试草稿验证法:排版事故率归零
草稿可以反复改,零成本——所以验证流程长这样,点下面单步走:
不要直接写正式草稿,先建一个测试草稿。
这就像买衣服先去试衣间:先穿给镜子(回读)看,合适了才买单(写正式草稿),不合适直接挂回去,零成本。
标准发布流程
- 样式确认后,Muse 把 HTML 写入正式草稿(update_draft,只换 content);
- 你在手机 / 电脑上打开公众号后台,预览草稿:看排版、看图片位置、看有没有被微信清洗掉的东西;
- 需要改 → 告诉 Muse 哪里要调,回到排版步骤;
- 不需要改 → 你自己在后台完成最后一步:原创声明、赞赏、留言、合集这些微信没开放 API,必须人点。
片尾:五个真实坑
这套管线不是一次写成的,是被真实需求逼出来的。起因:作者想把一篇 X Article(一万多字、19 张插图)同步到公众号,X 的远程浏览器登录被拒,未登录状态只能扒到 1 张封面图——于是决定微信这边先自己搭 MCP,把"Muse 直写草稿"的链路跑通。
运维搭的远程版只有 8 个工具,没有 update_draft;作者本机自建的才有 9 个,含 update_draft。结论:更新草稿必须走本机服务。如果你发现"建草稿行、改草稿不行",先查工具列表,大概率是服务版本不对。
服务端用了 article_id 参数,微信 API 要的是 media_id,调用直接报错。修了一行代码、重启服务解决。
最阴的一个:排版在本地预览完美,一进草稿部分样式全丢。排查发现是某主题导出的 HTML 里字体名用了 ' 包裹,微信静默清空了整个 style 属性。解法:全局替换成直引号。现在这条已经写进排版提示词铁律第一条。
标题花瓶、印章装饰(svg)在草稿里直接消失;外链(a href)变成纯文本。接受现实:装饰用字符画,链接做成好看的纯文本样式。
正文插图传进微信素材库后,返回的是 mmbiz.qpic.cn 的地址——这个地址只能在微信体系内加载,在外部浏览器 / 预览工具里打不开。这是预期的,不影响发布。给自己做本地预览时,把图片转 base64 内嵌进 HTML 就能看。
现在这条管线每天在干的事:写完文章 → Muse 排版 → 本地截图确认 → 测试草稿验证 → 正式草稿 → 手机预览 → 后台点发布。从"你写了篇东西"到"躺在草稿箱里等发布",全程不用打开公众号编辑器。
文末小彩蛋:作者提到 Muse 新用户可在设置里兑换邀请码 U50N6X,双方各得 10 亿 Muse Token(原文信息,截至 2026-09-27)。
术语翻卡:点卡片看解释
自测一下:点问题展开参考答案
能:Muse 建/改/删草稿、上传封面与插图、按审美精排。不能:点原创声明/留言/赞赏(微信没开放 API)。终点是草稿箱,发布必须人手动在后台点。
微信 access_token 接口校验请求来源 IP;Muse 云电脑出口 IP 会变且多 IP 轮替,所以才有三选一部署方案。白名单加的是调用机器的公网出口 IP,不是内网 IP。
A 云电脑直连:只适合尝鲜验证,IP 会变不适合长期。B 固定 IP 服务器哑转发:适合有网关习惯或想自己拼装。C MCP 直接部署在服务器:真 MCP,作者线上在用,推荐长期。
style 属性里出现 '(HTML 实体单引号)会导致整个 style 被静默清空,本地预览完美、进草稿样式全丢。解法:字体名用直引号,style 属性本身用双引号包裹。
新建测试草稿 → 回读 → 查 0 空 style、图片数对上、逐字一致 → 写正式草稿 → 删测试草稿。正式草稿只更新 content 字段,标题、作者、摘要、封面保持不动。