Knowledge Base Skill
支持图片附件与OCR的文字提取,按业务类型管理问答知识库。
通过本地客户端控制96Push,实现多平台内容发布与管理。
openclaw skills install @xsxs89757/96push命令、参数、文件名以原文为准
通过附带的脚本,可经由 96.cn 的 HTTPS 代理控制用户本地的 96Push 桌面客户端。此技能可能影响已登录的社交媒体账号,请将发布、删除、取消队列、平台设置更改等操作视为高影响行为。
update、publish、delete-article、cancel-queue、create-plat-set、update-plat-set 或 delete-plat-set 命令。PUSH_API_KEY 粘贴到聊天中。建议用户将密钥本地存储在环境变量或 ~/.openclaw/.env 文件中。 - 环境变量:PUSH_API_KEY
- ~/.openclaw/.env 文件中添加一行:PUSH_API_KEY=pk_...
1. 从 [https://push.96.cn](https://push.96.cn) 下载 96Push
2. 启动并登录
3. 进入个人资料(左下角头像)→ API 密钥 → 生成
4. 将密钥本地添加至 ~/.openclaw/.env 或 PUSH_API_KEY;除非用户明确希望代理写入该文件,否则不要将其粘贴到聊天中。
所有命令通过 python3 {baseDir}/scripts/96push.py <command> [options] 执行。
# 健康检查
python3 {baseDir}/scripts/96push.py check
# 平台信息
python3 {baseDir}/scripts/96push.py platforms
python3 {baseDir}/scripts/96push.py platforms --article
python3 {baseDir}/scripts/96push.py platforms --video
# 账号信息
python3 {baseDir}/scripts/96push.py accounts
python3 {baseDir}/scripts/96push.py all-accounts
# 内容查询
python3 {baseDir}/scripts/96push.py articles --page 1 --size 10 --status 1
python3 {baseDir}/scripts/96push.py article --id 42
# 发布记录
python3 {baseDir}/scripts/96push.py records --page 1 --size 10
python3 {baseDir}/scripts/96push.py record --id 7
# 仪表盘数据
python3 {baseDir}/scripts/96push.py dashboard
python3 {baseDir}/scripts/96push.py overview
python3 {baseDir}/scripts/96push.py user
# 平台配置
python3 {baseDir}/scripts/96push.py plat-sets --pid 3
# 平台发布规则(离线可用,无需 API 密钥)
python3 {baseDir}/scripts/96push.py rules --list
python3 {baseDir}/scripts/96push.py rules --platform wechat --type article
python3 {baseDir}/scripts/96push.py rules --platform wechat,zhihu --type articleOpenClaw 运行于服务器环境,无法读取用户本地路径(如 /Users/... 或 C:\...)。在使用 thumb、files 或文章正文中的图片前,必须先将图片转为 URL。
upload 命令返回的是 96Push 本地图片 URL(如 http://127.0.0.1:.../pix/...),该链接由用户本地 96Push 客户端支持。上传操作会将运行时环境中的文件发送至 96Push,因此需要在执行前获得用户的明确同意。
python3 {baseDir}/scripts/96push.py upload --file "/workspace/uploads/cover.png" --confirm# 内容类型可省略,若 `--files` 明确包含图片或视频
# 视频文件(.mp4/.mov/.avi/.mkv/.webm/.m4v/.flv/.wmv)将自动识别为 --type video
# 文章 —— 需提供标题 + Markdown(或 HTML 内容)
python3 {baseDir}/scripts/96push.py create --type article --title "标题" --markdown "# 内容" --desc "摘要"
# 带封面图的文章
python3 {baseDir}/scripts/96push.py create --type article --title "标题" --markdown "# 内容" --thumb '["https://example.com/cover.jpg"]'
# 图文组合(graph_text)—— 需提供标题 + 至少一个图片 URL
python3 {baseDir}/scripts/96push.py create --type graph_text --title "图集" --files '["url1","url2"]'
# 视频 —— 需提供标题 + 一个视频 URL,强烈建议提供描述
python3 {baseDir}/scripts/96push.py create --type video --title "视频" --files '["video_url"]' --desc "视频描述"
python3 {baseDir}/scripts/96push.py create --title "视频" --files '["https://example.com/video.mp4"]' --desc "视频描述"更新操作会修改 96Push 中管理的内容,删除操作具有不可逆性。两者均需在执行前获得用户明确同意。
python3 {baseDir}/scripts/96push.py update --id 42 --title "新标题" --markdown "# 新内容" --confirm
python3 {baseDir}/scripts/96push.py delete-article --id 42 --confirm发布为高影响操作。在执行前,必须向用户清晰展示具体内容、目标账号列表、草稿/发布状态及相关设置。只有在获得用户明确批准后方可执行。
python3 {baseDir}/scripts/96push.py publish --type article --id 42 --accounts "1" --confirm
python3 {baseDir}/scripts/96push.py publish --type video --id 42 --accounts "5" --confirm--type,脚本将读取内容详情并自动推断为 article、graph_text 或 video--show-rulespython3 {baseDir}/scripts/96push.py publish --type article --id 42 --accounts-json '[{"id":1,"platName":"微信公众号","settings":{"publishType":"publish","origin":false}}]' --confirm --show-rulespython3 {baseDir}/scripts/96push.py publish --type article --id 42 --accounts "1,5" --draft --confirm --confirm-multi-accountpython3 {baseDir}/scripts/96push.py poll --id 7
python3 {baseDir}/scripts/96push.py poll --id 7 --interval 10 --max 30平台配置更改会影响未来的发布行为,必须经过用户明确确认。
# 创建可复用的配置
python3 {baseDir}/scripts/96push.py create-plat-set --pid 1 --name "公众号默认" --setting '{"publishType":"publish","leave":true}' --confirm
# 更新配置
python3 {baseDir}/scripts/96push.py update-plat-set --sid 1 --pid 1 --name "公众号原创" --setting '{"publishType":"publish","origin":true}' --confirm
# 删除配置
python3 {baseDir}/scripts/96push.py delete-plat-set --sid 1 --confirmcheck —— 确认客户端在线accounts —— 列出可用账号,供用户选择目标rules —— 在创建设置或选择封面图前,读取目标内容类型的各平台规则文件create —— 创建内容(详见内容创建规则)publish --confirm —— 提交并等待结果(仅调用一次,见下文关键规则)。使用 --confirm-multi-account 前需用户确认所有目标账号。该命令会自动轮询直至完成,无需单独调用 poll**⚠️ 每个内容批次对同一组账号最多只能调用一次 publish**
发布命令触发浏览器自动化操作,耗时约 30–60 秒。脚本内置保护机制,若已有任务运行则拒绝重复提交。请严格遵守以下规则:
publish 命令现已自动等待完成——提交任务后持续轮询直至结束。除非使用 --no-wait,否则无需单独调用 poll。--confirm。--confirm-multi-account。PUBLISH_ALREADY_RUNNING**,不要重试。请等待当前任务完成。publish --confirm(仅一次,自动等待)→ 向用户报告结果CLI 现已对 create/update 请求进行验证并最小化数据包:
files 字段;图文/视频类内容不发送 markdown 或 content 字段thumb 和 files 仅接受完整的 HTTP(S) URL,拒绝本地路径或 base64/data URLgraph_text 至少需要一个图片 URL 在 files 中video 必须且仅能包含一个视频 URL 在 files 中article 必须提供 markdown 或 content 内容在为特定平台创建内容前,请先查阅其规则文件:
python3 {baseDir}/scripts/96push.py rules --platform <platform> --type <article|graph_text|video>| 字段 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| title | string | 是 | 内容标题 |
| desc | string | 否 | 描述/摘要 |
| content | string | 条件 | HTML 格式内容(文章类需要) |
| markdown | string | 条件 | Markdown 源码(文章类需要) |
| autoThumb | bool | 否 | 自动从内容中提取封面(默认为 true) |
| thumb | string[] | 条件 | 封面图 HTTP(S) URL 列表。本地图片需提前上传/托管;不支持本地路径或 base64/data URL |
| files | string[] | 条件 | 媒体文件 HTTP(S) URL 列表——仅用于图文类图片和视频媒体。文章类不使用此字段 |
类型选择规则:
--type video。--type,CLI 会根据 --files 或现有内容详情自动推断类型。--type article 和 files,CLI 会以明确指定的文章类型为准,拒绝/忽略错误放置的媒体文件,而不是静默创建 graph_text/video 内容。文章 (Article):
title + content(HTML 格式)或 markdownautoThumb: true 自动从内容中的图片提取,或提供明确的 thumb 图片 URL。files** 用于文章 —— files 仅用于 graph_text/video。文章中的图片应放入 markdown/content 正文,封面图放入 thumb。图文/图集 (Graph Text):
title + files(图片 URL 数组,至少 1 个)thumb 为空,则自动使用第一张图片生成。视频 (Video):
title + files(包含且仅包含 1 个视频 URL 的数组)thumb 为空,则从视频帧中自动生成。多数平台要求封面,请尽可能提供。仅供参考。准确信息请查阅 references/platform-rules/<platform>.md。
| 平台 | 文章封面 | 图文封面 | 视频封面 |
|---|---|---|---|
| 微信公众号 (wechat) | 必须(1 张图片) | 从图片自动生成 | 必须 |
| 抖音 (douyin) | 不适用 | 自动 | 从视频自动生成 |
| 今日头条 (toutiaohao) | 必须(1-3 张图片) | 自动 | 自动 |
| 小红书 (xiaohongshu) | 不适用 | 从图片自动生成 | 自动 |
| Bilibili (bilibili) | 可选(headerImg) | 自动 | 必须 |
| 知乎 (zhihu) | 可选 | 自动 | 自动 |
| 百家号 (baijiahao) | 必须(1-3 张图片) | 自动 | 必须 |
| CSDN (csdn) | 可选 | 不适用 | 自动 |
| 微博 (sina) | 不适用 | 自动 | 自动 |
| 快手 (kuaishou) | 不适用 | 自动 | 自动 |
| 搜狐号 (sohuhao) | 从内容自动生成 | 自动 | 自动 |
规则:如有疑问,始终至少提供一个 thumb 图片。autoThumb: true 会尝试从内容中提取,但如果内容无图片则可能失败。
重要提示:thumb 和 files 仅接受 HTTP(S) URL。若文件已存在于 OpenClaw 运行时环境,请使用 upload --file ... --confirm 命令上传,然后在 thumb、files 或文章图片 src 中使用返回的 pix URL。如果图片仅存在于用户本地,请先通过 96Push/hosting 上传。切勿传递本地路径或 base64/data URL。
发布时,96Push 会将 thumb/files 的 URL 下载到任务本地文件,以便目标平台需要文件上传。文章正文中的图片仅在目标平台需要公开图片 URL 时上传至临时公共存储;该上传基于图片哈希缓存,有效期约 47 小时。
发布时,postAccounts 中每个账号都需要一个 settings 对象。不同平台所需字段不同。设置项需以 JSON 形式通过 --accounts-json 参数传入,或通过 plat-sets 预配置。
**在构建设置前,请仅阅读目标平台的规则文件 references/platform-rules/**。不要复制其他平台的设置,也不要包含空的或无关的字段,即使它们存在于通用参考中。
python3 {baseDir}/scripts/96push.py rules --platform toutiaohao --type article
python3 {baseDir}/scripts/96push.py rules --platform xiaohongshu,douyin --type video| 字段 | 类型 | 描述 |
|---|---|---|
| timerPublish | object | {"enable": true, "timer": "YYYY-MM-DD HH:MM:SS"} |
| lookScope | uint | 可见性:0=公开,1=好友,2=私密 |
| source | uint | 内容声明(AI/转载/原创,具体值因平台而异) |
| classify | string | 分类/栏目 |
| collection | string | 收藏夹/专栏 |
| origin | bool | 声明为原创 |
| labels/tag | string | 标签(分隔符因平台而异:/ 或 ,) |
wechat(微信公众号) — 文章/图文:
author:作者姓名publishType:"mass"(群发)或 "publish"(发布)origin:声明原创(默认为 false)leave:开启评论(默认为 true)wechat(微信公众号) — 视频(额外字段):
materTitle:素材标题barrage:开启弹幕turn2Channel:转为视频频道douyin(抖音):
allowSave:允许他人保存(默认为 true)lookScope:0=公开,1=好友,2=私密hotspot:关联热门话题music:背景音乐toutiaohao(今日头条) — 文章:
starter:头条专属内容syncPublish:同步发布至“微头条”collection,则不能使用定时发布。xiaohongshu(小红书):
origin: 声明原创source: 内容声明 — 0=无, 1=虚构/娱乐, 2=AI生成, 3=正文中标注, 4=自拍, 5=转载来源reprint: 媒体/来源名称,仅在 source=5 时使用。禁止同时设置 origin=true 与 source=5。mark: 标记用户/位置 {"user": true, "search": "关键词"}lookScope: 0=公开, 1=好友可见, 2=私密暂存离开;发布点击 发布 或 定时发布bilibili (哔哩哔哩) — 视频/图文内容:
partition: 分区/栏目(重要!)reprint: 转载来源(空 = 自制内容)creation: 是否允许衍生创作dynamic: 粉丝通知文案bilibili (哔哩哔哩) — 文章:
classify: 栏目分类headerImg: 封面图 URLlabels: 标签(最多10个)zhihu (知乎) — 文章:
question: 提交至某个问题source: 创作声明 — 0=无, 1=剧透, 2=医疗, 3=虚构, 4=财经, 5=AI辅助topic: 文章话题(最多3个,用 / 分隔)collection: 栏目名称origin: 来源类型 — 0=无, 1=官网, 2=新闻报道, 3=电视媒体, 4=纸质媒体/api/articles/drafts 接口响应;发布等待 POST /content/publish 接口响应。classify;reprint=true 表示转载,false 表示原创。定时发布时间:现在 +1小时 ~ 14天。omtencent (腾讯内容开放平台) — 文章/视频:
classify: 分类。稳定测试时,请使用 科技 作为文章分类。labels: 标签,用 / 分隔,最多9个,每个标签不超过8个汉字。activity: 平台活动关键词。source: 内容声明 — 1=AI生成, 2=虚构/娱乐, 3=互联网来源, 4=个人观点, 5=旧闻。空或0当前默认为4。baijiahao (百家号):
classify: 分类格式为 "一级/二级"byAI: AI创作声明csdn (CSDN) — 文章:
labels: 标签(用 / 分隔,最多7个)artType: 0=原创, 1=转载, 2=翻译originLink: 转载内容必需填写juejin (掘金):
tag: 必填 — 至少需有一个标签classify: 分类kuaishou (快手):
sameFrame: 允许他人使用相同画面拍摄download: 允许下载sameCity: 显示在同城动态中sina (新浪微博) — 视频/图文内容:
type: 0=原创, 1=衍生, 2=转发stress: 是否允许添加亮点(默认为 true)wait: 发布前等待 X 秒sina (新浪微博) — 文章:
onlyFans: 仅粉丝可查看全文(默认为 true)sohuhao (搜狐号) — 文章/图文/视频:
classify: 属性/分类 — 观点评论/故事传记/消息资讯/八卦爆料/经验教程/知识科普/测评盘点/见闻记录/运势/搞笑段子/美图/美文declaration: 来源声明 — 0=无特别声明, 1=引用声明, 2=包含AI创作内容, 3=包含虚构创作topic: 话题关键词(基于搜索)loginView: 需登录才能查看全文(默认为 false)| 平台 | 最短延迟 | 最长延迟 |
|---|---|---|
| 现在 + 5 分钟 | 7 天 | |
| toutiaohao | 现在 + 2 小时 | 7 天 |
| baijiahao | 现在 + 1 小时 | 7 天 |
| csdn | 现在 + 4 小时 | 7 天 |
| acfun | 现在 + 4 小时 | 14 天 |
| pinduoduo | 现在 + 4 小时 | 7 天 |
| sohuhao | 现在 + 1 小时 | 7 天 |
| tiktok | 现在 + 2 小时 | 30 天 |
📤 发布结果 (记录 #7)
✅ WeChat (@AccountA) — 成功,耗时 12秒
✅ Zhihu (@AccountB) — 成功,耗时 8秒
❌ Baijiahao (@AccountC) — 失败:登录已过期
成功:2/3,失败:1/3📋 已登录账号:
1. WeChat - AccountA (ID: 1) [文章, 图文]
2. Douyin - AccountB (ID: 5) [视频, 图文]
3. Bilibili - AccountC (ID: 8) [文章, 视频, 图文]poll 等待当前任务完成。"PUBLISH_ALREADY_RUNNING → 任务已在进行中。请根据错误响应使用 poll --id <active_record_id>。不要再次调用 publish。poll 查询状态。"login=false → "账号登录已过期,请在 96Push 客户端重新登录"--confirm--confirm-multi-account--confirmheadless: truethumb 和 files 字段必须为 HTTP(S) URL;不得传递用户本地路径或 base64/data URLrules --platform ... --type ... 并遵循该平台规则文件publish 多次。** 每次调用都会创建一个真实的浏览器自动化任务。重复调用会导致多个浏览器争夺同一页面,全部失败,甚至可能造成客户端崩溃。publish。** 若发布失败,请将错误信息报告给用户;若轮询超时,请告知用户超时情况。由用户自行决定后续操作。publish 现已自动等待并轮询。仅当显式使用了 --no-wait 或需要检查现有发布记录时,才使用 poll。已收录 1 个 Skill