Skill · 一键推送公众号草稿
何时用:写完一篇博客想顺便发到公众号上去。
解决什么:把"打开公众号后台 → 复制粘贴 → 调样式 → 上传图片"这一整套手工活省掉,留下"人工审核 + 一键发布"这两件事。
工作模型
插件只把内容推到草稿箱,永远不替你发布。最终的发布按钮只能你自己在 mp.weixin.qq.com 上点。这是设计选择,不是限制——人工审核环节强制保留。
Obsidian 命令面板
│
│ Gobog Sync: Push active post to WeChat (公众号) as draft
▼
插件:
1. 拿当前文件 markdown
2. 扫所有图片引用(标准 ![]() + Obsidian ![[]] 都识别)
3. 每张本地图片上传成微信永久素材,拿回 CDN URL
4. 把 markdown 里的图片路径替换成 CDN URL
5. marked 渲染成 HTML
6. 内联样式(公众号会剥 <style> 块)
7. POST /cgi-bin/draft/add,拿到 media_id
▼
mp.weixin.qq.com → 草稿箱 → 你看到一篇新草稿
│
│ 你预览,调整封面 / 摘要(如果需要),点发布
▼
公众号读者看到
一次性配置
1. 公众号后台
- 必须是认证过 / 有 API 权限的服务号或订阅号。个人订阅号没有 API 权限。
- 后台 → 开发 → 基本配置:
- 拿到 AppID 和 AppSecret
- 把本机公网出口 IP 加到 IP 白名单(不加的话所有 API 调用都会 errcode 40164)
不知道自己的出口 IP?终端跑:
curl https://api.ipify.org
2. 插件设置
设置 → Gobog Sync → WeChat 公众号 (草稿):
| 字段 | 值 | 说明 |
|---|---|---|
| 启用 WeChat 推送 | ✅ | 打开后命令面板里出现推送命令 |
| AppID | wx... |
公众号后台拿的 |
| AppSecret | *** |
公众号后台拿的;本地 data.json 加密前明文存储 |
| 默认作者 | sbraveyoung |
显示在 WeChat 文章顶部 |
默认封面 thumb_media_id |
(留空 OK) | 留空时插件用文章里第一张图作为封面 |
用
- Obsidian 里打开你想推的那篇文章。
- 命令面板(Cmd+P)→ Gobog Sync: Push active post to WeChat (公众号) as draft。
- 等几秒(图片越多等越久——每张都要上传)。
- 弹出 Notice:"WeChat draft created (media_id ...). Open https://mp.weixin.qq.com/ → 草稿箱 to review and publish"。
- 浏览器打开公众号后台,去草稿箱预览。
HTML 转换的一些限制
公众号编辑器对 HTML 很挑:
- 不接受
<style>块——所有样式必须 inline。插件已经处理:headings / p / li / pre / code / blockquote / table / img 都被注入了 inline 的 style。 - 不接受外部 CSS 引用。
- 不接受复杂选择器、media query、CSS 变量。
<script>直接被剥。- 数学公式(MathJax / KaTeX)不渲染——只能截图或者用图片代替。
如果你写的文章重度依赖某些 markdown 特性(mermaid 图、math、可折叠 details),公众号端的呈现会跟博客不完全一致。这是公众号生态的限制,不是插件的。
排查
- errcode 40164:IP 白名单没加。前面 #1 那一步重做。
- errcode 40001 invalid credential:AppSecret 错了 / AppSecret 在公众号后台被重置过。重新填一遍设置里的 AppSecret,插件会自动刷新 access_token。
- 报错 "WeChat draft needs a cover image":文章里没有任何本地图片,且没设默认 thumb_media_id。要么文章里加张图,要么去设置里填个默认封面 ID。
- 草稿创建成功但封面不是我想要的:插件用的是文章里第一张本地图。想换 → 改文章里图片顺序,或者去公众号后台手动换。