publishport-opencli 1.0.1 → 1.0.3

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.
Files changed (317) hide show
  1. package/README.md +61 -61
  2. package/README.zh-CN.md +68 -68
  3. package/cli-manifest.json +502 -59
  4. package/clis/1688/shared.js +2 -2
  5. package/clis/36kr/news.js +1 -1
  6. package/clis/_atlassian/shared.js +1 -1
  7. package/clis/_shared/article/auth.js +1 -1
  8. package/clis/_shared/article/publish.js +1 -1
  9. package/clis/_shared/content-guard.js +1 -1
  10. package/clis/_shared/self-hosted-sites.js +2 -0
  11. package/clis/_shared/site-auth.js +1 -1
  12. package/clis/_shared/token-auth.js +2 -2
  13. package/clis/_shared/video-publish.js +1 -1
  14. package/clis/aibase/news.js +1 -1
  15. package/clis/amazon/shared.js +2 -2
  16. package/clis/antigravity/SKILL.md +12 -12
  17. package/clis/antigravity/storage.js +1 -1
  18. package/clis/apple-podcasts/episodes.js +1 -1
  19. package/clis/archive/item.js +1 -1
  20. package/clis/archive/search.js +1 -1
  21. package/clis/archive/snapshots.js +1 -1
  22. package/clis/archive/wayback.js +1 -1
  23. package/clis/arxiv/author.js +1 -1
  24. package/clis/baijiahao/publish.js +1 -1
  25. package/clis/bbc/utils.js +1 -1
  26. package/clis/bloomberg/businessweek.js +1 -1
  27. package/clis/bloomberg/utils.js +1 -1
  28. package/clis/booking/search.js +1 -1
  29. package/clis/boss/utils.js +1 -1
  30. package/clis/chatgpt/ask.js +1 -1
  31. package/clis/chatgpt/detail.js +1 -1
  32. package/clis/chatgpt/history.js +1 -1
  33. package/clis/chatgpt/project-file-add.js +1 -1
  34. package/clis/chatgpt/project-list.js +1 -1
  35. package/clis/chatgpt/utils.js +2 -2
  36. package/clis/chess/utils.js +1 -1
  37. package/clis/claude/ask.js +1 -1
  38. package/clis/claude/history.js +1 -1
  39. package/clis/claude/utils.js +1 -1
  40. package/clis/codex/extract-diff.js +1 -1
  41. package/clis/coingecko/coin.js +1 -1
  42. package/clis/crates/utils.js +1 -1
  43. package/clis/csdn/stats.js +1 -1
  44. package/clis/dblp/utils.js +1 -1
  45. package/clis/defillama/utils.js +1 -1
  46. package/clis/devto/publish.js +1 -1
  47. package/clis/discord-app/utils.js +1 -1
  48. package/clis/dockerhub/utils.js +1 -1
  49. package/clis/douban/utils.js +1 -1
  50. package/clis/douyin/_shared/tos-upload.js +1 -1
  51. package/clis/douyin/hashtag.js +1 -1
  52. package/clis/douyin/publish-image.js +1 -1
  53. package/clis/douyin/publish.js +1 -1
  54. package/clis/eastmoney/announcement.js +1 -1
  55. package/clis/eastmoney/rank.js +1 -1
  56. package/clis/eastmoney/sectors.js +1 -1
  57. package/clis/endoflife/utils.js +1 -1
  58. package/clis/flathub/utils.js +1 -1
  59. package/clis/gemini/detail.js +1 -1
  60. package/clis/gemini/read.js +1 -1
  61. package/clis/geogebra/add-circle.js +1 -1
  62. package/clis/geogebra/add-line.js +1 -1
  63. package/clis/geogebra/add-point.js +1 -1
  64. package/clis/geogebra/add-polygon.js +1 -1
  65. package/clis/geogebra/eval.js +1 -1
  66. package/clis/geogebra/hexagon.js +1 -1
  67. package/clis/geogebra/info.js +1 -1
  68. package/clis/geogebra/triangle.js +1 -1
  69. package/clis/ghost/login.js +1 -0
  70. package/clis/ghost/publish.js +1 -1
  71. package/clis/ghost/shared.js +24 -1
  72. package/clis/ghost/sites.js +1 -0
  73. package/clis/ghost/whoami.js +1 -1
  74. package/clis/gitee/user.js +2 -2
  75. package/clis/github-trending/repos.js +1 -1
  76. package/clis/goproxy/utils.js +1 -1
  77. package/clis/grok/export-all.js +1 -1
  78. package/clis/grok/export.js +1 -1
  79. package/clis/hashnode/publish.js +1 -1
  80. package/clis/hf/datasets.js +1 -1
  81. package/clis/hf/models.js +1 -1
  82. package/clis/hf/paper.js +1 -1
  83. package/clis/hf/spaces.js +1 -1
  84. package/clis/homebrew/utils.js +1 -1
  85. package/clis/instagram/note.js +1 -1
  86. package/clis/jimeng/generate.js +1 -1
  87. package/clis/juejin/utils.js +1 -1
  88. package/clis/kuaishou/publish.js +1 -1
  89. package/clis/lesswrong/tag.js +1 -1
  90. package/clis/lichess/utils.js +1 -1
  91. package/clis/linkedin/search.js +2 -2
  92. package/clis/linux-do/feed.js +2 -2
  93. package/clis/lobsters/domain.js +1 -1
  94. package/clis/mastodon/login.js +1 -0
  95. package/clis/mastodon/post.js +1 -1
  96. package/clis/mastodon/shared.js +10 -10
  97. package/clis/mastodon/sites.js +1 -0
  98. package/clis/mastodon/whoami.js +1 -1
  99. package/clis/maven/utils.js +1 -1
  100. package/clis/mdn/search.js +1 -1
  101. package/clis/medium/tag.js +1 -1
  102. package/clis/notebooklm/current.js +1 -1
  103. package/clis/notebooklm/get.js +1 -1
  104. package/clis/notebooklm/history.js +1 -1
  105. package/clis/notebooklm/note-list.js +1 -1
  106. package/clis/notebooklm/notes-get.js +1 -1
  107. package/clis/notebooklm/open.js +1 -1
  108. package/clis/notebooklm/source-fulltext.js +1 -1
  109. package/clis/notebooklm/source-get.js +1 -1
  110. package/clis/notebooklm/source-guide.js +1 -1
  111. package/clis/notebooklm/source-list.js +1 -1
  112. package/clis/notebooklm/summary.js +1 -1
  113. package/clis/notebooklm/utils.js +1 -1
  114. package/clis/npm/utils.js +1 -1
  115. package/clis/nuget/utils.js +1 -1
  116. package/clis/nvd/cve.js +1 -1
  117. package/clis/oeis/utils.js +1 -1
  118. package/clis/ones/common.js +2 -2
  119. package/clis/ones/me.js +1 -1
  120. package/clis/ones/tasks.js +1 -1
  121. package/clis/ones/token-info.js +1 -1
  122. package/clis/ones/worklog.js +1 -1
  123. package/clis/openalex/utils.js +1 -1
  124. package/clis/oschina/stats.js +1 -1
  125. package/clis/osv/utils.js +1 -1
  126. package/clis/packagist/utils.js +1 -1
  127. package/clis/pixiv/detail.js +1 -1
  128. package/clis/pixiv/user.js +1 -1
  129. package/clis/producthunt/utils.js +1 -1
  130. package/clis/pypi/utils.js +1 -1
  131. package/clis/qiita/gql.js +2 -2
  132. package/clis/rest-countries/utils.js +1 -1
  133. package/clis/rfc/utils.js +1 -1
  134. package/clis/rubygems/utils.js +1 -1
  135. package/clis/semanticscholar/utils.js +1 -1
  136. package/clis/slock/errors.js +1 -1
  137. package/clis/spotify/spotify.js +1 -1
  138. package/clis/spotify/utils.js +1 -1
  139. package/clis/stackoverflow/utils.js +1 -1
  140. package/clis/steam/utils.js +1 -1
  141. package/clis/substack/auth.js +2 -2
  142. package/clis/suno/generate.js +2 -2
  143. package/clis/suno/list.js +3 -3
  144. package/clis/telegram/send.js +1 -1
  145. package/clis/tiktok/creator-videos.js +1 -1
  146. package/clis/tiktok/publish.js +1 -1
  147. package/clis/tiktok/utils.js +1 -1
  148. package/clis/trae-cn/activity.js +1 -1
  149. package/clis/trae-cn/approve.js +1 -1
  150. package/clis/trae-cn/ask.js +1 -1
  151. package/clis/trae-cn/dump.js +1 -1
  152. package/clis/trae-cn/export.js +1 -1
  153. package/clis/trae-cn/model.js +1 -1
  154. package/clis/trae-cn/new.js +1 -1
  155. package/clis/trae-cn/read.js +1 -1
  156. package/clis/trae-cn/screenshot.js +1 -1
  157. package/clis/trae-cn/select-model.js +1 -1
  158. package/clis/trae-cn/send.js +1 -1
  159. package/clis/trae-cn/setup.js +1 -1
  160. package/clis/trae-cn/status.js +1 -1
  161. package/clis/trae-cn/targets.js +1 -1
  162. package/clis/trae-cn/watch.js +1 -1
  163. package/clis/trae-solo/state-fs.js +1 -1
  164. package/clis/tumblr/publish.js +1 -1
  165. package/clis/tvmaze/utils.js +1 -1
  166. package/clis/twitter/bookmark-folder.js +1 -1
  167. package/clis/twitter/download.js +1 -1
  168. package/clis/twitter/followers.js +2 -2
  169. package/clis/twitter/following.js +2 -2
  170. package/clis/twitter/likes.js +1 -1
  171. package/clis/twitter/list-add-batch.js +1 -1
  172. package/clis/twitter/list-add-core.js +1 -1
  173. package/clis/twitter/list-add.js +1 -1
  174. package/clis/twitter/list-create.js +1 -1
  175. package/clis/twitter/list-delete.js +3 -3
  176. package/clis/twitter/list-remove-batch.js +1 -1
  177. package/clis/twitter/list-remove.js +1 -1
  178. package/clis/twitter/list-tweets.js +1 -1
  179. package/clis/twitter/profile.js +1 -1
  180. package/clis/twitter/search.js +1 -1
  181. package/clis/twitter/shared.js +1 -1
  182. package/clis/twitter/tweets.js +1 -1
  183. package/clis/uisdc/news.js +1 -1
  184. package/clis/v2ex/daily.js +2 -2
  185. package/clis/v2ex/me.js +2 -2
  186. package/clis/v2ex/notifications.js +1 -1
  187. package/clis/wikidata/utils.js +1 -1
  188. package/clis/wikipedia/page.js +2 -2
  189. package/clis/wikipedia/summary.js +1 -1
  190. package/clis/wikipedia/utils.js +1 -1
  191. package/clis/wordpress/login.js +1 -1
  192. package/clis/wordpress/publish.js +1 -1
  193. package/clis/wordpress/shared.js +3 -3
  194. package/clis/wordpress/sites.js +1 -0
  195. package/clis/wordpress/whoami.js +1 -1
  196. package/clis/woshipm/stats.js +1 -1
  197. package/clis/xiaoe/content.js +1 -1
  198. package/clis/xiaohongshu/draft-delete.js +1 -1
  199. package/clis/xiaohongshu/draft-open.js +1 -1
  200. package/clis/xiaohongshu/draft-utils.js +2 -2
  201. package/clis/xiaohongshu/publish-video.js +1 -1
  202. package/clis/xiaohongshu/publish.js +1 -1
  203. package/clis/xiaoyuzhou/auth.js +1 -1
  204. package/clis/xiaoyuzhou/transcript.js +1 -1
  205. package/clis/yollomi/background.js +1 -1
  206. package/clis/yollomi/edit.js +1 -1
  207. package/clis/yollomi/generate.js +1 -1
  208. package/clis/yollomi/try-on.js +1 -1
  209. package/clis/youtube/publish.js +1 -1
  210. package/clis/zhihu/answer-comments.js +1 -1
  211. package/clis/zhihu/answer-detail.js +1 -1
  212. package/clis/zhihu/collection.js +2 -2
  213. package/clis/zhihu/collections.js +1 -1
  214. package/clis/zhihu/question.js +1 -1
  215. package/clis/zhihu/search.js +1 -1
  216. package/clis/zhihu/target.js +1 -1
  217. package/clis/zhihu/user-arg.js +1 -1
  218. package/dist/src/adapter-shadow.js +1 -1
  219. package/dist/src/browser/analyze.js +1 -1
  220. package/dist/src/browser/article-extract.d.ts +1 -1
  221. package/dist/src/browser/base-page.js +3 -3
  222. package/dist/src/browser/cdp.js +1 -1
  223. package/dist/src/browser/daemon-client.d.ts +1 -1
  224. package/dist/src/browser/daemon-lifecycle.js +6 -6
  225. package/dist/src/browser/daemon-version.js +1 -1
  226. package/dist/src/browser/dom-snapshot.d.ts +1 -1
  227. package/dist/src/browser/dom-snapshot.js +2 -2
  228. package/dist/src/browser/errors.js +2 -2
  229. package/dist/src/browser/network-cache.js +1 -1
  230. package/dist/src/browser/profile.js +1 -1
  231. package/dist/src/browser/target-resolver.js +4 -4
  232. package/dist/src/browser/verify-fixture.js +1 -1
  233. package/dist/src/browser-session-lock.js +1 -1
  234. package/dist/src/build-manifest.d.ts +1 -1
  235. package/dist/src/build-manifest.js +1 -1
  236. package/dist/src/cli-argv-preprocess.d.ts +4 -4
  237. package/dist/src/cli-argv-preprocess.js +1 -1
  238. package/dist/src/cli.d.ts +1 -1
  239. package/dist/src/cli.js +19 -19
  240. package/dist/src/commanderAdapter.js +1 -1
  241. package/dist/src/commands/auth.js +2 -2
  242. package/dist/src/commands/daemon.d.ts +4 -4
  243. package/dist/src/commands/daemon.js +1 -1
  244. package/dist/src/completion-shared.js +12 -12
  245. package/dist/src/completion.d.ts +2 -2
  246. package/dist/src/constants.d.ts +1 -1
  247. package/dist/src/constants.js +1 -1
  248. package/dist/src/daemon-utils.d.ts +1 -1
  249. package/dist/src/daemon-utils.js +1 -1
  250. package/dist/src/daemon.d.ts +2 -2
  251. package/dist/src/daemon.js +1 -1
  252. package/dist/src/discovery.d.ts +7 -7
  253. package/dist/src/discovery.js +2 -2
  254. package/dist/src/doctor.d.ts +1 -1
  255. package/dist/src/doctor.js +6 -6
  256. package/dist/src/electron-apps.d.ts +1 -1
  257. package/dist/src/electron-apps.js +1 -1
  258. package/dist/src/errors.d.ts +2 -2
  259. package/dist/src/errors.js +1 -1
  260. package/dist/src/execution.js +1 -1
  261. package/dist/src/external.d.ts +1 -1
  262. package/dist/src/external.js +1 -1
  263. package/dist/src/help.d.ts +1 -1
  264. package/dist/src/help.js +3 -3
  265. package/dist/src/hooks.d.ts +1 -1
  266. package/dist/src/launcher.js +2 -2
  267. package/dist/src/logger.d.ts +1 -1
  268. package/dist/src/main.d.ts +1 -1
  269. package/dist/src/main.js +1 -1
  270. package/dist/src/observation/artifact.js +2 -2
  271. package/dist/src/package-paths.js +1 -1
  272. package/dist/src/package-paths.test.d.ts +1 -0
  273. package/dist/src/plugin-manifest.d.ts +12 -3
  274. package/dist/src/plugin-manifest.js +1 -1
  275. package/dist/src/plugin-scaffold.d.ts +2 -2
  276. package/dist/src/plugin-scaffold.js +9 -9
  277. package/dist/src/plugin.d.ts +4 -4
  278. package/dist/src/plugin.js +10 -10
  279. package/dist/src/rate-limit.js +1 -1
  280. package/dist/src/registry-api.d.ts +1 -1
  281. package/dist/src/runtime-detect.d.ts +1 -1
  282. package/dist/src/serialization.js +1 -1
  283. package/dist/src/skills.js +6 -6
  284. package/dist/src/user-runtime.d.ts +8 -0
  285. package/dist/src/user-runtime.js +1 -0
  286. package/dist/src/user-runtime.test.d.ts +1 -0
  287. package/dist/src/validate.js +1 -1
  288. package/dist/src/validate.test.d.ts +1 -1
  289. package/docs/guide/browser-bridge.md +23 -23
  290. package/docs/guide/electron-app-cli.md +3 -3
  291. package/docs/guide/exit-codes.md +3 -3
  292. package/docs/guide/extending-opencli.md +37 -37
  293. package/docs/guide/getting-started.md +19 -19
  294. package/docs/guide/installation.md +6 -6
  295. package/docs/guide/plugins.md +32 -32
  296. package/docs/guide/remote-orchestration.md +5 -5
  297. package/docs/guide/troubleshooting.md +9 -9
  298. package/package.json +3 -2
  299. package/scripts/fetch-adapters.js +6 -6
  300. package/scripts/postinstall.js +14 -14
  301. package/skills/opencli-adapter-author/SKILL.md +24 -24
  302. package/skills/opencli-adapter-author/references/adapter-template.md +13 -13
  303. package/skills/opencli-adapter-author/references/api-discovery.md +25 -25
  304. package/skills/opencli-adapter-author/references/coverage-matrix.md +3 -3
  305. package/skills/opencli-adapter-author/references/field-decode-playbook.md +10 -10
  306. package/skills/opencli-adapter-author/references/jsdom-fixture-pattern.md +2 -2
  307. package/skills/opencli-adapter-author/references/site-memory.md +11 -11
  308. package/skills/opencli-adapter-author/references/site-recon.md +7 -7
  309. package/skills/opencli-adapter-author/references/strategy-selection.md +3 -3
  310. package/skills/opencli-adapter-author/references/success-rate-pitfalls.md +4 -4
  311. package/skills/opencli-adapter-author/references/typed-errors.md +2 -2
  312. package/skills/opencli-autofix/SKILL.md +29 -29
  313. package/skills/opencli-browser/SKILL.md +55 -55
  314. package/skills/opencli-browser-sitemap/SKILL.md +7 -7
  315. package/skills/opencli-sitemap-author/SKILL.md +11 -11
  316. package/skills/opencli-sitemap-author/references/sitemap-schema.md +19 -19
  317. package/skills/opencli-usage/SKILL.md +43 -43
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # OpenCLI
1
+ # ppcli
2
2
 
