agentCLAWHUBUnverified

playwright-browser-use

浏览器自动化 CLI(Playwright 版,纯 Node.js 实现)。除常规自动化(打开网页/截图/点击/填表/翻页)外,提供三类能力:(1) 会话凭证读写原语 —— `cookies` / `storage` 命令可**无需代码执行**即列出/导出/导入/清除/设置 cookie 与 localStorage,直接提取或注入登录态与会话令牌(此路径独立于代码执行;自 v1.3.2 起 `PW_BROWSER_SAFE_MODE=1` 会将其与代码执行一并禁用);(2) `eval` 在页面上下文执行任意 JavaScript(可读 cookie/存储、发起带凭证请求);(3) `run Skill: playwright-browser-use Owner: yicko Summary: 浏览器自动化 CLI(Playwright 版,纯 Node.js 实现)。除常规自动化(打开网页/截图/点击/填表/翻页)外,提供三类能力:(1) 会话凭证读写原语 —— cookies / storage 命令可**无需代码执行**即列出/导出/导入/清除/设置 cookie 与 localStorage,直接提取或注入登录态与会话令牌(此路径独立于代码执行;自 v1.3.2 起 PW_BROWSER_SAFE_MODE=1 会将其与代码执行一并禁用);(2) eval 在页面上下文执行任意 JavaScript(可读 cookie/存储、发起带凭证请求);(3) run Tags: latest:1.0.16 Version history: v1.0.16 | 2026-08-01T16:07:30.572Z | us

OpenClaw

Rank

62

Safety

84

Downloads

1.4k

Updated

Oct 10, 2026

Version

1.0.16

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 1.4K downloads reported by the source. Last updated 10/10/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 10, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 10, 2026
Adoption signal
1.4K downloadsadoption · observed Oct 10, 2026
Latest release
1.0.16release · observed Aug 1, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s171gt9hm8qq7y2qtg3p5f639n84y0tw:playwright-browser-use
  1. Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
  2. Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-yicko-playwright-browser-use/snapshot"

Documentation

CLAWHUB

150,669 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
name: playwright-browser-use
description: 浏览器自动化 CLI(Playwright 版,纯 Node.js 实现)。除常规自动化(打开网页/截图/点击/填表/翻页)外,提供三类能力:(1) 会话凭证读写原语 —— `cookies` / `storage` 命令可**无需代码执行**即列出/导出/导入/清除/设置 cookie 与 localStorage,直接提取或注入登录态与会话令牌(此路径独立于代码执行;自 v1.3.2 起 `PW_BROWSER_SAFE_MODE=1` 会将其与代码执行一并禁用);(2) `eval` 在页面上下文执行任意 JavaScript(可读 cookie/存储、发起带凭证请求);(3) `run-code` 在守护进程上下文执行 Playwright/Node 代码(vm 沙箱隔离)。全部经持久化本地守护进程(127.0.0.1:19223,浏览器状态跨命令保持)控制,受随机 token 认证保护;`PW_BROWSER_SAFE_MODE=1` 可彻底禁用代码执行与 cookies/storage 凭证读写(v1.3.2+)。仅在可信、用户可见的本地环境中授权使用;会话凭证落盘须遵循后文安全警告。
allowed-tools: Bash(node:*), Bash(pw-browser:*), Bash(curl:*)
capabilities:
  - "code-execution: page-context (eval — arbitrary JS in current page)"
  - "code-execution: daemon-vm (run-code — null-prototype VM sandbox, no host fs/process)"
  - "network: arbitrary via browser/page context (credentialed requests possible)"
  - "browser-state: persistent credentialed session across commands"
  - "credential-access: direct read/export/import/clear/set of cookies & localStorage (session tokens) — no code execution needed; gated by daemon token, and fully DISABLED by PW_BROWSER_SAFE_MODE=1 (v1.3.2+)"
  - "file: write to local disk (run-code can trigger downloads; cookies/storage export writes credential files)"
# --- Formal permission model (machine-readable) -------------------------
# NOTE: This skill has NO built-in fine-grained permission system. The
# fields below are declarative metadata for orchestrators/reviewers, NOT
# an enforcement boundary. Real constraints come only from:
#   - daemon token auth (gates NETWORK reachability, not per-capability)
#   - PW_BROWSER_SAFE_MODE=1 (disables code-exec + credential primitives)
#   - export/import path confinement to ~/.pw-browser (v1.3.1+); since v1.3.8
#     the caller-supplied --unsafe flag alone can NOT lift it — the operator
#     must also start the daemon with PW_BROWSER_ALLOW_UNSAFE_CRED_PATH=1
#   - PW_BROWSER_CRED_PERSIST=off (v1.3.9) removes credential persistence only
#     (export/import), keeping in-memory cookie/storage automation usable
# "capabilities" lists the MINIMUM attack surface, not a maximum; the skill
# can additionally drive any site the browser can reach, including ones where
# the user is already authenticated. Least privilege is achieved at the
# orchestration layer via deploy mode (safe mode + sandbox) + scoped ops.
permissions:
  model: "none-formal"          # no built-in RBAC / capability-dropping
  enforcement:
    - "daemon-token"            # gates network reachability to 127.0.0.1:19223
    - "safe-mode-env"           # PW_BROWSER_SAFE_MODE=1 disables code-exec + creds
    - "path-confinement"        # cookies/storage IO limited to ~/.pw-browser
    - "operator-gated-override" # lifting confinement needs daemon env, not a caller flag
    - "cred-persist-killswitch" # PW_BROWSER_CRED_PERSIST=off blocks export/import only
    - "secret-file-permissions" # daemon token + credential dumps written 0600, dir 0700
    - "downloa

README.md

# pw-browser

> 基于 Playwright 的浏览器自动化 CLI — daemon + client 架构,直接使用系统 Chrome/Edge,无需下载额外浏览器。

> 📘 简体中文文档(本文件)。English documentation: [`README.en.md`](./README.en.md)。端到端示例见 [`QUICKSTART.md`](./QUICKSTART.md)(含 [`QUICKSTART.en.md`](./QUICKSTART.en.md))。

> ⚠️ **完整能力(含代码执行与凭证操控)**:本工具**不只是"点开网页"**——它内置 `eval`(页面上下文**任意 JavaScript** 执行)与 `run-code`(守护进程上下文执行 Playwright/Node 代码)两项**代码执行**能力,以及 `cookies` / `storage` **凭证读写原语**(可**无需代码执行**即提取/注入登录态与会话令牌)。全部经持久化本地守护进程(127.0.0.1:19223)控制,受 daemon token 认证保护;`PW_BROWSER_SAFE_MODE=1` 可**彻底禁用**代码执行与凭证读写(v1.3.2+)。请先阅读下方「🔐 权限模型与最低特权」与「⚠️ 安全边界与使用场景」了解完整攻击面与适用边界,再决定是否授权。

## 特性

- **系统浏览器复用**:通过 Playwright `channel: 'chrome'` 连接系统已安装的 Chrome 或 Edge,不下载 Chromium
- **跨平台**:支持 Windows、macOS、Linux
- **持久化会话**:daemon 保持浏览器状态跨命令存活,无需每次重启
- **可访问性快照**:`snap` 命令生成页面元素树,带 ref 引用,无需写 CSS 选择器
- **非 headless**:浏览器窗口始终可见,用户可实时监控所有操作
- **人机协作**:遇到登录/验证码时自动交接给用户操作

## 安装

```bash
git clone <repo-url> pw-browser
cd pw-browser
npm install
```

> 前提:系统已安装 [Node.js](https://nodejs.org/) 18+ 和 Chrome 或 Edge 浏览器。

## 快速开始

```bash
# 1. 启动 daemon(后台运行)
node pw-browser.js daemon &

