ZeeLin 知乎自动发布 📝
用户给一个选题 → 小龙虾爬取信息、整理成深度有创新的文章 → 展示给用户 → 用户说**「确定」「发布」** → 小龙虾用脚本在知乎写文章页自动填入标题和正文并点击发布。你只需登录知乎并点一次确定。
⚠️ 避免 request timed out(必读)
严禁在同一轮内既「爬取+成文」又「写文件+exec 发布」。单轮耗时过长会导致 request timed out。
必须拆成两轮:
- 第一轮:只做爬取(web_fetch)+ 成文,把标题和正文发给用户,并说明:「请先登录知乎。确认无误后回复 『发布』,我再执行发布。」
- 第二轮:等用户回复「发布」后,只做「将正文写入
/tmp/zhihu_body.md+ exec 发布脚本(带 timeout 90000)」,不再重复爬取或成文。
即使用户一次说「爬取最新 AI 动态并发布到知乎」,你也先只完成爬取和成文并展示,等用户说「发布」后再执行发布。
飞书 / 易超时环境下的「轻量第一轮」:当用户说「爬取最新动态」并写知乎时,第一轮不要做大量爬取+整篇长文(容易单轮超时)。改为:至多 1~2 次 web_fetch,然后产出短稿(约 500~800 字)或「大纲 + 首段」,先快速回复;并说明:「这是首稿/大纲,需要全文请回复『展开成全文』,要发布请回复『发布』。」用户回复后再补全或发布,可显著降低 request timed out。
何时触发
- 「帮我发一篇知乎」「把这篇发到知乎」
- 「做个知乎选题:XXX」「以 XXX 为题写一篇知乎文章并发布」
- 「帮我写一篇知乎深度文,选题是 XXX,写好我确认后你发」
- 「知乎自动发布」「用小龙虾发知乎」
- 「爬取最新动态,写一篇知乎文章」「爬取最新动态写知乎」「根据最新动态写一篇知乎」
知乎 API 在哪调
- 开放平台:https://dev.zhihu.com/ — 注册应用、OAuth 2.0 获取
access_token。注意:知乎发布 API 目前仅对内侧用户开放,多数用户无法使用。 - 发布文章接口(内侧):一般为
POST https://api.zhihu.com/v4/articles。未开放前请用下方「网页端直接发布」。 - 本 skill 发布方式:
- API 发布(仅内侧可用):若环境变量已设置
ZHIHU_ACCESS_TOKEN,使用scripts/publish_via_api.sh。 - 网页端直接发布(推荐):使用
scripts/publish_article.sh,在已打开的知乎写文章页上填表并点击发布;配合 Browser Relay 可大幅缩短耗时、降低 request timed out(见下)。
- API 发布(仅内侧可用):若环境变量已设置
网页端直接发布(Browser Relay,参考 ClawHub zhihu-post)
与 ClawHub 上的知乎发帖 skill 思路一致:在网页端直接发布,由 Agent 控制已打开的浏览器标签页完成填表与点击,无需知乎开放 API。
推荐流程(耗时短、不易超时):
- 安装 OpenClaw Browser Relay:Chrome 扩展,让 Agent 控制你当前标签页。安装:
openclaw browser extension install,在 Chrome 加载该扩展;详见 Chrome extension (browser relay)。 - 先打开知乎写文章页:在 Chrome 打开 https://www.zhihu.com ,登录后进入「创作」→「写文章」,停留在空编辑器页(有标题框和正文区)。
- 挂上 Relay:在该标签页点击扩展图标,使 Badge 显示 ON(表示该页已交给 OpenClaw 控制)。
- 发布时:用户说「发布」后,用 已打开编辑器页 的方式执行脚本,即传
ZHIHU_ALREADY_ON_EDITOR=1,脚本不再打开知乎、不再点击「写文章」,只做:snapshot → 填标题 → 填正文 → 点发布。整体耗时可从 30~90 秒降到约 10~20 秒,显著降低飞书等环境的 request timed out。
exec 示例(已打开写文章页时):
{"tool": "exec", "args": {"command": "ZHIHU_ALREADY_ON_EDITOR=1 bash ~/.openclaw/workspace/skills/zeelin-zhihu-autopost/scripts/publish_article.sh \"文章标题\" /tmp/zhihu_body.md", "timeout": 60000}}
可选:用 browser 工具分步发布(不用 exec 脚本):若当前已 attach 知乎写文章页,可依次调用:browser snapshot → 从 snapshot 中找标题输入框与正文编辑区的 ref → browser type/fill 填入标题和正文 → browser snapshot 找发布按钮 ref → browser click 发布。每一步为单独工具调用,适合希望完全用 browser 控制的场景。
使用前准备(必读)
- 用户需先登录知乎(浏览器方式):用
exec或browser打开 https://www.zhihu.com ,让用户完成登录。若使用 网页端直接发布 + Browser Relay,用户在自己 Chrome 打开知乎写文章页并挂上扩展即可。 - 可选:若已知「写文章」直达链接,可先打开写文章页;发布时传
ZHIHU_ALREADY_ON_EDITOR=1可跳过导航,减少超时。
工作流程
Step 1:确认选题
用户给出选题(一句话或一个方向)。若未给,询问:「请给一个知乎文章选题或方向。」
Step 2:爬取信息并成文
- 优先用 web_fetch 抓取与选题相关的网页(如科技媒体、知乎话题页等 URL),获取最新内容。若 web_search 不可用(如缺少 Brave API 密钥),不要因此放弃任务:用 web_fetch 抓取你已知的新闻/资讯链接,或基于已有知识成文。
- 整理成一篇深度、有创新、结构清晰的文章(建议 1500~4000 字):
- 标题:吸引点击、概括主题
- 正文:分段、小标题、有论据与观点,可适当引用来源
- 不要在未获得用户确认前就发布。
Step 3:展示并请用户确认
把标题和正文全文发给用户,并说明:
「这是根据选题整理的文章。请先登录知乎(若尚未登录)。确认无误后回复 『确定』或『发布』,我会帮你在知乎上自动填入并发布。」
Step 4:用户说「确定」或「发布」后
4.1 必须先写入正文文件(否则会报「正文文件不存在」)
在调用发布脚本之前,必须把确认后的正文全文写入一个文件,例如 /tmp/zhihu_body.md 或 workspace 内路径(如 ~/.openclaw/workspace/zhihu_draft_body.md)。用 write 工具或 exec 写入均可,确保文件存在且内容为 Markdown 正文。
4.2 再执行发布脚本
先写正文到 /tmp/zhihu_body.md,再 exec 发布脚本。
- 若已配置 ZHIHU_ACCESS_TOKEN(推荐):用 API 发布,耗时短、不易超时,timeout 可设 15000~30000:
{"tool": "exec", "args": {"command": "bash ~/.openclaw/workspace/skills/zeelin-zhihu-autopost/scripts/publish_via_api.sh \"文章标题\" /tmp/zhihu_body.md", "timeout": 30000}}
- 未配置 token:用浏览器脚本。若用户已打开知乎写文章页并挂上 Browser Relay,用
ZHIHU_ALREADY_ON_EDITOR=1,timeout 可设 60000;否则完整流程需 timeout 90000 或 120000:
{"tool": "exec", "args": {"command": "ZHIHU_ALREADY_ON_EDITOR=1 bash ~/.openclaw/workspace/skills/zeelin-zhihu-autopost/scripts/publish_article.sh \"文章标题\" /tmp/zhihu_body.md", "timeout": 60000}}
或(未预先打开写文章页时):
{"tool": "exec", "args": {"command": "bash ~/.openclaw/workspace/skills/zeelin-zhihu-autopost/scripts/publish_article.sh \"文章标题\" /tmp/zhihu_body.md", "timeout": 90000}}
❌ 错误:未先写入文件就直接执行(会报「正文文件不存在」);或浏览器方式未传 timeout 导致 request timed out。
✅ 正确:先写正文到 /tmp/zhihu_body.md,再 exec;已打开写文章页时加 ZHIHU_ALREADY_ON_EDITOR=1 可缩短耗时。
Step 5:回报结果
根据 exec 输出告诉用户:发布成功 / 失败;若失败,提示用户检查是否已登录、是否在写文章页,或重试。
exec 命令速查
| 操作 | 命令与 timeout |
|---|---|
API 发布(需 ZHIHU_ACCESS_TOKEN,仅内侧可用) | bash .../publish_via_api.sh "标题" /tmp/zhihu_body.md,args 加 "timeout": 30000 |
| 网页端发布(已打开写文章页 + Relay) | ZHIHU_ALREADY_ON_EDITOR=1 bash .../publish_article.sh "标题" /tmp/zhihu_body.md,args 加 "timeout": 60000 |
| 浏览器发布(从零打开页) | bash .../publish_article.sh "标题" /tmp/zhihu_body.md,args 加 "timeout": 90000 |
| 浏览器发布(标题 + stdin) | cat body.md | bash .../publish_article.sh "标题" -,args 加 "timeout": 90000 |
- API 脚本:仅知乎内侧可用;直接 POST 开放平台接口,数秒内完成。
- 网页端直接发布:用户先在 Chrome 打开知乎写文章页并挂上 Browser Relay,再执行脚本时加
ZHIHU_ALREADY_ON_EDITOR=1,只做填表+点击,约 10~20 秒,不易超时。 - 浏览器脚本(从零):打开知乎创作/写文章页 → 填入标题和正文 → 点击「发布」;耗时长,需 timeout 90000。
重要规则
- 未确认不发布:必须等用户明确说「确定」「发布」后再执行发布脚本。
- 先写文件再发布:执行 publish_article.sh 前,必须先将正文写入文件(如
/tmp/zhihu_body.md),再传该路径给脚本,否则会报「正文文件不存在」。 - 发布必须用 exec:用脚本统一完成打开页面、填入、点击发布,不要用 browser 工具一步步手动点。
- 登录由用户完成:不在脚本或 Agent 中输入知乎账号密码;只操作已登录状态下的写文章页。
- 无 web_search 时照常成文:若缺少 Brave Search API 密钥导致 web_search 不可用,用 web_fetch 抓取链接或基于知识成文,不要向用户报「需要 API 密钥」并停止任务。
- 两轮发布防超时:第一轮只成文并展示,等用户说「发布」后第二轮再写文件+exec;不要在同一轮内成文又发布,否则易 request timed out。
技术说明
- 知乎写文章页:通常从 https://www.zhihu.com 进入创作中心 → 写文章;或已知直达链接时直接打开。
- 脚本依赖
openclaw browser:打开页面、snapshot 找元素、type/fill、click 发布。 - 若页面结构变化导致找不到标题/正文/发布按钮,脚本会输出错误信息,便于排查或更新选择器。
- 若脚本报「未找到发布按钮」:通常标题和正文已填入编辑器,请用户在当前已打开的浏览器页面中手动点击「发布」或「发表」即可完成发布。