← 返回学习中心 · Agent 工程OiOi Academy
AGENT 理论 · 25

微信 MCP:让 Muse 直接操作公众号

@shynloc 全链路实战:从申请开发者密钥、过 IP 白名单,到部署 MCP 服务、让 Muse 排版并写入草稿箱。

原作者 @shynloc 来源 X 发布 2026-09-27
🚀

开篇:这条管线解决什么问题

以下来自 @shynloc 的实战教程,一句话概括:把微信公众号接到 Muse——从申请开发者密钥、解决 IP 白名单,到部署 MCP 服务、让 Muse 排版并写入草稿箱,全链路跑通。读完你能复刻出和作者一样的管线。

先看清边界:

✅ 能Muse 直接创建 / 更新 / 删除草稿;上传封面图和正文插图;按你的审美精排(不是套模板,是 Muse 按指令精排) ❌ 不能替你点"原创声明""留言""赞赏"这些开关——微信没开放 API,只能人手点
记住:这条管线的终点是草稿箱,不是发布按钮。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,明文显示)。

原文配图:微信后台基本配置页
原文配图:微信后台基本配置页
🛤️

部署三选一:核心矛盾只有一个

记住:核心矛盾:调用微信接口的机器,必须有固定公网 IP 且在白名单里。Muse 的云电脑出口 IP 会变,所以有三条路。

点下面看三条路的完整做法:

让 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 自己调
原文配图:9 个工具列表
原文配图:9 个工具列表

排版调了 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 版一次看完,挑顺眼的直接套进草稿(只换排版,文字不动)。

原文配图:4 版排版主题
原文配图:4 版排版主题
原文配图:
原文配图:"最极端"压力测试——看 Muse 的设计上限
🧪

测试草稿验证法:排版事故率归零

草稿可以反复改,零成本——所以验证流程长这样,点下面单步走:

不要直接写正式草稿,先建一个测试草稿。

高中生类比
这就像买衣服先去试衣间:先穿给镜子(回读)看,合适了才买单(写正式草稿),不合适直接挂回去,零成本。
原文配图:写进草稿箱的实拍
原文配图:写进草稿箱的实拍
原文配图:公众号后台草稿样式
原文配图:公众号后台草稿样式

标准发布流程

  1. 样式确认后,Muse 把 HTML 写入正式草稿(update_draft,只换 content);
  2. 你在手机 / 电脑上打开公众号后台,预览草稿:看排版、看图片位置、看有没有被微信清洗掉的东西;
  3. 需要改 → 告诉 Muse 哪里要调,回到排版步骤;
  4. 不需要改 → 你自己在后台完成最后一步:原创声明、赞赏、留言、合集这些微信没开放 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)。

原文配图:邀请码说明
原文配图:邀请码说明
词

术语翻卡:点卡片看解释

MCP
Model Context Protocol
把外部服务翻译成 AI 能调用的"工具"的协议;这里指作者自建的"微信管家"服务。
access_token
access token
调用微信接口的凭证,有效期 2 小时,微信限制每天获取 2000 次,好的 MCP 服务会本地缓存+过期前自动刷新。
IP 白名单
IP allowlist
微信后台配置的允许调用接口的机器出口 IP 名单;不在名单里直接拒绝,加的是出口 IP 不是内网 IP。
AppSecret
App Secret
微信开发者密码,只显示一次,等于密码,泄露立刻点"重置"。
media_id
media id
微信素材/草稿的 ID;delete_draft 要传它而不是 article_id,这是真实踩过的坑。
Secure Vault
Secure Vault
Muse 的密钥保险库:AppID/AppSecret 走 connector 录入卡,值只进保险库,Muse 看不到明文。
测

自测一下:点问题展开参考答案

能:Muse 建/改/删草稿、上传封面与插图、按审美精排。不能:点原创声明/留言/赞赏(微信没开放 API)。终点是草稿箱,发布必须人手动在后台点。

微信 access_token 接口校验请求来源 IP;Muse 云电脑出口 IP 会变且多 IP 轮替,所以才有三选一部署方案。白名单加的是调用机器的公网出口 IP,不是内网 IP。

A 云电脑直连:只适合尝鲜验证,IP 会变不适合长期。B 固定 IP 服务器哑转发:适合有网关习惯或想自己拼装。C MCP 直接部署在服务器:真 MCP,作者线上在用,推荐长期。

style 属性里出现 '(HTML 实体单引号)会导致整个 style 被静默清空,本地预览完美、进草稿样式全丢。解法:字体名用直引号,style 属性本身用双引号包裹。

新建测试草稿 → 回读 → 查 0 空 style、图片数对上、逐字一致 → 写正式草稿 → 删测试草稿。正式草稿只更新 content 字段,标题、作者、摘要、封面保持不动。