# 2. 等待 daemon 就绪
sleep 4

# 3. 打开页面
node pw-browser.js open https://www.baidu.com

# 4. 获取页面快照(必须!每次交互前都要 snap)
node pw-browser.js snap

# 5. 交互 — 基于快照中的 e0, e1, e2... ref
node pw-browser.js fill e12 "天气预报"
node pw-browser.js click e13

# 6. 查看结果
sleep 2
node pw-browser.js snap

# 7. 关闭
node pw-browser.js close --all
```

## 命令一览

| 类别 | 命令 | 说明 |
|------|------|------|
| 生命周期 | `init` / `open <url>` / `close` / `close --all` / `recover` | 启动、导航、关闭、恢复 |
| 状态感知 | `snap` / `wait-for <target>` | 快照(**ref 跨多次 snap 保持稳定**,同元素同 ref) |
| 交互 | `click <ref>` / `fill <ref> "text"` / `type "text"` / `press <key>` / `hover <ref>` / `select <ref> <opt>` / `check <ref>` / `uncheck <ref>` / `upload <ref> <file...>` / `drag <ref源> <ref目标>` / `download <ref> [--path dir]` | 点击、填写、按键、上传、拖拽、下载等 |
| Cookie/存储 | `cookies list` / `export [--path f]` / `import <file>` / `clear` / `set <name> <value> [--domain d]` · `storage get [key]` / `set <k> <v>` / `clear` / `export [--path f]` / `import <file>` | 读写 cookie 与 localStorage(需先 `open` 真实 http/https 页面) |
| 导航 | `goto <url>` / `go-back` / `go-forward` / `reload` | 页面导航控制 |
| Tab | `tab list` / `tab select <idx>` / `tab close <idx>` | 多标签页管理 |
| 批量 | `act '[{"action":"click","ref":"e13"}, ...]'` | 一次性执行动作序列,中途检测 DOM 变化自动中断重规划 |
| 历史 | `history [--limit N] [--clear]` | 查看/清空操作历史 |
| 高级 | `screenshot [--annotate]` / `mousewheel <dx> <dy>` / `eval "<expr>" [ref]` ⚠️ / `run-code "<code>"` ⚠️ | 截图(`--annotate` 叠加与 ref 对应编号框)、滚动、代码执行。`eval` 不带 `ref` 时在页面全局求值(`scope: "page"`);带 `ref` 时标识符 **`el`** 绑定到该 DOM 节点(`scope: "element"`),如 `eval "el.textContent" e3`。返回值须可 JSON 序列化 |
| 延时 | `sleep <seconds>` | 等待 |
| 对话框 | `dialog-accept [text]` / `dialog-dismiss` | 处理原生 alert/confirm/prompt 对话框 |
| 守护进程 | `shutdown` | 关闭持久化 daemon,释放浏览器进程 |

> ⚠️ `eval` 在**浏览器上下文**执行 JS(无 Node 权限);`run-code` 在 daemon 的**受限沙箱(`vm`)**中执行 Playwright 代码(无直接 Node 

_meta.json

{
  "ownerId": "kn74y8h6hjpvfa40rgznyt8e3184yaqe",
  "slug": "playwright-browser-use",
  "version": "1.0.16",
  "publishedAt": 1785600450572
}

references/pagination.md

# 分页策略

翻页前必须先**识别页面分页类型**,选对翻页方式。

> 📝 **文档语言与本地化**:本文件为**简体中文**。识别信号表中的中文 / 英文关键词("下一页"/"Next"、"加载更多"/"Load more")仅为**启发式示例,并非穷举**——非中文页面的实际文案会不同。跨语言页面请优先用 `snap` 返回的 `ref` 或 CSS 选择器(`page.locator('.xxx')`)定位,避免依赖可见文本。完整语言说明见 `SKILL.md`「📝 文档语言与本地化说明」。

## 步骤 1:识别分页类型

从 `pw-browser snap` 的输出判断:

| 类型 | 识别信号 | 翻页方式 |
|------|---------|---------|
| **页码分页** | 底部有页码(1,2,3...)、"下一页"/"Next"/">" | `click` 页码或"下一页" |
| **无限滚动** | 底部无分页控件,内容随滚动增加 | `mousewheel` |
| **加载更多** | 底部有"加载更多"/"Load more"/"查看更多" | `click` 该按钮 |

### 常见网站参考

| 网站 | 分页类型 | 翻页方式 |
|------|---------|---------|
| 百度搜索 | 页码分页 | 点击页码 |
| 淘宝搜索 | 页码分页 | 点击页码 |
| 京东搜索 | 页码分页 | 点击页码 |
| 知乎 | 页码分页 | 点击页码 |
| 小红书 | 无限滚动 | 滚动加载 |
| 抖音 | 无限滚动 | 滚动加载 |

## 步骤 2:执行翻页

### A. 页码分页

```bash
# 从 snap 找到"下一页"按钮 ref
pw-browser snap
pw-browser click e42          # 点击"下一页"
pw-browser sleep 2
pw-browser snap               # 验证
```

备选方式 — 直接点页码:

```bash
pw-browser snap
# 找到页码数字(如 "2")对应的 ref
pw-browser click e50
pw-browser sleep 2 && pw-browser snap
```

### B. 无限滚动

```bash
pw-browser mousewheel 0 800
pw-browser sleep 2
pw-browser snap
```

连续多次滚动直到内容不再增加。

### C. 加载更多按钮

```bash
pw-browser snap
# 找到按钮 ref
pw-browser click e30
pw-browser sleep 2
pw-browser snap
```

## 步骤 3:判断翻页成功

| 分页方式 | 成功信号 | 结束信号 |
|---------|---------|---------|
| 页码 | snap 内容变化,URL 可能变化 | "下一页"按钮消失或 disabled |
| 滚动 | snap 出现新元素 | 内容不变,出现"没有更多了" |
| 按钮 | 新内容加载 | 出现"已加载全部",按钮消失 |

## 批量翻页提取

```bash
# 使用 run-code 批量翻页
pw-browser run-code "
  const allResults = [];
  let hasNext = true;
  while (hasNext) {
    const items = await page.locator('.item').all();
    for (const item of items) {
      allResults.push(await item.textContent());
    }
    const nextBtn = page.locator('text=下一页');
    if (await nextBtn.count() === 0 || await nextBtn.isDisabled()) {
      hasNext = false;
    } else {
      await nextBtn.click();
      await page.waitForTimeout(2000);
    }
  }
  return JSON.stringify(allResults);
