360 Secure SkillHub
360 安全技能中心

Gbrow

Gbrow 是面向 OpenClaw 代理的无头浏览器 Skill,基于 Playwright 与 Bun 运行,通过可访问性树快照(含 @ref 引用)读取页面并点击、填写元素,支持导航、标签页、JS 执行、截图、PDF 与 cookie 导入,命令经本地 HTTP API 下发,无需视觉模型或外部模型调用。

ashish797
ashish797
热度 34.19
最近更新 2026-05-11 17:39:12
分类:自动化依赖:代码执行 / 联网浏览搜索 / 读写文件应用场景:工作流 / 研究

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add gbrow
Metadata
name
Gbrow
description
Full-featured headless browser for OpenClaw agents. Navigate, snapshot with accessibility tree (@ref clicks), tabs, JS execution, cookie import. No vision model needed — free, fast, reliable.
tools
["gbrow"]

Gbrow — The Browser Your AI Agent Actually Needs

A full-featured headless browser powered by Playwright and Bun. Uses the accessibility tree for page reading — not expensive vision models.

Why Gbrow?

Traditional (screenshots + vision) Gbrow (accessibility tree)
Screenshot → upload to GPT-4o → wait → read ariaSnapshot() → instant structured text
~$0.01 per page read Free
3-10 seconds per page < 100ms
Fails on API key issues Always works
Click by fragile CSS selector Click by @ref (@e1, @e2, etc.)

Quick Setup

# Clone and install
git clone https://github.com/ashish797/Gbrow.git ~/.openclaw/workspace/skills/Gbrow
cd ~/.openclaw/workspace/skills/Gbrow
bash setup.sh

Or one-liner:

curl -fsSL https://raw.githubusercontent.com/ashish797/Gbrow/main/setup.sh | bash

How It Works

1. Start the server

cd ~/.openclaw/workspace/skills/Gbrow
bun run src/server.ts

2. Read the page (accessibility tree)

The snapshot gives you a structured view with clickable refs:

@e1 [heading] "Welcome" [level=1]
@e2 [link] "Get Started"
@e3 [button] "Sign in"
@e4 [textbox] "Search"

3. Click by ref

click @e2     → clicks "Get Started"
fill @e4 "query"  → types into search box

Commands

Navigation

Command Description Example
goto <url> Navigate to URL goto https://example.com
back History back back
forward History forward forward
reload Reload page reload
url Print current URL url

Reading

Command Description Example
snapshot Accessibility tree with @refs snapshot -i (interactive only)
text Cleaned page text text
html [selector] Raw HTML html .article
links All links as "text → href" links
forms Form fields as JSON forms

Interaction

Command Description Example
click <ref> Click element click @e3
fill <ref> <text> Fill input fill @e4 "hello"
select <ref> <value> Select dropdown select @e5 "option1"
type <ref> <text> Type with keyboard type @e4 "search term"
press <key> Press key press Enter
scroll <direction> Scroll page scroll down

Inspection

Command Description Example
js <expr> Run JavaScript js document.title
css <sel> <prop> Computed CSS css .box color
attrs <ref> Element attributes attrs @e1
is <prop> <ref> State check is visible @e3

Tabs

Command Description
tabs List open tabs
tab N Switch to tab N
newtab Open new tab
closetab Close current tab

Visual

Command Description
screenshot Take screenshot
responsive <w> <h> Set viewport size
pdf Save page as PDF

Snapshot Flags

Flag Description
-i Interactive elements only (buttons, links, inputs)
-c Compact (remove empty structural nodes)
-d N Limit tree depth
-s <sel> Scope to CSS selector
-D Diff against previous snapshot
-a Annotated screenshot with ref overlays

HTTP API

All commands go through the HTTP API:

# Get port and token from state file
PORT=$(python3 -c "import json; print(json.load(open('.gstack/browse.json'))['port'])")
TOKEN=$(python3 -c "import json; print(json.load(open('.gstack/browse.json'))['token'])")

# Send command
curl -s -X POST "http://127.0.0.1:${PORT}/command" \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"command":"goto","args":["https://example.com"]}'

Architecture

┌─────────────┐     HTTP      ┌──────────────────┐
│  OpenClaw   │ ──────────▶  │  Gbrow Server    │
│  Agent      │              │  (Bun + Playwright)│
└─────────────┘              └────────┬─────────┘
                                      │
                                      ▼
                              ┌──────────────────┐
                              │  Chromium         │
                              │  (headless)       │
                              └──────────────────┘
                                      │
                                      ▼
                              ┌──────────────────┐
                              │ Accessibility     │
                              │ Tree (ariaSnapshot)│
                              └──────────────────┘

No vision models. No API calls. Just structured text from the browser's accessibility layer.

Credits

Built on top of gstack by Gary Tan (Y Combinator). Adapted for OpenClaw with permission under MIT license.

License

MIT