@jackwener/opencli 1.7.6 → 1.7.7
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 +17 -8
- package/README.zh-CN.md +14 -8
- package/cli-manifest.json +325 -11
- package/clis/51job/company.js +125 -0
- package/clis/51job/detail.js +108 -0
- package/clis/51job/hot.js +55 -0
- package/clis/51job/search.js +79 -0
- package/clis/51job/utils.js +302 -0
- package/clis/51job/utils.test.js +69 -0
- package/clis/bilibili/video.js +11 -4
- package/clis/bilibili/video.test.js +51 -0
- package/clis/chatgpt/image.js +1 -1
- package/clis/deepseek/ask.js +19 -13
- package/clis/deepseek/ask.test.js +93 -1
- package/clis/deepseek/utils.js +108 -23
- package/clis/deepseek/utils.test.js +109 -1
- package/clis/gemini/image.js +1 -1
- package/clis/instagram/download.js +1 -1
- package/clis/twitter/likes.js +3 -2
- package/clis/twitter/search.js +4 -2
- package/clis/twitter/search.test.js +4 -0
- package/clis/twitter/shared.js +28 -0
- package/clis/twitter/shared.test.js +96 -0
- package/clis/twitter/thread.js +3 -1
- package/clis/twitter/timeline.js +3 -2
- package/clis/twitter/tweets.js +3 -2
- package/clis/twitter/tweets.test.js +1 -1
- package/clis/web/read.js +25 -5
- package/clis/web/read.test.js +76 -0
- package/clis/weread/ai-outline.js +170 -0
- package/clis/weread/ai-outline.test.js +83 -0
- package/clis/weread/book.js +57 -44
- package/clis/weread/commands.test.js +24 -0
- package/clis/xiaoyuzhou/podcast-episodes.js +2 -2
- package/clis/xiaoyuzhou/podcast-episodes.test.js +78 -0
- package/dist/src/browser/analyze.d.ts +103 -0
- package/dist/src/browser/analyze.js +230 -0
- package/dist/src/browser/analyze.test.d.ts +1 -0
- package/dist/src/browser/analyze.test.js +164 -0
- package/dist/src/browser/article-extract.d.ts +57 -0
- package/dist/src/browser/article-extract.e2e.test.d.ts +1 -0
- package/dist/src/browser/article-extract.e2e.test.js +105 -0
- package/dist/src/browser/article-extract.js +169 -0
- package/dist/src/browser/article-extract.test.d.ts +1 -0
- package/dist/src/browser/article-extract.test.js +94 -0
- package/dist/src/browser/cdp.js +11 -2
- package/dist/src/browser/verify-fixture.d.ts +59 -0
- package/dist/src/browser/verify-fixture.js +213 -0
- package/dist/src/browser/verify-fixture.test.d.ts +1 -0
- package/dist/src/browser/verify-fixture.test.js +161 -0
- package/dist/src/cli.d.ts +32 -0
- package/dist/src/cli.js +333 -43
- package/dist/src/cli.test.js +257 -1
- package/dist/src/daemon.d.ts +3 -2
- package/dist/src/daemon.js +16 -4
- package/dist/src/daemon.test.d.ts +1 -0
- package/dist/src/daemon.test.js +19 -0
- package/dist/src/download/article-download.d.ts +12 -0
- package/dist/src/download/article-download.js +141 -17
- package/dist/src/download/article-download.test.js +196 -0
- package/dist/src/download/index.js +73 -86
- package/dist/src/errors.js +4 -2
- package/dist/src/errors.test.js +13 -0
- package/dist/src/launcher.d.ts +1 -1
- package/dist/src/launcher.js +3 -3
- package/dist/src/output.js +1 -1
- package/dist/src/output.test.js +6 -0
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -83,6 +83,8 @@ Or install only what you need:
|
|
|
83
83
|
```bash
|
|
84
84
|
npx skills add jackwener/opencli --skill opencli-adapter-author
|
|
85
85
|
npx skills add jackwener/opencli --skill opencli-autofix
|
|
86
|
+
npx skills add jackwener/opencli --skill opencli-browser
|
|
87
|
+
npx skills add jackwener/opencli --skill opencli-usage
|
|
86
88
|
npx skills add jackwener/opencli --skill smart-search
|
|
87
89
|
```
|
|
88
90
|
|
|
@@ -92,6 +94,8 @@ npx skills add jackwener/opencli --skill smart-search
|
|
|
92
94
|
|-------|------------|-------------------------------|
|
|
93
95
|
| **opencli-adapter-author** | Operate a site in real time, or write a reusable adapter for a new site | "Help me check my Xiaohongshu notifications" / "Write an adapter for douyin trending" / "Make a command that grabs the top posts from this page" |
|
|
94
96
|
| **opencli-autofix** | Repair a broken adapter when a built-in command fails | "`opencli zhihu hot` is returning empty — fix it" |
|
|
97
|
+
| **opencli-browser** | Browser automation reference for AI agents | "Use browser commands to scrape this page" |
|
|
98
|
+
| **opencli-usage** | Quick reference for all OpenCLI commands and sites | "What commands does OpenCLI have for Twitter?" |
|
|
95
99
|
| **smart-search** | Search across existing OpenCLI capabilities | "Find me a Bilibili trending adapter" |
|
|
96
100
|
|
|
97
101
|
### How it works
|
|
@@ -109,9 +113,11 @@ The agent handles all the `opencli browser` commands internally — you just des
|
|
|
109
113
|
**Skill references:**
|
|
110
114
|
- [`skills/opencli-adapter-author/SKILL.md`](./skills/opencli-adapter-author/SKILL.md) — browser operation + adapter authoring, end-to-end
|
|
111
115
|
- [`skills/opencli-autofix/SKILL.md`](./skills/opencli-autofix/SKILL.md) — repair broken adapters
|
|
116
|
+
- [`skills/opencli-browser/SKILL.md`](./skills/opencli-browser/SKILL.md) — browser automation reference
|
|
117
|
+
- [`skills/opencli-usage/SKILL.md`](./skills/opencli-usage/SKILL.md) — command and site reference
|
|
112
118
|
- [`skills/smart-search/SKILL.md`](./skills/smart-search/SKILL.md) — capability search
|
|
113
119
|
|
|
114
|
-
Available browser commands include `open`, `state`, `click`, `type`, `select`, `keys`, `wait`, `get`, `screenshot`, `scroll`, `back`, `eval`, `network`, `tab list`, `tab new`, `tab select`, `tab close`, `init`, `verify`, and `close`.
|
|
120
|
+
Available browser commands include `open`, `state`, `click`, `type`, `select`, `keys`, `wait`, `get`, `find`, `extract`, `frames`, `screenshot`, `scroll`, `back`, `eval`, `network`, `tab list`, `tab new`, `tab select`, `tab close`, `init`, `verify`, and `close`.
|
|
115
121
|
|
|
116
122
|
`opencli browser open <url>` and `opencli browser tab new [url]` both return a target ID. Use `opencli browser tab list` to inspect the target IDs of tabs that already exist, then pass `--tab <targetId>` to route a command to a specific tab. `tab new` creates a new tab without changing the default browser target; only `tab select <targetId>` promotes that tab to the default target for later untargeted `opencli browser ...` commands.
|
|
117
123
|
|
|
@@ -183,6 +189,8 @@ Or refresh only the skills you actually use:
|
|
|
183
189
|
```bash
|
|
184
190
|
npx skills add jackwener/opencli --skill opencli-adapter-author
|
|
185
191
|
npx skills add jackwener/opencli --skill opencli-autofix
|
|
192
|
+
npx skills add jackwener/opencli --skill opencli-browser
|
|
193
|
+
npx skills add jackwener/opencli --skill opencli-usage
|
|
186
194
|
npx skills add jackwener/opencli --skill smart-search
|
|
187
195
|
```
|
|
188
196
|
|
|
@@ -211,10 +219,10 @@ To load the source Browser Bridge extension:
|
|
|
211
219
|
| **bilibili** | `hot` `search` `history` `feed` `ranking` `download` `comments` `dynamic` `favorite` `following` `me` `subtitle` `video` `user-videos` |
|
|
212
220
|
| **tieba** | `hot` `posts` `search` `read` |
|
|
213
221
|
| **hupu** | `hot` `search` `detail` `mentions` `reply` `like` `unlike` |
|
|
214
|
-
| **twitter** | `trending` `search` `timeline` `lists` `list-tweets` `list-add` `list-remove` `bookmarks` `post` `download` `profile` `article` `like` `likes` `notifications` `reply` `reply-dm` `thread` `follow` `unfollow` `followers` `following` `block` `unblock` `bookmark` `unbookmark` `delete` `hide-reply` `accept` |
|
|
222
|
+
| **twitter** | `trending` `search` `timeline` `tweets` `lists` `list-tweets` `list-add` `list-remove` `bookmarks` `post` `download` `profile` `article` `like` `likes` `notifications` `reply` `reply-dm` `thread` `follow` `unfollow` `followers` `following` `block` `unblock` `bookmark` `unbookmark` `delete` `hide-reply` `accept` |
|
|
215
223
|
| **reddit** | `hot` `frontpage` `popular` `search` `subreddit` `read` `user` `user-posts` `user-comments` `upvote` `upvoted` `save` `saved` `comment` `subscribe` |
|
|
216
224
|
| **zhihu** | `hot` `search` `question` `download` `follow` `like` `favorite` `comment` `answer` |
|
|
217
|
-
| **amazon** | `bestsellers` `search` `product` `offer` `discussion` `movers-shakers` `new-releases` |
|
|
225
|
+
| **amazon** | `bestsellers` `search` `product` `offer` `discussion` `movers-shakers` `new-releases` `rankings` |
|
|
218
226
|
| **1688** | `search` `item` `assets` `download` `store` |
|
|
219
227
|
| **gitee** | `trending` `search` `user` |
|
|
220
228
|
| **gemini** | `new` `ask` `image` `deep-research` `deep-research-result` |
|
|
@@ -231,7 +239,8 @@ To load the source Browser Bridge extension:
|
|
|
231
239
|
| **gov-policy** | `search` `recent` |
|
|
232
240
|
| **nowcoder** | `hot` `trending` `topics` `recommend` `creators` `companies` `jobs` `search` `suggest` `experience` `referral` `salary` `papers` `practice` `notifications` `detail` |
|
|
233
241
|
| **wanfang** | `search` |
|
|
234
|
-
| **
|
|
242
|
+
| **hackernews** | `top` `new` `best` `ask` `show` `jobs` `search` `user` |
|
|
243
|
+
| **xiaoyuzhou** | `auth*` `podcast*` `podcast-episodes*` `episode*` `download*` `transcript*` |
|
|
235
244
|
|
|
236
245
|
90+ adapters in total — **[→ see all supported sites & commands](./docs/adapters/index.md)**
|
|
237
246
|
|
|
@@ -247,8 +256,8 @@ OpenCLI acts as a universal hub for your existing command-line tools — unified
|
|
|
247
256
|
| **obsidian** | Obsidian vault management | `opencli obsidian search query="AI"` |
|
|
248
257
|
| **docker** | Docker | `opencli docker ps` |
|
|
249
258
|
| **lark-cli** | Lark/Feishu — messages, docs, calendar, tasks, 200+ commands | `opencli lark-cli calendar +agenda` |
|
|
250
|
-
| **
|
|
251
|
-
| **wecom** | WeCom/企业微信 — CLI for WeCom open platform, for humans and AI agents | `opencli wecom msg send --to user "hello"` |
|
|
259
|
+
| **dws** | DingTalk — cross-platform CLI for DingTalk's full suite, designed for humans and AI agents | `opencli dws msg send --to user "hello"` |
|
|
260
|
+
| **wecom-cli** | WeCom/企业微信 — CLI for WeCom open platform, for humans and AI agents | `opencli wecom-cli msg send --to user "hello"` |
|
|
252
261
|
| **vercel** | Vercel — deploy projects, manage domains, env vars, logs | `opencli vercel deploy --prod` |
|
|
253
262
|
|
|
254
263
|
**Register your own** — add any local CLI so AI agents can discover it via `opencli list`:
|
|
@@ -332,8 +341,8 @@ opencli follows Unix `sysexits.h` conventions so it integrates naturally with sh
|
|
|
332
341
|
|
|
333
342
|
```bash
|
|
334
343
|
opencli spotify status || echo "exit $?" # 69 if browser not running
|
|
335
|
-
opencli
|
|
336
|
-
[ $? -eq 77 ] && opencli
|
|
344
|
+
opencli gh issue list 2>/dev/null
|
|
345
|
+
[ $? -eq 77 ] && opencli gh auth login # auto-auth if not logged in
|
|
337
346
|
```
|
|
338
347
|
|
|
339
348
|
## Plugins
|
package/README.zh-CN.md
CHANGED
|
@@ -81,6 +81,8 @@ npx skills add jackwener/opencli
|
|
|
81
81
|
```bash
|
|
82
82
|
npx skills add jackwener/opencli --skill opencli-adapter-author
|
|
83
83
|
npx skills add jackwener/opencli --skill opencli-autofix
|
|
84
|
+
npx skills add jackwener/opencli --skill opencli-browser
|
|
85
|
+
npx skills add jackwener/opencli --skill opencli-usage
|
|
84
86
|
npx skills add jackwener/opencli --skill smart-search
|
|
85
87
|
```
|
|
86
88
|
|
|
@@ -90,6 +92,8 @@ npx skills add jackwener/opencli --skill smart-search
|
|
|
90
92
|
|-------|---------|-------------------|
|
|
91
93
|
| **opencli-adapter-author** | 实时操作任意网站,或为新站点写可复用适配器 | "帮我看看小红书的通知" / "帮我做一个抖音热门的适配器" / "帮我做一个抓取这个页面热帖的命令" |
|
|
92
94
|
| **opencli-autofix** | 内置命令失败时修复已有适配器 | "`opencli zhihu hot` 返回空了,修一下" |
|
|
95
|
+
| **opencli-browser** | 浏览器自动化参考文档 | "用浏览器命令抓取这个页面" |
|
|
96
|
+
| **opencli-usage** | 所有命令和站点的快速参考 | "OpenCLI 有哪些 Twitter 相关的命令?" |
|
|
93
97
|
| **smart-search** | 在现有 OpenCLI 能力里搜索 | "帮我找个 B 站热门相关的适配器" |
|
|
94
98
|
|
|
95
99
|
### 工作原理
|
|
@@ -107,9 +111,11 @@ Agent 在内部自动处理所有 `opencli browser` 命令——你只需用自
|
|
|
107
111
|
**Skill 参考文档:**
|
|
108
112
|
- [`skills/opencli-adapter-author/SKILL.md`](./skills/opencli-adapter-author/SKILL.md) — 浏览器操作 + 适配器编写,全流程
|
|
109
113
|
- [`skills/opencli-autofix/SKILL.md`](./skills/opencli-autofix/SKILL.md) — 修复已有适配器
|
|
114
|
+
- [`skills/opencli-browser/SKILL.md`](./skills/opencli-browser/SKILL.md) — 浏览器自动化参考
|
|
115
|
+
- [`skills/opencli-usage/SKILL.md`](./skills/opencli-usage/SKILL.md) — 命令和站点参考
|
|
110
116
|
- [`skills/smart-search/SKILL.md`](./skills/smart-search/SKILL.md) — 能力搜索
|
|
111
117
|
|
|
112
|
-
`browser` 可用命令包括:`open`、`state`、`click`、`type`、`select`、`keys`、`wait`、`get`、`screenshot`、`scroll`、`back`、`eval`、`network`、`tab list`、`tab new`、`tab select`、`tab close`、`init`、`verify`、`close`。
|
|
118
|
+
`browser` 可用命令包括:`open`、`state`、`click`、`type`、`select`、`keys`、`wait`、`get`、`find`、`extract`、`frames`、`screenshot`、`scroll`、`back`、`eval`、`network`、`tab list`、`tab new`、`tab select`、`tab close`、`init`、`verify`、`close`。
|
|
113
119
|
|
|
114
120
|
`opencli browser open <url>` 和 `opencli browser tab new [url]` 都会返回 target ID。`opencli browser tab list` 用来查看当前已存在 tab 的 target ID,再通过 `--tab <targetId>` 把命令明确路由到某个 tab。`tab new` 只会新建 tab,不会改变默认浏览器目标;只有显式执行 `tab select <targetId>`,才会把该 tab 设为后续未指定 target 的 `opencli browser ...` 命令的默认目标。
|
|
115
121
|
|
|
@@ -207,12 +213,12 @@ npm link
|
|
|
207
213
|
|
|
208
214
|
| 站点 | 命令 | 模式 |
|
|
209
215
|
|------|------|------|
|
|
210
|
-
| **twitter** | `trending` `search` `timeline` `lists` `list-tweets` `list-add` `list-remove` `bookmarks` `profile` `thread` `following` `followers` `notifications` `post` `reply` `delete` `like` `likes` `article` `follow` `unfollow` `bookmark` `unbookmark` `download` `accept` `reply-dm` `block` `unblock` `hide-reply` | 浏览器 |
|
|
216
|
+
| **twitter** | `trending` `search` `timeline` `tweets` `lists` `list-tweets` `list-add` `list-remove` `bookmarks` `profile` `thread` `following` `followers` `notifications` `post` `reply` `delete` `like` `likes` `article` `follow` `unfollow` `bookmark` `unbookmark` `download` `accept` `reply-dm` `block` `unblock` `hide-reply` | 浏览器 |
|
|
211
217
|
| **reddit** | `hot` `frontpage` `popular` `search` `subreddit` `read` `user` `user-posts` `user-comments` `upvote` `save` `comment` `subscribe` `saved` `upvoted` | 浏览器 |
|
|
212
218
|
| **tieba** | `hot` `posts` `search` `read` | 浏览器 |
|
|
213
219
|
| **hupu** | `hot` `search` `detail` `mentions` `reply` `like` `unlike` | 浏览器 |
|
|
214
220
|
| **cursor** | `status` `send` `read` `new` `dump` `composer` `model` `extract-code` `ask` `screenshot` `history` `export` | 桌面端 |
|
|
215
|
-
| **bilibili** | `hot` `search` `me` `favorite` `history` `feed` `subtitle` `video` `dynamic` `ranking` `following` `user-videos` `download` | 浏览器 |
|
|
221
|
+
| **bilibili** | `hot` `search` `me` `favorite` `history` `feed` `subtitle` `video` `comments` `dynamic` `ranking` `following` `user-videos` `download` | 浏览器 |
|
|
216
222
|
| **codex** | `status` `send` `read` `new` `dump` `extract-diff` `model` `ask` `screenshot` `history` `export` | 桌面端 |
|
|
217
223
|
| **chatwise** | `status` `new` `send` `read` `ask` `model` `history` `export` `screenshot` | 桌面端 |
|
|
218
224
|
| **doubao** | `status` `new` `send` `read` `ask` `history` `detail` `meeting-summary` `meeting-transcript` | 浏览器 |
|
|
@@ -223,7 +229,7 @@ npm link
|
|
|
223
229
|
| **xueqiu** | `feed` `hot-stock` `hot` `search` `stock` `comments` `watchlist` `earnings-date` `fund-holdings` `fund-snapshot` | 浏览器 |
|
|
224
230
|
| **antigravity** | `status` `send` `read` `new` `dump` `extract-code` `model` `watch` `serve` | 桌面端 |
|
|
225
231
|
| **chatgpt-app** | `status` `new` `send` `read` `ask` `model` | 桌面端 |
|
|
226
|
-
| **xiaohongshu** | `search` `notifications` `feed` `user` `download` `publish` `creator-notes` `creator-note-detail` `creator-notes-summary` `creator-profile` `creator-stats` | 浏览器 |
|
|
232
|
+
| **xiaohongshu** | `search` `note` `comments` `notifications` `feed` `user` `download` `publish` `creator-notes` `creator-note-detail` `creator-notes-summary` `creator-profile` `creator-stats` | 浏览器 |
|
|
227
233
|
| **xiaoe** | `courses` `detail` `catalog` `play-url` `content` | 浏览器 |
|
|
228
234
|
| **quark** | `ls` `mkdir` `mv` `rename` `rm` `save` `share-tree` | 浏览器 |
|
|
229
235
|
| **uiverse** | `code` `preview` | 浏览器 |
|
|
@@ -234,7 +240,7 @@ npm link
|
|
|
234
240
|
| **gov-policy** | `search` `recent` | 公开 |
|
|
235
241
|
| **nowcoder** | `hot` `trending` `topics` `recommend` `creators` `companies` `jobs` `search` `suggest` `experience` `referral` `salary` `papers` `practice` `notifications` `detail` | 公开 / 浏览器 |
|
|
236
242
|
| **wanfang** | `search` | 公开 |
|
|
237
|
-
| **xiaoyuzhou** | `podcast*` `podcast-episodes*` `episode*` `download*` `transcript*` | 本地凭证 |
|
|
243
|
+
| **xiaoyuzhou** | `podcast*` `podcast-episodes*` `episode*` `download*` `transcript*` `auth` | 本地凭证 |
|
|
238
244
|
| **zhihu** | `hot` `search` `question` `download` `follow` `like` `favorite` `comment` `answer` | 浏览器 |
|
|
239
245
|
| **weixin** | `download` | 浏览器 |
|
|
240
246
|
| **youtube** | `search` `video` `transcript` `comments` `channel` `playlist` `feed` `history` `watch-later` `subscriptions` `like` `unlike` `subscribe` `unsubscribe` | 浏览器 |
|
|
@@ -271,7 +277,7 @@ npm link
|
|
|
271
277
|
| **douban** | `search` `top250` `subject` `photos` `download` `marks` `reviews` `movie-hot` `book-hot` | 浏览器 |
|
|
272
278
|
| **facebook** | `feed` `profile` `search` `friends` `groups` `events` `notifications` `memories` `add-friend` `join-group` | 浏览器 |
|
|
273
279
|
| **google** | `news` `search` `suggest` `trends` | 公开 |
|
|
274
|
-
| **amazon** | `bestsellers` `search` `product` `offer` `discussion` `movers-shakers` `new-releases` | 浏览器 |
|
|
280
|
+
| **amazon** | `bestsellers` `search` `product` `offer` `discussion` `movers-shakers` `new-releases` `rankings` | 浏览器 |
|
|
275
281
|
| **1688** | `search` `item` `assets` `download` `store` | 浏览器 |
|
|
276
282
|
| **gitee** | `trending` `search` `user` | 公开 / 浏览器 |
|
|
277
283
|
| **gemini** | `new` `ask` `image` `deep-research` `deep-research-result` | 浏览器 |
|
|
@@ -306,8 +312,8 @@ OpenCLI 也可以作为你现有命令行工具的统一入口,负责发现、
|
|
|
306
312
|
| **obsidian** | Obsidian 仓库管理 | `opencli obsidian search query="AI"` |
|
|
307
313
|
| **docker** | Docker 命令行工具 | `opencli docker ps` |
|
|
308
314
|
| **lark-cli** | 飞书 CLI — 消息、文档、日历、任务,200+ 命令 | `opencli lark-cli calendar +agenda` |
|
|
309
|
-
| **
|
|
310
|
-
| **wecom** | 企业微信 CLI — 企业微信开放平台命令行工具,支持人类和 AI Agent 使用 | `opencli wecom msg send --to user "hello"` |
|
|
315
|
+
| **dws** | 钉钉 CLI — 钉钉全套产品能力的跨平台命令行工具,支持人类和 AI Agent 使用 | `opencli dws msg send --to user "hello"` |
|
|
316
|
+
| **wecom-cli** | 企业微信 CLI — 企业微信开放平台命令行工具,支持人类和 AI Agent 使用 | `opencli wecom-cli msg send --to user "hello"` |
|
|
311
317
|
| **vercel** | Vercel — 部署项目、管理域名、环境变量、日志 | `opencli vercel deploy --prod` |
|
|
312
318
|
|
|
313
319
|
**零配置透传**:OpenCLI 会把你的输入原样转发给底层二进制,保留原生 stdout / stderr 行为。
|
package/cli-manifest.json
CHANGED
|
@@ -271,6 +271,264 @@
|
|
|
271
271
|
"modulePath": "36kr/search.js",
|
|
272
272
|
"sourceFile": "36kr/search.js"
|
|
273
273
|
},
|
|
274
|
+
{
|
|
275
|
+
"site": "51job",
|
|
276
|
+
"name": "company",
|
|
277
|
+
"description": "51job 公司简介 + 在招职位(按 encCoId)",
|
|
278
|
+
"domain": "jobs.51job.com",
|
|
279
|
+
"strategy": "cookie",
|
|
280
|
+
"browser": true,
|
|
281
|
+
"args": [
|
|
282
|
+
{
|
|
283
|
+
"name": "encCoId",
|
|
284
|
+
"type": "string",
|
|
285
|
+
"required": true,
|
|
286
|
+
"positional": true,
|
|
287
|
+
"help": "加密公司 ID(search 返回的 encCoId)"
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"name": "limit",
|
|
291
|
+
"type": "int",
|
|
292
|
+
"default": 20,
|
|
293
|
+
"required": false,
|
|
294
|
+
"help": "返回职位数(1-50)"
|
|
295
|
+
}
|
|
296
|
+
],
|
|
297
|
+
"columns": [
|
|
298
|
+
"rank",
|
|
299
|
+
"jobId",
|
|
300
|
+
"title",
|
|
301
|
+
"salary",
|
|
302
|
+
"city",
|
|
303
|
+
"workYear",
|
|
304
|
+
"degree",
|
|
305
|
+
"funcType",
|
|
306
|
+
"issueDate",
|
|
307
|
+
"url",
|
|
308
|
+
"companyName",
|
|
309
|
+
"companyType",
|
|
310
|
+
"companySize",
|
|
311
|
+
"companyIndustry",
|
|
312
|
+
"companyIntro",
|
|
313
|
+
"companyUrl"
|
|
314
|
+
],
|
|
315
|
+
"type": "js",
|
|
316
|
+
"modulePath": "51job/company.js",
|
|
317
|
+
"sourceFile": "51job/company.js",
|
|
318
|
+
"navigateBefore": false
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"site": "51job",
|
|
322
|
+
"name": "detail",
|
|
323
|
+
"description": "51job 职位详情(按 jobId)",
|
|
324
|
+
"domain": "jobs.51job.com",
|
|
325
|
+
"strategy": "cookie",
|
|
326
|
+
"browser": true,
|
|
327
|
+
"args": [
|
|
328
|
+
{
|
|
329
|
+
"name": "jobId",
|
|
330
|
+
"type": "string",
|
|
331
|
+
"required": true,
|
|
332
|
+
"positional": true,
|
|
333
|
+
"help": "职位 ID(search 返回的 jobId)"
|
|
334
|
+
}
|
|
335
|
+
],
|
|
336
|
+
"columns": [
|
|
337
|
+
"jobId",
|
|
338
|
+
"title",
|
|
339
|
+
"salary",
|
|
340
|
+
"location",
|
|
341
|
+
"workYear",
|
|
342
|
+
"degree",
|
|
343
|
+
"category",
|
|
344
|
+
"address",
|
|
345
|
+
"ageRequirement",
|
|
346
|
+
"description",
|
|
347
|
+
"welfare",
|
|
348
|
+
"company",
|
|
349
|
+
"companyType",
|
|
350
|
+
"companySize",
|
|
351
|
+
"companyIndustry",
|
|
352
|
+
"companyUrl",
|
|
353
|
+
"url"
|
|
354
|
+
],
|
|
355
|
+
"type": "js",
|
|
356
|
+
"modulePath": "51job/detail.js",
|
|
357
|
+
"sourceFile": "51job/detail.js",
|
|
358
|
+
"navigateBefore": false
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"site": "51job",
|
|
362
|
+
"name": "hot",
|
|
363
|
+
"description": "51job 推荐职位(按城市/行业/排序浏览)",
|
|
364
|
+
"domain": "we.51job.com",
|
|
365
|
+
"strategy": "cookie",
|
|
366
|
+
"browser": true,
|
|
367
|
+
"args": [
|
|
368
|
+
{
|
|
369
|
+
"name": "area",
|
|
370
|
+
"type": "string",
|
|
371
|
+
"default": "全国",
|
|
372
|
+
"required": false,
|
|
373
|
+
"help": "城市名或 6 位城市码(默认 \"全国\")"
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
"name": "sort",
|
|
377
|
+
"type": "string",
|
|
378
|
+
"default": "综合",
|
|
379
|
+
"required": false,
|
|
380
|
+
"help": "排序:综合 / 最新 / 薪资 / 距离"
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"name": "page",
|
|
384
|
+
"type": "int",
|
|
385
|
+
"default": 1,
|
|
386
|
+
"required": false,
|
|
387
|
+
"help": "页码(1-based)"
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"name": "limit",
|
|
391
|
+
"type": "int",
|
|
392
|
+
"default": 20,
|
|
393
|
+
"required": false,
|
|
394
|
+
"help": "返回条数(1-50)"
|
|
395
|
+
}
|
|
396
|
+
],
|
|
397
|
+
"columns": [
|
|
398
|
+
"rank",
|
|
399
|
+
"jobId",
|
|
400
|
+
"title",
|
|
401
|
+
"salary",
|
|
402
|
+
"salaryMin",
|
|
403
|
+
"salaryMax",
|
|
404
|
+
"city",
|
|
405
|
+
"district",
|
|
406
|
+
"workYear",
|
|
407
|
+
"degree",
|
|
408
|
+
"tags",
|
|
409
|
+
"company",
|
|
410
|
+
"companyFull",
|
|
411
|
+
"companyType",
|
|
412
|
+
"companySize",
|
|
413
|
+
"industry",
|
|
414
|
+
"hr",
|
|
415
|
+
"issueDate",
|
|
416
|
+
"url",
|
|
417
|
+
"companyUrl",
|
|
418
|
+
"encCoId"
|
|
419
|
+
],
|
|
420
|
+
"type": "js",
|
|
421
|
+
"modulePath": "51job/hot.js",
|
|
422
|
+
"sourceFile": "51job/hot.js",
|
|
423
|
+
"navigateBefore": false
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"site": "51job",
|
|
427
|
+
"name": "search",
|
|
428
|
+
"description": "51job 前程无忧关键词职位搜索",
|
|
429
|
+
"domain": "we.51job.com",
|
|
430
|
+
"strategy": "cookie",
|
|
431
|
+
"browser": true,
|
|
432
|
+
"args": [
|
|
433
|
+
{
|
|
434
|
+
"name": "keyword",
|
|
435
|
+
"type": "string",
|
|
436
|
+
"required": true,
|
|
437
|
+
"positional": true,
|
|
438
|
+
"help": "搜索关键词(岗位名 / 技能 / 公司)"
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
"name": "area",
|
|
442
|
+
"type": "string",
|
|
443
|
+
"default": "全国",
|
|
444
|
+
"required": false,
|
|
445
|
+
"help": "城市名或 6 位城市码(如 \"杭州\" / \"080200\" / \"全国\")"
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
"name": "salary",
|
|
449
|
+
"type": "string",
|
|
450
|
+
"default": "",
|
|
451
|
+
"required": false,
|
|
452
|
+
"help": "薪资区间(如 \"10-15k\" / \"1-1.5万\" / \"20-30k\")"
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"name": "experience",
|
|
456
|
+
"type": "string",
|
|
457
|
+
"default": "",
|
|
458
|
+
"required": false,
|
|
459
|
+
"help": "工作年限(如 \"应届\" / \"1-3年\" / \"3-5年\" / \"5-7年\")"
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"name": "degree",
|
|
463
|
+
"type": "string",
|
|
464
|
+
"default": "",
|
|
465
|
+
"required": false,
|
|
466
|
+
"help": "学历要求(如 \"本科\" / \"大专\" / \"硕士\")"
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
"name": "companyType",
|
|
470
|
+
"type": "string",
|
|
471
|
+
"default": "",
|
|
472
|
+
"required": false,
|
|
473
|
+
"help": "公司性质(如 \"外资\" / \"国企\" / \"民营\")"
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
"name": "companySize",
|
|
477
|
+
"type": "string",
|
|
478
|
+
"default": "",
|
|
479
|
+
"required": false,
|
|
480
|
+
"help": "公司规模(如 \"50-150\" / \"1000-5000\")"
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
"name": "sort",
|
|
484
|
+
"type": "string",
|
|
485
|
+
"default": "综合",
|
|
486
|
+
"required": false,
|
|
487
|
+
"help": "排序:综合 / 最新 / 薪资 / 距离"
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
"name": "page",
|
|
491
|
+
"type": "int",
|
|
492
|
+
"default": 1,
|
|
493
|
+
"required": false,
|
|
494
|
+
"help": "页码(1-based)"
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
"name": "limit",
|
|
498
|
+
"type": "int",
|
|
499
|
+
"default": 20,
|
|
500
|
+
"required": false,
|
|
501
|
+
"help": "返回条数(1-50)"
|
|
502
|
+
}
|
|
503
|
+
],
|
|
504
|
+
"columns": [
|
|
505
|
+
"rank",
|
|
506
|
+
"jobId",
|
|
507
|
+
"title",
|
|
508
|
+
"salary",
|
|
509
|
+
"salaryMin",
|
|
510
|
+
"salaryMax",
|
|
511
|
+
"city",
|
|
512
|
+
"district",
|
|
513
|
+
"workYear",
|
|
514
|
+
"degree",
|
|
515
|
+
"tags",
|
|
516
|
+
"company",
|
|
517
|
+
"companyFull",
|
|
518
|
+
"companyType",
|
|
519
|
+
"companySize",
|
|
520
|
+
"industry",
|
|
521
|
+
"hr",
|
|
522
|
+
"issueDate",
|
|
523
|
+
"url",
|
|
524
|
+
"companyUrl",
|
|
525
|
+
"encCoId"
|
|
526
|
+
],
|
|
527
|
+
"type": "js",
|
|
528
|
+
"modulePath": "51job/search.js",
|
|
529
|
+
"sourceFile": "51job/search.js",
|
|
530
|
+
"navigateBefore": false
|
|
531
|
+
},
|
|
274
532
|
{
|
|
275
533
|
"site": "amazon",
|
|
276
534
|
"name": "bestsellers",
|
|
@@ -3274,7 +3532,7 @@
|
|
|
3274
3532
|
{
|
|
3275
3533
|
"name": "op",
|
|
3276
3534
|
"type": "str",
|
|
3277
|
-
"default": "
|
|
3535
|
+
"default": "~/Pictures/chatgpt",
|
|
3278
3536
|
"required": false,
|
|
3279
3537
|
"help": "Output directory"
|
|
3280
3538
|
},
|
|
@@ -4150,9 +4408,6 @@
|
|
|
4150
4408
|
"help": "Attach a file (PDF, image, text) with the prompt"
|
|
4151
4409
|
}
|
|
4152
4410
|
],
|
|
4153
|
-
"columns": [
|
|
4154
|
-
"response"
|
|
4155
|
-
],
|
|
4156
4411
|
"timeout": 180,
|
|
4157
4412
|
"type": "js",
|
|
4158
4413
|
"modulePath": "deepseek/ask.js",
|
|
@@ -6865,7 +7120,7 @@
|
|
|
6865
7120
|
{
|
|
6866
7121
|
"name": "op",
|
|
6867
7122
|
"type": "str",
|
|
6868
|
-
"default": "
|
|
7123
|
+
"default": "~/tmp/gemini-images",
|
|
6869
7124
|
"required": false,
|
|
6870
7125
|
"help": "Output directory shorthand"
|
|
6871
7126
|
},
|
|
@@ -8146,7 +8401,7 @@
|
|
|
8146
8401
|
{
|
|
8147
8402
|
"name": "path",
|
|
8148
8403
|
"type": "str",
|
|
8149
|
-
"default": "
|
|
8404
|
+
"default": "~/Downloads/Instagram",
|
|
8150
8405
|
"required": false,
|
|
8151
8406
|
"help": "Download directory"
|
|
8152
8407
|
}
|
|
@@ -15722,7 +15977,9 @@
|
|
|
15722
15977
|
"name",
|
|
15723
15978
|
"text",
|
|
15724
15979
|
"likes",
|
|
15725
|
-
"url"
|
|
15980
|
+
"url",
|
|
15981
|
+
"has_media",
|
|
15982
|
+
"media_urls"
|
|
15726
15983
|
],
|
|
15727
15984
|
"type": "js",
|
|
15728
15985
|
"modulePath": "twitter/likes.js",
|
|
@@ -16087,7 +16344,9 @@
|
|
|
16087
16344
|
"created_at",
|
|
16088
16345
|
"likes",
|
|
16089
16346
|
"views",
|
|
16090
|
-
"url"
|
|
16347
|
+
"url",
|
|
16348
|
+
"has_media",
|
|
16349
|
+
"media_urls"
|
|
16091
16350
|
],
|
|
16092
16351
|
"type": "js",
|
|
16093
16352
|
"modulePath": "twitter/search.js",
|
|
@@ -16123,7 +16382,9 @@
|
|
|
16123
16382
|
"text",
|
|
16124
16383
|
"likes",
|
|
16125
16384
|
"retweets",
|
|
16126
|
-
"url"
|
|
16385
|
+
"url",
|
|
16386
|
+
"has_media",
|
|
16387
|
+
"media_urls"
|
|
16127
16388
|
],
|
|
16128
16389
|
"type": "js",
|
|
16129
16390
|
"modulePath": "twitter/thread.js",
|
|
@@ -16166,7 +16427,9 @@
|
|
|
16166
16427
|
"replies",
|
|
16167
16428
|
"views",
|
|
16168
16429
|
"created_at",
|
|
16169
|
-
"url"
|
|
16430
|
+
"url",
|
|
16431
|
+
"has_media",
|
|
16432
|
+
"media_urls"
|
|
16170
16433
|
],
|
|
16171
16434
|
"type": "js",
|
|
16172
16435
|
"modulePath": "twitter/timeline.js",
|
|
@@ -16232,7 +16495,9 @@
|
|
|
16232
16495
|
"retweets",
|
|
16233
16496
|
"replies",
|
|
16234
16497
|
"views",
|
|
16235
|
-
"url"
|
|
16498
|
+
"url",
|
|
16499
|
+
"has_media",
|
|
16500
|
+
"media_urls"
|
|
16236
16501
|
],
|
|
16237
16502
|
"type": "js",
|
|
16238
16503
|
"modulePath": "twitter/tweets.js",
|
|
@@ -16767,6 +17032,13 @@
|
|
|
16767
17032
|
"default": 3,
|
|
16768
17033
|
"required": false,
|
|
16769
17034
|
"help": "Seconds to wait after page load"
|
|
17035
|
+
},
|
|
17036
|
+
{
|
|
17037
|
+
"name": "stdout",
|
|
17038
|
+
"type": "boolean",
|
|
17039
|
+
"default": false,
|
|
17040
|
+
"required": false,
|
|
17041
|
+
"help": "Print markdown to stdout instead of saving to a file"
|
|
16770
17042
|
}
|
|
16771
17043
|
],
|
|
16772
17044
|
"columns": [
|
|
@@ -17044,6 +17316,48 @@
|
|
|
17044
17316
|
"sourceFile": "weixin/download.js",
|
|
17045
17317
|
"navigateBefore": "https://mp.weixin.qq.com"
|
|
17046
17318
|
},
|
|
17319
|
+
{
|
|
17320
|
+
"site": "weread",
|
|
17321
|
+
"name": "ai-outline",
|
|
17322
|
+
"description": "Get AI-generated outline for a book",
|
|
17323
|
+
"domain": "weread.qq.com",
|
|
17324
|
+
"strategy": "cookie",
|
|
17325
|
+
"browser": true,
|
|
17326
|
+
"args": [
|
|
17327
|
+
{
|
|
17328
|
+
"name": "book-id",
|
|
17329
|
+
"type": "str",
|
|
17330
|
+
"required": true,
|
|
17331
|
+
"positional": true,
|
|
17332
|
+
"help": "Book ID (from shelf or search results)"
|
|
17333
|
+
},
|
|
17334
|
+
{
|
|
17335
|
+
"name": "limit",
|
|
17336
|
+
"type": "int",
|
|
17337
|
+
"default": 200,
|
|
17338
|
+
"required": false,
|
|
17339
|
+
"help": "Max outline items to return"
|
|
17340
|
+
},
|
|
17341
|
+
{
|
|
17342
|
+
"name": "depth",
|
|
17343
|
+
"type": "int",
|
|
17344
|
+
"default": 4,
|
|
17345
|
+
"required": false,
|
|
17346
|
+
"help": "Max outline depth (2=topics, 3=key points, 4=details)"
|
|
17347
|
+
},
|
|
17348
|
+
{
|
|
17349
|
+
"name": "raw",
|
|
17350
|
+
"type": "boolean",
|
|
17351
|
+
"default": false,
|
|
17352
|
+
"required": false,
|
|
17353
|
+
"help": "Output structured rows (chapter/idx/level/text) for programmatic use"
|
|
17354
|
+
}
|
|
17355
|
+
],
|
|
17356
|
+
"type": "js",
|
|
17357
|
+
"modulePath": "weread/ai-outline.js",
|
|
17358
|
+
"sourceFile": "weread/ai-outline.js",
|
|
17359
|
+
"navigateBefore": "https://weread.qq.com"
|
|
17360
|
+
},
|
|
17047
17361
|
{
|
|
17048
17362
|
"site": "weread",
|
|
17049
17363
|
"name": "book",
|