ARTICLE · 1173383
不开电脑,我把公众号排版推送搬到了手机上
写公众号必须开电脑?
我把排版推送搬到了手机上
全自动流水线
排版 skill · Worker 部署 · 全流程测试笔记
gzh-design · 实战笔记
📦 6 Parts + Conclusion
👉 滑动
PART 01
起因
两个项目的启发
PART 02
装 skill
安装测试新建主题
PART 03
部署
Cloudflare Worker
PART 04
测试
接口逐个验证
PART 05
联调
全流程跑通
PART 06
总结
复刻提示词
PART ///
写在最后
参考链接
一个排版 skill,一个推送项目,拼出手机上的全自动发文流水线
不开电脑,公众号从写到发全搞定
这篇是完整复盘:从一个排版 skill 和一个自动推送草稿箱的项目出发,怎么把「写文章 → 排版 → 推送草稿箱」整条流水线搭起来,并且全程在手机上完成。
适合人群:想把公众号生产流程自动化、不想再手动复制 HTML 的内容创作者。所有步骤都附了命令和踩坑记录,可以照着复刻。
01
PART
起因:两个项目的启发
WHY · 排版 skill + 推送项目
先后刷到两个项目:一个是排版 skill gzh-design,Markdown 进去、公众号 HTML 出来;一个是自动推送草稿箱的项目,用 Cloudflare Worker 调微信官方接口,排完版一键进草稿箱。
单独看都不新鲜,但拼在一起就不一样了:WorkBuddy APP 有云端模式,手机上就能让 Agent 干活——写文章、排版、推送草稿箱,全程不用开电脑。最后打开公众号助手点一下「发表」,文章就出去了。
注意:个人订阅号不能自动发布,所以流水线的终点是草稿箱,最后一步「发表」在手机上点一下就行,十秒钟的事。
「电脑不再是公众号生产的必要条件——一部手机就是整个编辑部」
02
PART
安装排版 skill
SETUP · 安装 · 测试 · 新建主题
安装:一句话的事
不用记任何命令。仓库 README 里有一段「给 AI 的安装 prompt」,原文如下——原样复制给你的 Agent,它会自己找到仓库、clone 到 skills 目录并完成安装配置:
请帮我查找并自动安装
https://github.com/isjiamu/gzh-design-skill 这个 skill
CMDnpx skills add gzh-design
测试:6 套主题全跑一遍
拿同一篇文章当试验田,内置的 6 套主题(摸鱼绿、红白色系、石墨极简风、留白禅意风、摸鱼票据风、橄榄手记)全部排版一遍,每套都跑校验脚本确认合规。同一篇文章 6 种气质,主题系统的复用性一目了然。

— 同一篇文章 · 红白色系

— 同一篇文章 · 橄榄手记

— 同一篇文章 · 摸鱼绿
新建主题:秋日编辑风
仿照一篇人民日报的寒露节气文案,做了一套新主题——秋日编辑风:琥珀金 #D4A017 主色、衬线字体金句、暖纸底色,编辑部气质拉满。登记进主题索引、跑组件 lint 通过后,它就和内置主题同权,随时可以选用。

— 参考原文 · 人民日报笔下的寒露文案