"
```

## 常见问题

| 问题 | 原因 | 解决 |
|------|------|------|
| 滚动后不加载新内容 | 实际上是页码分页 | 检查 snap 底部是否有页码,改为 click |
| 点击页码没反应 | 按钮 disabled 或需要等待 | `sleep 1` 后再点击 |
| 翻页后内容相同 | AJAX 加载,需要等待 | 延长 sleep 时间或用 `wait-for` |
| 页码按钮被遮挡 | 需先滚动到底部 | `mousewheel 0 1000` 再 snap |

references/rich-text-editor.md

# SPA 与富文本编辑器 ⚠️

> ⚠️ **破坏性操作警告:** 以下操作会真实修改网页内容(知识库文档、CMS 页面等)。执行前确认:① 处于编辑/草稿状态而非已发布内容;② 修改内容已经用户确认;③ 保存/发布操作不可逆。

处理知识库、文档系统、CMS(如 Notion/语雀/飞书类页面)中的 SPA 编辑态和富文本编辑器写入。

## 何时使用

满足**任一条件**时,遵循本指南:

- URL/页面属于知识库、文档、笔记、CMS 类站点
- 任务要求创建/编辑/保存文档正文
- 点击"编辑"按钮后 URL 不变但页面状态变化
- snap 中出现 `contenteditable`、编辑器 toolbar、"插入"/"正文"等
- 表单不是普通 input/textarea,而是复杂编辑器

## 核心原则

- **不要**直接用 `innerText`/`textContent` 写 RTE——不会被编辑器状态机接受
- 先确认进入编辑态,再用 Playwright 键盘输入
- 保存后验证内容而不是只看按钮状态

## 流程

### 1. 进入编辑态

```bash
# 先 snap 找到编辑按钮
pw-browser snap

