Install
openclaw skills install browser-web-search一行命令搜遍全网 — 55 个平台 91+ 个命令,头条、知乎、豆瓣、YouTube、GitHub、Reddit、Hacker News 等。专为 OpenClaw 设计,复用浏览器登录态,返回结构化 JSON,天然适配 AI Agent 工具调用。
openclaw skills install browser-web-search一行命令,搜遍全网 — 为 AI Agent 而生的多平台内容搜索工具
把 55 个主流平台的搜索接口封装成统一命令行 API,让 AI Agent 直接拿到结构化 JSON,无需 API Key,无需额外配置。
OpenClaw/AI Agent
↓ (读取 Skill 配置)
browser-web-search-skill
↓ (调用 CLI)
bws 命令
↓ (OpenClaw Browser)
目标网站(55 个平台)
--jq 过滤,天然适配 LLM 工具调用npm install -g browser-web-search@0.4.3
bws --version
bws site list
# 搜索今日头条关于 "ai search" 的最新文章
bws site toutiao/search "ai search"
# 搜索知乎,返回 5 条
bws site zhihu/search "ai agent" --count 5
# Hacker News 最新讨论(按时间)
bws site hn/search "llm" --sort date
# GitHub 热门仓库(按 Star 数)
bws site github/search "ai search" --sort stars
# Reddit 最新帖子
bws site reddit/search "ai search" --sort new
# YouTube 视频搜索
bws site youtube/search "ai agent tutorial"
# 查看所有可用命令
bws site list
🔓 无需登录 · 🔐 需登录该站账号 · 🔀 依具体命令而定
| 平台 | 说明 | 登录 | 命令 |
|---|---|---|---|
| 今日头条 | 新闻资讯 | 🔀 | toutiao/search, toutiao/hot, toutiao/feed |
| 澎湃新闻 | 权威新闻 | 🔓 | thepaper/search, thepaper/hot |
| 腾讯新闻 | 热点新闻 | 🔓 | qqnews/search, qqnews/hot |
| 网易新闻 | 热点新闻 | 🔓 | netease/search, netease/hot |
| 新浪新闻 | 门户新闻 | 🔓 | sina/search, sina/hot |
| 36kr | 科技创投 | 🔓 | 36kr/search, 36kr/newsflash, 36kr/article |
| 虎嗅 | 科技商业媒体 | 🔓 | huxiu/search |
| 华尔街见闻 | 财经资讯 | 🔓 | wallstreetcn/search |
| 东方财富 | 股票行情 & 财经新闻 | 🔓 | eastmoney/stock, eastmoney/news |
| 掘金 | 技术社区 | 🔓 | juejin/search |
| CSDN | 开发者社区 | 🔓 | csdn/search |
| 博客园 | 技术博客 | 🔓 | cnblogs/search |
| V2EX | 技术社区 | 🔓 | v2ex/search |
| Baidu | 百度搜索 | 🔓 | baidu/search |
| 虎扑 | 体育社区 | 🔓 | hupu/search |
| 有道翻译 | 中英词典/翻译 | 🔓 | youdao/translate |
| 什么值得买 | 好价/优惠聚合 | 🔓 | smzdm/search |
| InfoQ | 技术媒体 | 🔓 | infoq/search |
| 微信公众号 | 公众号文章 | 🔐 | weixin/search, weixin/article |
| 小红书 | 生活分享 | 🔐 | xiaohongshu/search, xiaohongshu/note, xiaohongshu/comments, xiaohongshu/user_posts, xiaohongshu/me, xiaohongshu/feed |
| 知乎 | 问答社区 | 🔀 | zhihu/search, zhihu/hot, zhihu/question, zhihu/me |
| 微博 | 社交热搜 | 🔐 | weibo/search, weibo/hot |
| Bilibili | 视频弹幕 | 🔀 | bilibili/search, bilibili/popular, bilibili/trending, bilibili/ranking, bilibili/video, bilibili/comments, bilibili/history, bilibili/me, bilibili/feed |
| 雪球 | 股票社区 | 🔐 | xueqiu/search |
| BOSS直聘 | 招聘平台 | 🔀 | boss/search, boss/detail |
| 即刻 | 兴趣社区 | 🔐 | jike/search |
| 豆瓣 | 影视/书籍评分社区 | 🔐 | douban/search, douban/movie, douban/movie-hot, douban/top250, douban/comments |
| 起点中文网 | 网络小说 | 🔐 | qidian/search |
| 携程 | 旅行/酒店/景点 | 🔐 | ctrip/search |
| 平台 | 说明 | 登录 | 命令 |
|---|---|---|---|
| 谷歌搜索 | 🔓 | google/search | |
| Bing | 必应搜索 | 🔓 | bing/search |
| DuckDuckGo | 隐私优先搜索 | 🔓 | duckduckgo/search |
| GitHub | 代码托管 | 🔓 | github/search |
| Hacker News | 科技社区 (YC) | 🔓 | hn/search |
| 英文社区 | 🔓 | reddit/search | |
| BBC | 国际新闻 | 🔓 | bbc/news |
| Reuters | 路透社新闻 | 🔓 | reuters/search |
| The Verge | 科技媒体 | 🔓 | verge/search |
| Ars Technica | 深度科技媒体 | 🔓 | ars/search |
| Engadget | 科技消费媒体 | 🔓 | engadget/search |
| Stack Overflow | 开发者问答 | 🔓 | stackoverflow/search |
| Dev.to | 开发者社区 | 🔓 | devto/search |
| npm | Node.js 包 | 🔓 | npm/search |
| PyPI | Python 包 | 🔓 | pypi/search |
| arXiv | 学术论文 | 🔓 | arxiv/search |
| IMDb | 全球最大影视数据库 | 🔓 | imdb/search, imdb/movie, imdb/top250 |
| Genius | 歌词/歌曲数据库 | 🔓 | genius/search |
| Wikipedia | 百科全书 | 🔓 | wikipedia/search, wikipedia/summary |
| Open Library | 图书数据库 | 🔓 | openlibrary/search |
| Yahoo Finance | 美股/港股行情 | 🔓 | yahoo-finance/quote |
| GSMArena | 手机规格数据库 | 🔓 | gsmarena/search |
| Product Hunt | 科技产品发现 | 🔓 | producthunt/today |
| X (Twitter) | 社交媒体 | 🔐 | x/search |
| 职业社交 | 🔐 | linkedin/search | |
| YouTube | 视频 & 字幕 & 评论 | 🔀 | youtube/search, youtube/video, youtube/transcript, youtube/transcript-by-id, youtube/comments, youtube/channel, youtube/feed |
bws site list # 列出所有 adapter
bws site info <name> # 查看 adapter 参数说明
bws site <name> [args...] # 运行 adapter
bws site <name> --count 5 # 限制返回数量
bws site <name> --json # 输出原始 JSON
bws site <name> --jq '.items[].url' # jq 过滤提取字段
场景:用户想搜索多个平台关于某话题的最新内容
# 国内平台
bws site toutiao/search "ai agent" --count 5
bws site zhihu/search "ai agent" --count 5
bws site huxiu/search "ai agent" --count 5
# 国际平台
bws site hn/search "ai agent" --sort date --count 5
bws site reddit/search "ai agent" --sort new --count 5
bws site github/search "ai agent" --sort stars --count 5
bws site zhihu/hot # 知乎热榜
bws site weibo/hot # 微博热搜
bws site toutiao/hot # 今日头条热榜
bws site thepaper/hot # 澎湃新闻热点
bws site bilibili/trending # B 站热搜词
bws site bilibili/popular # B 站全站热门
# 只提取标题
bws site zhihu/search "大模型" --jq '[.items[].title]'
# 只提取 URL 列表
bws site hn/search "llm" --jq '[.items[].url]'
# 提取标题+日期
bws site toutiao/search "ai" --jq '[.items[] | {title, date}]'
# 豆瓣搜索影视
bws site douban/search "三体"
bws site douban/movie-hot
# IMDb 搜索
bws site imdb/search "Inception"
bws site imdb/top250 --count 10
# YouTube 视频与字幕
bws site youtube/search "ai tutorial"
bws site youtube/transcript-by-id --id dQw4w9WgXcQ
# 搜索 npm 包
bws site npm/search "langchain"
# 搜索 PyPI 包
bws site pypi/search "openai"
# arXiv 论文
bws site arxiv/search "retrieval augmented generation" --count 5
# Stack Overflow
bws site stackoverflow/search "python async await"
需要登录的站点(微信公众号、小红书、微博、X、豆瓣等):
# 在 OpenClaw 浏览器中登录
openclaw browser open https://weixin.qq.com
openclaw browser open https://x.com
openclaw browser open https://www.xiaohongshu.com
openclaw browser open https://www.douban.com
# 登录完成后重试
bws site weixin/search "ai"
bws site douban/search "三体"
bws 命令
↓ 调用
openclaw browser evaluate <script>
↓ 在已打开的标签页中执行 JavaScript
目标网站(使用该标签页的登录态)
| 访问内容 | 是否访问 | 说明 |
|---|---|---|
| 浏览器 Cookie 文件 | ❌ 否 | 不直接读取 ~/.config/chromium/Cookies 等文件 |
| 用户配置目录 | ❌ 否 | 不访问 ~/.bws/ 以外的配置 |
| 其他网站数据 | ❌ 否 | 只能访问 adapter 指定的域名 |
| 当前页面 DOM | ✅ 是 | adapter 脚本在页面中执行 |
| 当前页面 Session | ✅ 是 | 继承页面的登录状态 |
本 Skill 的核心工作由第三方 npm 包
browser-web-search完成;该包会在已认证的浏览器标签页上下文中执行 JavaScript,因此理论上可以读取你已登录站点的任何可见数据(私信、收藏、个人资料、订单等)。Launcher 只能控制传给bws的参数,无法约束包内代码行为。请务必按以下原则使用。
# 审计源码 (与 SKILL.md 中声明的版本严格一致)
npm view browser-web-search@0.4.3 dist.integrity dist.shasum
# 阅读源码: https://github.com/sipingme/browser-web-search/blob/v0.4.3/src/index.ts
# 安装时跳过 install/postinstall 脚本,降低供应链注入面
npm install -g browser-web-search@0.4.3 --ignore-scripts
不要使用 latest tag、不要使用 ^0.4.3 之类的范围版本。每次升级前重新审计。
每次 bws-skill 调用时,launcher 在动态 import() 之前会校验:
| 检查 | 期望值 |
|---|---|
package.json.name | browser-web-search |
package.json.version | 0.4.3 |
dist/index.js 字节数 | 22871 |
dist/index.js SHA-512 | sha512-qoGLsUMOPgzIpdxtGMv08Gjy84bkh0AF90mKG9qvagq9O2ngcKcLg+GAy3Z8bljkvdfKcrQSp55xPO9mVCuv3Q== |
任何一项不匹配会直接拒绝调用并写入 ~/.bws/audit.log(adapter 字段为 "(integrity)")。该闸门不接受任何 env 旁路——如果需要升级到新版本,必须显式更新 scripts/run.js 中的 REQUIRED_VERSION / ENTRY_SHA512_BASE64 / ENTRY_EXPECTED_SIZE 三个常量,并同步 config.json 的 install.verification.integrity / capabilities.supplyChain 字段。
你可以独立复算 SHA-512 来确认本地安装:
P=$(npm root -g)/browser-web-search/dist/index.js
shasum -a 512 "$P" | awk '{print $1}' | xxd -r -p | base64 | sed 's|^|sha512-|'
# 应输出与上表完全一致的字符串
强烈建议为 OpenClaw 创建一个独立的 Chrome/Chromium profile,仅在该 profile 中登录会被本 Skill 访问的站点。不要让 OpenClaw 复用你日常的浏览器 profile,避免银行、邮箱、企业 SSO 等无关账号被 adapter 触达。
v0.4.4 重要变更:sensitive tier 现在默认封印,即使你设了
BWS_ALLOW_SENSITIVE=1或加了--i-understand-sensitive,也不会让你访问敏感 adapter。这是对 ClawScan 2026-05 "Identity and Privilege Abuse" 与 "Tool Misuse and Exploitation" 两条 High Concern 的程序化响应。
Launcher 把 adapter 划分为 public / sensitive 两类。sensitive 即默认拒绝;触发条件之一即视为敏感:
ALWAYS_SENSITIVE_SITES:weixin / xiaohongshu / weibo / xueqiu / jike / douban / qidian / ctrip / x / linkedin/(me|feed|history|comments|user_posts|article)$,例如 zhihu/me、bilibili/feed、youtube/historybws 新增 adapter)授权按以下顺序逐层判定(任一闸门拒绝即拒绝):
| Gate | 触发条件 | 行为 |
|---|---|---|
| 1. PUBLIC_ONLY 硬隔离 | BWS_PUBLIC_ONLY=1 | 一律拒绝 sensitive,覆盖下面三层 |
| 2. Tier 封印(v0.4.4 新增) | BWS_ENABLE_SENSITIVE_TIER ≠ 1 | 一律拒绝 sensitive;reason=sensitive-tier-sealed |
| 3. 调用级 opt-in | tier 启用后,仍需 env 或 flag | 缺一律拒绝;reason=tier-enabled-but-no-opt-in |
| 4. 平台同意账本(v0.4.10 新增) | (site, pkgVersion, entrySha512) 三元组无记录 | 拒绝;reason=no-platform-consent:*;首次需 --accept-platform-consent |
也就是说,**最小可用敏感访问的命令组合(v0.4.10)**变成:
# 1) 必须 (一次性,建议放在专用 shell 而非 ~/.zshrc):开启 tier
export BWS_ENABLE_SENSITIVE_TIER=1
# 2) 调用级 opt-in:任选其一
export BWS_ALLOW_SENSITIVE=1 # 会话级
# 或加 --i-understand-sensitive # 单次调用
# 3) v0.4.10 新增:首次访问该 site 时记录平台同意
# 后续相同 (pkgVersion, entrySha512) 不再要求;package 升级会自动失效
bws-skill run weixin/search "ai" --i-understand-sensitive --accept-platform-consent
💡 --dry-run(v0.4.10):先用
--dry-run验证闸门通过、看清[bws] transparency:{...}行,再去掉--dry-run实际调用。CI 和 AI Agent 派发可以利用 dry-run 在不真正动用浏览器 session 的前提下确认权限。bws-skill run weixin/search "ai" \ --i-understand-sensitive --accept-platform-consent --dry-run # 退出码 0 = 闸门会放行;查看 stderr 的 transparency 行
强烈建议的姿态:
| 场景 | env |
|---|---|
| 仅用 hn / github / arxiv 等公共 adapter | (什么都不设;这是默认) |
| 不可信环境 / 沙箱 agent / production | BWS_PUBLIC_ONLY=1 |
| 偶尔需要敏感访问的开发机 | 临时 BWS_ENABLE_SENSITIVE_TIER=1 BWS_ALLOW_SENSITIVE=1 bws ...,不要写进 shell rc |
未通过任一闸门时,会返回结构化拒绝并在 stderr 给出准确的迁移提示。
如果你的 agent 配置之前只有 BWS_ALLOW_SENSITIVE=1,调用敏感 adapter 现在会拿到:
{"success":false,"error":"Adapter '...' is classified as sensitive ... Since v0.4.4 the sensitive tier is SEALED BY DEFAULT ..."}
补一行 export BWS_ENABLE_SENSITIVE_TIER=1 即可恢复。审计日志里 reason 会从 no opt-in 变成 sensitive-tier-sealed,方便你定位被这次改动影响的调用方。
Launcher 会在 ~/.bws/audit.log 追加 JSON Lines 记录,仅包含元数据,不记录任何参数原文、cookie 或响应数据。日志超过 1 MiB 自动轮转为 audit.log.1。
每条记录包含的字段:
| 字段 | 含义 |
|---|---|
ts | UTC 时间戳 (RFC3339) |
pid | launcher 进程 PID |
adapter | 完整 adapter 名 (如 xiaohongshu/search),完整性闸门记录为 (integrity) |
site | 从 adapter 拆出来的站点段 |
primaryDomain | 已知站点的主域名(用于事后取证;未知站点为 null) |
classification | public / sensitive |
decision | allow / deny |
reason | public / tier+opt-in:env / tier+opt-in:flag / BWS_PUBLIC_ONLY=1 / sensitive-tier-sealed / tier-enabled-but-no-opt-in / entry-sha512-mismatch / entry-sha512-match |
argHash | 参数 SHA-256 前 16 位(仅做去重比对,无法反推原文) |
定期 review:
tail -n 50 ~/.bws/audit.log | jq -c
# 仅看 sensitive 决策
jq -c 'select(.classification=="sensitive")' ~/.bws/audit.log
# 过去 30 天碰过哪些主域名
jq -r 'select(.decision=="allow" and .primaryDomain != null) | .primaryDomain' ~/.bws/audit.log | sort -u
# 因封印或缺 opt-in 被拒的调用计数(看哪些调用方需要迁移)
jq -c 'select(.reason=="sensitive-tier-sealed" or .reason=="tier-enabled-but-no-opt-in") | .adapter' ~/.bws/audit.log | sort | uniq -c
hn/search、github/search、arxiv/search 等)—— 这些不需要登录态,即使 bws 被恶意替换也无敏感数据可窃。--jq / --count 在源头减少返回字段。不要把整段 JSON 喂给下游 LLM 或外发到第三方服务。bws 被调用(无论是否 sensitive 类别),它都拥有当前 OpenClaw session 的完整执行权限。Launcher 无法阻止包内代码越界访问其他已打开的标签。唯一的硬隔离手段是上文 (2) 的浏览器 profile 隔离 + (3) 的 BWS_PUBLIC_ONLY=1。browser-web-search@0.4.3 在你审计后被重新发布(不可变性被破坏),本地已安装版本不受影响,但下次 npm install -g 会拉到新版本。建议把审计过的 tarball 缓存到内部 registry 或私有 mirror。config.json 中声明)| 维度 | 状态 |
|---|---|
| 子进程命令注入 | ✅ launcher 不 spawn 任何子进程;in-process ESM import |
| Option injection 到 bws | ✅ flag allow-list + -- 分隔 |
| 敏感 adapter 默认封印 | ✅ v0.4.4+ tier 默认关闭,需 BWS_ENABLE_SENSITIVE_TIER=1 才解锁后续 opt-in |
| 平台同意账本(首次敏感访问需明示) | ✅ v0.4.10+ Gate 4:~/.bws/consents.json 绑定 (site, pkgVersion, entrySha512);升级或篡改自动失效 |
| 透明性(无法被包装层悄悄调用) | ✅ v0.4.10+ 每次 sensitive 调用 stderr 打印 [bws] transparency:{...} JSON 行 |
| Dry-run(CI / Agent 不真正调用包) | ✅ v0.4.10+ --dry-run 跑完所有闸门 + 完整性校验后退出,不 import |
| 公共 adapter 直通 | ✅ 无需任何 env(如 hn/search) |
| 硬隔离模式 | ✅ BWS_PUBLIC_ONLY=1 覆盖一切 opt-in 与同意账本 |
| 审计日志(含 site / primaryDomain / dryRun) | ✅ ~/.bws/audit.log(仅元数据) |
| 第三方包供应链(被替换 / 篡改) | ✅ launcher 在 import 前强制校验 SHA-512,无 env 旁路;同意账本与该哈希联动失效 |
| Path-pivoting(CWD 下放置恶意包) | ✅ 默认仅信任全局 node_modules;本地需 BWS_ALLOW_LOCAL_INSTALL=1 |
| 符号链接劫持入口 | ✅ 自候选根至 dist/index.js 任一组件为 symlink 即跳过 |
| 包升级"静默通过"残留风险 | ✅ v0.4.10 平台同意账本与 entrySha512 / pkgVersion 绑定;任一变化即失效,强制重新明示 |
| 浏览器 session 越权(包内 JS 在审计版本内的预期行为) | ⚠️ 无法在 launcher 层消解;依赖 (2) profile 隔离 + tier 默认封印 + transparency 行 |
| 跨标签数据访问(包内 JS 触达其他打开的标签) | ⚠️ launcher 无权约束;依赖独立 profile + 关闭无关标签 + tier 默认封印 |
| 跨站访问 | ⚠️ adapter 域名隔离仅约束开源 adapter 的设计意图,不是运行时强制 |
| 上传到第三方服务器 | ⚠️ 当前审计版本未观察到,但每次升级需重新审计并同步 launcher 内的固定哈希;升级会自动废除所有平台同意账本记录 |
用户:搜索头条最新 3 篇关于 AI Agent 的文章
bws site toutiao/search "AI Agent" --count 3
用户:看看 Hacker News 上关于 LLM 的最新讨论
bws site hn/search "llm" --sort date --count 5
用户:GitHub 上 ai search 相关的热门项目
bws site github/search "ai search" --sort stars --count 5
用户:豆瓣电影 Top 10
bws site douban/top250 --count 10
用户:YouTube 搜索 AI 教程
bws site youtube/search "ai agent tutorial" --count 10
browser-web-search@0.4.3 (整数固定 + SHA-512 + ENTRY_EXPECTED_SIZE)SECURITY.md(ClawScan May 2026 Verdict ↔ launcher/config 字段映射)--dry-run);对 ClawScan May 2026 "suspicious classification due to inherent third-party session capability" 的直接程序化响应。npm 固定包未变(仍 0.4.3)。npm install -g browser-web-search@0.4.3 --ignore-scriptsP=$(npm root -g)/browser-web-search/dist/index.js && shasum -a 512 "$P"bws-skill list(或直接 bws site list)bws-skill run hn/search "llm" --count 3[bws] transparency:{...}(公共 adapter 默认不出,除非 BWS_TRANSPARENCY=1)--dry-run 测试敏感 adapter 闸门组合,不真正调用包
BWS_ENABLE_SENSITIVE_TIER=1 BWS_ALLOW_SENSITIVE=1 \
bws-skill run zhihu/me --dry-run --accept-platform-consent