新闻详情

新闻详情

首页 / 资讯中心 / 详情

xiaobei 项目 zhihu-publish 技能实战指南:基于 camoufox-cli 持久化 Session 的知乎文章与回答发布自动化

发布时间:2026/9/27 8:54:25来源:尧图网络
xiaobei 项目 zhihu-publish 技能实战指南:基于 camoufox-cli 持久化 Session 的知乎文章与回答发布自动化
人工智能AI Agent大模型AI 应用媒体生成【免费下载链接】xiaobei为OPC/中小微企业量身打造的自媒体获客智能体项目地址https://gitcode.com/gh_mirrors/wi/xiaobei点击查看免费下载zhihu-publish 是 xiaobei 项目中负责知乎平台内容发布的技能核心思路是由于知乎不向个人开发者开放发布 API只能通过浏览器自动化完成发布。本文完整讲解该技能的前置登录流程、发布文章与回答的完整操作序列、图片上传、创作声明设置、必做约束与错误处理并结合仓库内 forked camoufox-cli 的源码实现解释每个命令背后的底层机制帮助读者在 xiaobei 工作区内稳定、合规地落地知乎自动化发布。技能定位为什么知乎发布必须走浏览器自动化在 xiaobei 的内容矩阵中知乎与微信公众号、小红书、抖音等平台并列由 crews/main/BUILTIN_SKILLS 统一注册。与登录态集中管理不同知乎登录态由 zhihu-publish 技能自管不依赖 login-manager 技能——该技能只托管 douyin / bilibili / kuaishou / xhs-browse 四个平台的中央 cookieUA 存储。zhihu-publish 的登录态闭环在持久化 session profile 中不导出 cookie、不导出 UA、不落~/.openclaw/logins/因此也绝不调用cookies export/identity export。这种设计避免了将知乎的会话凭据与设备指纹分离带来的风控错配风险——同一指纹下的登录态只在浏览器 profile 内闭环使用。主力后端为targetcamoufox全部命令与示例均针对 forked camoufox-cli。若运行在targethost/targetnode后端则只遵循本技能描述的流程 提示事项何时有头、何时无头、频率限制、错误处理约定用当前后端自带的浏览器工具语义调用不照搬camoufox-cli ...命令。前置条件持久化 Session 与有头手动登录1. Session 登录态要求发布前必须满足持久化 sessionzhihu已登录登录态存放在 session profile磁盘目录中。xiaobei 中每个平台一个持久化 sessionsession 名即平台 key且一个且只有一个——同 session 已有命令在跑时新命令直接 failfail-first 队列后文详解。2. 首次使用 / 登录态失效时的登录流登录采用有头手动登录agent 只负责打开浏览器窗口用户负责扫码/输密码完成登录camoufox-cli --session zhihu --persistent --headed --json open https://www.zhihu.com随后告知用户「知乎浏览器已打开请在窗口里手动登录完成后告诉我」等待用户回复不要盲轮询。用户确认登录后执行snapshot确认零登录态即已进入登录后的页面状态。登录完成后立即close session——登录态落盘到磁盘 profile不留进程占内存下次本技能以--session zhihu --persistent重起无头即可恢复登录态用完再 close。从源码看--persistent默认路径为~/.camoufox-cli/profiles/session见 cli.ts 的 main 函数因此zhihu的登录态固定落在~/.camoufox-cli/profiles/zhihu/。daemon 空闲自退MAX_IDLE_TIMEOUT 60秒后 profile 目录依然存活这正是用完即 close、重起即恢复的底层依据见 server.ts。发布文章从打开创作页到确认发布成功发布文章的完整操作序列如下1. 启持久化 session 打开创作页 camoufox-cli --session zhihu --persistent --json open https://zhuanlan.zhihu.com/write 2. sleep 3-5 加载编辑器snapshot 确认 .WriteIndex-page 或 .PostEditor 出现 3. snapshot 拿到标题输入框 refinput[placeholder*标题] 或 .WriteIndex-titleInput input 4. camoufox-cli --session zhihu --persistent --json type 标题-ref 文章标题 - 最长 100 字符 5. snapshot 拿到正文编辑器 ref.ProseMirror 或 .public-DraftEditor-root 或 [contenteditabletrue] 6. camoufox-cli --session zhihu --persistent --json click 正文-ref 聚焦编辑器 7. camoufox-cli --session zhihu --persistent --json type 正文-ref 正文内容 - 知乎使用富文本编辑器ProseMirror / Draft.js不支持直接输入 Markdown - Markdown 内容需先转换为纯文本或手动分段输入 8. 可选添加话题snapshot 找添加话题按钮 ref - click - type 话题名称 - 从下拉选 9. snapshot 找发布按钮 ref - camoufox-cli --session zhihu --persistent --json click 发布-ref 10. sleep 3snapshot 确认发布成功URL 变为文章详情页其中type命令在 commands.ts 中实现为locator.pressSequentially(text)——按字符逐键输入适合富文本编辑器这种需要模拟真实键入的场景标题输入走type而非fill正是为了避免fill的清空行为影响输入框。每次命令前都需要snapshot刷新元素 refref 由 aria snapshot 构建元素结构变化后旧 ref 会失效。正文格式说明知乎编辑器支持标题H1/H2/ 粗体 / 斜体 / 链接 / 图片需先上传/ 代码块 / 引用 / 有序无序列表。不支持直接输入 Markdown——Markdown 标记会被原样显示需通过编辑器工具栏或快捷键操作完成格式化。发布回答覆盖写回答按钮定位、正文填写与创作声明操作序列1. 启持久化 session 打开问题页 camoufox-cli --session zhihu --persistent --json open https://www.zhihu.com/question/{question_id} 2. sleep 3-5 加载 3. 找写回答按钮并点击。两种方式 - snapshot 找 button ref文本为写回答后 camoufox-cli click ref - 若 click 卡死/无响应改用 eval 绕过 camoufox-cli --session zhihu --persistent --json eval var bArray.from(document.querySelectorAll(button)).find(function(x){return x.textContent.trim()写回答}); if(b){b.click();CLICKED}else{NOT_FOUND} 4. sleep 3-5 等编辑器出现snapshot 拿到编辑器 reftextbox 或 contenteditable 5. 填写回答内容见下方填写正文段 6. ⚠️ 发布前必做设置「创作声明」见下方创作声明段 7. snapshot 找发布回答按钮 ref - click 8. sleep 3确认发布成功URL 变为 /question/.../answer/... 详情页eval命令在 commands.ts 中实现为page.evaluate(expression)直接在当前页面执行 JavaScript。上面这段脚本用querySelectorAll(button)遍历全部按钮按textContent.trim()写回答精确匹配后调用原生element.click()返回CLICKED或NOT_FOUND便于 agent 判断执行结果。填写正文fill 命令与手动清空知乎回答编辑器是 Draft.js[contenteditabletrue]填写正文用fill命令camoufox-cli --session zhihu --persistent --json fill 编辑器-ref 正文纯文本⚠️fill 不会自动清空旧内容——如果编辑器已有内容如之前填过或导入了内容必须先清空camoufox-cli --session zhihu --persistent --json eval var edocument.querySelector([contenteditabletrue]);e.focus();document.execCommand(selectAll,false,null);document.execCommand(delete,false,null);CLEARED清空后再 fill否则两段内容会拼在一起。这一点与 fill 的源码实现一致——它直接调用 Playwright 的locator.fill(text)语义是输入文本到元素并不会先执行清空操作。导入公众号文章可选知乎编辑器工具栏有导入链接功能支持导入微信公众号文章snapshot 找导入按钮 - click - 切换到导入链接 tab在 textbox 中填入公众号文章 URL - 点开始导入导入可能失败知乎规范过滤含导流二维码、广告外链、违禁词等会拦截内容重复/敏感词会导入失败导入失败时改用直接 fill 正文的方式创作声明发布前必做⚠️发布回答前必须设置创作声明否则需要发布后重新编辑补设。编辑器底部有「发布设置」区域其中包含「创作声明」下拉框combobox默认值为无声明。对于AI 辅助创作的内容必须选择包含 AI 辅助创作 作者对内容负责1. snapshot 找「创作声明」combobox ref 2. click 展开 combobox - snapshot 找 option 包含 AI 辅助创作 作者对内容负责 - click 该 option 3. 确认 combobox 文本变为包含 AI 辅助创作 作者对内容负责可选值无声明 / 包含剧透 / 包含医疗建议 / 虚构创作 / 包含理财内容 / 包含 AI 辅助创作 作者对内容负责。编辑已发布的回答若发布时遗漏了创作声明可通过编辑补设打开回答详情页找编辑回答按钮 - click编辑器打开后滚动到底部找「创作声明」combobox设置声明后找提交修改按钮 - clicksleep 3 确认保存成功图片上传upload 命令与 setInputFiles 底层原理知乎编辑器插入图片需先上传1. snapshot 找编辑器工具栏的图片按钮 ref - click 触发文件选择 2. snapshot 拿到弹出的 input typefile ref 3. camoufox-cli --session zhihu --persistent --json upload 图片-input-ref image.jpg - forked cli upload 命令底层走 Playwright setInputFiles无需 CDP setFileInput hack 4. sleep 等待上传完成snapshot 看图片出现在编辑器upload是 xiaobei 对上游 camoufox-cli 0.6.2 的三项 fork 新增之一详见 patches/camoufox-cli/README.md上游本身没有任何文件上传能力。其实现见 commands.ts 的 cmdUpload接受 snapshot refe1或原始 CSS selector变长参数支持一次传多个文件并先对每个路径做existsSync预检——文件缺失时在触碰浏览器之前就 fail fast 返回File not found: p。底层走locator.setInputFiles(paths)完全绕开需要 CDP 协议的setFileInputhack。必做约束close、fail-first 与频率控制用完即 close 持久化 sessionzhihu登录态 指纹冻结在磁盘 profile不留进程占内存下次发布--session zhihu --persistent重起无头即恢复。只在 session 卡死时camoufox-cli --session zhihu --json closeteardown。同 session 已有命令在跑时新命令 fail-first返回session zhihu 正忙请等待当前操作完成后再试——读到这条文本就等当前操作完成再重试不要盲试。每次发布间隔 60 秒以上避免触发反垃圾。fail-first 队列是 fork 的第二项新增其实现位于 server.ts 的 handleConnectionsession 级别的 daemon 一次只执行一条命令busy标志置位期间除close外的任何命令立即返回上面的中文错误文本不做隐式排队、不自动等待由 agent 读取错误后自行决定重试时机。close绕过队列server.ts保证卡死的 session 永远可以被强制 teardown客户端close --all兜底。设计动机很明确同 session 并发不是良性失败而是互相踩踏——上游server.js没有锁且共享page.goto。这意味着发布流程中任何open/type/click之间都不能并行必须串行等待上一条完成。Pitfalls七个已知坑及规避方案pitfall: editor_not_prosemirror触发知乎编辑器 DOM 结构变更症状.ProseMirror选择器找不到编辑器workaroundfallback 到.public-DraftEditor-root或[contenteditabletrue]pitfall: markdown_not_supported触发直接粘贴 Markdown 文本到编辑器症状Markdown 标记原样显示不被渲染workaround用编辑器工具栏格式化或分段输入先输入纯文本再用快捷键加粗/设标题等pitfall: image_upload_timeout触发上传大图片症状上传进度卡住workaround图片压缩到 2MB 以内再上传超时后重试一次pitfall: anti_spam_check触发短时间内发布多篇内容症状出现验证码或操作过于频繁提示workaround每次发布间隔 60 秒以上pitfall: numeric_html_entities触发从知乎复制内容时症状文本含#x4F60;等编码workaround解码 HTML 实体后再使用pitfall: click_timeout触发camoufox-cli click ref命令卡死或被 SIGKILL症状click 命令无响应进程被杀workaround改用eval里调element.click()绕过先querySelectorAll找到目标按钮直接.click()pitfall: fill_not_clearing触发编辑器已有内容时直接fill新内容症状新旧内容拼接在一起workaroundfill 前先eval执行selectAlldelete清空编辑器pitfall: import_link_blocked触发使用知乎导入链接功能导入公众号文章症状导入后编辑器为空无报错提示workaround知乎规范会过滤含导流二维码、广告外链、违禁词的内容。导入失败后改用fill直接填入纯文本错误处理速查表情况处理未登录 / 登录墙走前置条件的有头手动登录流重试一次编辑器未加载等待 5 秒后重试检查选择器发布按钮灰色检查标题/正文是否已填写验证码 / 频率限制等待 60 秒后重试session 正忙fail-first等当前操作完成再重试不要盲试click 命令卡死改用 eval element.click() 绕过发布后调用 published-track 记录发布发布成功确认后必须调用 published-track 技能记录本次发布。知乎在 published-track 中对应表pub_zhihu内容类型为 article/post特有指标为 views / upvotes / comments / favorites见 init-db.sh 中的建表语句。实际记录通过合并入口record.sh完成--platform取表名去掉pub_前缀即zhihu./skills/published-track/scripts/record.sh \ --platform zhihu \ --title 文章标题 \ --content-type article \ --source-folder output_articles/xxx \ --publish-url https://zhuanlan.zhihu.com/p/xxx常见配套查询./skills/published-track/scripts/query.sh --platform zhihu # 某平台全部记录 ./skills/published-track/scripts/query.sh --platform zhihu --limit 10 # 最近 N 条 ./skills/published-track/scripts/check-published.sh \ --platform zhihu --source-folder output_articles/xxx # 是否已发布这构成了 xiaobei 内容流水线的完整闭环打分预测content-calibrator1A→ 发布zhihu-publish→ 记录published-track1B。zhihu 已纳入 content-calibrator 的平台白名单见 cal-toggle.sh发布前的质量门槛同样适用。小结zhihu-publish 是 xiaobei 知乎获客链路中的发布引擎其核心方法论可归纳为三点持久化 session 闭环登录态自管、不落中央存储、有头登录无头复用、浏览器原生操作命令串行编排open → snapshot → type/fill/click/eval/uploadfail-first 保证不互相踩踏、合规发布纪律创作声明必设、60 秒发布间隔、完成后记录入库。理解了 forked camoufox-cli 在 upload、fail-first 队列上的源码级支撑就能在遇到 DOM 变更、click 卡死、导入被拦截等 Pitfalls 时快速定位并绕过稳定支撑知乎平台的日常内容发布。赞分享人工智能AI Agent大模型AI 应用媒体生成【免费下载链接】xiaobei为OPC/中小微企业量身打造的自媒体获客智能体项目地址https://gitcode.com/gh_mirrors/wi/xiaobei点击查看免费下载相关推荐基于 camoufox-cli 持久化 session 的微博自动发布实战weibo-publish 技能图文视频发布全流程解析基于 camoufox cli 持久化 session 的微博自动发布实战weibo publish 技能图文视频发布全流程解析 微博开放平台 API 对个人人工智能AI Agent大模型AI 应用媒体生成xiaobei 项目 xhs-interact 技能实战基于 camoufox-cli 持久化 Session 的小红书评论、回复、点赞与关注自动化xiaobei 项目 xhs interact 技能实战基于 camoufox cli 持久化 Session 的小红书评论、回复、点赞与关注自动化 本指南以人工智能AI Agent大模型AI 应用媒体生成xiaobei 微信视频号发布实战基于 camoufox-cli 与 wechat-channel 持久化 Session 的无头自动发视频指南xiaobei 微信视频号发布实战基于 camoufox cli 与 wechat channel 持久化 Session 的无头自动发视频指南 本文围绕 x人工智能AI Agent大模型AI 应用媒体生成上一篇雷神之锤3竞技场多语言支持终极指南Unicode与本地化实现方案下一篇GDash核心功能解析从YAML配置到自定义图表打造专属监控系统创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