# 点击编辑按钮
pw-browser click <编辑ref>

# 验证进入编辑态
pw-browser run-code "
  return await page.evaluate(() => ({
    hasUpdate: Array.from(document.querySelectorAll('button'))
      .some(b => b.textContent.trim() === '更新'),
    editableCount: document.querySelectorAll('[contenteditable]').length
  }));
"
```

如果 `hasUpdate=true` 或 `editableCount > 0`,继续;否则尝试重试点击。

### 2. 写入内容(RTE)

```bash
pw-browser run-code "
  const editor = page.locator('[contenteditable=\"true\"], [contenteditable=\"plaintext-only\"]').first();
  await editor.click();
  await page.keyboard.press('Control+A');
  await page.keyboard.type('要写入的文本内容');
  await page.waitForTimeout(1000);
  const text = await editor.textContent();
  return text;
"
```

### 3. 保存 ⚠️

> ⚠️ 保存/发布操作不可逆,确认内容无误后再执行。

```bash
pw-browser run-code "
  await page.evaluate(() => {
    const btn = Array.from(document.querySelectorAll('button'))
      .find(b => ['更新','保存','发布','完成'].includes(b.textContent.trim()));
    btn?.click();
  });
  await page.waitForTimeout(3000);
"
```

### 4. 验证

```bash
pw-browser run-code "
  const title = document.querySelector('h1, [class*=title]')?.textContent || document.title;
  const main = document.querySelector('main') || document.body;
  const blocks = Array.from(main.querySelectorAll('p, h1, h2, h3, li'))
    .map(b => b.textContent.trim().slice(0, 80))
    .filter(Boolean);
  return JSON.stringify({ title, sampleBlocks: blocks.slice(0, 10) });
