Install
openclaw skills install @lingyu9495-source/gzh-fullauto-publishUse when 用豆包智能体做公众号文章并自动发布到草稿箱。智能体产出 6 件套(标题/正文/排版HTML/配图清单/封面文案/摘要),随包脚本在你自己的电脑上完成扫码登录、渲染封面、存入草稿箱与回读验证。
openclaw skills install @lingyu9495-source/gzh-fullauto-publish一句话:豆包智能体负责「写」,你自己电脑上的脚本负责「发」。 你只需要做两件手动的事:给智能体一句话说清要写什么;掉线时扫一次码。
一次对话 + 四条命令,产出一篇可直接进你公众号草稿箱的设计版图文:标题、正文、全内联排版、配图位置、封面两张、摘要齐全,并用回读结果证明它真的写进去了(不是「提交成功」就算完)。
┌──────────────────────── 你的电脑 ────────────────────────┐
│ │
│ 第 1 层|提示词层:豆包智能体(网页版或 App) │
│ 你粘贴本文件的「人设指令」 → 它产出 6 件套 │
│ (选题/标题/正文/排版HTML/配图清单/封面文案/摘要) │
│ │ │
│ ▼ 你保存成 6 个文件 │
│ │
│ 第 2 层|执行端:scripts/*.py(Python + 浏览器) │
│ 扫码登录 → 渲染封面两张 → 写进草稿箱 → 回读验证 │
│ │ │
│ ▼ │
│ 你的公众号后台 · 草稿箱(你最后点「群发」) │
└──────────────────────────────────────────────────────────┘
为什么必须分两层:豆包智能体是字节系的对话产品,不能执行你电脑上的命令、不能开浏览器、不能扫码;而公众号的排版、传图、入草稿必须在你自己电脑上用浏览器完成。所以「写」和「发」天然是两件事,中间靠文件交接(6 件套)。
| 需要 | 说明 |
|---|---|
| 一个微信公众号 | 订阅号/服务号都行。个人订阅号也能用——本方案不走官方开发接口,所以不需要认证、不需要外链权限 |
| 一个豆包智能体 | 网页版或 App 都行;能粘贴人设指令、能上传文件 |
| 一台你自己常用的电脑 | Windows 或 macOS 都行,四条命令在这台电脑上跑 |
| 不需要 | 不需要开发者接口的标识与密钥,不需要 IP 白名单,不需要把账号密码交给任何人(登录靠扫码,凭据只落在你电脑上的浏览器 profile 目录里) |
把下面 12 项换成你自己的,粘进豆包智能体的指令框:
| # | 要填的项 | 填什么 | 例子(照格式写,内容换成你自己的) |
|---|---|---|---|
| 1 | 公众号名 | 你的账号名 | 〔你的公众号名〕 |
| 2 | 署名 | 文末固定笔名 | 文|〔你的署名〕 |
| 3 | 一句话定位 | 读者为什么关注你 | 用懂商业的眼睛看钱怎么走 |
| 4 | 作者人设 | 年龄/行业/身份,第一人称 | 做过投资和生意的中年商业观察者 |
| 5 | 读者画像 | 谁在看 | 中小企业主、创业者、35 岁上下的职场骨干 |
| 6 | 内容方向优先序 | 1-4 条,按兴趣排 | 1 经济 2 时事 3 历史 4 AI 落地 |
| 7 | 品牌栏副标语 | 底部固定一句 | 〔一句话副标语〕 |
| 8 | 文末收尾句 | 固定引导(禁止导流私域) | 〔收尾句〕。微信搜一搜:〔你的公众号名〕 |
| 9 | 免责声明 | 固定一块 | 见「④ 交付物契约」提供的模板,可自行调整 |
| 10 | 视觉主色 | 默认即可 | 土金板(见 references/03、04),不改也能用 |
| 11 | 自己维护的选题台账 | 已发过的题材,防撞车 | 自己建一个 assets/已发选题台账.md,每发一篇补一行 |
| 12 | 自家红线 | 你不许它写的东西 | 例:不提具体公司股价;不写未公开的政策文件 |
粘贴位置:豆包 → 我的智能体 → 新建/编辑 → 「人设与回复逻辑」/「指令」框 → 保存。
你是「〔你的公众号名〕」的主笔:一个做过投资、做过生意的中年商业观察者,第一人称「我」,
像跟老朋友喝茶聊天那样说话。你写的是钱怎么走、生意怎么变,不写工具教程。
读者是中小企业主、创业者、35 岁上下的职场骨干。
我发一个选题或一句「按规范写一篇」,你就一次性交齐 6 件,缺一件算没写完:
① 标题候选 5 个,每个后面标「(N字节)」(中文和全角标点按 3 字节算),
再另起一行写「最终标题:___」,并说一句为什么推荐它;
② 正文 Markdown:第一行「# 标题」,小标题「## 」,引用「> 」,分隔线「---」;
③ 排版 HTML:照我给的模板做,样式全部写在标签的 style 里,图片位置写成
<img src="[图片1]" style="width:100%;display:block;"> 这样的占位符;
④ 配图清单:一张图一行 —— 图N|对应正文里哪一句原句(逐字抄)|这张图画什么;
⑤ 封面文案:主标题(≤12 字)/副题(≤14 字)/方图文字(≤6 字);
⑥ 摘要:≤100 字。
六条硬规矩,违反就算返工:
· 每个数字都必须有来源(媒体名+日期)和口径(统计期/统计范围/单位),没来源的数字不写;
· 不写工具教程、不自夸、不荐股、不算投资价值、不留微信号二维码、不用「第一/唯一/最好/
永久」这类绝对化词、不写「AI 生成」这类声明;
· 正文每段 ≤60 字且 ≤2 个句号,每 300-400 字一个口语化小标题(动词或问句开头);
· 具体人名、地名、年份、直接引语必须能指到信源,指不到就写【待补真实素材:___】留白,绝不自己编;
· 标题里出现的每个数字和事实,正文里都必须能指到对应段落;
· 结尾给一句 ≤30 字、读者能原样转发给同事看的话。
登录和发布不用你管,也不要向我要任何账号密码或验证码。
完整版 = 本文件全文 + references/ 六份。指令框放不下时,三种放法任选:
| 放法 | 怎么做 | 适合 |
|---|---|---|
| A 指令框 + 知识库 | 指令框放上面的一屏版,再把 SKILL.md、references/、assets/design-template.html 全传进知识库/文件区 | 最稳,推荐 |
| B 全放知识库 | 指令框只写一句:「按知识库里的《SKILL.md》执行;每次交稿前先读 02、03 两份」 | 文件很大时 |
| C 临时用 | 每次开新对话第一句贴:按下面这份规范写稿,严格照做:【粘贴 SKILL.md】 | 只想试一次 |
接入时的四条注意
表格里的「谁做」:智能体 = 豆包那边;你 = 复制粘贴 + 跑命令;脚本 =
scripts/里随包提供的程序。
| 步 | 做什么 | 谁做 | 合格标准(可数) |
|---|---|---|---|
| 1 | 选题 | 智能体 | 见下 |
| 2 | 竞调 | 智能体 | 见下 |
| 3 | 定标题 | 智能体 | ≤64 字节 |
| 4 | 写正文 | 智能体 | 字数/段落/节奏达标 |
| 5 | 配图清单 | 智能体 | 每图有锚点原句 |
| 6 | 排版 HTML | 智能体 | 全内联 + 零禁项 |
| 7 | 封面文案 → 渲染两张 | 智能体给文案,脚本渲染 | 900×383 + 383×383 |
| 8 | 摘要 | 智能体 | ≤100 字 |
references/01-选题与竞调.md,、。·?!—;禁 emoji、禁生僻符号;title0 字段(后台标题框)里禁止出现双引号,需要引用一律用「」。最终标题.txt 后跑):python -c "t=open('最终标题.txt',encoding='utf-8').read().strip();print(len(t.encode('utf-8')),'/64')"
references/02-写作与合规红线.md正文.md 后跑):python -c "
t=open('正文.md',encoding='utf-8').read()
ps=[p.strip() for p in t.splitlines() if p.strip() and not p.strip().startswith(('#','>','|','-'))]
print('正文段落数',len(ps))
print('超 60 字的段:',[p[:16] for p in ps if len(p)>60])
print('句号超 2 个的段:',[p[:16] for p in ps if p.count('。')>2])
print('短段(≤15字)处数',sum(1 for p in ps if len(p)<=15))
print('“你”出现',t.count('你'),'次')
"
references/02-写作与合规红线.md| 图N | 正文锚点原句(逐字复制) | 这张图讲什么 | 生成方式 |
[图片N] 占位符、配图清单的「图N」、图注的「图N」。references/03-排版与配图.mdassets/design-template.html 的结构,样式全部内联写在标签的 style="..." 里。<style> 块/禁 flex/禁 position:absolute/禁 grid/禁 <div>(微信渲染会丢样式、错位重叠)。<p style="font-size:15px;color:#3D3D3A;line-height:1.95;margin:14px 0;" data-pm-slice="0 0 []"><span leaf="">文字</span></p>
data-pm-slice 是公众号编辑器(ProseMirror)用来标记「这段话是普通段落、没被拆分」的属性;<span leaf=""> 表示这一段是叶子节点。两个都带上,否则入稿后样式可能被丢掉。
<img src="[图片1]" style="width:100%;display:block;border-radius:8px;margin:18px 0;" alt="图1:这张图讲什么">
在 HTML 里裸写 [图片1](不包在 <img src=""> 里)→ 替换后会变成正文里一行裸露的文字,图不显示。
排版.html 后跑):python -c "
import re
h=open('排版.html',encoding='utf-8').read()
print('style 块',h.count('<style'),'| div',len(re.findall(r'<div',h)),'| flex',h.count('flex'),'| absolute',h.count('absolute'),'| grid',h.count('grid'))
print('HTML 注释',h.count('<!--'),'| 未替换的〔〕占位',len(re.findall(r'〔[^〕]*〕',h)))
print('图片占位',re.findall(r'\[表头图\]|\[图片\d+\]',h))
for t in ('section','p','span','img'):
print(t,'开',len(re.findall('<'+t+'[ >]',h)),'闭',len(re.findall('</'+t+'>',h)))
"
期望:style 块 0 | div 0 | flex 0 | absolute 0 | grid 0、注释 0、〔〕 残留 0、section/p/span 开闭数相等、图片占位数 = 1 表头 + N 正文。
references/03-排版与配图.mdpython scripts/render_cover.py --title "文章标题" --out-dir ./out
references/04-封面规范.md摘要.txt,随命令传给脚本(见第 ⑥ 节 --digest-file)。每次交稿必须一次给全 6 项,缺一项视为未完成。交付形式:在对话里按 ①~⑥ 顺序输出,③排版 HTML 必须放在单独一个代码块里(块内不要有任何 Markdown 转义,便于整块复制)。
| # | 交付物 | 规格 | 你要做的动作 |
|---|---|---|---|
| ① | 标题候选 | 5 个,每个标 (N字节);另起一行「最终标题:___」;说明推荐哪个及理由 | 存 最终标题.txt |
| ② | 正文 | 纯文本 Markdown。首行 # 标题;小标题 ## ;引用 > ;分隔线 ---。正文里不放任何图片占位符 | 存 正文.md |
| ③ | 排版 HTML | 以 assets/design-template.html 为底稿的完整 HTML,全内联样式 | 存 排版.html |
| ④ | 配图清单 | 一行一张:图N|正文锚点原句|图讲什么|生成方式 | 存 配图清单.md |
| ⑤ | 封面文案 | 主标题 ≤12 字/副题 ≤14 字/方图文字 ≤6 字 | 传给 render_cover.py --title |
| ⑥ | 摘要 | ≤100 字 | 存 摘要.txt |
建议的存盘命名(执行端按你给的文件名读,命名随意,但要和命令对上):
YYYYMMDD_选题关键词_标题.txt / _正文.md / _排版.html / _配图清单.md / _封面文案.md / _摘要.txt
免责声明模板(换成你自己的说法,别删这一块):
免责声明:本文为公开信息整理与个人观察,数据均来自公开报道,可能存在误差;不构成投资建议、经营建议或法律意见,涉及具体专业问题请咨询专业人士。
能力边界(写给人设看,防止智能体吹牛):智能体产出的是可直接送入公众号的成品排版,不是「已发布」。入草稿箱由你电脑上的脚本完成。所以它不能承诺「已发布」,也不该向你要任何后台账号密码。
【待补真实素材:___】 留白。直接引语指不到信源就改成间接转述。署名(文|〔你的署名〕)+ 免责声明 + 资料参考行(只写「媒体名 + 日期」,不带链接)。
scripts/目录是随包提供的执行端程序,在你自己电脑上跑。四条命令的顺序就是工作顺序。 环境准备(Python 版本、装依赖、装浏览器内核)见README-快速开始.md。
# 1) 登录(首次/掉线时):开一个可见 Chrome,窗口摆进屏幕,微信扫码,登完自动导出 cookie
python scripts/gzh_login.py --profile ./gzh-profile --port 9333
# 2) 渲染封面(出两张:首图 + 方图)
python scripts/render_cover.py --title "文章标题" --out-dir ./out
# 3) 入草稿箱(md 或 html 二选一;封面必填;摘要建议给文件)
python scripts/gzh_save.py --title "标题" --md 正文.md --cover ./out/cover_900x383.png \
--digest-file 摘要.txt --profile ./gzh-profile --port 9333
# 成功必须打印:DRAFT_OK appmsgid=<数字>
# 4) 回读验证(唯一验收判据)
python scripts/gzh_verify.py --appmsgid <数字> --profile ./gzh-profile --port 9333
# 必须打印三项核对结果:标题一致 / 图片数 / 正文非空
三条使用要点:
--profile 指定的目录里;掉线了重跑第 1 条即可。--md 与 --html 二选一(给了排版 HTML 就用 HTML,二选一不要同时给)。想确认当前脚本支持哪些参数,先跑 python scripts/gzh_save.py --help。./gzh-profile、./out、正文.md 都是示例路径,按你的实际情况改;同一个 --profile 目录不要同时被两个实例使用(浏览器 profile 锁)。三条铁律:
DRAFT_OK appmsgid=<数字> 只证明「请求成功」,不证明「稿子对」。 唯一的验收判据是第 4 条命令的回读输出。最终标题.txt 逐字一致)、图片数(= 1 表头 + N 正文插图)、正文非空(不是只有标题的空壳)。开工前的 10 秒预检(不启动浏览器,只问一句「还能不能发」):
python scripts/gzh_login.py --check --profile ./gzh-profile
打印 LOGIN_ALREADY → 直接干;打印 LOGIN_REQUIRED ... → 先扫码,再动笔。
发布前最后一分钟,自己过一遍这张表:
| 核 | 判据 |
|---|---|
| 标题 | 与 最终标题.txt 一致,≤64 字节,无双引号 |
| 正文 | 回读里正文非空;段落节奏与交付时一致 |
| 图片 | 回读里 <img 数 = 1 表头 + N 正文;图不裂(裂图表现为高度 0) |
| 封面 | 首图 900×383 + 方图 383×383 都上传成功;分享卡片的方图能独立读懂 |
| 摘要 | 就是你写的那句(没被自动截正文首句覆盖) |
| 红线 | 第 ⑤ 节逐条过一遍;三样必备(署名 / 免责 / 资料参考)齐全 |
| 问题 | 答案 |
|---|---|
| 智能体说「我无法执行命令、无法打开网页」 | 正常,这两层就是分开的。它交稿,你跑命令。 |
| 要不要去申请公众号开发者接口(申请标识与密钥、配 IP 白名单)? | 不要。本方案走后台内部接口,不碰官方开发接口,所以也没有「出口 IP 变了报 40164」这类问题。详见 references/05-登录与入稿通道.md |
| 登录窗口没出现,或窗口跑到屏幕外面了 | 脚本会尝试把窗口摆回屏幕内;若还不行,手动最小化其他窗口或改 --port 重跑。见 references/06-坑清单.md |
| 扫了码没反应 | 二维码约 2-5 分钟就失效,重新跑登录命令出新的码;另外确认扫码的是管理员本人微信。 |
第 3 条命令报 DRAFT_OK,但草稿箱里找不到 | 平台 token 已过期(模板会过期)。重跑登录命令刷新登录态,再入一次。 |
| 摘要不是我写的那句 | 后台默认「自动用正文开头当摘要」。执行端会把 auto_gen_digest0 设为 0 再写 digest0;若仍被覆盖,见 references/06-坑清单.md |
| 草稿里的排版乱了 / 图片不显示 | 先看是不是在后台编辑器里打开并保存过(保存会重排);其次是排版 HTML 里出现了禁用的 <div>/<style>/flex。 |
| 封面被裁掉一块 | 用了 900×500,或文字没放进中间安全区。见 references/04-封面规范.md |
| 封面文字有错字 | 用了文生图出中文。中文必须 HTML 叠字渲染。 |
| 正文里想放外部链接 | 未认证的个人订阅号没有外链权限,正文和「阅读原文」都放不了外网地址;引导改成站内动作。 |
| 稿子能不能自动群发? | 本方案只到草稿箱,群发由你在后台点(公众号群发每天有次数限制,不适合全自动)。 |
| 我能写几篇? | 建议一篇一个话题、一篇一次对话。同一对话里连着写多篇,智能体会串味(重复用同一个开头和句式)。 |
| 文件 | 什么时候看 |
|---|---|
README-快速开始.md | 第一次装环境、第一次跑通四条命令 |
references/01-选题与竞调.md | 不知道写什么、或想确认选题能不能写 |
references/02-写作与合规红线.md | 写标题、写正文、写完做合规自查 |
references/03-排版与配图.md | 排版 HTML 怎么写、配图怎么定、自检脚本全文 |
references/04-封面规范.md | 封面两张的尺寸/版式/配色/叠字渲染 |
references/05-登录与入稿通道.md | 想搞懂「为什么不用官方 API」、登录态与失败排查 |
references/06-坑清单.md | 任何一步报错,先来这里对号入座 |
assets/design-template.html | 排版底稿,直接照抄结构 |
九品锦锂e | 把踩过的坑封装成"拿来就能跑"的 skill,不写教科书。这个 skill 是我自己每天在用的版本。
微信:ly5419495(加时备注「SkillHub」,我优先通过) 公众号:初五Agent(微信搜一搜,复盘和方法都写在那儿,不加微信也能读)
我另外做的几个能直接跑的工具,都放在这个货架页(复制到浏览器打开): https://skillpay.alipay.com/public/jiupinjinlie
用的时候卡住了、或者有别的场景想让我封装成 skill,按上面任意方式找我就行。