wordpress转dede避坑指南3步搞定建站报价更透明 2026/9/27 9:53:59

wordpress转dede避坑指南3步搞定建站报价更透明

wordpress转dede避坑指南3步搞定建站报价更透明 模板网站太丑不够用,这是很多中小企业主做官网时的第一反应。看着后台一堆英文参数,改个颜色都要找开发,这种体验确实让人抓狂。这时候你大概率会听到两种声音:一是找外包做定制,…

阅读更多 →
usehooks-ts `useCountdown` 倒计时 Hook 完整指南:参数、源码原理与实战示例 2026/9/27 9:53:59

usehooks-ts `useCountdown` 倒计时 Hook 完整指南:参数、源码原理与实战示例

前端 【免费下载链接】usehooks-ts React hook library, ready to use, written in Typescript. 项目地址: https://gitcode.com/gh_mirrors/us/usehooks-ts 点击查看 免费下载 useCountdown 是 usehooks-ts 提供的一个简单、开箱即用的倒计时自定义 Hook&#xff…

阅读更多 →
网页设计公司哪家值得推荐最佳实践 2026/9/27 9:53:59

网页设计公司哪家值得推荐最佳实践

选网页设计公司别踩坑,3个实战案例教你避拖稿 改个需求建站公司拖一周,这种憋屈事我见得太多了。很多甲方朋友找网页设计公司,最后发现对方连个像样的实战案例都拿不出,全是套模板。今天不聊虚的,直接拆解三个真实项目,看看怎么通过细节判断一家公司到…