3
3
  > **Convert any website into a CLI & run Browser Use on your logged-in Chrome.**
4
4
  > Turn websites, browser sessions, Electron apps, and local tools into deterministic interfaces for humans and AI agents.
@@ -9,19 +9,19 @@
9
9
  [![Node.js Version](https://img.shields.io/node/v/@jackwener/opencli?style=flat-square)](https://nodejs.org)
10
10
  [![License](https://img.shields.io/npm/l/@jackwener/opencli?style=flat-square)](./LICENSE)
11
11
 
12
- OpenCLI gives you one surface for three different kinds of automation:
12
+ ppcli gives you one surface for three different kinds of automation:
13
13
 
14
14
  - **Use built-in adapters** for sites like Bilibili, Zhihu, Xiaohongshu, Reddit, HackerNews, Twitter/X, and [many more](#built-in-commands).
15
- - **Let AI Agents operate any website** — install the `opencli-browser` skill in your AI agent (Claude Code, Cursor, etc.), and it can navigate, click, type/fill, extract, and inspect any page through your logged-in browser via `opencli browser` primitives.
16
- - **Write new adapters** end-to-end with `opencli browser` + the `opencli-adapter-author` skill, which guides from first recon through field decoding, code, and `opencli browser verify`.
15
+ - **Let AI Agents operate any website** — install the `opencli-browser` skill in your AI agent (Claude Code, Cursor, etc.), and it can navigate, click, type/fill, extract, and inspect any page through your logged-in browser via `ppcli browser` primitives.
16
+ - **Write new adapters** end-to-end with `ppcli browser` + the `opencli-adapter-author` skill, which guides from first recon through field decoding, code, and `ppcli browser verify`.
17
17
 
18
18
  It also works as a **CLI hub** for local tools such as `gh`, `docker`, `longbridge`, `tg`, `discord`, `wx`, `ntn` (Notion), and other binaries you register yourself, plus **desktop app adapters** for Electron apps like Cursor, Trae CN, Codex, Antigravity, ChatGPT, and Trae SOLO.
19
19
 
20
20
  ## Quick Start
21
21
 
22
- ### 1. Install OpenCLI
22
+ ### 1. Install ppcli
23
23
 
24
- For desktop use, start with **OpenCLIApp**. It bundles the OpenCLI runtime,
24
+ For desktop use, start with **OpenCLIApp**. It bundles the ppcli runtime,
25
25
  keeps the managed `opencli` command installed, and gives you a system tray UI
26
26
  for setup, diagnostics, updates, browser-login keepalive, and Web → Markdown.
27
27
 
@@ -31,7 +31,7 @@ open the app once and use the System page to install or repair the `opencli`
31
31
  command.
32
32
 
33
33
  **Option B — npm global install (CLI-only / CI / servers):**
34
- OpenCLI requires **Node.js >= 20** when installed through npm.
34
+ ppcli requires **Node.js >= 20** when installed through npm.
35
35
 
36
36
  ```bash
37
37
  node --version
@@ -40,10 +40,10 @@ npm install -g @jackwener/opencli
40
40
 
41
41
  ### 2. Install the Browser Bridge Extension
42
42
 
43
- OpenCLI connects to Chrome/Chromium through a lightweight Browser Bridge extension plus a small local daemon. The daemon auto-starts when needed.
43
+ ppcli connects to Chrome/Chromium through a lightweight Browser Bridge extension plus a small local daemon. The daemon auto-starts when needed.
44
44
 
45
45
  **Option A — Chrome Web Store (recommended):**
46
- Install **OpenCLI** from the [Chrome Web Store](https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk).
46
+ Install **ppcli** from the [Chrome Web Store](https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk).
47
47
 
48
48
  **Option B — Manual install:**
49
49
  1. Download the latest `opencli-extension-v{version}.zip` from the GitHub [Releases page](https://github.com/jackwener/opencli/releases).
@@ -53,54 +53,54 @@ Install **OpenCLI** from the [Chrome Web Store](https://chromewebstore.google.co
53
53
  ### 3. Verify the setup
54
54
 
55
55
  ```bash
56
- opencli doctor
56
+ ppcli doctor
57
57
  ```
58
58
 
59
59
  ### 4. Optional: name your Chrome profile
60
60
 
61
- Each Chrome profile runs its own OpenCLI extension instance. If you use multiple Chrome profiles, list the connected profiles and assign local aliases:
61
+ Each Chrome profile runs its own ppcli extension instance. If you use multiple Chrome profiles, list the connected profiles and assign local aliases:
62
62
 
63
63
  ```bash
64
- opencli profile list
65
- opencli profile rename <contextId> work
66
- opencli profile use work
67
- opencli --profile work browser state
64
+ ppcli profile list
65
+ ppcli profile rename <contextId> work
66
+ ppcli profile use work
67
+ ppcli --profile work browser state
68
68
  ```
69
69
 
70
- With only one connected profile, OpenCLI uses it automatically. With multiple connected profiles and no default, OpenCLI asks you to choose instead of guessing.
70
+ With only one connected profile, ppcli uses it automatically. With multiple connected profiles and no default, ppcli asks you to choose instead of guessing.
71
71
 
72
72
  ### 5. Run your first commands
73
73
 
74
74
  ```bash
75
- opencli list
76
- opencli hackernews top --limit 5
77
- opencli bilibili hot --limit 5
75
+ ppcli list
76
+ ppcli hackernews top --limit 5
77
+ ppcli bilibili hot --limit 5
78
78
  ```
79
79
 
80
80
  ## For Humans
81
81
 
82
- Use OpenCLI directly when you want a reliable command instead of a live browser session:
82
+ Use ppcli directly when you want a reliable command instead of a live browser session:
83
83
 
84
- - `opencli list` shows every registered command.
85
- - `opencli <site> <command>` runs a built-in or generated adapter.
86
- - `opencli external register mycli` exposes a local CLI through the same discovery surface.
87
- - `opencli doctor` helps diagnose browser connectivity.
84
+ - `ppcli list` shows every registered command.
85
+ - `ppcli <site> <command>` runs a built-in or generated adapter.
86
+ - `ppcli external register mycli` exposes a local CLI through the same discovery surface.
87
+ - `ppcli doctor` helps diagnose browser connectivity.
88
88
 
89
- ## Extending OpenCLI
89
+ ## Extending ppcli
90
90
 
91
- If you want to add your own commands, start with the [Extending OpenCLI guide](./docs/guide/extending-opencli.md). README keeps this short; the guide covers the directory layout, source-control model, and install commands.
91
+ If you want to add your own commands, start with the [Extending ppcli guide](./docs/guide/extending-opencli.md). README keeps this short; the guide covers the directory layout, source-control model, and install commands.
92
92
 
93
93
  | Need | Recommended path |
94
94
  |------|------------------|
95
- | Keep personal website commands in your own Git repo | `opencli plugin create` + `opencli plugin install file://...` |
96
- | Quickly draft a private local adapter | `opencli browser init <site>/<command>` in `~/.opencli/clis/` |
97
- | Modify an official adapter locally | `opencli adapter eject <site>` + `opencli adapter reset <site>` |
98
- | Publish or install third-party commands | `opencli plugin install github:user/repo` |
99
- | Wrap an existing local binary | `opencli external register <name>` |
95
+ | Keep personal website commands in your own Git repo | `ppcli plugin create` + `ppcli plugin install file://...` |
96
+ | Quickly draft a private local adapter | `ppcli browser init <site>/<command>` in `~/.ppcli/clis/` |
97
+ | Modify an official adapter locally | `ppcli adapter eject <site>` + `ppcli adapter reset <site>` |
98
+ | Publish or install third-party commands | `ppcli plugin install github:user/repo` |
99
+ | Wrap an existing local binary | `ppcli external register <name>` |
100
100
 
101
101
  ## For AI Agents
102
102
 
103
- OpenCLI's browser commands are designed to be used by AI Agents — not run manually. Install skills into your AI agent (Claude Code, Cursor, etc.), and the agent operates websites on your behalf using your logged-in Chrome session.
103
+ ppcli's browser commands are designed to be used by AI Agents — not run manually. Install skills into your AI agent (Claude Code, Cursor, etc.), and the agent operates websites on your behalf using your logged-in Chrome session.
104
104
 
105
105
  ### Install skills (also refreshes existing installs)
106
106
 
@@ -124,11 +124,11 @@ npx skills add jackwener/opencli --skill opencli-usage
124
124
  | Skill | When to use | Example prompt to your AI agent |
125
125
  |-------|------------|-------------------------------|
126
126
  | **opencli-adapter-author** | Write a reusable adapter for a new site or add a command to an existing site | "Write an adapter for douyin trending" / "Make a command that grabs the top posts from this page" |
127
- | **opencli-autofix** | Repair a broken adapter when a built-in command fails | "`opencli zhihu hot` is returning empty — fix it" |
127
+ | **opencli-autofix** | Repair a broken adapter when a built-in command fails | "`ppcli zhihu hot` is returning empty — fix it" |
128
128
  | **opencli-browser** | Drive a real Chrome page ad-hoc — navigate, fill forms, click, extract | "Help me check my Xiaohongshu notifications" / "Help me fill out this form" / "Use browser commands to scrape this page" |
129
129
  | **opencli-browser-sitemap** | Consume site sitemap context while driving a browser task | "Use the sitemap to navigate this website without blind clicking" |
130
130
  | **opencli-sitemap-author** | Create or update site sitemap knowledge for browser agents | "Record the stable workflow you just discovered for this site" |
131
- | **opencli-usage** | Quick reference for all OpenCLI commands and sites | "What commands does OpenCLI have for Twitter?" |
131
+ | **opencli-usage** | Quick reference for all ppcli commands and sites | "What commands does ppcli have for Twitter?" |
132
132
 
133
133
  ### How it works
134
134
 
@@ -140,7 +140,7 @@ Once `opencli-browser` is installed, your AI agent can:
140
140
  4. **Extract** data from the page or intercept network API responses
141
141
  5. **Wait** for elements, text, or page transitions
142
142
 
143
- The agent handles all the `opencli browser` commands internally — you just describe what you want done in natural language.
143
+ The agent handles all the `ppcli browser` commands internally — you just describe what you want done in natural language.
144
144
 
145
145
  **Skill references:**
146
146
  - [`skills/opencli-browser/SKILL.md`](./skills/opencli-browser/SKILL.md) — drive Chrome ad-hoc (navigate, fill forms, click, extract)
@@ -152,7 +152,7 @@ The agent handles all the `opencli browser` commands internally — you just des
152
152
 
153
153
  Available browser commands include `open`, `state`, `click`, `type`, `fill`, `select`, `keys`, `wait`, `get`, `find`, `extract`, `frames`, `screenshot`, `scroll`, `back`, `eval`, `network`, `tab list`, `tab new`, `tab select`, `tab close`, `init`, `verify`, and `close`.
154
154
 
155
- `opencli browser` commands require a `<session>` positional immediately after `browser`. `opencli browser work open <url>` and `opencli browser work tab new [url]` both return a target ID. Use `opencli browser work tab list` to inspect target IDs, 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 commands in the same session.
155
+ `ppcli browser` commands require a `<session>` positional immediately after `browser`. `ppcli browser work open <url>` and `ppcli browser work tab new [url]` both return a target ID. Use `ppcli browser work tab list` to inspect target IDs, 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 commands in the same session.
156
156
 
157
157
  ## Writing a new adapter
158
158
 
@@ -162,8 +162,8 @@ When the site you need is not yet covered, use the `opencli-adapter-author` skil
162
162
  2. **Discover** the right endpoint — network inspection, initial state, bundle search, token trace, or interceptor fallback.
163
163
  3. **Pick auth** — `PUBLIC` / `COOKIE` / `INTERCEPT` / `UI` / `LOCAL`.
164
164
  4. **Decode** response fields and design output columns.
165
- 5. `opencli browser recon analyze <url>` → `opencli browser recon init <site>/<name>` → write adapter → `opencli browser recon verify <site>/<name>`.
166
- 6. Site knowledge persists to `~/.opencli/sites/<site>/` so the next adapter for the same site starts from context.
165
+ 5. `ppcli browser recon analyze <url>` → `ppcli browser recon init <site>/<name>` → write adapter → `ppcli browser recon verify <site>/<name>`.
166
+ 6. Site knowledge persists to `~/.ppcli/sites/<site>/` so the next adapter for the same site starts from context.
167
167
 
168
168
  ## Configuration
169
169
 
@@ -178,7 +178,7 @@ When the site you need is not yet covered, use the `opencli-adapter-author` skil
178
178
  | `OPENCLI_VERBOSE` | `false` | Enable verbose logging (`-v` flag also works) |
179
179
  | `DEBUG_SNAPSHOT` | — | Set to `1` for DOM snapshot debug output |
180
180
 
181
- `opencli browser *` requires an explicit `<session>` positional, uses a foreground browser window by default, and keeps that session's tab lease until `opencli browser <session> close` or idle cleanup. Browser-backed adapters use a background adapter window and release one-shot tab leases by default. Interactive adapters can declare `siteSession: 'persistent'` to keep a stable site tab for continuity; pass `--site-session ephemeral` for a one-shot tab.
181
+ `ppcli browser *` requires an explicit `<session>` positional, uses a foreground browser window by default, and keeps that session's tab lease until `ppcli browser <session> close` or idle cleanup. Browser-backed adapters use a background adapter window and release one-shot tab leases by default. Interactive adapters can declare `siteSession: 'persistent'` to keep a stable site tab for continuity; pass `--site-session ephemeral` for a one-shot tab.
182
182
 
183
183
  ## Built-in Commands
184
184
 
@@ -204,17 +204,17 @@ Curated highlights — **[→ see all 100+ supported sites & commands](./docs/ad
204
204
 
205
205
  ## CLI Hub
206
206
 
207
- Unified passthrough for your existing command-line tools. Run `opencli <tool> ...` for any of:
207
+ Unified passthrough for your existing command-line tools. Run `ppcli <tool> ...` for any of:
208
208
 
209
209
  `gh` · `docker` · `vercel` · `wrangler` · `obsidian` · `longbridge` · `lark-cli` · `ntn(notion)` · `dws(DingTalk Workspace)` · `wecom-cli(企业微信)` · `tg(tg-cli)` · `discord(discord-cli)` · `wx(wx-cli)`
210
210
 
211
- Register your own with `opencli external register <name>`; list everything with `opencli external list`.
211
+ Register your own with `ppcli external register <name>`; list everything with `ppcli external list`.
212
212
 
213
213
  **Desktop app adapters** (Electron, via CDP): Cursor / Trae CN / Codex / Antigravity / ChatGPT App / ChatWise / Qoder / Discord / Doubao / Trae SOLO — see [`docs/adapters/desktop/`](./docs/adapters/desktop/).
214
214
 
215
215
  ## Download Support
216
216
 
217
- OpenCLI supports downloading images, videos, and articles from supported platforms.
217
+ ppcli supports downloading images, videos, and articles from supported platforms.
218
218
 
219
219
  | Platform | Content Types | Notes |
220
220
  |----------|---------------|-------|
@@ -232,41 +232,41 @@ OpenCLI supports downloading images, videos, and articles from supported platfor
232
232
  For video downloads, install `yt-dlp` first: `brew install yt-dlp`
233
233
 
234
234
  ```bash
235
- opencli xiaohongshu download "https://www.xiaohongshu.com/search_result/<id>?xsec_token=..." --output ./xhs
236
- opencli xiaohongshu download "https://xhslink.com/..." --output ./xhs
237
- opencli rednote download "https://www.rednote.com/search_result/<id>?xsec_token=..." --output ./rednote
238
- opencli bilibili download BV1xxx --output ./bilibili
239
- opencli twitter download elonmusk --limit 20 --output ./twitter
240
- opencli 1688 download 841141931191 --output ./1688-downloads
241
- opencli xiaoyuzhou download 69b3b675772ac2295bfc01d0 --output ./xiaoyuzhou
242
- opencli xiaoyuzhou transcript 69dd0c98e2c8be31551f6a33 --output ./xiaoyuzhou-transcripts
235
+ ppcli xiaohongshu download "https://www.xiaohongshu.com/search_result/<id>?xsec_token=..." --output ./xhs
236
+ ppcli xiaohongshu download "https://xhslink.com/..." --output ./xhs
237
+ ppcli rednote download "https://www.rednote.com/search_result/<id>?xsec_token=..." --output ./rednote
238
+ ppcli bilibili download BV1xxx --output ./bilibili
239
+ ppcli twitter download elonmusk --limit 20 --output ./twitter
240
+ ppcli 1688 download 841141931191 --output ./1688-downloads
241
+ ppcli xiaoyuzhou download 69b3b675772ac2295bfc01d0 --output ./xiaoyuzhou
242
+ ppcli xiaoyuzhou transcript 69dd0c98e2c8be31551f6a33 --output ./xiaoyuzhou-transcripts
243
243
  ```
244
244
 
245
- `opencli xiaoyuzhou download` and `transcript` require local Xiaoyuzhou credentials in `~/.opencli/xiaoyuzhou.json`.
245
+ `ppcli xiaoyuzhou download` and `transcript` require local Xiaoyuzhou credentials in `~/.ppcli/xiaoyuzhou.json`.
246
246
 
247
247
  ## Output Formats
248
248
 
249
249
  All built-in commands support `--format` / `-f` with `table` (default), `json`, `yaml`, `md`, and `csv`.
250
250
 
251
251
  ```bash
252
- opencli bilibili hot -f json # Pipe to jq or LLMs
253
- opencli bilibili hot -f csv # Spreadsheet-friendly
254
- opencli bilibili hot -v # Verbose: show pipeline debug steps
252
+ ppcli bilibili hot -f json # Pipe to jq or LLMs
253
+ ppcli bilibili hot -f csv # Spreadsheet-friendly
254
+ ppcli bilibili hot -v # Verbose: show pipeline debug steps
255
255
  ```
256
256
 
257
257
  ## Exit Codes
258
258
 
259
- opencli follows Unix `sysexits.h` so CI / scripts can branch on failure mode: `0` success, `66` empty result, `69` Browser Bridge down, `75` timeout, `77` auth required, `78` config error, `130` Ctrl-C. Full reference: [docs/guide/exit-codes.md](./docs/guide/exit-codes.md).
259
+ ppcli follows Unix `sysexits.h` so CI / scripts can branch on failure mode: `0` success, `66` empty result, `69` Browser Bridge down, `75` timeout, `77` auth required, `78` config error, `130` Ctrl-C. Full reference: [docs/guide/exit-codes.md](./docs/guide/exit-codes.md).
260
260
 
261
261
  ## Plugins
262
262
 
263
- Extend OpenCLI with community-contributed adapters:
263
+ Extend ppcli with community-contributed adapters:
264
264
 
265
265
  ```bash
266
- opencli plugin install github:user/opencli-plugin-my-tool
267
- opencli plugin list
268
- opencli plugin update --all
269
- opencli plugin uninstall my-tool
266
+ ppcli plugin install github:user/opencli-plugin-my-tool
267
+ ppcli plugin list
268
+ ppcli plugin update --all
269
+ ppcli plugin uninstall my-tool
270
270
  ```
271
271
 
272
272
  | Plugin | Type | Description |
@@ -287,7 +287,7 @@ See **[TESTING.md](./TESTING.md)** for how to run and write tests.
287
287
  - **"Extension not connected"** — Ensure the Browser Bridge extension is installed from the [Chrome Web Store](https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk) and **enabled** in `chrome://extensions`.
288
288
  - **"attach failed: Cannot access a chrome-extension:// URL"** — Another extension may be interfering. Try disabling other extensions temporarily.
289
289
  - **Empty data or 'Unauthorized' error** — Your Chrome/Chromium login session may have expired. Navigate to the target site and log in again.
290
- - **Node API errors / missing `fetch` / startup crash on old Node** — OpenCLI requires **Node.js >= 20**. Run `node --version`, upgrade Node if needed, then retry.
290
+ - **Node API errors / missing `fetch` / startup crash on old Node** — ppcli requires **Node.js >= 20**. Run `node --version`, upgrade Node if needed, then retry.
291
291
  - **Daemon issues** — Check status: `curl localhost:19825/status` · View logs: `curl localhost:19825/logs`
292
292
 
293
293
  ## Star History
package/README.zh-CN.md CHANGED
@@ -1,4 +1,4 @@
1
- # OpenCLI
1
+ # ppcli
2
2
 
3
3
  > **把任意网站变成 CLI & 在你的登录态浏览器上跑 Browser Use。**
4
4
  > 把网站、浏览器会话、Electron 应用和本地工具,统一变成适合人类与 AI Agent 使用的确定性接口。
@@ -9,20 +9,20 @@
9
9
  [![Node.js Version](https://img.shields.io/node/v/@jackwener/opencli?style=flat-square)](https://nodejs.org)
10
10
  [![License](https://img.shields.io/npm/l/@jackwener/opencli?style=flat-square)](./LICENSE)
11
11
 
12
- OpenCLI 可以用同一套 CLI 做三类事情:
12
+ ppcli 可以用同一套 CLI 做三类事情:
13
13
 
14
14
  - **直接使用现成适配器**:B站、知乎、小红书、Twitter/X、Reddit、HackerNews 等 [100+ 站点](#内置命令) 开箱即用。
15
15
  - **让 AI Agent 操作任意网站**:在你的 AI Agent(Claude Code、Cursor 等)中安装 `opencli-browser` skill,Agent 就能用你的已登录浏览器导航、点击、输入/填充、提取任意网页内容。
16
- - **把新网站写成 CLI**:用 `opencli browser` 原语 + `opencli-adapter-author` skill,从站点侦察、API 发现、字段解码到 `opencli browser verify` 一条龙。
16
+ - **把新网站写成 CLI**:用 `ppcli browser` 原语 + `opencli-adapter-author` skill,从站点侦察、API 发现、字段解码到 `ppcli browser verify` 一条龙。
17
17
 
18
- 除了网站能力,OpenCLI 还是一个 **CLI 枢纽**:你可以把 `gh`、`docker`、`longbridge`、`tg`、`discord`、`wx`、`ntn`(Notion)等本地工具统一注册到 `opencli` 下,也可以通过桌面端适配器控制 Cursor、Trae CN、Codex、Antigravity、ChatGPT、Trae SOLO 等 Electron 应用。
18
+ 除了网站能力,ppcli 还是一个 **CLI 枢纽**:你可以把 `gh`、`docker`、`longbridge`、`tg`、`discord`、`wx`、`ntn`(Notion)等本地工具统一注册到 `opencli` 下,也可以通过桌面端适配器控制 Cursor、Trae CN、Codex、Antigravity、ChatGPT、Trae SOLO 等 Electron 应用。
19
19
 
20
20
  ## 快速开始
21
21
 
22
- ### 1. 安装 OpenCLI
22
+ ### 1. 安装 ppcli
23
23
 
24
24
  如果你是在自己的电脑上使用,优先安装 **OpenCLIApp**。它会内置
25
- OpenCLI runtime,帮你安装 / 修复受管理的 `opencli` 命令,并提供系统托盘
25
+ ppcli runtime,帮你安装 / 修复受管理的 `opencli` 命令,并提供系统托盘
26
26
  UI 来做环境诊断、更新、浏览器登录态保活和网页转 Markdown。
27
27
 
28
28
  **方式 A — OpenCLIApp(macOS / Windows 推荐):**
@@ -30,7 +30,7 @@ UI 来做环境诊断、更新、浏览器登录态保活和网页转 Markdown
30
30
  System 页面安装或修复 `opencli` 命令。
31
31
 
32
32
  **方式 B — npm 全局安装(纯 CLI / CI / 服务器):**
33
- 通过 npm 安装时,OpenCLI 要求 **Node.js >= 20**。
33
+ 通过 npm 安装时,ppcli 要求 **Node.js >= 20**。
34
34
 
35
35
  ```bash
36
36
  node --version
@@ -39,10 +39,10 @@ npm install -g @jackwener/opencli
39
39
 
40
40
  ### 2. 安装 Browser Bridge 扩展
41
41
 
42
- OpenCLI 通过轻量 Browser Bridge 扩展和本地微型 daemon 与 Chrome/Chromium 通信。daemon 会按需自动启动。
42
+ ppcli 通过轻量 Browser Bridge 扩展和本地微型 daemon 与 Chrome/Chromium 通信。daemon 会按需自动启动。
43
43
 
44
44
  **方式 A — Chrome Web Store(推荐):**
45
- 在 [Chrome Web Store](https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk) 安装 **OpenCLI** 扩展。
45
+ 在 [Chrome Web Store](https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk) 安装 **ppcli** 扩展。
46
46
 
47
47
  **方式 B — 手动安装:**
48
48
  1. 到 GitHub [Releases 页面](https://github.com/jackwener/opencli/releases) 下载最新的 `opencli-extension-v{version}.zip`。
@@ -52,41 +52,41 @@ OpenCLI 通过轻量 Browser Bridge 扩展和本地微型 daemon 与 Chrome/Chro
52
52
  ### 3. 验证环境
53
53
 
54
54
  ```bash
55
- opencli doctor
55
+ ppcli doctor
56
56
  ```
57
57
 
58
58
  ### 4. 跑第一个命令
59
59
 
60
60
  ```bash
61
- opencli list
62
- opencli hackernews top --limit 5
63
- opencli bilibili hot --limit 5
61
+ ppcli list
62
+ ppcli hackernews top --limit 5
63
+ ppcli bilibili hot --limit 5
64
64
  ```
65
65
 
66
66
  ## 给人类用户
67
67
 
68
68
  如果你只是想稳定地调用网站或桌面应用能力,主路径很简单:
69
69
 
70
- - `opencli list` 查看当前所有命令
71
- - `opencli <site> <command>` 调用内置或生成好的适配器
72
- - `opencli external register mycli` 把本地 CLI 接入同一发现入口
73
- - `opencli doctor` 处理浏览器连通性问题
70
+ - `ppcli list` 查看当前所有命令
71
+ - `ppcli <site> <command>` 调用内置或生成好的适配器
72
+ - `ppcli external register mycli` 把本地 CLI 接入同一发现入口
73
+ - `ppcli doctor` 处理浏览器连通性问题
74
74
 
75
- ## 扩展 OpenCLI
75
+ ## 扩展 ppcli
76
76
 
77
- 如果你想新增自己的命令,先看 [扩展 OpenCLI](./docs/zh/guide/extending-opencli.md)。README 只保留入口;目录结构、源码管理方式和安装命令放在文档里。
77
+ 如果你想新增自己的命令,先看 [扩展 ppcli](./docs/zh/guide/extending-opencli.md)。README 只保留入口;目录结构、源码管理方式和安装命令放在文档里。
78
78
 
79
79
  | 需求 | 推荐路径 |
80
80
  |------|----------|
81
- | 把个人网站命令放在自己的 Git repo | `opencli plugin create` + `opencli plugin install file://...` |
82
- | 快速写一个本机私人 adapter | `opencli browser init <site>/<command>`,放在 `~/.opencli/clis/` |
83
- | 本地修改官方 adapter | `opencli adapter eject <site>` + `opencli adapter reset <site>` |
84
- | 发布或安装第三方命令 | `opencli plugin install github:user/repo` |
85
- | 包装已有本机 binary | `opencli external register <name>` |
81
+ | 把个人网站命令放在自己的 Git repo | `ppcli plugin create` + `ppcli plugin install file://...` |
82
+ | 快速写一个本机私人 adapter | `ppcli browser init <site>/<command>`,放在 `~/.ppcli/clis/` |
83
+ | 本地修改官方 adapter | `ppcli adapter eject <site>` + `ppcli adapter reset <site>` |
84
+ | 发布或安装第三方命令 | `ppcli plugin install github:user/repo` |
85
+ | 包装已有本机 binary | `ppcli external register <name>` |
86
86
 
87
87
  ## 给 AI Agent
88
88
 
89
- OpenCLI 的 browser 命令是给 AI Agent 用的——不是手动执行的。把 skill 安装到你的 AI Agent(Claude Code、Cursor 等)中,Agent 就能用你的已登录 Chrome 会话替你操作网站。
89
+ ppcli 的 browser 命令是给 AI Agent 用的——不是手动执行的。把 skill 安装到你的 AI Agent(Claude Code、Cursor 等)中,Agent 就能用你的已登录 Chrome 会话替你操作网站。
90
90
 
91
91
  ### 安装 skill(同时也用于更新)
92
92
 
@@ -110,11 +110,11 @@ npx skills add jackwener/opencli --skill opencli-usage
110
110
  | Skill | 适用场景 | 你对 AI Agent 说的话 |
111
111
  |-------|---------|-------------------|
112
112
  | **opencli-adapter-author** | 为新站点写可复用适配器,或给已有站点添加命令 | "帮我做一个抖音热门的适配器" / "帮我做一个抓取这个页面热帖的命令" |
113
- | **opencli-autofix** | 内置命令失败时修复已有适配器 | "`opencli zhihu hot` 返回空了,修一下" |
113
+ | **opencli-autofix** | 内置命令失败时修复已有适配器 | "`ppcli zhihu hot` 返回空了,修一下" |
114
114
  | **opencli-browser** | 实时驱动 Chrome 页面——导航、填表单、点击、抓取 | "帮我看看小红书的通知" / "帮我填一下这个表单" / "用浏览器命令抓取这个页面" |
115
115
  | **opencli-browser-sitemap** | 使用站点 sitemap 上下文来操作浏览器任务 | "用 sitemap 帮我少走弯路地操作这个网站" |
116
116
  | **opencli-sitemap-author** | 创建或更新面向浏览器 Agent 的站点 sitemap | "把刚发现的稳定流程记录到这个站点的 sitemap" |
117
- | **opencli-usage** | 所有命令和站点的快速参考 | "OpenCLI 有哪些 Twitter 相关的命令?" |
117
+ | **opencli-usage** | 所有命令和站点的快速参考 | "ppcli 有哪些 Twitter 相关的命令?" |
118
118
 
119
119
  ### 工作原理
120
120
 
@@ -126,7 +126,7 @@ npx skills add jackwener/opencli --skill opencli-usage
126
126
  4. **提取**页面数据或拦截网络 API 响应
127
127
  5. **等待**元素、文本或页面跳转
128
128
 
129
- Agent 在内部自动处理所有 `opencli browser` 命令——你只需用自然语言描述想做的事。
129
+ Agent 在内部自动处理所有 `ppcli browser` 命令——你只需用自然语言描述想做的事。
130
130
 
131
131
  **Skill 参考文档:**
132
132
  - [`skills/opencli-browser/SKILL.md`](./skills/opencli-browser/SKILL.md) — 实时驱动 Chrome(导航、填表单、点击、抓取)
@@ -138,7 +138,7 @@ Agent 在内部自动处理所有 `opencli browser` 命令——你只需用自
138
138
 
139
139
  `browser` 可用命令包括:`open`、`state`、`click`、`type`、`fill`、`select`、`keys`、`wait`、`get`、`find`、`extract`、`frames`、`screenshot`、`scroll`、`back`、`eval`、`network`、`tab list`、`tab new`、`tab select`、`tab close`、`init`、`verify`、`close`。
140
140
 
141
- `opencli browser` 命令必须紧跟一个 `<session>` 位置参数。`opencli browser work open <url>` 和 `opencli browser work tab new [url]` 都会返回 target ID。`opencli browser work tab list` 用来查看当前已存在 tab 的 target ID,再通过 `--tab <targetId>` 把命令明确路由到某个 tab。`tab new` 只会新建 tab,不会改变默认浏览器目标;只有显式执行 `tab select <targetId>`,才会把该 tab 设为同一 session 后续未指定 target 的默认目标。
141
+ `ppcli browser` 命令必须紧跟一个 `<session>` 位置参数。`ppcli browser work open <url>` 和 `ppcli browser work tab new [url]` 都会返回 target ID。`ppcli browser work tab list` 用来查看当前已存在 tab 的 target ID,再通过 `--tab <targetId>` 把命令明确路由到某个 tab。`tab new` 只会新建 tab,不会改变默认浏览器目标;只有显式执行 `tab select <targetId>`,才会把该 tab 设为同一 session 后续未指定 target 的默认目标。
142
142
 
143
143
  ## 为新站点写适配器
144
144
 
@@ -148,8 +148,8 @@ Agent 在内部自动处理所有 `opencli browser` 命令——你只需用自
148
148
  2. **发现** endpoint——network 精读、initial state、bundle 搜索、token 溯源,或 interceptor 兜底
149
149
  3. **定认证**——`PUBLIC` / `COOKIE` / `INTERCEPT` / `UI` / `LOCAL`
150
150
  4. **字段解码** + 设计输出列
151
- 5. `opencli browser recon analyze <url>` → `opencli browser recon init <site>/<name>` → 写适配器 → `opencli browser recon verify <site>/<name>`
152
- 6. 站点知识沉到 `~/.opencli/sites/<site>/`,下次同站点直接吃缓存
151
+ 5. `ppcli browser recon analyze <url>` → `ppcli browser recon init <site>/<name>` → 写适配器 → `ppcli browser recon verify <site>/<name>`
152
+ 6. 站点知识沉到 `~/.ppcli/sites/<site>/`,下次同站点直接吃缓存
153
153
 
154
154
  ## 配置
155
155
 
@@ -164,11 +164,11 @@ Agent 在内部自动处理所有 `opencli browser` 命令——你只需用自
164
164
  | `OPENCLI_VERBOSE` | `false` | 启用详细日志(`-v` 也可以) |
165
165
  | `DEBUG_SNAPSHOT` | — | 设为 `1` 输出 DOM 快照调试信息 |
166
166
 
167
- `opencli browser *` 必须紧跟一个 `<session>` 位置参数,默认使用前台窗口,并保留该 session 的 tab lease,直到你手动执行 `opencli browser <session> close` 或等空闲超时。浏览器型 adapter 默认使用后台 adapter 窗口并在命令结束后释放一次性 tab lease;如果需要调试最终页面,可以传 `--window foreground --keep-tab true`。
167
+ `ppcli browser *` 必须紧跟一个 `<session>` 位置参数,默认使用前台窗口,并保留该 session 的 tab lease,直到你手动执行 `ppcli browser <session> close` 或等空闲超时。浏览器型 adapter 默认使用后台 adapter 窗口并在命令结束后释放一次性 tab lease;如果需要调试最终页面,可以传 `--window foreground --keep-tab true`。
168
168
 
169
169
  ## 内置命令
170
170
 
171
- 运行 `opencli list` 查看完整注册表。
171
+ 运行 `ppcli list` 查看完整注册表。
172
172
 
173
173
  | 站点 | 命令 |
174
174
  |------|------|
@@ -192,17 +192,17 @@ Agent 在内部自动处理所有 `opencli browser` 命令——你只需用自
192
192
 
193
193
  ### 外部 CLI 枢纽
194
194
 
195
- 把现有命令行工具统一接入 `opencli <tool> ...`:
195
+ 把现有命令行工具统一接入 `ppcli <tool> ...`:
196
196
 
197
197
  `gh` · `docker` · `vercel` · `wrangler` · `obsidian` · `longbridge` · `lark-cli` · `ntn(notion)` · `dws(DingTalk Workspace)` · `wecom-cli(企业微信)` · `tg(tg-cli)` · `discord(discord-cli)` · `wx(wx-cli)`
198
198
 
199
- 注册自定义本地 CLI:`opencli external register <name>`;查看所有:`opencli external list`。
199
+ 注册自定义本地 CLI:`ppcli external register <name>`;查看所有:`ppcli external list`。
200
200
 
201
201
  **桌面应用适配器**(Electron,通过 CDP):Cursor / Trae CN / Codex / Antigravity / ChatGPT App / ChatWise / Qoder / Discord / Doubao / Trae SOLO — 详见 [`docs/adapters/desktop/`](./docs/adapters/desktop/)。
202
202
 
203
203
  ## 下载支持
204
204
 
205
- OpenCLI 支持从各平台下载图片、视频和文章。
205
+ ppcli 支持从各平台下载图片、视频和文章。
206
206
 
207
207
  ### 支持的平台
208
208
 
@@ -233,43 +233,43 @@ brew install yt-dlp
233
233
 
234
234
  ```bash
235
235
  # 下载小红书笔记中的图片/视频
236
- opencli xiaohongshu download "https://www.xiaohongshu.com/search_result/<id>?xsec_token=..." --output ./xhs
237
- opencli xiaohongshu download "https://xhslink.com/..." --output ./xhs
238
- opencli rednote download "https://www.rednote.com/search_result/<id>?xsec_token=..." --output ./rednote
236
+ ppcli xiaohongshu download "https://www.xiaohongshu.com/search_result/<id>?xsec_token=..." --output ./xhs
237
+ ppcli xiaohongshu download "https://xhslink.com/..." --output ./xhs
238
+ ppcli rednote download "https://www.rednote.com/search_result/<id>?xsec_token=..." --output ./rednote
239
239
 
240
240
  # 下载B站视频(需要 yt-dlp)
241
- opencli bilibili download BV1xxx --output ./bilibili
242
- opencli bilibili download BV1xxx --quality 1080p # 指定画质
241
+ ppcli bilibili download BV1xxx --output ./bilibili
242
+ ppcli bilibili download BV1xxx --quality 1080p # 指定画质
243
243
 
244
244
  # 下载 Twitter 用户的媒体
245
- opencli twitter download elonmusk --limit 20 --output ./twitter
245
+ ppcli twitter download elonmusk --limit 20 --output ./twitter
246
246
 
247
247
  # 下载单条推文的媒体
248
- opencli twitter download --tweet-url "https://x.com/user/status/123" --output ./twitter
248
+ ppcli twitter download --tweet-url "https://x.com/user/status/123" --output ./twitter
249
249
 
250
250
  # 下载豆瓣电影海报 / 剧照
251
- opencli douban download 30382501 --output ./douban
251
+ ppcli douban download 30382501 --output ./douban
252
252
 
253
253
  # 下载 1688 商品页中的图片 / 视频素材
254
- opencli 1688 download 841141931191 --output ./1688-downloads
254
+ ppcli 1688 download 841141931191 --output ./1688-downloads
255
255
 
256
256
  # 下载小宇宙单集音频
257
- opencli xiaoyuzhou download 69b3b675772ac2295bfc01d0 --output ./xiaoyuzhou
257
+ ppcli xiaoyuzhou download 69b3b675772ac2295bfc01d0 --output ./xiaoyuzhou
258
258
 
259
259
  # 下载小宇宙单集转录
260
- opencli xiaoyuzhou transcript 69dd0c98e2c8be31551f6a33 --output ./xiaoyuzhou-transcripts
260
+ ppcli xiaoyuzhou transcript 69dd0c98e2c8be31551f6a33 --output ./xiaoyuzhou-transcripts
261
261
 
262
262
  # 导出知乎文章为 Markdown
263
- opencli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --output ./zhihu
263
+ ppcli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --output ./zhihu
264
264
 
265
265
  # 导出并下载图片
266
- opencli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --download-images
266
+ ppcli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --download-images
267
267
 
268
268
  # 导出微信公众号文章为 Markdown
269
- opencli weixin download --url "https://mp.weixin.qq.com/s/xxx" --output ./weixin
269
+ ppcli weixin download --url "https://mp.weixin.qq.com/s/xxx" --output ./weixin
270
270
  ```
271
271
 
272
- `opencli xiaoyuzhou download` 和 `transcript` 需要本地小宇宙凭证:`~/.opencli/xiaoyuzhou.json`。
272
+ `ppcli xiaoyuzhou download` 和 `transcript` 需要本地小宇宙凭证:`~/.ppcli/xiaoyuzhou.json`。
273
273
 
274
274
 
275
275
 
@@ -279,32 +279,32 @@ opencli weixin download --url "https://mp.weixin.qq.com/s/xxx" --output ./weixin
279
279
  `list` 命令也支持同样的格式参数,同时继续兼容 `--json`。
280
280
 
281
281
  ```bash
282
- opencli list -f yaml # 用 YAML 列出命令注册表
283
- opencli bilibili hot -f table # 默认:富文本表格
284
- opencli bilibili hot -f json # JSON(适合传给 jq 或者各类 AI Agent)
285
- opencli bilibili hot -f yaml # YAML(更适合人类直接阅读)
286
- opencli bilibili hot -f md # Markdown
287
- opencli bilibili hot -f csv # CSV
288
- opencli bilibili hot -v # 详细模式:展示管线执行步骤调试信息
282
+ ppcli list -f yaml # 用 YAML 列出命令注册表
283
+ ppcli bilibili hot -f table # 默认:富文本表格
284
+ ppcli bilibili hot -f json # JSON(适合传给 jq 或者各类 AI Agent)
285
+ ppcli bilibili hot -f yaml # YAML(更适合人类直接阅读)
286
+ ppcli bilibili hot -f md # Markdown
287
+ ppcli bilibili hot -f csv # CSV
288
+ ppcli bilibili hot -v # 详细模式:展示管线执行步骤调试信息
289
289
  ```
290
290
 
291
291
  ## 退出码
292
292
 
293
- opencli 遵循 Unix `sysexits.h`,CI / 脚本可按失败模式分支:`0` 成功、`66` 无数据、`69` Browser Bridge 未连接、`75` 超时、`77` 需要认证、`78` 配置错误、`130` Ctrl-C。完整参考:[docs/zh/guide/exit-codes.md](./docs/zh/guide/exit-codes.md)。
293
+ ppcli 遵循 Unix `sysexits.h`,CI / 脚本可按失败模式分支:`0` 成功、`66` 无数据、`69` Browser Bridge 未连接、`75` 超时、`77` 需要认证、`78` 配置错误、`130` Ctrl-C。完整参考:[docs/zh/guide/exit-codes.md](./docs/zh/guide/exit-codes.md)。
294
294
 
295
295
  ## 插件
296
296
 
297
- 通过社区贡献的插件扩展 OpenCLI。插件使用与内置命令相同的 JS 格式,启动时自动发现。
297
+ 通过社区贡献的插件扩展 ppcli。插件使用与内置命令相同的 JS 格式,启动时自动发现。
298
298
 
299
299
  ```bash
300
- opencli plugin install github:user/opencli-plugin-my-tool # 安装
301
- opencli plugin list # 查看已安装
302
- opencli plugin update my-tool # 更新到最新
303
- opencli plugin update --all # 更新全部已安装插件
304
- opencli plugin uninstall my-tool # 卸载
300
+ ppcli plugin install github:user/opencli-plugin-my-tool # 安装
301
+ ppcli plugin list # 查看已安装
302
+ ppcli plugin update my-tool # 更新到最新
303
+ ppcli plugin update --all # 更新全部已安装插件
304
+ ppcli plugin uninstall my-tool # 卸载
305
305
  ```
306
306
 
307
- 当 plugin 的版本被记录到 `~/.opencli/plugins.lock.json` 后,`opencli plugin list` 也会显示对应的短 commit hash。
307
+ 当 plugin 的版本被记录到 `~/.ppcli/plugins.lock.json` 后,`ppcli plugin list` 也会显示对应的短 commit hash。
308
308
 
309
309
  | 插件 | 类型 | 描述 |
310
310
  |------|------|------|
@@ -318,13 +318,13 @@ opencli plugin uninstall my-tool # 卸载
318
318
  ## 常见问题排查
319
319
 
320
320
  - **"Extension not connected" 报错**
321
- - 确保你已从 [Chrome Web Store](https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk) 安装 OpenCLI 扩展,且在 `chrome://extensions` 中**已启用**。
321
+ - 确保你已从 [Chrome Web Store](https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk) 安装 ppcli 扩展,且在 `chrome://extensions` 中**已启用**。
322
322
  - **"attach failed: Cannot access a chrome-extension:// URL" 报错**
323
323
  - 其他 Chrome/Chromium 扩展(如 youmind、New Tab Override 或 AI 助手类扩展)可能产生冲突。请尝试**暂时禁用其他扩展**后重试。
324
324
  - **返回空数据,或者报错 "Unauthorized"**
325
325
  - Chrome/Chromium 里的登录态可能已经过期。请打开当前页面,在新标签页重新手工登录或刷新该页面。
326
326
  - **Node API 错误 / 缺少 `fetch` / 旧 Node 启动即崩**
327
- - OpenCLI 要求 **Node.js >= 20**。先执行 `node --version`,如果版本过低先升级,再重试命令。
327
+ - ppcli 要求 **Node.js >= 20**。先执行 `node --version`,如果版本过低先升级,再重试命令。
328
328
  - **Daemon 问题**
329
329
  - 检查 daemon 状态:`curl localhost:19825/status`
330
330
  - 查看扩展日志:`curl localhost:19825/logs`