Install
$ agentstack add skill-zimablueai-skills-gzh-channel ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
频道对话 · 公众号排版并发回当前会话 (gzh channel delivery)
> 一句话:用户在飞书频道里丢来一篇文章,你(OpenClaw)把它整理成 Markdown 草稿 > → 用 interactive 卡片(代码块形式) 发回让用户确认 → 确认后调 gzh-design > 排版成公众号 HTML → 用 gzh_send.sh 把带「一键复制」按钮的预览页发回 > 当前这个会话。用户下载、浏览器打开、点复制、粘贴进公众号编辑器,完事。 > > 频道适配器:当前实现 = 飞书 / Lark(优先复用 lark-cli 令牌,回退 REST)。 > 加其它通道在 scripts/gzh_card_send.py 里按相同结构加 adapter。
本技能不自己写排版 HTML——主题、组件、校验全是 gzh-design 的职责。 本技能负责的是频道里的收稿 → 草稿确认 → 触发排版 → 频道交付这条链路。
何时触发
用户在飞书频道(单聊或群,群里需 @机器人)里:
- 发来一篇文章(消息正文 / .md / .docx / .pdf / .txt)+ 说"排成公众号 / 公众号排版 / 微信排版"
- "把这篇排一下发我" / "帮我排个公众号版本" / "转成公众号格式"
- 只说"公众号排版"没给文章 → 先要文章,再走流程
→ 这就是 收稿 → 草稿确认 → 排版 → 交付 四步连做。
依赖的生成技能(必须已安装)
| 你要做的 | 用哪个技能 | 装没装 | |---------|-----------|-------| | 公众号排版(主题/组件/校验/预览页) | gzh-design | 必装 |
装法见同目录 install-openclaw-skills.sh / .ps1(默认一并安装)。 没装就先装,别自己硬写公众号 HTML——`` 包裹、平台过滤项、双关卡校验都在 gzh-design 里。
工作流(频道里逐步执行)
第 0 步 · 确认你在频道里 & 拿到当前 chat_id
成品要发回用户正在跟你说话的这个会话。当前 chat_id 通常在环境变量里 (FEISHU_CHAT_ID / OPENCLAW_CHAT_ID 等,脚本自动解析);解析不到时从这条 飞书消息的事件上下文里取 chat_id(群是 oc_ 开头),交付时用 --to --to-type chat_id 显式传。平台细节见 viz-channel 的 references/openclaw-channel.md(两技能共用同一套 chat 解析)。
第 1 步 · 收稿 → 整理成 Markdown 草稿
用户给的可能是:飞书消息里的纯文本长文、.md、.docx、.pdf、.txt。
- 按 gzh-design 的
references/format-normalize.md把非 Markdown 输入归一化成
Markdown 草稿(docx 用其 scripts/extract_docx.py;纯文本按标题启发式推断结构)。
- 草稿要素:文章标题(
#)、章节(##)、开头引言(>)、加粗/图片/代码块原样保留。 - 不改写用户的实质内容——只做结构化(补标题层级、分段),文字照抄。
- 保存为本地
draft-.md。
第 2 步 · Markdown 草稿发回用户确认(interactive 卡片)
这是本技能的核心环节:排版前必须让用户确认结构,避免排完才发现章节切错。
bash scripts/gzh_send.sh --draft draft-xxx.md --to-current
脚本行为(用户在飞书里看到什么):
- 短稿(≤6000 字符):一张 interactive 卡片 = 结构摘要(标题 / 章节列表 / 字数
/ 图片数)+ Markdown 全文代码块 + 底部提示「回复『确认』开始排版」。
- 长稿(>6000 字符):卡片放结构摘要 + 开头预览,随后自动补发完整
.md文件。 - 卡片发送失败(权限/组件不支持)自动回退为带代码围栏的文本消息,流程不断。
发完卡片后在频道里等用户回复:
- 「确认 / 可以 / 没问题 / OK」→ 进第 3 步。
- 提出修改(改标题 / 合并章节 / 删一段)→ 改
draft-xxx.md→ 重发确认卡片(回到本步)。 - 不要没等确认就直接排版(见反模式)。
第 3 步 · 选主题(一步确认,给足默认)
确认稿后,按 gzh-design SKILL.md 第 1 步的推荐制在频道里问一句: 「建议用 摸鱼绿(教程/盘点类首选),确认还是换?也有:红白(观点)/ 石墨极简(科技)/ 留白禅意 / 摸鱼票据 / 橄榄手记」。用户已指定主题或说「你定 / 直接排」→ 不问,自动选最契合的。
第 4 步 · 排版(交给 gzh-design)
触发 gzh-design 技能完整流程:读主题组件库 + 通用增量库 → 解析结构装配 HTML → 跑 validate_gzh_html.py 到 ERROR×0(半角标点 WARNING 也清零)→ wrap_preview.py 生成带「一键复制」按钮的 _预览.html。
产物两个文件:{名}_排版_{主题}({标识}).html(干净正文,兜底用)+ {...}_预览.html(主交付)。 做完先核对两个文件真的生成了(路径存在、大小合理),再进交付。
第 5 步 · 发回当前频道
bash scripts/gzh_send.sh \
--file "文章_排版_摸鱼绿(moyu-green)_预览.html" \
--file "文章_排版_摸鱼绿(moyu-green).html" \
--to-current \
--note "公众号排版好了 ✦ 下载「_预览.html」用浏览器打开 → 点右上角「一键复制」→ 到公众号编辑器 Ctrl/⌘+V 粘贴即可,样式不会丢。另一个文件是干净正文,手动粘贴兜底用。"
Windows 上把 bash scripts/gzh_send.sh 换成 pwsh scripts/gzh_send.ps1(参数相同)。
附言铁律(发 HTML 必带):
- 「下载后用浏览器打开」——飞书内直接点开看不到复制按钮。
- 「点右上角一键复制 → 公众号编辑器粘贴」——这是整条链路的终点动作。
第 6 步 · 回执 + 修改循环
文件发出(脚本退出码 0)后回一句:用了什么主题、发了哪两个文件、怎么用。 用户看完要改(换主题 / 改某段 / 加图)→ 改 draft-xxx.md 或直接改排版 → 重跑第 4、5 步。换主题不用重新确认草稿,直接重排。
一图流
用户: 发来文章 +「排成公众号发我」
│
▼ 第1步 整理成 Markdown 草稿 (format-normalize / extract_docx)
▼ 第2步 gzh_send.sh --draft → interactive 卡片(代码块) ←──┐
│ 用户:「第3章拆成两章」→ 改 draft 重发 ────────────┘
│ 用户:「确认」
▼ 第3步 选主题(推荐制,一步确认)
▼ 第4步 gzh-design 排版 → validate ERROR×0 → wrap_preview
▼ 第5步 gzh_send.sh --file _预览.html --file 正文.html --to-current
▼ 第6步 回执:「浏览器打开 → 点复制 → 公众号粘贴」
凭证与权限(自动找,一般不用配)
与 viz-channel 完全同源:命令行 → 环境变量 FEISHU_APP_ID/SECRET → ~/.bodhi/config.yaml → ~/.lark-cli/config.json;--via auto 优先复用 lark-cli 令牌。
发送方 app 需要权限:im:message、im:message:send_as_bot、im:resource(上传文件)。 interactive 卡片无需额外权限(走同一 im:message)。
边界 & 反模式
- 卡片体积:全文内嵌上限默认 6000 字符(
--max-inline可调),更长自动走「大纲卡片 + .md 附件」,别硬塞。 - ❌ 没等用户确认草稿就排版——结构错了排完全废,确认卡片是必经步骤(用户明说「直接排不用确认」除外)。
- ❌ 跳过
validate_gzh_html.py就交付——粘贴掉格式的锅全在这步。 - ❌ 发 HTML 不提醒「下载用浏览器打开 + 点复制按钮」——用户在飞书里直接点会以为坏了。
- ❌ 文件没真发成功(退出码非 0)就说「已发给你」。
- ❌ 自己硬写公众号 HTML 跳过 gzh-design——`` / 平台过滤项 / 全角标点都会踩坑。
- ❌ 把 app_secret 写死进命令或提交进库。
- 卡片上不放交互按钮(确认走文字回复)——按钮回调需要网关额外接卡片回传事件,文字回复零配置可用。
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: ZimaBlueAI
- Source: ZimaBlueAI/skills
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.