Skill v3.0.0
currentAutomated scan100/100+16 new
name: js-zhihu-ops-skill description: 知乎内容读取 skill,提供回答与专栏详情读取能力。 version: 3.0.0 metadata: openclaw: emoji: "\U0001F4D8" homepage: https://github.com/imjszhang/js-eyes requires: bins:
- node
js-zhihu-ops-skill
面向知乎内容读取的 skill。v3.0 起按 PAGE_PROFILES + Bridges + Session 架构升级,支持回答、专栏、问题、搜索、用户、首页多个 profile,并保留 JS_ZHIHU_DISABLE_BRIDGE=1 旧脚本 fallback。
浏览器兼容性与登录
- 要求 Node.js 22+、JS Eyes 2.8.5+、已连接的浏览器扩展与运行中的 Server。
- 页面 bridge 需要宿主设置
security.allowRawEval: true;JS Eyes 2.5+ 会同步到扩展,扩展侧显式false仍可强制关闭。 - Chrome 要求 135+;Chrome 138+ 还需开启浏览器控制的 Allow User Scripts。
- 公开内容通常可匿名读取;搜索、连续分页或触发登录墙后的页面依赖浏览器已有登录态。本 Skill 不执行登录自动化。
安全分级
- READ:
zhihu_get_answer、zhihu_get_article、zhihu_session_state、zhihu_get_question_answers、zhihu_search、zhihu_get_user、zhihu_get_user_answers、zhihu_get_user_articles。 - INTERACTIVE:
zhihu_navigate_*。仅location.assign导航,不模拟点击、不改 DOM。 - DESTRUCTIVE:不引入。本文档不提供回答发布、评论、点赞、收藏、关注等能力。
提供的 AI 工具
| 工具 | 类型 | 说明 | |
|---|---|---|---|
zhihu_get_answer | READ | 读取知乎回答详情 | |
zhihu_get_article | READ | 读取知乎专栏详情 | |
zhihu_session_state | READ | 读取登录态、cookie 标记、登录墙/验证码状态 | |
zhihu_get_question_answers | READ | 读取问题页标题、描述和回答摘要列表 | |
zhihu_search | READ | 读取搜索结果 | |
zhihu_get_user | READ | 读取用户主页资料 | |
zhihu_get_user_answers | READ | 读取用户回答列表摘要 | |
zhihu_get_user_articles | READ | 读取用户文章列表摘要 | |
zhihu_navigate_* | INTERACTIVE | answer / article / question / search / user / home 导航 | |
zhihu_monitor_* | READ | list/status/add/remove/test 监控配置工具 |
CLI
node skills/js-zhihu-ops-skill/index.js answer "https://www.zhihu.com/question/1/answer/2" --prettynode skills/js-zhihu-ops-skill/index.js article "https://zhuanlan.zhihu.com/p/123456" --prettynode skills/js-zhihu-ops-skill/index.js session-state --prettynode skills/js-zhihu-ops-skill/index.js doctor --prettynode skills/js-zhihu-ops-skill/index.js records --last 5 --prettynode skills/js-zhihu-ops-skill/index.js question-answers "https://www.zhihu.com/question/1" --limit 10 --max-pages 2 --prettynode skills/js-zhihu-ops-skill/index.js search "大模型" --limit 10 --max-pages 2 --prettynode skills/js-zhihu-ops-skill/index.js user "people-slug" --prettynode skills/js-zhihu-ops-skill/index.js monitor init --prettynode skills/js-zhihu-ops-skill/index.js monitor add search "大模型" --limit 10 --pretty
真实浏览器 Smoke
真实浏览器 smoke 是显式 opt-in 的本机验证,不会随 npm test 自动执行。运行前需要:
js-eyesserver 已启动,浏览器扩展可连接。- 知乎相关域名已加入 egress allowlist:
zhihu.com、www.zhihu.com、zhuanlan.zhihu.com。 - 浏览器里有可复用的知乎 tab,或允许脚本打开知乎页面。
- 当前登录态足以读取所选公开样本;遇到登录墙、验证码或页面结构漂移时 smoke 会失败并返回非零退出码。
npm run smoke:browsernpm run smoke:browser -- --only answer,searchnpm run smoke:browser -- --samples path/to/local.samples.jsonnpm run smoke:browser -- --server ws://localhost:18080 --timeout-ms 120000npm run verify:visual
默认样本位于 scripts/_dev/smoke-browser.samples.json,只包含公开 URL、slug 和关键词。可通过 --samples <path> 指向本机私有样本文件,但不要把 cookie、token 或账号私密信息写入样本。建议维护 sampleHealth 字段(minFilledFields / minListSampleCount / replaceStrategy / lastReviewedAt)并定期轮换失效公开样本,降低内容漂移导致的假失败。
READ 调度
知乎当前以 DOM 抽取为主,readMode 支持 auto|dom|api,默认 dom。api 暂不作为主路径,后续若接入稳定公开数据源再启用。
每次 READ 返回顶层包含 run、metrics、result、triedMethods、usedMethod、readMode、requestedReadMode、fallback、antiCrawlState。antiCrawlState 会区分 login_required、captcha_required 等页面阻断。
列表类 READ 工具(zhihu_get_question_answers、zhihu_search、zhihu_get_user_answers、zhihu_get_user_articles)支持 limit 与 maxPages:
limit是目标返回条数,默认 10,最多 100。maxPages是 DOM 最大滚动轮次,默认 1,最多 20;它不是知乎业务页码,也不代表 API cursor 翻页。- 返回结果会带
pageInfo,包含requestedLimit、requestedMaxPages、returnedCount、scrollRounds、endedReason、duplicateSkipped和blockedReason。 endedReason统一为limit/no_new_items/max_pages/blocked。- 为降低风控风险,默认只读首轮 DOM;需要更多结果时显式提高
--max-pages,并配合--timeout-ms。
Recording
js-zhihu-ops-skill 现已接入统一的 skill recording 底座,支持调用历史、结果缓存和调试记录。
- 默认记录模式跟随
js-eyes全局配置中的recording.mode - CLI 可覆盖:
--recording-mode off|history|standard|debug--debug-recording--no-cache--recording-base-dir /absolute/path--run-id custom-id
默认按技能分目录落盘到 ~/.js-eyes/skill-records/js-zhihu-ops-skill/,其中包含:
history/:按月滚动的调用历史jsonlcache/<toolName>:按工具维度区分的结构化缓存debug/:调试模式下的页面步骤、DOM 统计和结果快照
v3.0 新增 records 子命令,可查看最近 history 行。缓存命名空间改为工具名维度,旧 answer/article 脚本仍可通过 JS_ZHIHU_DISABLE_BRIDGE=1 使用。
Visual / 治理
CLI 支持 --visual、--visual-trace [path]、--visual-record [dir],并会在 visual.traceFile / visual.recordDir 下写入事件与可选帧文件(开启 --visual-record 时)。知乎版治理包含:
- 登录墙、验证码、空白页、页面结构漂移的阻断识别。
--rate-limit或JS_ZHIHU_RATE_LIMIT=1启用单进程限流。- 批量工具保守限制
limit/maxPages/timeoutMs,避免长跑触发风控。
Monitor 子系统
监控配置落在 ~/.js-eyes/skill-data/js-zhihu-ops-skill/monitor/config.json,可用 JS_ZHIHU_MONITOR_HOME 覆盖。支持 users、questions、searches 三类 target。
AI 工具只开放 list/status/add/remove/test,其中 add/remove 仅写 config,不发通知;test 是 URL dry-run,不写 state。长跑 daemon、主动通知和 webhook 发送不进入 AI 工具列表。
架构
skills/js-zhihu-ops-skill/SKILL.mdpackage.jsonindex.js 委托 cli/index.jsskill.definition.js 工厂化 + AI 工具表cli/index.js dispatcher(读 lib/commands.js)lib/config.js PAGE_PROFILES(answer/article/question/search/user/home)session.js 主调度器(tab 选择 + bridge 注入)runTool.js READ 主管道(readMode + audit + history/cache/debug)commands.js CLI 声明式映射toolTargets.js 工具参数 → URLrunMonitor.js monitor 工具定义与配置操作monitor/config.jsdispatcher.jspaths.jsruntimeConfig.js server/recording 配置@js-eyes/client-sdk BrowserAutomationzhihuUtils.js 旧脚本 fallback 抽取器bridges/common.js DOM helpers + sessionState + blocker detectanswer-bridge.jsarticle-bridge.jsquestion-bridge.jssearch-bridge.jsuser-bridge.jshome-bridge.jsscripts/zhihu-answer.js fallback(JS_ZHIHU_DISABLE_BRIDGE=1)zhihu-article.js fallback(JS_ZHIHU_DISABLE_BRIDGE=1)tests/ node --test