cdp-browser: 控制 Chrome 并自动化浏览器会话 - Openclaw Skills

作者:互联网

2026-03-30

AI教程

什么是 cdp-browser?

cdp-browser 技能允许您的 AI 代理通过 Chrome DevTools Protocol (CDP) 与运行中的浏览器实例进行无缝交互。与标准的无头自动化工具不同,此技能连接到 localhost:9222 上的持久会话,允许 Openclaw Skills 在 Gmail、X (T@witter) 或公司内部门户等已登录账户中执行操作,而无需每次处理复杂的身份验证流程。

通过结合直接的 CDP 封装器和 Playwright 脚本,此技能为开发者提供了一个桥梁,以自动化真实的浏览任务。无论是导航到 URL、关闭模态弹出窗口还是执行自定义 JavaScript,cdp-browser 都为 Openclaw Skills 生态系统内的高保真浏览器控制提供了所需的技术深度。

下载入口:https://github.com/openclaw/skills/tree/main/skills/gostlightai/cdp-browser

安装与下载

1. ClawHub CLI

从源直接安装技能的最快方式。

npx clawhub@latest install cdp-browser

2. 手动安装

将技能文件夹复制到以下位置之一

全局模式 ~/.openclaw/skills/ 工作区 /skills/

优先级:工作区 > 本地 > 内置

3. 提示词安装

将此提示词复制到 OpenClaw 即可自动安装。

请帮我使用 Clawhub 安装 cdp-browser。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。

cdp-browser 应用场景

  • 使用持久的已登录浏览器会话在 X 上自动化社交媒体发布。
  • 捕获动态 Web 仪表板的全页面截图以进行自动化报告。
  • 从复杂的单页面应用 (SPA) 中抓取特定元素文本或 HTML。
  • 在研究任务期间以编程方式管理和检查多个浏览器标签页。
  • 关闭干扰自动化 Web 导航的持久弹出窗口和模态框。
cdp-browser 工作原理
  1. 过程始于用户启动启用了 --remote-debugging-port=9222 标志的 Chrome 或 Chromium 实例。
  2. cdp-browser 技能使用专用的 CLI 脚本建立与调试端口的连接。
  3. 代理发布诸如 status、new 或 scroll 等特定命令,这些命令被转换为协议级指令或 Playwright 操作。
  4. 对于社交媒体自动化,该技能针对特定的 UI 选择器,根据用户当前的登录状态起草或发布内容。
  5. 反馈(如截图文件或标签页元数据)将返回给代理,以告知自动化工作流中的下一步。

cdp-browser 配置指南

首先,确保 Chromium 运行时启用了远程调试端口:

chromium --remote-debugging-port=9222

要启用 Openclaw Skills 的 T@elegrimm 确认按钮等交互功能,必须在工作区中设置配置文件:

# 在技能目录下执行:
cp .cdp-browser.json.example ~/.openclaw/workspace/.cdp-browser.json

确保配置文件正确位于 ~/.openclaw/workspace/.cdp-browser.json,以便代理识别您的偏好设置。

cdp-browser 数据架构与分类体系

cdp-browser 技能利用特定的文件结构和元数据格式来跟踪 Openclaw Skills 中的会话状态:

数据点 格式 描述
.cdp-browser.json JSON 用于推文确认设置和全局行为的配置文件。
pending-tweet.json JSON 使用 save-pending 工作流时推文草稿的临时存储。
快照输出 PNG 代表浏览器标签页当前视觉状态的二进制图像数据。
标签页元数据 JSON 通过 status 命令检索的活动标签页 ID、标题和 URL 列表。
name: cdp-browser
description: CDP browser control at localhost:9222. Use when you need to inspect tabs, take screenshots, navigate, scroll, post to X, or run JS in a persistent browser session (e.g. logged into X, Gmail).

cdp-browser

CLI for Chrome/Chromium at localhost:9222. Inspect tabs, take screenshots, navigate, scroll, post to X, or run JS in a persistent browser session.

Repo: https://github.com/gostlightai/cdp-browser

Prerequisites: Chromium running with --remote-debugging-port=9222. Docker Compose or a local Chrome with remote debugging enabled.

Commands

Run from the skill dir (bin/ scripts):

Command Description
status List all tabs (JSON from CDP)
tabs Same as status
new Open new tab
goto Navigate tab to URL
snapshot Full-page screenshot (PNG)
close-popup Dismiss dialogs/modals
scroll [down|up] Scroll by pixels or selector
query getUrl Return current page URL
query getText [selector] Return element text (or body)
query getHtml [selector] Return element HTML (or body)
tweet-draft "text" Fill compose box only; does NOT post
tweet-post --confirm "text" Post tweet (requires --confirm as second arg)
tweet "text" Alias for tweet-draft (fills compose only)

Tweet flow

  • tweet-draft (default): Fills the compose box; user reviews in browser and posts manually.
  • tweet-post: Requires --confirm as second arg (strict). Use when user explicitly approves ("go ahead", "post it", or T@elegrimm confirm button).
  • Optional T@elegrimm confirm: When tweet.confirmButton is enabled in config, the agent can run tweet-draft --save-pending to write pending state, then send a message with an inline "Confirm Post" button. On confirm, the agent runs tweet-post --confirm.

Config (required for T@elegrimm confirm button)

The T@elegrimm "Confirm Post" button only works if config exists. Copy the example and place it in your workspace:

# From the skill dir (e.g. ~/.openclaw/workspace/skills/cdp-browser):
cp .cdp-browser.json.example ~/.openclaw/workspace/.cdp-browser.json

Location: ~/.openclaw/workspace/.cdp-browser.json (or $OPENCLAW_WORKSPACE/.cdp-browser.json)

Key Default Description
tweet.confirmButton false When true, agent sends draft with inline "Confirm Post" button in T@elegrimm. User clicks to approve or says "go ahead".

Without this config, the agent uses plain tweet-draft (no button); user confirms via text only.

T@elegrimm confirm button (agent instructions)

When tweet.confirmButton is true (config present) and you are in a T@elegrimm session:

  1. Draft: Run tweet-draft --save-pending "text" from the skill dir. This fills the compose box and writes ~/.openclaw/workspace/.cdp-browser/pending-tweet.json.
  2. Send with button: Run from the skill dir:
    ./scripts/send-tweet-confirm.sh  ""
    
    Or use openclaw message send directly with --buttons '[[{"text":"Confirm Post","callback_data":"cdp:tweet:confirm"}]]'. Use the current session's reply target as .
  3. On confirm: When the user clicks the button, OpenClaw delivers callback_data: cdp:tweet:confirm. Or the user says "go ahead"/"post it". Treat either as approval. Then:
    • Read ~/.openclaw/workspace/.cdp-browser/pending-tweet.json for text and tabId
    • Run tweet-post --confirm ""
    • Edit or delete the message with the button (optional)
    • Delete the pending file

Scripts

  • cdp.js — Fetch-only wrapper for CDP HTTP API (/json, /json/list, /json/new); no shell.
  • pw.js — Playwright connect to browser; runs snapshot/goto/scroll/query/tweet-draft/tweet-post. Compose launcher: SideNav_NewTweet_Button, /compose/post, Post only (avoids reply buttons). Post button: tweetButton, tweetButtonInline.

Security

See SECURITY.md for mitigations and operational notes.