← ClaudeAtlas

browser-clilisted

Drive the already-logged-in Chrome on Chris's cloudtop from the command line (agent-browser over CDP), instead of chrome-devtools-mcp. Use for ANY interactive browser work on internal/SSO-gated sites — gHire, Buganizer UI, Google Chat, internal dashboards, form filling, clicking through a flow. ~40-50x cheaper than the MCP (350 tokens vs 15-20K per snapshot). Also provides multi-round Google Chat conversation — send a message and block waiting for the peer's reply. Trigger on "操作浏览器", "点开网页", "帮我填一下", "去 gHire", "给 X 发个 Chat 消息", "等他回复". Keep chrome-devtools-mcp only for Lighthouse / heap snapshot / performance trace.
yangwhale/CloseCrab · ★ 4 · AI & Automation · score 77
Install: claude install-skill yangwhale/CloseCrab
# browser-cli — 命令行驱动浏览器 ## 为什么不用 chrome-devtools-mcp 慢的根因不是 CDP,是 **LLM 往返次数 × 每次注入的 token 量**。MCP 的 `take_snapshot` 一次回 15-20K token 的完整 a11y 树;`agent-browser snapshot -i` 只回可交互元素,约 350 token。40-50 倍差距,而且 MCP 的工具定义本身还常驻 system prompt。 浏览器操作天然是往复的(看→点→再看),所以**降低每一轮的成本**比"一次编好所有动作"现实。 **仍然用 chrome-devtools-mcp 的场景**:Lighthouse 审计、heap snapshot、 performance trace。这三样 agent-browser 不提供。 ## 先确认 Chrome 在哪台机器 `ab` 默认假设 Chrome 在**远程** cloudtop,每条命令都 ssh 过去。但 Chrome 也可能 就跑在**本机** —— 这时 ssh 别名往往早就不通,`doctor.sh` 一路 FAIL,看起来像 "工具坏了",其实只是走错了路。 先判断: ```bash curl -s http://127.0.0.1:9222/json/version # 有输出 = Chrome 在本机 ``` 本机就用 `abl`(直连,不走 ssh),远程才用 `ab`: ```bash abl get url abl batch "open <url>" "get url" "eval document.title" ``` `abl` = `~/.claude/skills/browser-cli/scripts/ab.local`,已链到 `~/.local/bin/abl`。 ## 前置检查 新机器 / 长时间没用,先跑: ```bash ~/.claude/skills/browser-cli/scripts/doctor.sh ``` 依赖装在**远端 cloudtop**(不在仓库里):ssh 别名可达、nvm node 24 上装了 `agent-browser`、那个**已登录公司账号**的 Chrome 带 `--remote-debugging-port=9222` 启动。 ## 第一层:通用浏览器驱动 ```bash ab --where # 当前目标机 ab --use local # 本机 cc-tw 的 Chrome(不走 ssh) ab --use bj | hk # 切北京 glinux_bj / 香港 glinux(Chris 人在哪用哪台) AB_HOST=glinux ab ... # 单次覆盖 ab open <url> ab snapshot -i # 只列可交互元素(省 token 的关键) ab diff snapshot # 只回与上次快照的差异 ab click @e5 ab fill @e2 "text" ab get text @e3 ab get url ab eval 'document.title' # 注意是 eval,不是 js ab skills get core --full # 官方用法速查 ``` #