@jackwener/opencli 1.3.1 → 1.3.2
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/CHANGELOG.md +128 -0
- package/README.md +44 -5
- package/README.zh-CN.md +44 -5
- package/SKILL.md +317 -5
- package/TESTING.md +4 -4
- package/dist/browser/errors.d.ts +2 -1
- package/dist/browser/errors.js +9 -10
- package/dist/build-manifest.js +1 -3
- package/dist/cli-manifest.json +2573 -989
- package/dist/cli.js +42 -2
- package/dist/clis/bilibili/download.js +20 -65
- package/dist/clis/bilibili/utils.js +2 -1
- package/dist/clis/chaoxing/assignments.js +2 -1
- package/dist/clis/doubao/ask.d.ts +1 -0
- package/dist/clis/doubao/ask.js +35 -0
- package/dist/clis/doubao/common.d.ts +23 -0
- package/dist/clis/doubao/common.js +564 -0
- package/dist/clis/doubao/new.d.ts +1 -0
- package/dist/clis/doubao/new.js +20 -0
- package/dist/clis/doubao/read.d.ts +1 -0
- package/dist/clis/doubao/read.js +19 -0
- package/dist/clis/doubao/send.d.ts +1 -0
- package/dist/clis/doubao/send.js +22 -0
- package/dist/clis/doubao/status.d.ts +1 -0
- package/dist/clis/doubao/status.js +24 -0
- package/dist/clis/doubao-app/ask.d.ts +1 -0
- package/dist/clis/doubao-app/ask.js +53 -0
- package/dist/clis/doubao-app/common.d.ts +37 -0
- package/dist/clis/doubao-app/common.js +110 -0
- package/dist/clis/doubao-app/dump.d.ts +1 -0
- package/dist/clis/doubao-app/dump.js +24 -0
- package/dist/clis/doubao-app/new.d.ts +1 -0
- package/dist/clis/doubao-app/new.js +20 -0
- package/dist/clis/doubao-app/read.d.ts +1 -0
- package/dist/clis/doubao-app/read.js +18 -0
- package/dist/clis/doubao-app/screenshot.d.ts +1 -0
- package/dist/clis/doubao-app/screenshot.js +18 -0
- package/dist/clis/doubao-app/send.d.ts +1 -0
- package/dist/clis/doubao-app/send.js +27 -0
- package/dist/clis/doubao-app/status.d.ts +1 -0
- package/dist/clis/doubao-app/status.js +16 -0
- package/dist/clis/hackernews/ask.yaml +38 -0
- package/dist/clis/hackernews/best.yaml +38 -0
- package/dist/clis/hackernews/jobs.yaml +36 -0
- package/dist/clis/hackernews/new.yaml +38 -0
- package/dist/clis/hackernews/search.yaml +44 -0
- package/dist/clis/hackernews/show.yaml +38 -0
- package/dist/clis/hackernews/top.yaml +3 -1
- package/dist/clis/hackernews/user.yaml +25 -0
- package/dist/clis/twitter/download.js +13 -97
- package/dist/clis/twitter/thread.js +2 -1
- package/dist/clis/v2ex/member.yaml +29 -0
- package/dist/clis/v2ex/node.yaml +34 -0
- package/dist/clis/v2ex/nodes.yaml +31 -0
- package/dist/clis/v2ex/replies.yaml +32 -0
- package/dist/clis/v2ex/user.yaml +34 -0
- package/dist/clis/weibo/search.d.ts +1 -0
- package/dist/clis/weibo/search.js +73 -0
- package/dist/clis/weixin/download.d.ts +12 -0
- package/dist/clis/weixin/download.js +183 -0
- package/dist/clis/xiaohongshu/download.js +12 -60
- package/dist/clis/xiaohongshu/publish.d.ts +18 -0
- package/dist/clis/xiaohongshu/publish.js +352 -0
- package/dist/clis/xiaohongshu/search.js +47 -15
- package/dist/clis/xiaohongshu/search.test.d.ts +1 -0
- package/dist/clis/xiaohongshu/search.test.js +114 -0
- package/dist/clis/yollomi/background.d.ts +4 -0
- package/dist/clis/yollomi/background.js +45 -0
- package/dist/clis/yollomi/edit.d.ts +5 -0
- package/dist/clis/yollomi/edit.js +56 -0
- package/dist/clis/yollomi/face-swap.d.ts +5 -0
- package/dist/clis/yollomi/face-swap.js +43 -0
- package/dist/clis/yollomi/generate.d.ts +9 -0
- package/dist/clis/yollomi/generate.js +100 -0
- package/dist/clis/yollomi/models.d.ts +1 -0
- package/dist/clis/yollomi/models.js +33 -0
- package/dist/clis/yollomi/object-remover.d.ts +4 -0
- package/dist/clis/yollomi/object-remover.js +42 -0
- package/dist/clis/yollomi/remove-bg.d.ts +4 -0
- package/dist/clis/yollomi/remove-bg.js +38 -0
- package/dist/clis/yollomi/restore.d.ts +4 -0
- package/dist/clis/yollomi/restore.js +38 -0
- package/dist/clis/yollomi/try-on.d.ts +4 -0
- package/dist/clis/yollomi/try-on.js +46 -0
- package/dist/clis/yollomi/upload.d.ts +7 -0
- package/dist/clis/yollomi/upload.js +71 -0
- package/dist/clis/yollomi/upscale.d.ts +4 -0
- package/dist/clis/yollomi/upscale.js +53 -0
- package/dist/clis/yollomi/utils.d.ts +45 -0
- package/dist/clis/yollomi/utils.js +180 -0
- package/dist/clis/yollomi/video.d.ts +5 -0
- package/dist/clis/yollomi/video.js +56 -0
- package/dist/clis/zhihu/download.d.ts +1 -5
- package/dist/clis/zhihu/download.js +20 -126
- package/dist/clis/zhihu/download.test.js +7 -5
- package/dist/clis/zhihu/question.js +2 -1
- package/dist/commanderAdapter.js +4 -6
- package/dist/daemon.js +5 -2
- package/dist/discovery.js +10 -10
- package/dist/download/article-download.d.ts +59 -0
- package/dist/download/article-download.js +178 -0
- package/dist/download/media-download.d.ts +49 -0
- package/dist/download/media-download.js +112 -0
- package/dist/errors.d.ts +23 -2
- package/dist/errors.js +58 -2
- package/dist/errors.test.d.ts +1 -0
- package/dist/errors.test.js +59 -0
- package/dist/execution.js +9 -10
- package/dist/explore.js +4 -2
- package/dist/external.d.ts +15 -0
- package/dist/external.js +48 -2
- package/dist/external.test.d.ts +1 -0
- package/dist/external.test.js +64 -0
- package/dist/main.js +10 -0
- package/dist/plugin.d.ts +4 -0
- package/dist/plugin.js +45 -23
- package/dist/plugin.test.js +6 -1
- package/dist/record.d.ts +47 -0
- package/dist/record.js +545 -0
- package/dist/registry.d.ts +7 -2
- package/dist/registry.js +2 -6
- package/dist/runtime.d.ts +3 -1
- package/dist/runtime.js +10 -3
- package/dist/validate.js +1 -3
- package/docs/.vitepress/config.mts +1 -0
- package/docs/adapters/browser/doubao.md +35 -0
- package/docs/adapters/browser/hackernews.md +20 -4
- package/docs/adapters/browser/tiktok.md +1 -1
- package/docs/adapters/browser/v2ex.md +31 -10
- package/docs/adapters/browser/weibo.md +4 -0
- package/docs/adapters/browser/weixin.md +33 -0
- package/docs/adapters/browser/xiaohongshu.md +8 -6
- package/docs/adapters/browser/yollomi.md +69 -0
- package/docs/adapters/desktop/doubao-app.md +35 -0
- package/docs/adapters/index.md +16 -5
- package/docs/advanced/download.md +4 -0
- package/package.json +3 -1
- package/src/browser/errors.ts +17 -11
- package/src/build-manifest.ts +2 -3
- package/src/cli.ts +45 -2
- package/src/clis/bilibili/download.ts +25 -83
- package/src/clis/bilibili/utils.ts +2 -1
- package/src/clis/chaoxing/assignments.ts +2 -1
- package/src/clis/doubao/ask.ts +40 -0
- package/src/clis/doubao/common.ts +619 -0
- package/src/clis/doubao/new.ts +22 -0
- package/src/clis/doubao/read.ts +20 -0
- package/src/clis/doubao/send.ts +25 -0
- package/src/clis/doubao/status.ts +27 -0
- package/src/clis/doubao-app/ask.ts +60 -0
- package/src/clis/doubao-app/common.ts +116 -0
- package/src/clis/doubao-app/dump.ts +28 -0
- package/src/clis/doubao-app/new.ts +21 -0
- package/src/clis/doubao-app/read.ts +21 -0
- package/src/clis/doubao-app/screenshot.ts +19 -0
- package/src/clis/doubao-app/send.ts +30 -0
- package/src/clis/doubao-app/status.ts +17 -0
- package/src/clis/hackernews/ask.yaml +38 -0
- package/src/clis/hackernews/best.yaml +38 -0
- package/src/clis/hackernews/jobs.yaml +36 -0
- package/src/clis/hackernews/new.yaml +38 -0
- package/src/clis/hackernews/search.yaml +44 -0
- package/src/clis/hackernews/show.yaml +38 -0
- package/src/clis/hackernews/top.yaml +3 -1
- package/src/clis/hackernews/user.yaml +25 -0
- package/src/clis/twitter/download.ts +13 -111
- package/src/clis/twitter/thread.ts +2 -1
- package/src/clis/v2ex/member.yaml +29 -0
- package/src/clis/v2ex/node.yaml +34 -0
- package/src/clis/v2ex/nodes.yaml +31 -0
- package/src/clis/v2ex/replies.yaml +32 -0
- package/src/clis/v2ex/user.yaml +34 -0
- package/src/clis/weibo/search.ts +78 -0
- package/src/clis/weixin/download.ts +199 -0
- package/src/clis/xiaohongshu/download.ts +12 -71
- package/src/clis/xiaohongshu/publish.ts +392 -0
- package/src/clis/xiaohongshu/search.test.ts +134 -0
- package/src/clis/xiaohongshu/search.ts +49 -15
- package/src/clis/yollomi/background.ts +48 -0
- package/src/clis/yollomi/edit.ts +58 -0
- package/src/clis/yollomi/face-swap.ts +45 -0
- package/src/clis/yollomi/generate.ts +95 -0
- package/src/clis/yollomi/models.ts +38 -0
- package/src/clis/yollomi/object-remover.ts +44 -0
- package/src/clis/yollomi/remove-bg.ts +40 -0
- package/src/clis/yollomi/restore.ts +40 -0
- package/src/clis/yollomi/try-on.ts +48 -0
- package/src/clis/yollomi/upload.ts +78 -0
- package/src/clis/yollomi/upscale.ts +49 -0
- package/src/clis/yollomi/utils.ts +202 -0
- package/src/clis/yollomi/video.ts +61 -0
- package/src/clis/zhihu/download.test.ts +7 -5
- package/src/clis/zhihu/download.ts +23 -158
- package/src/clis/zhihu/question.ts +2 -1
- package/src/commanderAdapter.ts +4 -7
- package/src/daemon.ts +5 -2
- package/src/discovery.ts +26 -26
- package/src/download/article-download.ts +272 -0
- package/src/download/media-download.ts +178 -0
- package/src/errors.test.ts +79 -0
- package/src/errors.ts +92 -2
- package/src/execution.ts +14 -10
- package/src/explore.ts +4 -2
- package/src/external.test.ts +88 -0
- package/src/external.ts +56 -2
- package/src/generate.ts +2 -1
- package/src/main.ts +10 -0
- package/src/plugin.test.ts +7 -1
- package/src/plugin.ts +49 -25
- package/src/record.ts +617 -0
- package/src/registry.ts +9 -5
- package/src/runtime.ts +16 -4
- package/src/validate.ts +2 -3
- package/tests/e2e/browser-auth.test.ts +10 -1
- package/tests/e2e/browser-public.test.ts +13 -8
- package/tests/e2e/public-commands.test.ts +209 -21
- package/tests/smoke/api-health.test.ts +65 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,133 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.3.2](https://github.com/jackwener/opencli/compare/v1.3.1...v1.3.2) (2026-03-24)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **error-handling:** refine error handling with semantic error types and emoji-coded output ([#312](https://github.com/jackwener/opencli/issues/312)) ([b4d64ca](https://github.com/jackwener/opencli/commit/b4d64ca))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **security:** replace execSync with execFileSync to prevent command injection ([#309](https://github.com/jackwener/opencli/issues/309)) ([41aedf6](https://github.com/jackwener/opencli/commit/41aedf6))
|
|
14
|
+
* remove duplicate getErrorMessage import in discovery.ts ([#315](https://github.com/jackwener/opencli/issues/315)) ([75f4237](https://github.com/jackwener/opencli/commit/75f4237))
|
|
15
|
+
* **e2e:** broaden xiaoyuzhou skip logic for overseas CI runners ([#316](https://github.com/jackwener/opencli/issues/316)) ([a170873](https://github.com/jackwener/opencli/commit/a170873))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Documentation
|
|
19
|
+
|
|
20
|
+
* **SKILL.md:** sync command reference — add missing sites and desktop adapters ([#314](https://github.com/jackwener/opencli/issues/314)) ([8bf750c](https://github.com/jackwener/opencli/commit/8bf750c))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Chores
|
|
24
|
+
|
|
25
|
+
* pre-release cleanup — fix dependencies, sync docs, reduce code duplication ([#311](https://github.com/jackwener/opencli/issues/311)) ([c9b3568](https://github.com/jackwener/opencli/commit/c9b3568))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## [1.3.1](https://github.com/jackwener/opencli/compare/v1.3.0...v1.3.1) (2026-03-22)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Features
|
|
32
|
+
|
|
33
|
+
* **plugin:** add update command, hot reload after install, README section ([#307](https://github.com/jackwener/opencli/issues/307)) ([966f6e5](https://github.com/jackwener/opencli/commit/966f6e5))
|
|
34
|
+
* **yollomi:** add new commands and update documentation ([#235](https://github.com/jackwener/opencli/issues/235)) ([ea83242](https://github.com/jackwener/opencli/commit/ea83242))
|
|
35
|
+
* **record:** add live recording command for API capture ([#300](https://github.com/jackwener/opencli/issues/300)) ([dff0fe5](https://github.com/jackwener/opencli/commit/dff0fe5))
|
|
36
|
+
* **weibo:** add weibo search command ([#299](https://github.com/jackwener/opencli/issues/299)) ([c7895ea](https://github.com/jackwener/opencli/commit/c7895ea))
|
|
37
|
+
* **v2ex:** add node, user, member, replies, nodes commands ([#282](https://github.com/jackwener/opencli/issues/282)) ([a83027d](https://github.com/jackwener/opencli/commit/a83027d))
|
|
38
|
+
* **hackernews:** add new, best, ask, show, jobs, search, user commands ([#290](https://github.com/jackwener/opencli/issues/290)) ([127a974](https://github.com/jackwener/opencli/commit/127a974))
|
|
39
|
+
* **doubao-app:** add Doubao AI desktop app CLI adapter ([#289](https://github.com/jackwener/opencli/issues/289)) ([66c4b84](https://github.com/jackwener/opencli/commit/66c4b84))
|
|
40
|
+
* **doubao:** add doubao browser adapter ([#277](https://github.com/jackwener/opencli/issues/277)) ([9cdc127](https://github.com/jackwener/opencli/commit/9cdc127))
|
|
41
|
+
* **xiaohongshu:** add publish command for 图文 note automation ([#276](https://github.com/jackwener/opencli/issues/276)) ([a6d993f](https://github.com/jackwener/opencli/commit/a6d993f))
|
|
42
|
+
* **weixin:** add weixin article download adapter & abstract download helpers ([#280](https://github.com/jackwener/opencli/issues/280)) ([b7c6c02](https://github.com/jackwener/opencli/commit/b7c6c02))
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
### Bug Fixes
|
|
46
|
+
|
|
47
|
+
* **tests:** use positional arg syntax in browser search tests ([#302](https://github.com/jackwener/opencli/issues/302)) ([4343ec0](https://github.com/jackwener/opencli/commit/4343ec0))
|
|
48
|
+
* **xiaohongshu:** improve search login-wall handling and detail output ([#298](https://github.com/jackwener/opencli/issues/298)) ([f8bf663](https://github.com/jackwener/opencli/commit/f8bf663))
|
|
49
|
+
* ensure standard PATH is available for external CLIs ([#285](https://github.com/jackwener/opencli/issues/285)) ([22f5c7a](https://github.com/jackwener/opencli/commit/22f5c7a))
|
|
50
|
+
* **xiaohongshu:** scope image selector to avoid downloading avatars ([#293](https://github.com/jackwener/opencli/issues/293)) ([3a21be6](https://github.com/jackwener/opencli/commit/3a21be6))
|
|
51
|
+
* add turndown dependency to package.json ([#288](https://github.com/jackwener/opencli/issues/288)) ([2a52906](https://github.com/jackwener/opencli/commit/2a52906))
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## [1.3.0](https://github.com/jackwener/opencli/compare/v1.2.3...v1.3.0) (2026-03-21)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
### Features
|
|
58
|
+
|
|
59
|
+
* **daemon:** harden security against browser CSRF attacks ([#268](https://github.com/jackwener/opencli/issues/268)) ([40bd11d](https://github.com/jackwener/opencli/commit/40bd11d))
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
### Performance
|
|
63
|
+
|
|
64
|
+
* smart page settle via DOM stability detection ([#271](https://github.com/jackwener/opencli/issues/271)) ([4b976da](https://github.com/jackwener/opencli/commit/4b976da))
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
### Refactoring
|
|
68
|
+
|
|
69
|
+
* doctor defaults to live mode, remove setup command entirely ([#263](https://github.com/jackwener/opencli/issues/263)) ([b4a8089](https://github.com/jackwener/opencli/commit/b4a8089))
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
## [1.2.3](https://github.com/jackwener/opencli/compare/v1.2.2...v1.2.3) (2026-03-21)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
### Bug Fixes
|
|
76
|
+
|
|
77
|
+
* replace all about:blank with data: URI to prevent New Tab Override interception ([#257](https://github.com/jackwener/opencli/issues/257)) ([3e91876](https://github.com/jackwener/opencli/commit/3e91876))
|
|
78
|
+
* harden resolveTabId against New Tab Override extension interception ([#255](https://github.com/jackwener/opencli/issues/255)) ([112fdef](https://github.com/jackwener/opencli/commit/112fdef))
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
## [1.2.2](https://github.com/jackwener/opencli/compare/v1.2.1...v1.2.2) (2026-03-21)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
### Bug Fixes
|
|
85
|
+
|
|
86
|
+
* harden browser automation pipeline (resolves [#249](https://github.com/jackwener/opencli/issues/249)) ([#251](https://github.com/jackwener/opencli/issues/251)) ([71b2c39](https://github.com/jackwener/opencli/commit/71b2c39))
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
## [1.2.1](https://github.com/jackwener/opencli/compare/v1.2.0...v1.2.1) (2026-03-21)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
### Bug Fixes
|
|
93
|
+
|
|
94
|
+
* **twitter:** harden timeline review findings ([#236](https://github.com/jackwener/opencli/issues/236)) ([4cd0409](https://github.com/jackwener/opencli/commit/4cd0409))
|
|
95
|
+
* **wikipedia:** fix search arg name + add random and trending commands ([#231](https://github.com/jackwener/opencli/issues/231)) ([1d56dd7](https://github.com/jackwener/opencli/commit/1d56dd7))
|
|
96
|
+
* resolve inconsistent doctor --live report (fix [#121](https://github.com/jackwener/opencli/issues/121)) ([#224](https://github.com/jackwener/opencli/issues/224)) ([387aa0d](https://github.com/jackwener/opencli/commit/387aa0d))
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
## [1.2.0](https://github.com/jackwener/opencli/compare/v1.1.0...v1.2.0) (2026-03-21)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
### Features
|
|
103
|
+
|
|
104
|
+
* **douban:** add movie adapter with search, top250, subject, marks, reviews commands ([#239](https://github.com/jackwener/opencli/issues/239)) ([70651d3](https://github.com/jackwener/opencli/commit/70651d3))
|
|
105
|
+
* **devto:** add devto adapter ([#234](https://github.com/jackwener/opencli/issues/234)) ([ea113a6](https://github.com/jackwener/opencli/commit/ea113a6))
|
|
106
|
+
* **twitter:** add --type flag to timeline command ([#83](https://github.com/jackwener/opencli/issues/83)) ([e98cf75](https://github.com/jackwener/opencli/commit/e98cf75))
|
|
107
|
+
* **google:** add search, suggest, news, and trends adapters ([#184](https://github.com/jackwener/opencli/issues/184)) ([4e32599](https://github.com/jackwener/opencli/commit/4e32599))
|
|
108
|
+
* add douban, sinablog, substack adapters; upgrade medium to TS ([#185](https://github.com/jackwener/opencli/issues/185)) ([bdf5967](https://github.com/jackwener/opencli/commit/bdf5967))
|
|
109
|
+
* **xueqiu:** add earnings-date command ([#211](https://github.com/jackwener/opencli/issues/211)) ([fae1dce](https://github.com/jackwener/opencli/commit/fae1dce))
|
|
110
|
+
* **browser:** advanced DOM snapshot engine with 13-layer pruning pipeline ([#210](https://github.com/jackwener/opencli/issues/210)) ([d831b04](https://github.com/jackwener/opencli/commit/d831b04))
|
|
111
|
+
* **instagram,facebook:** add write actions and extended commands ([#201](https://github.com/jackwener/opencli/issues/201)) ([eb0ccaf](https://github.com/jackwener/opencli/commit/eb0ccaf))
|
|
112
|
+
* **grok:** add opt-in --web flow for grok ask ([#193](https://github.com/jackwener/opencli/issues/193)) ([fcff2e4](https://github.com/jackwener/opencli/commit/fcff2e4))
|
|
113
|
+
* **tiktok:** add TikTok adapter with 15 commands ([#202](https://github.com/jackwener/opencli/issues/202)) ([4391ccf](https://github.com/jackwener/opencli/commit/4391ccf))
|
|
114
|
+
* add Lobste.rs, Instagram, and Facebook adapters ([#199](https://github.com/jackwener/opencli/issues/199)) ([ce484c2](https://github.com/jackwener/opencli/commit/ce484c2))
|
|
115
|
+
* **medium:** add medium adapter ([#190](https://github.com/jackwener/opencli/issues/190)) ([06c902a](https://github.com/jackwener/opencli/commit/06c902a))
|
|
116
|
+
* plugin system (Stage 0-2) ([1d39295](https://github.com/jackwener/opencli/commit/1d39295))
|
|
117
|
+
* make primary args positional across all CLIs ([#242](https://github.com/jackwener/opencli/issues/242)) ([9696db9](https://github.com/jackwener/opencli/commit/9696db9))
|
|
118
|
+
* **xueqiu:** make primary args positional ([#213](https://github.com/jackwener/opencli/issues/213)) ([fb2a145](https://github.com/jackwener/opencli/commit/fb2a145))
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
### Refactoring
|
|
122
|
+
|
|
123
|
+
* replace hardcoded skipPreNav with declarative navigateBefore field ([#208](https://github.com/jackwener/opencli/issues/208)) ([a228758](https://github.com/jackwener/opencli/commit/a228758))
|
|
124
|
+
* **boss:** extract common.ts utilities, fix missing login detection ([#200](https://github.com/jackwener/opencli/issues/200)) ([ae30763](https://github.com/jackwener/opencli/commit/ae30763))
|
|
125
|
+
* type discovery core ([#219](https://github.com/jackwener/opencli/issues/219)) ([bd274ce](https://github.com/jackwener/opencli/commit/bd274ce))
|
|
126
|
+
* type browser core ([#218](https://github.com/jackwener/opencli/issues/218)) ([28c393e](https://github.com/jackwener/opencli/commit/28c393e))
|
|
127
|
+
* type pipeline core ([#217](https://github.com/jackwener/opencli/issues/217)) ([8a4ea41](https://github.com/jackwener/opencli/commit/8a4ea41))
|
|
128
|
+
* reduce core any usage ([#216](https://github.com/jackwener/opencli/issues/216)) ([45cee57](https://github.com/jackwener/opencli/commit/45cee57))
|
|
129
|
+
* fail fast on invalid pipeline steps ([#237](https://github.com/jackwener/opencli/issues/237)) ([c76f86c](https://github.com/jackwener/opencli/commit/c76f86c))
|
|
130
|
+
|
|
3
131
|
## [1.1.0](https://github.com/jackwener/opencli/compare/v1.0.6...v1.1.0) (2026-03-20)
|
|
4
132
|
|
|
5
133
|
|
package/README.md
CHANGED
|
@@ -105,16 +105,19 @@ Run `opencli list` for the live registry.
|
|
|
105
105
|
| **bilibili** | `hot` `search` `me` `favorite` `history` `feed` `subtitle` `dynamic` `ranking` `following` `user-videos` `download` | Browser |
|
|
106
106
|
| **codex** | `status` `send` `read` `new` `dump` `extract-diff` `model` `ask` `screenshot` `history` `export` | Desktop |
|
|
107
107
|
| **chatwise** | `status` `new` `send` `read` `ask` `model` `history` `export` `screenshot` | Desktop |
|
|
108
|
+
| **doubao** | `status` `new` `send` `read` `ask` | Browser |
|
|
109
|
+
| **doubao-app** | `status` `new` `send` `read` `ask` `screenshot` `dump` | Desktop |
|
|
108
110
|
| **notion** | `status` `search` `read` `new` `write` `sidebar` `favorites` `export` | Desktop |
|
|
109
111
|
| **discord-app** | `status` `send` `read` `channels` `servers` `search` `members` | Desktop |
|
|
110
|
-
| **v2ex** | `hot` `latest` `topic` `daily` `me` `notifications` | Public / Browser |
|
|
112
|
+
| **v2ex** | `hot` `latest` `topic` `node` `user` `member` `replies` `nodes` `daily` `me` `notifications` | Public / Browser |
|
|
111
113
|
| **xueqiu** | `feed` `hot-stock` `hot` `search` `stock` `watchlist` `earnings-date` | Browser |
|
|
112
114
|
| **antigravity** | `status` `send` `read` `new` `dump` `extract-code` `model` `watch` `serve` | Desktop |
|
|
113
115
|
| **chatgpt** | `status` `new` `send` `read` `ask` | Desktop |
|
|
114
|
-
| **xiaohongshu** | `search` `notifications` `feed` `user` `download` `creator-notes` `creator-note-detail` `creator-notes-summary` `creator-profile` `creator-stats` | Browser |
|
|
116
|
+
| **xiaohongshu** | `search` `notifications` `feed` `user` `download` `publish` `creator-notes` `creator-note-detail` `creator-notes-summary` `creator-profile` `creator-stats` | Browser |
|
|
115
117
|
| **apple-podcasts** | `search` `episodes` `top` | Public |
|
|
116
118
|
| **xiaoyuzhou** | `podcast` `podcast-episodes` `episode` | Public |
|
|
117
119
|
| **zhihu** | `hot` `search` `question` `download` | Browser |
|
|
120
|
+
| **weixin** | `download` | Browser |
|
|
118
121
|
| **youtube** | `search` `video` `transcript` | Browser |
|
|
119
122
|
| **boss** | `search` `detail` `recommend` `joblist` `greet` `batchgreet` `send` `chatlist` `chatmsg` `invite` `mark` `exchange` `resume` `stats` | Browser |
|
|
120
123
|
| **coupang** | `search` `add-to-cart` | Browser |
|
|
@@ -124,24 +127,33 @@ Run `opencli list` for the live registry.
|
|
|
124
127
|
| **devto** | `top` `tag` `user` | Public |
|
|
125
128
|
| **arxiv** | `search` `paper` | Public |
|
|
126
129
|
| **wikipedia** | `search` `summary` | Public |
|
|
127
|
-
| **hackernews** | `top` | Public |
|
|
130
|
+
| **hackernews** | `top` `new` `best` `ask` `show` `jobs` `search` `user` | Public |
|
|
128
131
|
| **linkedin** | `search` | Browser |
|
|
129
132
|
| **reuters** | `search` | Browser |
|
|
130
133
|
| **smzdm** | `search` | Browser |
|
|
131
|
-
| **weibo** | `hot` | Browser |
|
|
134
|
+
| **weibo** | `hot` `search` | Browser |
|
|
132
135
|
| **yahoo-finance** | `quote` | Browser |
|
|
133
136
|
| **sinafinance** | `news` | 🌐 Public |
|
|
134
137
|
| **barchart** | `quote` `options` `greeks` `flow` | Browser |
|
|
135
138
|
| **chaoxing** | `assignments` `exams` | Browser |
|
|
136
|
-
| **grok** | `ask` |
|
|
139
|
+
| **grok** | `ask` | Browser |
|
|
137
140
|
| **hf** | `top` | Public |
|
|
138
141
|
| **jike** | `feed` `search` `create` `like` `comment` `repost` `notifications` `post` `topic` `user` | Browser |
|
|
139
142
|
| **jimeng** | `generate` `history` | Browser |
|
|
143
|
+
| **yollomi** | `generate` `video` `edit` `upload` `models` `remove-bg` `upscale` `face-swap` `restore` `try-on` `background` `object-remover` | Browser |
|
|
140
144
|
| **linux-do** | `hot` `latest` `search` `categories` `category` `topic` | Public |
|
|
141
145
|
| **stackoverflow** | `hot` `search` `bounties` `unanswered` | Public |
|
|
142
146
|
| **steam** | `top-sellers` | Public |
|
|
143
147
|
| **weread** | `shelf` `search` `book` `highlights` `notes` `notebooks` `ranking` | Browser |
|
|
144
148
|
| **douban** | `search` `top250` `subject` `marks` `reviews` | Browser |
|
|
149
|
+
| **facebook** | `feed` `profile` `search` `friends` `groups` `events` `notifications` `memories` `add-friend` `join-group` | Browser |
|
|
150
|
+
| **google** | `news` `search` `suggest` `trends` | Public |
|
|
151
|
+
| **instagram** | `explore` `profile` `search` `user` `followers` `following` `follow` `unfollow` `like` `unlike` `comment` `save` `unsave` `saved` | Browser |
|
|
152
|
+
| **lobsters** | `hot` `newest` `active` `tag` | Public |
|
|
153
|
+
| **medium** | `feed` `search` `user` `shared` | Browser |
|
|
154
|
+
| **sinablog** | `hot` `search` `article` `user` `shared` | Browser |
|
|
155
|
+
| **substack** | `feed` `search` `publication` `shared` | Browser |
|
|
156
|
+
| **tiktok** | `explore` `search` `profile` `user` `following` `follow` `unfollow` `like` `unlike` `comment` `save` `unsave` `live` `notifications` `friends` | Browser |
|
|
145
157
|
|
|
146
158
|
|
|
147
159
|
### External CLI Hub
|
|
@@ -155,6 +167,7 @@ OpenCLI acts as a universal hub for your existing command-line tools. It provide
|
|
|
155
167
|
| **docker** | Docker command-line interface | `opencli docker ps` |
|
|
156
168
|
| **kubectl** | Kubernetes command-line tool | `opencli kubectl get pods` |
|
|
157
169
|
| **readwise** | Readwise & Reader CLI | `opencli readwise login` |
|
|
170
|
+
| **gws** | Google Workspace CLI — Docs, Sheets, Drive, Gmail, Calendar | `opencli gws docs list` |
|
|
158
171
|
|
|
159
172
|
**Zero Configuration**: OpenCLI purely passes your inputs to the underlying binary via standard I/O streams. The external CLI works exactly as it naturally would, maintaining its standard output formats.
|
|
160
173
|
|
|
@@ -179,6 +192,7 @@ Each desktop adapter has its own detailed documentation with commands reference,
|
|
|
179
192
|
| **ChatWise** | Multi-LLM client (GPT-4, Claude, Gemini) | [Doc](./docs/adapters/desktop/chatwise.md) |
|
|
180
193
|
| **Notion** | Search, read, write Notion pages | [Doc](./docs/adapters/desktop/notion.md) |
|
|
181
194
|
| **Discord** | Discord Desktop — messages, channels, servers | [Doc](./docs/adapters/desktop/discord.md) |
|
|
195
|
+
| **Doubao** | Control Doubao AI desktop app via CDP | [Doc](./docs/adapters/desktop/doubao-app.md) |
|
|
182
196
|
|
|
183
197
|
## Download Support
|
|
184
198
|
|
|
@@ -192,6 +206,7 @@ OpenCLI supports downloading images, videos, and articles from supported platfor
|
|
|
192
206
|
| **bilibili** | Videos | Requires `yt-dlp` installed |
|
|
193
207
|
| **twitter** | Images, Videos | Downloads from user media tab or single tweet |
|
|
194
208
|
| **zhihu** | Articles (Markdown) | Exports articles with optional image download |
|
|
209
|
+
| **weixin** | Articles (Markdown) | Exports WeChat Official Account articles |
|
|
195
210
|
|
|
196
211
|
### Prerequisites
|
|
197
212
|
|
|
@@ -225,6 +240,9 @@ opencli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --output ./zhihu
|
|
|
225
240
|
|
|
226
241
|
# Export with local images
|
|
227
242
|
opencli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --download-images
|
|
243
|
+
|
|
244
|
+
# Export WeChat article to Markdown
|
|
245
|
+
opencli weixin download --url "https://mp.weixin.qq.com/s/xxx" --output ./weixin
|
|
228
246
|
```
|
|
229
247
|
|
|
230
248
|
|
|
@@ -244,6 +262,25 @@ opencli bilibili hot -f csv # CSV
|
|
|
244
262
|
opencli bilibili hot -v # Verbose: show pipeline debug steps
|
|
245
263
|
```
|
|
246
264
|
|
|
265
|
+
## Plugins
|
|
266
|
+
|
|
267
|
+
Extend OpenCLI with community-contributed adapters. Plugins use the same YAML/TS format as built-in commands and are automatically discovered at startup.
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
opencli plugin install github:user/opencli-plugin-my-tool # Install
|
|
271
|
+
opencli plugin list # List installed
|
|
272
|
+
opencli plugin update my-tool # Update to latest
|
|
273
|
+
opencli plugin uninstall my-tool # Remove
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
| Plugin | Type | Description |
|
|
277
|
+
|--------|------|-------------|
|
|
278
|
+
| [opencli-plugin-github-trending](https://github.com/ByteYue/opencli-plugin-github-trending) | YAML | GitHub Trending repositories |
|
|
279
|
+
| [opencli-plugin-hot-digest](https://github.com/ByteYue/opencli-plugin-hot-digest) | TS | Multi-platform trending aggregator |
|
|
280
|
+
| [opencli-plugin-juejin](https://github.com/Astro-Han/opencli-plugin-juejin) | YAML | 稀土掘金 (Juejin) hot articles |
|
|
281
|
+
|
|
282
|
+
See [Plugins Guide](./docs/guide/plugins.md) for creating your own plugin.
|
|
283
|
+
|
|
247
284
|
## For AI Agents (Developer Guide)
|
|
248
285
|
|
|
249
286
|
If you are an AI assistant tasked with creating a new command adapter for `opencli`, please follow the AI Agent workflow below:
|
|
@@ -291,6 +328,8 @@ See **[TESTING.md](./TESTING.md)** for how to run and write tests.
|
|
|
291
328
|
|
|
292
329
|
[](https://star-history.com/#jackwener/opencli&Date)
|
|
293
330
|
|
|
331
|
+
|
|
332
|
+
|
|
294
333
|
## License
|
|
295
334
|
|
|
296
335
|
[Apache-2.0](./LICENSE)
|
package/README.zh-CN.md
CHANGED
|
@@ -107,16 +107,19 @@ npm install -g @jackwener/opencli@latest
|
|
|
107
107
|
| **bilibili** | `hot` `search` `me` `favorite` `history` `feed` `subtitle` `dynamic` `ranking` `following` `user-videos` `download` | 浏览器 |
|
|
108
108
|
| **codex** | `status` `send` `read` `new` `dump` `extract-diff` `model` `ask` `screenshot` `history` `export` | 桌面端 |
|
|
109
109
|
| **chatwise** | `status` `new` `send` `read` `ask` `model` `history` `export` `screenshot` | 桌面端 |
|
|
110
|
+
| **doubao** | `status` `new` `send` `read` `ask` | 浏览器 |
|
|
111
|
+
| **doubao-app** | `status` `new` `send` `read` `ask` `screenshot` `dump` | 桌面端 |
|
|
110
112
|
| **notion** | `status` `search` `read` `new` `write` `sidebar` `favorites` `export` | 桌面端 |
|
|
111
113
|
| **discord-app** | `status` `send` `read` `channels` `servers` `search` `members` | 桌面端 |
|
|
112
|
-
| **v2ex** | `hot` `latest` `topic` `daily` `me` `notifications` | 公开 / 浏览器 |
|
|
114
|
+
| **v2ex** | `hot` `latest` `topic` `node` `user` `member` `replies` `nodes` `daily` `me` `notifications` | 公开 / 浏览器 |
|
|
113
115
|
| **xueqiu** | `feed` `hot-stock` `hot` `search` `stock` `watchlist` `earnings-date` | 浏览器 |
|
|
114
116
|
| **antigravity** | `status` `send` `read` `new` `dump` `extract-code` `model` `watch` `serve` | 桌面端 |
|
|
115
117
|
| **chatgpt** | `status` `new` `send` `read` `ask` | 桌面端 |
|
|
116
|
-
| **xiaohongshu** | `search` `notifications` `feed` `user` `download` `creator-notes` `creator-note-detail` `creator-notes-summary` `creator-profile` `creator-stats` | 浏览器 |
|
|
118
|
+
| **xiaohongshu** | `search` `notifications` `feed` `user` `download` `publish` `creator-notes` `creator-note-detail` `creator-notes-summary` `creator-profile` `creator-stats` | 浏览器 |
|
|
117
119
|
| **apple-podcasts** | `search` `episodes` `top` | 公开 |
|
|
118
120
|
| **xiaoyuzhou** | `podcast` `podcast-episodes` `episode` | 公开 |
|
|
119
121
|
| **zhihu** | `hot` `search` `question` `download` | 浏览器 |
|
|
122
|
+
| **weixin** | `download` | 浏览器 |
|
|
120
123
|
| **youtube** | `search` `video` `transcript` | 浏览器 |
|
|
121
124
|
| **boss** | `search` `detail` `recommend` `joblist` `greet` `batchgreet` `send` `chatlist` `chatmsg` `invite` `mark` `exchange` `resume` `stats` | 浏览器 |
|
|
122
125
|
| **coupang** | `search` `add-to-cart` | 浏览器 |
|
|
@@ -126,24 +129,33 @@ npm install -g @jackwener/opencli@latest
|
|
|
126
129
|
| **devto** | `top` `tag` `user` | 公开 |
|
|
127
130
|
| **arxiv** | `search` `paper` | 公开 |
|
|
128
131
|
| **wikipedia** | `search` `summary` | 公开 |
|
|
129
|
-
| **hackernews** | `top` | 公共 API |
|
|
132
|
+
| **hackernews** | `top` `new` `best` `ask` `show` `jobs` `search` `user` | 公共 API |
|
|
130
133
|
| **linkedin** | `search` | 浏览器 |
|
|
131
134
|
| **reuters** | `search` | 浏览器 |
|
|
132
135
|
| **smzdm** | `search` | 浏览器 |
|
|
133
|
-
| **weibo** | `hot` | 浏览器 |
|
|
136
|
+
| **weibo** | `hot` `search` | 浏览器 |
|
|
134
137
|
| **yahoo-finance** | `quote` | 浏览器 |
|
|
135
138
|
| **sinafinance** | `news` | 🌐 公开 |
|
|
136
139
|
| **barchart** | `quote` `options` `greeks` `flow` | 浏览器 |
|
|
137
140
|
| **chaoxing** | `assignments` `exams` | 浏览器 |
|
|
138
|
-
| **grok** | `ask` |
|
|
141
|
+
| **grok** | `ask` | 浏览器 |
|
|
139
142
|
| **hf** | `top` | 公开 |
|
|
140
143
|
| **jike** | `feed` `search` `create` `like` `comment` `repost` `notifications` `post` `topic` `user` | 浏览器 |
|
|
141
144
|
| **jimeng** | `generate` `history` | 浏览器 |
|
|
145
|
+
| **yollomi** | `generate` `video` `edit` `upload` `models` `remove-bg` `upscale` `face-swap` `restore` `try-on` `background` `object-remover` | 浏览器 |
|
|
142
146
|
| **linux-do** | `hot` `latest` `search` `categories` `category` `topic` | 公开 |
|
|
143
147
|
| **stackoverflow** | `hot` `search` `bounties` `unanswered` | 公开 |
|
|
144
148
|
| **steam** | `top-sellers` | 公开 |
|
|
145
149
|
| **weread** | `shelf` `search` `book` `highlights` `notes` `notebooks` `ranking` | 浏览器 |
|
|
146
150
|
| **douban** | `search` `top250` `subject` `marks` `reviews` | 浏览器 |
|
|
151
|
+
| **facebook** | `feed` `profile` `search` `friends` `groups` `events` `notifications` `memories` `add-friend` `join-group` | 浏览器 |
|
|
152
|
+
| **google** | `news` `search` `suggest` `trends` | 公开 |
|
|
153
|
+
| **instagram** | `explore` `profile` `search` `user` `followers` `following` `follow` `unfollow` `like` `unlike` `comment` `save` `unsave` `saved` | 浏览器 |
|
|
154
|
+
| **lobsters** | `hot` `newest` `active` `tag` | 公开 |
|
|
155
|
+
| **medium** | `feed` `search` `user` `shared` | 浏览器 |
|
|
156
|
+
| **sinablog** | `hot` `search` `article` `user` `shared` | 浏览器 |
|
|
157
|
+
| **substack** | `feed` `search` `publication` `shared` | 浏览器 |
|
|
158
|
+
| **tiktok** | `explore` `search` `profile` `user` `following` `follow` `unfollow` `like` `unlike` `comment` `save` `unsave` `live` `notifications` `friends` | 浏览器 |
|
|
147
159
|
|
|
148
160
|
|
|
149
161
|
### 外部 CLI 枢纽
|
|
@@ -157,6 +169,7 @@ OpenCLI 也可以作为你现有命令行工具的统一入口,负责发现、
|
|
|
157
169
|
| **docker** | Docker 命令行工具 | `opencli docker ps` |
|
|
158
170
|
| **kubectl** | Kubernetes CLI | `opencli kubectl get pods` |
|
|
159
171
|
| **readwise** | Readwise / Reader CLI | `opencli readwise login` |
|
|
172
|
+
| **gws** | Google Workspace CLI — Docs, Sheets, Drive, Gmail, Calendar | `opencli gws docs list` |
|
|
160
173
|
|
|
161
174
|
**零配置透传**:OpenCLI 会把你的输入原样转发给底层二进制,保留原生 stdout / stderr 行为。
|
|
162
175
|
|
|
@@ -181,6 +194,7 @@ opencli register mycli
|
|
|
181
194
|
| **ChatWise** | 多 LLM 客户端(GPT-4、Claude、Gemini) | [Doc](./docs/adapters/desktop/chatwise.md) |
|
|
182
195
|
| **Notion** | 搜索、读取、写入 Notion 页面 | [Doc](./docs/adapters/desktop/notion.md) |
|
|
183
196
|
| **Discord** | Discord 桌面版 — 消息、频道、服务器 | [Doc](./docs/adapters/desktop/discord.md) |
|
|
197
|
+
| **Doubao** | 通过 CDP 控制豆包桌面应用 | [Doc](./docs/adapters/desktop/doubao-app.md) |
|
|
184
198
|
|
|
185
199
|
## 下载支持
|
|
186
200
|
|
|
@@ -194,6 +208,7 @@ OpenCLI 支持从各平台下载图片、视频和文章。
|
|
|
194
208
|
| **B站** | 视频 | 需要安装 `yt-dlp` |
|
|
195
209
|
| **Twitter/X** | 图片、视频 | 从用户媒体页或单条推文下载 |
|
|
196
210
|
| **知乎** | 文章(Markdown) | 导出文章,可选下载图片到本地 |
|
|
211
|
+
| **微信公众号** | 文章(Markdown) | 导出微信公众号文章为 Markdown |
|
|
197
212
|
|
|
198
213
|
### 前置依赖
|
|
199
214
|
|
|
@@ -227,6 +242,9 @@ opencli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --output ./zhihu
|
|
|
227
242
|
|
|
228
243
|
# 导出并下载图片
|
|
229
244
|
opencli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --download-images
|
|
245
|
+
|
|
246
|
+
# 导出微信公众号文章为 Markdown
|
|
247
|
+
opencli weixin download --url "https://mp.weixin.qq.com/s/xxx" --output ./weixin
|
|
230
248
|
```
|
|
231
249
|
|
|
232
250
|
|
|
@@ -246,6 +264,25 @@ opencli bilibili hot -f csv # CSV
|
|
|
246
264
|
opencli bilibili hot -v # 详细模式:展示管线执行步骤调试信息
|
|
247
265
|
```
|
|
248
266
|
|
|
267
|
+
## 插件
|
|
268
|
+
|
|
269
|
+
通过社区贡献的插件扩展 OpenCLI。插件使用与内置命令相同的 YAML/TS 格式,启动时自动发现。
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
opencli plugin install github:user/opencli-plugin-my-tool # 安装
|
|
273
|
+
opencli plugin list # 查看已安装
|
|
274
|
+
opencli plugin update my-tool # 更新到最新
|
|
275
|
+
opencli plugin uninstall my-tool # 卸载
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
| 插件 | 类型 | 描述 |
|
|
279
|
+
|------|------|------|
|
|
280
|
+
| [opencli-plugin-github-trending](https://github.com/ByteYue/opencli-plugin-github-trending) | YAML | GitHub Trending 仓库 |
|
|
281
|
+
| [opencli-plugin-hot-digest](https://github.com/ByteYue/opencli-plugin-hot-digest) | TS | 多平台热榜聚合 |
|
|
282
|
+
| [opencli-plugin-juejin](https://github.com/Astro-Han/opencli-plugin-juejin) | YAML | 稀土掘金热门文章 |
|
|
283
|
+
|
|
284
|
+
详见 [插件指南](./docs/zh/guide/plugins.md) 了解如何创建自己的插件。
|
|
285
|
+
|
|
249
286
|
## 致 AI Agent(开发者指南)
|
|
250
287
|
|
|
251
288
|
如果你是一个被要求查阅代码并编写新 `opencli` 适配器的 AI,请遵守以下工作流。
|
|
@@ -289,6 +326,8 @@ opencli cascade https://api.example.com/data
|
|
|
289
326
|
|
|
290
327
|
[](https://star-history.com/#jackwener/opencli&Date)
|
|
291
328
|
|
|
329
|
+
|
|
330
|
+
|
|
292
331
|
## License
|
|
293
332
|
|
|
294
333
|
[Apache-2.0](./LICENSE)
|