— 仿制效果 · 秋日编辑风(暖琥珀 + 衬线金句)
!踩坑提示 🕳
skill 要放在 Agent 能扫到的目录:用户级(如 ~/.workbuddy/skills/)或项目级(.workbuddy/skills/)。扔在临时文件夹里 Agent 找不到,别白忙一场。
03
PART
部署 Cloudflare Worker
DEPLOY · 推送也自动化
排版解决了,还要解决推送。方案是写一个 Cloudflare Worker,干四件事:拿 access_token、转存正文外链图、上传封面、调 draft/add 建草稿。免费额度每天 10 万次请求,个人用绰绰有余。
一条命令部署
wrangler.toml 定义入口文件和变量,一条命令上传。
CMDwrangler deploy
配置三个密钥
WECHAT_APPID、WECHAT_APPSECRET、DRAFT_API_KEY 用 secret put 加密存储,不进配置文件、不进 Git,安全。
CMDwrangler secret put WECHAT_APPID
!最大的坑:IP 白名单 + Bot 防护 🕳
微信公众号有 IP 白名单,而 Cloudflare 出口 IP 不固定——必须把 15 段 Cloudflare IPv4 全部加进白名单;另外 Cloudflare 控制台的 Bot Fight Mode 要手动关掉,不然请求会被当成机器人拦掉。这两项不配,Worker 部署成功也调不通微信 API。
✦ 自定义域名更稳
Worker 默认域名是 workers.dev,国内访问不稳定。绑一个自己的自定义域名,推送速度实测秒级完成。
04
PART
测试 Cloudflare
TEST · 接口逐个验证
部署完先探活,确认 Worker 活着、鉴权生效:
CMDcurl https://你的域名/
返回 {"ok":true,"service":"wx-draft-worker"} 说明服务正常。推送接口带 API Key 鉴权,没带 key 会返回 401,防止白嫖。
然后推一篇真实文章测试,一口气踩了三个坑,逐个记录:
不传封面 → 接口返回「缺少封面图」。微信 draft/add 强制要求封面,没得商量。
传 webp 封面 → 微信报 40113 unsupported file type。封面只认 JPG / PNG,webp 得先转格式。
转成 PNG 再推 → 成功,拿到 media_id,草稿箱里文章躺得整整齐齐。
05
PART
全流程测试
E2E · 从 Markdown 到草稿箱
单点都通了,最后跑全流程:排版好的 HTML 用本地脚本推给 Worker,转存图片、传封面、建草稿一条命令全自动。
python draft_push.py \
--file article.html \
--cover cover.png \
--title "标题" --author "作者名"
Markdown
手机上任写
gzh-design
排版成 HTML
草稿箱
Worker 自动推
返回 media_id 即成功;最后去公众号助手点「发表」
实测整条链路顺畅:从写完到草稿箱出现,全程不到一分钟。在咖啡馆用手机写完一篇、排版、推送,回个头文章已经在草稿箱等审核了。
06
PART
总结与复刻
SUMMARY · 拿走就能用
整条流水线一句话:Markdown → gzh-design 排版 → draft_push.py → Cloudflare Worker → 微信草稿箱。两端都在云端,中间全自动,人要做的只是「写」和「点发表」。
给 WorkBuddy 的复刻提示词
想复刻整套流程,把下面这段直接丢给 WorkBuddy(云端模式即可),它会一步步帮你搭好:
帮我搭一套公众号自动化流水线:
1. 安装 gzh-design 排版 skill(GitHub:
isjiamu/gzh-design-skill),放到用户级 skills
目录,并测试排版一篇文章。
2. 写一个 Cloudflare Worker:调微信 stable_token
拿 access_token,正文外链图转存微信域名,上传
封面(必填),调 draft/add 建草稿,带 API Key
鉴权。
3. wrangler deploy 部署,secret put 设置
WECHAT_APPID / WECHAT_APPSECRET / DRAFT_API_KEY。
4. 写本地 draft_push.py:读排版 HTML + 封面,
POST 到 Worker 的 /api/draft。
5. 提醒我配置:公众号 IP 白名单加 Cloudflare 15
段 IPv4;Cloudflare 控制台关 Bot Fight Mode。
6. 全流程测试:Markdown → 排版 → 推送 → 草稿箱,
确认返回 media_id。
///
LAST
写在最后
EPILOGUE · 参考链接
7 套主题还在持续迭代。大家也可以结合自己的特色 / IP 去泛化组件库,形成自己的排版风格。欢迎来魔改,一起交流。
gzh-design skill
排版引擎本体:github.com/isjiamu/gzh-design-skill
Cloudflare IP 段
配公众号白名单用:cloudflare.com/ips
微信公众平台开发文档
draft/add 等接口说明:developers.weixin.qq.com/doc/offiaccount
Wrangler 部署文档
Workers 部署参考:developers.cloudflare.com/workers/wrangler
灵感来源 · 4 篇参考文章
参考文章 01
https://mp.weixin.qq.com/s/2u9QxwDUTlCL4052Wyba-w
参考文章 02
https://mp.weixin.qq.com/s/wWK7DBX5CDEuMBWkKTvDSQ
参考文章 03
https://mp.weixin.qq.com/s/-Dh2jZEGvkh9RyBNYlikaw
参考文章 04
https://mp.weixin.qq.com/s/Ha2fl1YRY5Y9iZlEQ-t-gA
我是 {{作者名}},热衷于分享 AI 观察与干货。
既然看到这里了,如果觉得有用,随手点个赞、在看、转发三连吧。
THANKS FOR READING















































































