browser-web-search 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -64
- package/package.json +1 -1
- package/sites/36kr/newsflash.js +1 -1
- package/sites/baidu/search.js +1 -1
- package/sites/bilibili/comments.js +1 -1
- package/sites/bilibili/feed.js +1 -1
- package/sites/bilibili/history.js +1 -1
- package/sites/bilibili/me.js +1 -1
- package/sites/bilibili/popular.js +1 -1
- package/sites/bilibili/ranking.js +1 -1
- package/sites/bilibili/search.js +1 -1
- package/sites/bilibili/trending.js +1 -1
- package/sites/bilibili/video.js +1 -1
- package/sites/bing/search.js +1 -1
- package/sites/boss/detail.js +1 -1
- package/sites/boss/search.js +1 -1
- package/sites/cnblogs/search.js +1 -1
- package/sites/csdn/search.js +1 -1
- package/sites/douban/comments.js +1 -1
- package/sites/douban/movie-hot.js +1 -1
- package/sites/douban/movie-top.js +1 -1
- package/sites/douban/movie.js +1 -1
- package/sites/douban/search.js +1 -1
- package/sites/douban/top250.js +1 -1
- package/sites/github/fork.js +1 -1
- package/sites/github/issue-create.js +1 -1
- package/sites/github/issues.js +1 -1
- package/sites/github/pr-create.js +1 -1
- package/sites/github/repo.js +2 -2
- package/sites/google/search.js +1 -1
- package/sites/toutiao/hot.js +3 -3
- package/sites/toutiao/search.js +3 -3
- package/sites/xiaohongshu/comments.js +1 -1
- package/sites/xiaohongshu/note.js +1 -1
- package/sites/xiaohongshu/search.js +1 -1
- package/sites/xiaohongshu/user_posts.js +1 -1
- package/sites/zhihu/hot.js +1 -1
- package/sites/zhihu/me.js +1 -1
- package/sites/zhihu/question.js +1 -1
- package/sites/zhihu/search.js +1 -1
package/README.md
CHANGED
|
@@ -1,28 +1,13 @@
|
|
|
1
1
|
# Browser Web Search (BWS)
|
|
2
2
|
|
|
3
|
-
**把任何网站变成命令行 API**
|
|
3
|
+
**把任何网站变成命令行 API** — 专为 OpenClaw 设计的轻量级浏览器自动化工具
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 特点
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
|
|
12
|
-
### 🔐 复用登录态
|
|
13
|
-
- **无需 API Key**:使用你在浏览器中的登录状态
|
|
14
|
-
- **绕过反爬**:请求来自真实浏览器,不会被封禁
|
|
15
|
-
- **隐私安全**:数据在本地处理,不经过第三方服务器
|
|
16
|
-
|
|
17
|
-
### 📦 内置 Adapter
|
|
18
|
-
- **13 个平台,41 个命令**:开箱即用
|
|
19
|
-
- **可扩展**:支持添加私有 adapter 到 `~/.bws/sites/`
|
|
20
|
-
- **易维护**:adapter 是简单的 JS 文件,易于修改和调试
|
|
21
|
-
|
|
22
|
-
### 🤖 AI Agent 友好
|
|
23
|
-
- **结构化输出**:所有命令返回 JSON,便于 AI 解析
|
|
24
|
-
- **jq 过滤**:内置 jq 支持,精确提取所需数据
|
|
25
|
-
- **错误提示**:清晰的错误信息和修复建议
|
|
7
|
+
- **零配置** — 无需 Chrome Extension、无需 Daemon,开箱即用
|
|
8
|
+
- **复用登录态** — 使用浏览器中的登录状态,无需 API Key
|
|
9
|
+
- **13 个平台,41 个命令** — 覆盖搜索、社交、新闻、开发、视频、招聘等场景
|
|
10
|
+
- **AI Agent 友好** — 结构化 JSON 输出,内置 jq 过滤
|
|
26
11
|
|
|
27
12
|
## 安装
|
|
28
13
|
|
|
@@ -33,74 +18,68 @@ npm install -g browser-web-search
|
|
|
33
18
|
## 快速开始
|
|
34
19
|
|
|
35
20
|
```bash
|
|
36
|
-
#
|
|
37
|
-
bws site
|
|
38
|
-
|
|
39
|
-
# 运行
|
|
40
|
-
bws site zhihu/hot # 知乎热榜
|
|
21
|
+
bws site list # 查看所有命令
|
|
22
|
+
bws site toutiao/hot # 今日头条热榜
|
|
41
23
|
bws site xiaohongshu/search "旅行" # 小红书搜索
|
|
42
|
-
bws site
|
|
24
|
+
bws site zhihu/hot # 知乎热榜
|
|
43
25
|
bws site bilibili/popular # B站热门视频
|
|
44
26
|
```
|
|
45
27
|
|
|
46
|
-
##
|
|
47
|
-
|
|
48
|
-
|
|
|
49
|
-
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
|
|
|
56
|
-
|
|
|
57
|
-
|
|
58
|
-
|
|
28
|
+
## 内置平台(13 个)
|
|
29
|
+
|
|
30
|
+
| 平台 | 说明 | 命令 |
|
|
31
|
+
|-----|------|-----|
|
|
32
|
+
| **今日头条** | 新闻资讯 | `toutiao/hot`, `toutiao/search` |
|
|
33
|
+
| **小红书** | 生活分享 | `xiaohongshu/search`, `xiaohongshu/note`, `xiaohongshu/comments`, `xiaohongshu/user_posts` |
|
|
34
|
+
| **36kr** | 科技创投 | `36kr/newsflash` |
|
|
35
|
+
| **知乎** | 问答社区 | `zhihu/hot`, `zhihu/search`, `zhihu/question`, `zhihu/me` |
|
|
36
|
+
| **CSDN** | 开发者社区 | `csdn/search` |
|
|
37
|
+
| **博客园** | 技术博客 | `cnblogs/search` |
|
|
38
|
+
| **豆瓣** | 影视书籍 | `douban/movie`, `douban/search`, `douban/top250`, `douban/movie-hot`, `douban/movie-top`, `douban/comments` |
|
|
39
|
+
| **Bilibili** | 视频弹幕 | `bilibili/popular`, `bilibili/trending`, `bilibili/ranking`, `bilibili/search`, `bilibili/video`, `bilibili/comments`, `bilibili/feed`, `bilibili/history`, `bilibili/me` |
|
|
40
|
+
| **BOSS直聘** | 招聘平台 | `boss/search`, `boss/detail` |
|
|
41
|
+
| **GitHub** | 代码托管 | `github/repo`, `github/issues`, `github/fork`, `github/pr-create`, `github/issue-create` |
|
|
42
|
+
| **Baidu** | 百度搜索 | `baidu/search` |
|
|
43
|
+
| **Bing** | 必应搜索 | `bing/search` |
|
|
44
|
+
| **Google** | 谷歌搜索 | `google/search` |
|
|
45
|
+
|
|
46
|
+
## 命令参考
|
|
59
47
|
|
|
60
48
|
```bash
|
|
61
49
|
bws site list # 列出所有 adapter
|
|
62
|
-
bws site search <query> # 搜索 adapter
|
|
63
50
|
bws site info <name> # 查看 adapter 详情
|
|
64
51
|
bws site <name> [args...] # 运行 adapter
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
## 选项
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
--json # JSON 格式输出
|
|
71
|
-
--jq <expr> # jq 过滤表达式
|
|
52
|
+
bws site <name> --json # JSON 格式输出
|
|
53
|
+
bws site <name> --jq <expr> # jq 过滤表达式
|
|
72
54
|
```
|
|
73
55
|
|
|
74
56
|
## 示例
|
|
75
57
|
|
|
76
58
|
```bash
|
|
77
|
-
#
|
|
78
|
-
bws site zhihu/hot
|
|
59
|
+
# 知乎热榜前 10
|
|
60
|
+
bws site zhihu/hot 10
|
|
79
61
|
|
|
80
|
-
#
|
|
62
|
+
# 小红书搜索,只取标题
|
|
81
63
|
bws site xiaohongshu/search "美食" --jq '.notes[].title'
|
|
82
64
|
|
|
83
|
-
#
|
|
65
|
+
# B站热门视频 JSON
|
|
84
66
|
bws site bilibili/popular --json
|
|
85
67
|
|
|
86
|
-
#
|
|
68
|
+
# GitHub 仓库信息
|
|
87
69
|
bws site github/repo facebook/react
|
|
88
70
|
```
|
|
89
71
|
|
|
90
|
-
##
|
|
72
|
+
## 登录态
|
|
91
73
|
|
|
92
|
-
|
|
74
|
+
需要登录的网站,先在 OpenClaw 浏览器中登录:
|
|
93
75
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
openclaw browser open https://xiaohongshu.com
|
|
98
|
-
```
|
|
99
|
-
3. 重试命令
|
|
76
|
+
```bash
|
|
77
|
+
openclaw browser open https://xiaohongshu.com
|
|
78
|
+
```
|
|
100
79
|
|
|
101
|
-
##
|
|
80
|
+
## 自定义 Adapter
|
|
102
81
|
|
|
103
|
-
|
|
82
|
+
将 adapter 放到 `~/.bws/sites/` 目录:
|
|
104
83
|
|
|
105
84
|
```javascript
|
|
106
85
|
/* @meta
|
|
@@ -113,7 +92,6 @@ adapter 运行在 OpenClaw 浏览器中。如果网站需要登录:
|
|
|
113
92
|
}
|
|
114
93
|
*/
|
|
115
94
|
async function(args) {
|
|
116
|
-
// 在浏览器上下文中执行
|
|
117
95
|
const results = document.querySelectorAll('.result');
|
|
118
96
|
return Array.from(results).map(el => ({
|
|
119
97
|
title: el.querySelector('.title').textContent,
|
package/package.json
CHANGED
package/sites/36kr/newsflash.js
CHANGED
package/sites/baidu/search.js
CHANGED
package/sites/bilibili/feed.js
CHANGED
package/sites/bilibili/me.js
CHANGED
package/sites/bilibili/search.js
CHANGED
package/sites/bilibili/video.js
CHANGED
package/sites/bing/search.js
CHANGED
package/sites/boss/detail.js
CHANGED
package/sites/boss/search.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"degree": {"required": false, "description": "Degree filter (e.g. 209=高中, 208=大专, 206=本科, 203=硕士, 201=博士)"}
|
|
12
12
|
},
|
|
13
13
|
"readOnly": true,
|
|
14
|
-
"example": "
|
|
14
|
+
"example": "ping-browser site boss/search \"AI agent\""
|
|
15
15
|
}
|
|
16
16
|
*/
|
|
17
17
|
|
package/sites/cnblogs/search.js
CHANGED
package/sites/csdn/search.js
CHANGED
package/sites/douban/comments.js
CHANGED
package/sites/douban/movie.js
CHANGED
package/sites/douban/search.js
CHANGED
package/sites/douban/top250.js
CHANGED
package/sites/github/fork.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"capabilities": ["network"],
|
|
12
12
|
"readOnly": false,
|
|
13
|
-
"example": "
|
|
13
|
+
"example": "ping-browser site github/issue-create epiral/bb-sites --title \"[reddit/me] returns empty\" --body \"Description here\""
|
|
14
14
|
}
|
|
15
15
|
*/
|
|
16
16
|
|
package/sites/github/issues.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"capabilities": ["network"],
|
|
14
14
|
"readOnly": false,
|
|
15
|
-
"example": "
|
|
15
|
+
"example": "ping-browser site github/pr-create epiral/bb-sites --title \"feat(weibo): add hot adapter\" --head myuser:feat-weibo --body \"Adds weibo/hot.js\""
|
|
16
16
|
}
|
|
17
17
|
*/
|
|
18
18
|
|
package/sites/github/repo.js
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
"description": "获取 GitHub 仓库信息",
|
|
5
5
|
"domain": "github.com",
|
|
6
6
|
"args": {
|
|
7
|
-
"repo": {"required": true, "description": "owner/repo format (e.g. epiral/
|
|
7
|
+
"repo": {"required": true, "description": "owner/repo format (e.g. epiral/ping-browser)"}
|
|
8
8
|
},
|
|
9
9
|
"capabilities": ["network"],
|
|
10
10
|
"readOnly": true,
|
|
11
|
-
"example": "
|
|
11
|
+
"example": "ping-browser site github/repo epiral/ping-browser"
|
|
12
12
|
}
|
|
13
13
|
*/
|
|
14
14
|
|
package/sites/google/search.js
CHANGED
package/sites/toutiao/hot.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"count": {"required": false, "description": "返回条数 (默认 20, 最多 50)"}
|
|
8
8
|
},
|
|
9
9
|
"readOnly": true,
|
|
10
|
-
"example": "
|
|
10
|
+
"example": "ping-browser site toutiao/hot"
|
|
11
11
|
}
|
|
12
12
|
*/
|
|
13
13
|
|
|
@@ -44,7 +44,7 @@ async function(args) {
|
|
|
44
44
|
|
|
45
45
|
async function fallbackFromHomepage(limit) {
|
|
46
46
|
const homeResp = await fetch('https://www.toutiao.com/', {credentials: 'include'});
|
|
47
|
-
if (!homeResp.ok) return {error: 'HTTP ' + homeResp.status, hint: 'Open www.toutiao.com in
|
|
47
|
+
if (!homeResp.ok) return {error: 'HTTP ' + homeResp.status, hint: 'Open www.toutiao.com in ping-browser first'};
|
|
48
48
|
|
|
49
49
|
const html = await homeResp.text();
|
|
50
50
|
const parser = new DOMParser();
|
|
@@ -99,7 +99,7 @@ async function(args) {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
if (items.length === 0) {
|
|
102
|
-
return {error: 'Could not extract hot topics', hint: 'Open www.toutiao.com in
|
|
102
|
+
return {error: 'Could not extract hot topics', hint: 'Open www.toutiao.com in ping-browser first and make sure you are logged in'};
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
return {count: items.length, source: 'homepage_dom', items};
|
package/sites/toutiao/search.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"count": {"required": false, "description": "返回结果数量 (默认 10, 最多 20)"}
|
|
9
9
|
},
|
|
10
10
|
"readOnly": true,
|
|
11
|
-
"example": "
|
|
11
|
+
"example": "ping-browser site toutiao/search AI"
|
|
12
12
|
}
|
|
13
13
|
*/
|
|
14
14
|
|
|
@@ -18,7 +18,7 @@ async function(args) {
|
|
|
18
18
|
|
|
19
19
|
const url = 'https://so.toutiao.com/search?keyword=' + encodeURIComponent(args.query) + '&pd=information&dvpf=pc';
|
|
20
20
|
const resp = await fetch(url, {credentials: 'include'});
|
|
21
|
-
if (!resp.ok) return {error: 'HTTP ' + resp.status, hint: 'Open so.toutiao.com in
|
|
21
|
+
if (!resp.ok) return {error: 'HTTP ' + resp.status, hint: 'Open so.toutiao.com in ping-browser first'};
|
|
22
22
|
|
|
23
23
|
const html = await resp.text();
|
|
24
24
|
const parser = new DOMParser();
|
|
@@ -133,7 +133,7 @@ async function(args) {
|
|
|
133
133
|
if (results.length === 0) {
|
|
134
134
|
return {
|
|
135
135
|
error: 'No results found',
|
|
136
|
-
hint: 'Toutiao may require login or has anti-scraping protection. Try: 1) Open so.toutiao.com in
|
|
136
|
+
hint: 'Toutiao may require login or has anti-scraping protection. Try: 1) Open so.toutiao.com in ping-browser first, 2) Log in to toutiao, 3) Use toutiao/hot instead',
|
|
137
137
|
query: args.query
|
|
138
138
|
};
|
|
139
139
|
}
|
package/sites/zhihu/hot.js
CHANGED
package/sites/zhihu/me.js
CHANGED
package/sites/zhihu/question.js
CHANGED