بنقرة واحدة
js-browser-ops-skill
通用浏览器操作技能,提供网页内容读取、DOM 交互、页面截图等能力。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
通用浏览器操作技能,提供网页内容读取、DOM 交互、页面截图等能力。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Install, configure, verify, and troubleshoot JS Eyes browser automation for OpenClaw.
Bilibili 视频读取 skill,提供视频元数据与字幕读取能力。
GitHub 仓库与 Issues 只读 + 浏览器导航 skill(REST + PAGE_PROFILES + bridges)。
Hacker News 只读 + 浏览器导航 skill:首页 / 帖子评论 / 用户 / Algolia 搜索走 Firebase API + DOM 兜底,浏览器侧仅 location.assign 改 URL。
Reddit 内容只读 + 浏览器导航 skill:帖子详情 / subreddit 列表 / 搜索 / 用户主页 / 收件箱 / 主 feed,DOM/API 双模式(auto 默认 DOM 优先 fallback API),浏览器侧仅 location.assign 改 URL。
X.com (Twitter) 内容只读 + 浏览器导航 + 账号监控 skill:搜索 / 用户主页 / 推文详情 / 首页 Feed 走 X.com 内部 GraphQL 同源端点(DOM 兜底),浏览器侧仅 location.assign 改 URL;内置 monitor 子系统做定时监控 + webhook 通知;写操作(reply/post/quote/thread)保持 v2.0.1 透传,v3.1 将拆到专用工具。
| name | js-browser-ops-skill |
| description | 通用浏览器操作技能,提供网页内容读取、DOM 交互、页面截图等能力。 |
| version | 2.5.1 |
| metadata | {"openclaw":{"emoji":"🌐","homepage":"https://github.com/imjszhang/js-eyes","requires":{"bins":["node"]}}} |
通用浏览器操作技能 — 基于 js-eyes 浏览器自动化,提供面向任意网站的内容读取、DOM 交互和截图能力。
与其他平台特化技能(如 js-x-ops-skill、js-zhihu-ops-skill)不同,本技能不绑定特定平台,适用于所有网页。
本技能依赖 js-eyes 技能提供的浏览器自动化能力。使用前请确保:
| 工具 | 说明 |
|---|---|
browser_read_page | 读取任意网页正文,返回结构化 markdown/纯文本 + 元数据(标题、作者、摘要、图片、链接)。可选 autoAllowDomain(默认 true)在打开新 URL 前自动把域名加入 egressAllowlist |
browser_click | 点击页面元素,支持 CSS 选择器、XPath、文本内容匹配 |
browser_fill_form | 填写表单字段(input/textarea/select/contenteditable) |
browser_wait_for | 等待元素出现或条件满足(基于 MutationObserver) |
browser_scroll | 页面滚动(到顶部/底部、指定元素、指定像素偏移) |
browser_screenshot | 获取页面视口信息和截图元数据 |
const { BrowserAutomation } = require('./lib/js-eyes-client');
const { readPage, clickElement, fillForm, scrollPage } = require('./lib/api');
const browser = new BrowserAutomation('ws://localhost:18080');
// 读取网页内容
const page = await readPage(browser, {
url: 'https://example.com/article',
format: 'markdown',
});
// 点击元素
await clickElement(browser, {
tabId: page.tabId,
selector: 'button.submit',
});
// 填写表单
await fillForm(browser, {
tabId: page.tabId,
selector: 'input[name="email"]',
value: 'user@example.com',
clearFirst: true,
});
// 滚动到底部
await scrollPage(browser, {
tabId: page.tabId,
target: 'bottom',
});
# 读取网页内容
node skills/js-browser-ops-skill/index.js read "https://example.com/article" --format markdown --pretty
# 读取新域名时自动加入 egressAllowlist(默认行为;可 --no-auto-allow-domain 关闭)
node skills/js-browser-ops-skill/index.js read "https://other-site.example/article" --allow-new-domain
# DOM 交互
node skills/js-browser-ops-skill/index.js interact click --tab-id 123 --selector "button.submit"
node skills/js-browser-ops-skill/index.js interact fill --tab-id 123 --selector "input[name=q]" --value "hello" --clear-first
node skills/js-browser-ops-skill/index.js interact wait --tab-id 123 --selector ".results" --timeout 10 --visible
node skills/js-browser-ops-skill/index.js interact scroll --tab-id 123 --target bottom
通过 @js-eyes/visual-bridge-kit@^0.4.0 在每次工具调用前后注入一段 DOM overlay:
HUD(屏幕右上角状态条)+ flash(在锚点元素周围闪一下黄/绿框)+ jsonl trace。
浏览器里直接看到 agent 在点哪、填什么、等什么。业务脚本(generate*Script)一行不动。
post-2.7.0 architecture pivot 提示:browser-ops 的 in-page 视觉反馈(HUD/flash)继续工作, 但离线 HTML 模板这一轮还没接 browser-ops(reddit 是首个;list/item/tree/global/navigation 模板套都按
js-reddit-ops-skill注册)。--visual-record仍然写出meta.json + events.jsonl(不再写frames/),离线jse-replay会落到'*'通配模板 渲一份 HUD-only 的 fallback composition。--redact-rect/--redact-selector/--redact-config仍解析但不会下发,stderr 会打一行 deprecation 提醒。
| 工具 | 视觉演出 |
|---|---|
browser_click | selector 命中元素先黄框 → 点击成功后绿框 + HUD "点击 BUTTON" |
browser_fill_form | input 黄框 → 绿框 + HUD INPUT ← "hello..." |
browser_wait_for | HUD pulse 等待 .results ≤10s;元素出现后绿框 + HUD +1234ms |
browser_scroll | HUD 滚动 → bottom;指定 selector 时目标元素绿框 |
browser_read_page | HUD-only:读取 example.com → "Article Title…" |
browser_screenshot | HUD 拍照 视口 1280×720 |
CLI 旋钮(browser-read.js / browser-interact.js 都支持):
| flag | 默认 | 说明 |
|---|---|---|
--visual / --no-visual | 开 | 总开关;关闭后零额外 RTT |
--visual-detail compact|staged | staged | compact 只 HUD,staged 全套 |
--visual-ms <n> | 420 | flash 持续时长(ms,clamp 120–4000) |
--visual-hud / --no-visual-hud | 开 | 右上角 HUD 卡片(v0.6.0 取代 --visual-mode hud/dom) |
--visual-flash / --no-visual-flash | 开 | 元素 flash overlay/relation(v0.6.0 取代 --visual-mode hud/dom) |
--visual-trace <file.jsonl> | — | 把视觉事件落 jsonl,供回放 / headless 观测 |
--visual-prefix <p> | __jse_browser_visual_ | DOM id 前缀(多 skill 共存防撞) |
# click + 视觉反馈 + jsonl 落盘
node index.js interact click --tab-id 123 --selector "button.submit" \
--visual-trace /tmp/click.jsonl --visual-ms 600
# read 通用网页 + 视觉反馈
node index.js read "https://example.com" --visual-trace /tmp/read.jsonl --pretty
# 关闭视觉(CI / 静默模式)
node index.js interact click --tab-id 123 --selector "..." --no-visual
技术细节:
installVisualBridgeKit 自带 __installed 短路锁,重复 inject 接近 0 成本。--no-visual 时 withVisual 直接 bypass,调用路径与 v2.1.1 完全一致。enabled:true,向后兼容。openUrl 在浏览器中打开目标页面executeScript 注入 JavaScript 脚本到页面中执行使用类 Readability 算法:
<article>、[role="article"]、<main> 等语义元素所有交互操作(click / fill / wait / scroll)均通过 executeScript 注入到页面:
browser_click 支持 CSS selector、XPath、文本匹配三种定位策略browser_fill_form 使用 native value setter 绕过框架拦截,正确触发 React/Vue 等框架的 change 事件browser_wait_for 使用 MutationObserver 高效监听,避免轮询skills/js-browser-ops-skill/
├── SKILL.md # 技能描述(本文件)
├── CHANGELOG.md # 版本记录
├── package.json
├── skill.contract.js # OpenClaw 契约
├── index.js # CLI 入口
├── cli/index.js # CLI 封装
├── bridges/
│ └── _visual-browser.js # 站点 anchor resolver(CSS/XPath/text/url)
├── lib/
│ ├── api.js # 业务 API(withVisual 包装)
│ ├── js-eyes-client.js # 浏览器控制客户端
│ ├── browserUtils.js # 注入脚本模板(业务零侵入)
│ ├── visualHint.js # 6 工具的 hint + buildSummary
│ ├── cliVisualFlags.js # CLI 视觉旋钮解析
│ ├── runtimeConfig.js # 配置合并
│ └── runContext.js # Recording 上下文
└── scripts/
├── browser-read.js # 读取命令
└── browser-interact.js # 交互命令
js-browser-ops-skill 已接入统一的 skill recording 底座,覆盖 read 只读内容抓取。
js-eyes 全局配置中的 recording.mode--recording-mode off|history|standard|debug--debug-recording--no-cache--recording-base-dir /absolute/path--run-id custom-id缓存策略:
browser_read_page 接入缓存(URL → 结构化结果)默认按技能分目录落盘到 ~/.js-eyes/skill-records/js-browser-ops-skill/。