阅读更多 →
FontForge BDF Info 对话框完全指南:位图字体的 BDF 属性管理与 XLFD 规范 2026/9/27 9:53:52

FontForge BDF Info 对话框完全指南:位图字体的 BDF 属性管理与 XLFD 规范

桌面应用图形学 【免费下载链接】fontforge Free (libre) font editor for Windows, Mac OS X and GNULinux 项目地址: https://gitcode.com/gh_mirrors/fo/fontforge 点击查看 免费下载 本文围绕 FontForge(自由开源字体编辑器)中 Element …

阅读更多 →
群晖NAS非认证硬盘怎么用:Synology_HDD_db 四步配置 2026/9/27 9:53:52

群晖NAS非认证硬盘怎么用:Synology_HDD_db 四步配置

群晖NAS非认证硬盘怎么用:Synology_HDD_db 四步配置 【免费下载链接】Synology_HDD_db Add your HDD, SSD and NVMe drives to your Synologys compatible drive database and a lot more 项目地址: https://gitcode.com/GitHub_Trending/sy/Synology_HDD_db …

阅读更多 →
2026年5月AI编程工具实测:Cursor vs Windsurf vs Claude Code,谁才是最强编程Agent? 2026/9/27 9:53:39

2026年5月AI编程工具实测:Cursor vs Windsurf vs Claude Code,谁才是最强编程Agent?

2026年5月AI编程工具实测:Cursor vs Windsurf vs Claude Code,谁才是最强编程Agent? 作为一名每天和AI编程工具打交道8小时+的重度用户,我用这三个工具做了整整一周的实战对比。本文不吹不黑,用真实数据和代码说话——三款工具各跑同一个项目,看看谁最能打。 📌 声明:…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