"
```

成功标准:
- `hasUpdate=false`(编辑态已退出)
- 正文包含目标文本
- 标题未被误改或清空
- 没有重复写入的文本

## 弹窗处理

- DOM 浮层(弹窗、抽屉、popover):通过 snap 识别并 click 关闭按钮
- 原生 JS dialog(alert/confirm/prompt):用 `pw-browser dialog-accept` / `dialog-dismiss`

## 失败处理

- 点击"编辑"超时后,先检查是否已进入编辑态,不要重复点击
- 后续命令超时,执行 `pw-browser recover` 恢复 daemon
- 恢复后如果已在编辑态,继续输入和保存
Github ReposUpdated 19h agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/yicko/skills/playwright-browser-use",
      "sourceUrl": "https://clawhub.ai/yicko/skills/playwright-browser-use",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T12:29:31.512Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-yicko-playwright-browser-use/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-yicko-playwright-browser-use/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-10T12:29:31.512Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "1.4K downloads",
      "href": "https://clawhub.ai/yicko/playwright-browser-use",
      "sourceUrl": "https://clawhub.ai/yicko/playwright-browser-use",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T12:29:31.512Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "1.0.16",
      "href": "https://clawhub.ai/yicko/playwright-browser-use",
      "sourceUrl": "https://clawhub.ai/yicko/playwright-browser-use",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-08-01T16:07:30.572Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-yicko-playwright-browser-use/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-yicko-playwright-browser-use/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 1.0.16",
      "description": "## playwright-browser-use 1.0.16 Changelog - Removed redundant documentation file: `skill-card.md` - No functional changes; all core features and behaviors remain unchanged.",
      "href": "https://clawhub.ai/yicko/playwright-browser-use",
      "sourceUrl": "https://clawhub.ai/yicko/playwright-browser-use",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-08-01T16:07:30.572Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 10, 2026.

Sponsored

Ads related to playwright-browser-use and adjacent AI workflows.