원클릭으로
zzhub-publish
编排 zzhub-pipeline 状态机完成内容发布。当用户需要发布微信公众号文章或图文消息、创建草稿、或管理发布任务时使用。覆盖完整的 prepare→render→publish 流程。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
编排 zzhub-pipeline 状态机完成内容发布。当用户需要发布微信公众号文章或图文消息、创建草稿、或管理发布任务时使用。覆盖完整的 prepare→render→publish 流程。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | zzhub-publish |
| description | 编排 zzhub-pipeline 状态机完成内容发布。当用户需要发布微信公众号文章或图文消息、创建草稿、或管理发布任务时使用。覆盖完整的 prepare→render→publish 流程。 |
zzhub-pipeline 状态机的编排层。CLI 通过 --view agent 输出告诉你要做什么,本 skill 覆盖具体怎么做,特别是需要 AI 判断的环节(写稿、审核、修订)。
开始前先确认 workspace 路径。按优先级尝试:
ZZHUB_PIPELINE_WORKSPACE_ROOTzzhub-pipeline config --key paths.workspaceRoot 读取配置中的默认值后续示例中用 {workspace} 表示 workspace 路径。
全局命令:zzhub-pipeline(或简写 zzp),安装后即可在任何目录执行。
严格按以下顺序执行,不许跳过或打乱:
zzhub-pipeline find-run --workspace {workspace} --active --view agentzzhub-pipeline status --state {state_path} --view agentnext_action.action 指定的动作(见下方各处理器)next_action.action 为 complete如果 find-run 返回空,先创建任务(见下方"任务创建")。
从 status --view agent 输出中读取 next_action,按匹配的处理器执行:
直接执行 ## Suggested Command 下的命令(已经是 zzhub-pipeline 格式),完成后重新 status。
适用动作:prepare、prepare-finalize、render、publish
任务需要正文内容。next_action.params 指明模式:
intent_text 描述了用户想要的内容。source_materials_path 有上游素材。先读完再写。重要:当 params.spawn 为 true 时(绝大多数情况),主 Agent 禁止直接写稿。 主 Agent 的职责是构建写作 Brief,然后 spawn sub-agent 在干净上下文中完成写作:
主 Agent 根据 intent_text、worker_mode 和用户原始需求构建写作 Brief,包含:
使用 Agent 工具 spawn sub-agent(类型选择 general-purpose),prompt 中只包含写作 Brief 和格式规范。不要把主对话中的无关上下文、CLI 输出、状态机细节带入 sub-agent。 Sub-agent 只需要知道"写什么"和"怎么写",不需要知道 zzhub-pipeline 的存在。
Sub-agent 完成写作后返回正文。主 Agent 检查正文是否符合格式要求(有无 ## 标题、段落是否简短等),同时从正文末尾提取封面高亮关键词(去掉 **封面高亮关键词**: 标记后得到逗号分隔的关键词列表)。然后通过以下命令交稿:
zzhub-pipeline attach-body --state {state_path} --body-text "{正文内容(去掉关键词行的纯净正文)}"
如果正文很长,先写到临时文件,然后用 --body {file_path} 代替。
重要: 后续执行 prepare 时,必须把提取到的关键词通过 --highlight-words 传入,这样 render 生成文字封面图时才会高亮这些词:
zzhub-pipeline prepare --state {state_path} --highlight-words "关键词1,关键词2"
如果 sub-agent 没有输出关键词或关键词格式异常,prepare 时会自动从标题中提取(fallback 行为),但人工选的关键词通常效果更好。
写稿格式要求(必须在 sub-agent prompt 中明确给出):
## 章节名 二级标题划分章节(公众号正文不用 # 一级标题)**粗体** 强调关键词、关键数据、重点句- 或 1. 组织列表和要点> 引用重要内容或金句写稿质量要求(必须在 sub-agent prompt 中明确给出):
**封面高亮关键词**: 关键词1, 关键词2。这些关键词必须来自标题中实际出现的词,选 1-2 个最有冲击力的。主 Agent 应 spawn sub-agent 进行独立审核,保持审核的客观性并避免主上下文污染。
主 Agent 构建审核 Brief:读取 source_body_path(或 formatted_body_path,如果存在)的正文,连同以下审核标准一起交给 sub-agent。
使用 Agent 工具 spawn sub-agent(类型选择 general-purpose),prompt 中只包含正文内容和审核标准,不包含主对话上下文。
Sub-agent 返回审核结论(passed / needs_revision)和具体反馈。
审核标准(写入 sub-agent prompt):
## 标题划分章节?是否有 **粗体** 强调重点?列表和引用格式是否恰当?主 Agent 根据 sub-agent 返回的结论执行:
zzhub-pipeline review --state {state_path} --status passedzzhub-pipeline review --state {state_path} --status needs_revision --feedback "具体修改建议..."反馈必须具体可操作,用中文写,明确指出需要修改的具体段落。
next_action.params.feedback 中包含修改意见。主 Agent 构建修订 Brief(原文 + 修改意见 + 格式要求),spawn sub-agent 在干净上下文中执行修订。
source_body_path 的正文,与 feedback 一起构建修订 Brief。Agent 工具 spawn sub-agent(类型选择 general-purpose),prompt 中只包含原文、修改意见、格式要求。zzhub-pipeline attach-body --state {state_path} --body-text "{修改后的正文}"
交稿后重新 status。下一步通常会是 review-content(重新审核)。
任务需要用户输入(如图片素材)。required_inputs 列出了需要什么。向用户询问,然后把用户提供的值替换到 {images_json_path} 等占位符中,执行建议的命令。
适用动作:attach-body-images
执行建议的 checkpoint 命令进行诊断,根据输出判断。如果任务已失败且无法恢复,告知用户并建议 reset --mode full。
适用动作:reset-or-repair、resolve-handoff
向用户报告最终状态:标题、路由、发布结果(如有)。任务完成。
适用动作:complete
当 find-run 返回空时,先创建任务。询问用户想发布什么内容,然后:
zzhub-pipeline init \
--workspace {workspace} \
--task-kind publish \
--content-form article \
--targets wechat \
--content-origin user \
--intent-text "{用户的中文需求描述}"
账号映射:
--account ancientone图文消息(图片合集)用 --content-form newspic --requires-render。
可选参数:
--existing-draft-media-id MEDIA_ID — 更新已有草稿而非新建--note-id NOTE_ID — 关联 Nezus note,发布成功后自动回调通知init 执行后 CLI 会输出 state_path。将其传给 status --view agent 继续循环。
当人类或外部系统已准备好 body 文件,通过 JSON 交接:
zzhub-pipeline ingest-handoff --file {handoff.json 的路径}
新建任务的 handoff JSON 必须包含 user_intent_text(用于路由解析):
{
"workflow_handoff": {
"mode": "new",
"content_form": "article",
"body_path": "/abs/path/body.md",
"target_account": "default",
"title": "文章标题",
"user_intent_text": "发公众号文章给大号,标题是..."
}
}
ingest 后 body 已自动挂载。运行 status --view agent 从 CLI 指示的位置继续——通常是 prepare(元数据完整时)或 review-content(review_policy 为 trust_user 时)。
CLI 命令失败时:
zzhub-pipeline checkpoint --state {state_path} 诊断workflow-state.json任务创建或发布前,可以用以下命令查看或删除微信草稿箱中的草稿:
# 列出最近 20 篇草稿(账号不传时使用 wx.defaultAccount 默认值)
zzhub-pipeline wx-drafts --limit 10
# 获取某篇草稿的完整内容(含 HTML)
zzhub-pipeline wx-drafts --media-id MEDIA_ID
# 删除一篇草稿
zzhub-pipeline wx-draft-delete --media-id MEDIA_ID
--account 参数可选,默认使用配置中的 wx.defaultAccount。指定账号:--account ancientone。
发布完成后,如果需要清理草稿箱(例如更新已有草稿后想删掉旧版本),用 wx-drafts 查到旧版 media_id,然后 wx-draft-delete 删除。
# 多目标(逗号分隔 route@account 格式)
zzp init --workspace ws \
--targets "wechat-article@default,wechat-article@ancientone,blog@default" \
--task-kind publish --content-form article --content-origin user
# 无 @ 时使用 --account 值
zzp init --workspace ws --targets "wechat-article,blog" --account ancientone
单目标时 publish_targets 为空(向后兼容)。多目标时写入 publish_targets,publish 阶段一次性并行发布。
任务完成后(mode=done),追加发布到其他账号/平台:
# 简写:同路由不同账号
zzp republish --state {state_path} --account ancientone
# 多目标
zzp republish --state {state_path} --targets "wechat-article@ancientone,blog@default"
# 混合
zzp republish --state {state_path} --account ancientone --targets "blog@default"
前置条件:
asset_path 存在(产物已生成)content_review.status = passed行为:
publish.results[]