@jackwener/opencli 1.0.6 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/.agents/skills/cross-project-adapter-migration/SKILL.md +2 -2
  2. package/.github/pull_request_template.md +7 -0
  3. package/.github/workflows/doc-check.yml +36 -0
  4. package/.github/workflows/docs.yml +7 -42
  5. package/CHANGELOG.md +23 -0
  6. package/CLI-EXPLORER.md +9 -8
  7. package/README.md +51 -10
  8. package/README.zh-CN.md +29 -11
  9. package/SKILL.md +102 -33
  10. package/dist/browser/cdp.js +6 -1
  11. package/dist/browser/page.d.ts +4 -1
  12. package/dist/browser/page.js +7 -1
  13. package/dist/build-manifest.js +23 -16
  14. package/dist/cli-manifest.json +951 -296
  15. package/dist/cli.d.ts +6 -0
  16. package/dist/cli.js +225 -148
  17. package/dist/clis/antigravity/serve.js +296 -47
  18. package/dist/clis/apple-podcasts/commands.test.d.ts +2 -0
  19. package/dist/clis/apple-podcasts/commands.test.js +76 -0
  20. package/dist/clis/apple-podcasts/search.js +2 -2
  21. package/dist/clis/apple-podcasts/top.js +9 -2
  22. package/dist/clis/arxiv/paper.js +21 -0
  23. package/dist/clis/arxiv/search.js +24 -0
  24. package/dist/clis/arxiv/utils.d.ts +18 -0
  25. package/dist/clis/arxiv/utils.js +49 -0
  26. package/dist/clis/bilibili/dynamic.js +1 -1
  27. package/dist/clis/bilibili/favorite.js +1 -1
  28. package/dist/clis/bilibili/feed.js +1 -1
  29. package/dist/clis/bilibili/following.js +1 -1
  30. package/dist/clis/bilibili/history.js +1 -1
  31. package/dist/clis/bilibili/me.js +1 -1
  32. package/dist/clis/bilibili/ranking.js +1 -1
  33. package/dist/clis/bilibili/search.js +3 -3
  34. package/dist/clis/bilibili/subtitle.js +1 -1
  35. package/dist/clis/bilibili/user-videos.js +1 -1
  36. package/dist/{bilibili.d.ts → clis/bilibili/utils.d.ts} +1 -1
  37. package/dist/clis/bloomberg/businessweek.d.ts +1 -0
  38. package/dist/clis/bloomberg/businessweek.js +17 -0
  39. package/dist/clis/bloomberg/economics.d.ts +1 -0
  40. package/dist/clis/bloomberg/economics.js +17 -0
  41. package/dist/clis/bloomberg/feeds.d.ts +1 -0
  42. package/dist/clis/bloomberg/feeds.js +15 -0
  43. package/dist/clis/bloomberg/industries.d.ts +1 -0
  44. package/dist/clis/bloomberg/industries.js +17 -0
  45. package/dist/clis/bloomberg/main.d.ts +1 -0
  46. package/dist/clis/bloomberg/main.js +17 -0
  47. package/dist/clis/bloomberg/markets.d.ts +1 -0
  48. package/dist/clis/bloomberg/markets.js +17 -0
  49. package/dist/clis/bloomberg/news.d.ts +1 -0
  50. package/dist/clis/bloomberg/news.js +105 -0
  51. package/dist/clis/bloomberg/opinions.d.ts +1 -0
  52. package/dist/clis/bloomberg/opinions.js +17 -0
  53. package/dist/clis/bloomberg/politics.d.ts +1 -0
  54. package/dist/clis/bloomberg/politics.js +17 -0
  55. package/dist/clis/bloomberg/tech.d.ts +1 -0
  56. package/dist/clis/bloomberg/tech.js +17 -0
  57. package/dist/clis/bloomberg/utils.d.ts +34 -0
  58. package/dist/clis/bloomberg/utils.js +364 -0
  59. package/dist/clis/bloomberg/utils.test.d.ts +1 -0
  60. package/dist/clis/bloomberg/utils.test.js +129 -0
  61. package/dist/clis/boss/batchgreet.d.ts +1 -0
  62. package/dist/clis/boss/batchgreet.js +147 -0
  63. package/dist/clis/boss/chatlist.js +2 -2
  64. package/dist/clis/boss/detail.js +2 -2
  65. package/dist/clis/boss/exchange.d.ts +1 -0
  66. package/dist/clis/boss/exchange.js +111 -0
  67. package/dist/clis/boss/greet.d.ts +1 -0
  68. package/dist/clis/boss/greet.js +175 -0
  69. package/dist/clis/boss/invite.d.ts +1 -0
  70. package/dist/clis/boss/invite.js +158 -0
  71. package/dist/clis/boss/joblist.d.ts +1 -0
  72. package/dist/clis/boss/joblist.js +55 -0
  73. package/dist/clis/boss/mark.d.ts +1 -0
  74. package/dist/clis/boss/mark.js +141 -0
  75. package/dist/clis/boss/recommend.d.ts +1 -0
  76. package/dist/clis/boss/recommend.js +83 -0
  77. package/dist/clis/boss/search.js +1 -1
  78. package/dist/clis/boss/send.js +1 -1
  79. package/dist/clis/boss/stats.d.ts +1 -0
  80. package/dist/clis/boss/stats.js +116 -0
  81. package/dist/clis/chaoxing/assignments.js +1 -1
  82. package/dist/clis/chaoxing/exams.js +1 -1
  83. package/dist/{chaoxing.d.ts → clis/chaoxing/utils.d.ts} +1 -1
  84. package/dist/{chaoxing.js → clis/chaoxing/utils.js} +0 -2
  85. package/dist/clis/chaoxing/utils.test.d.ts +1 -0
  86. package/dist/{chaoxing.test.js → clis/chaoxing/utils.test.js} +1 -1
  87. package/dist/clis/chatgpt/read.js +1 -1
  88. package/dist/clis/chatwise/export.js +1 -1
  89. package/dist/clis/chatwise/model.js +2 -2
  90. package/dist/clis/chatwise/screenshot.js +1 -1
  91. package/dist/clis/codex/export.js +1 -1
  92. package/dist/clis/codex/model.js +2 -2
  93. package/dist/clis/codex/screenshot.js +1 -1
  94. package/dist/clis/coupang/add-to-cart.js +3 -4
  95. package/dist/clis/coupang/search.js +2 -4
  96. package/dist/clis/coupang/utils.test.d.ts +1 -0
  97. package/dist/{coupang.test.js → clis/coupang/utils.test.js} +1 -1
  98. package/dist/clis/ctrip/search.js +1 -1
  99. package/dist/clis/cursor/export.js +1 -1
  100. package/dist/clis/cursor/model.js +2 -2
  101. package/dist/clis/cursor/screenshot.js +1 -1
  102. package/dist/clis/jike/comment.js +2 -3
  103. package/dist/clis/jike/create.js +1 -2
  104. package/dist/clis/jike/feed.js +0 -1
  105. package/dist/clis/jike/like.js +1 -2
  106. package/dist/clis/jike/notifications.js +0 -1
  107. package/dist/clis/jike/post.yaml +1 -0
  108. package/dist/clis/jike/repost.js +1 -2
  109. package/dist/clis/jike/search.js +2 -3
  110. package/dist/clis/jike/topic.yaml +1 -0
  111. package/dist/clis/jike/user.yaml +1 -0
  112. package/dist/clis/jimeng/history.yaml +0 -1
  113. package/dist/clis/linkedin/search.js +7 -7
  114. package/dist/clis/linux-do/category.yaml +1 -0
  115. package/dist/clis/linux-do/search.yaml +4 -3
  116. package/dist/clis/linux-do/topic.yaml +1 -0
  117. package/dist/clis/notion/export.js +1 -1
  118. package/dist/clis/reddit/comment.js +3 -4
  119. package/dist/clis/reddit/read.js +4 -5
  120. package/dist/clis/reddit/save.js +2 -3
  121. package/dist/clis/reddit/saved.js +0 -1
  122. package/dist/clis/reddit/search.yaml +1 -0
  123. package/dist/clis/reddit/subscribe.js +0 -1
  124. package/dist/clis/reddit/upvote.js +2 -3
  125. package/dist/clis/reddit/upvoted.js +0 -1
  126. package/dist/clis/reddit/user-comments.yaml +1 -0
  127. package/dist/clis/reddit/user-posts.yaml +1 -0
  128. package/dist/clis/reddit/user.yaml +1 -0
  129. package/dist/clis/reuters/search.js +1 -1
  130. package/dist/clis/sinafinance/news.d.ts +7 -0
  131. package/dist/clis/sinafinance/news.js +61 -0
  132. package/dist/clis/smzdm/search.js +2 -3
  133. package/dist/clis/stackoverflow/search.yaml +1 -0
  134. package/dist/clis/steam/top-sellers.yaml +29 -0
  135. package/dist/clis/twitter/accept.js +2 -2
  136. package/dist/clis/twitter/article.js +2 -2
  137. package/dist/clis/twitter/block.d.ts +1 -0
  138. package/dist/clis/twitter/block.js +88 -0
  139. package/dist/clis/twitter/delete.js +1 -1
  140. package/dist/clis/twitter/hide-reply.d.ts +1 -0
  141. package/dist/clis/twitter/hide-reply.js +66 -0
  142. package/dist/clis/twitter/like.js +1 -1
  143. package/dist/clis/twitter/post.js +1 -1
  144. package/dist/clis/twitter/reply-dm.js +1 -1
  145. package/dist/clis/twitter/reply.js +2 -2
  146. package/dist/clis/twitter/search.js +1 -1
  147. package/dist/clis/twitter/thread.js +2 -2
  148. package/dist/clis/twitter/trending.d.ts +1 -0
  149. package/dist/clis/twitter/trending.js +91 -0
  150. package/dist/clis/twitter/unblock.d.ts +1 -0
  151. package/dist/clis/twitter/unblock.js +71 -0
  152. package/dist/clis/v2ex/topic.yaml +1 -0
  153. package/dist/clis/weibo/hot.js +0 -1
  154. package/dist/clis/weread/book.js +1 -1
  155. package/dist/clis/weread/highlights.js +1 -1
  156. package/dist/clis/weread/notes.js +1 -1
  157. package/dist/clis/weread/search.js +1 -1
  158. package/dist/clis/wikipedia/search.d.ts +1 -0
  159. package/dist/clis/wikipedia/search.js +30 -0
  160. package/dist/clis/wikipedia/summary.d.ts +1 -0
  161. package/dist/clis/wikipedia/summary.js +28 -0
  162. package/dist/clis/wikipedia/utils.d.ts +8 -0
  163. package/dist/clis/wikipedia/utils.js +18 -0
  164. package/dist/clis/xiaohongshu/creator-note-detail.d.ts +79 -5
  165. package/dist/clis/xiaohongshu/creator-note-detail.js +323 -70
  166. package/dist/clis/xiaohongshu/creator-note-detail.test.d.ts +1 -0
  167. package/dist/clis/xiaohongshu/creator-note-detail.test.js +258 -0
  168. package/dist/clis/xiaohongshu/creator-notes-summary.d.ts +28 -0
  169. package/dist/clis/xiaohongshu/creator-notes-summary.js +92 -0
  170. package/dist/clis/xiaohongshu/creator-notes-summary.test.d.ts +1 -0
  171. package/dist/clis/xiaohongshu/creator-notes-summary.test.js +49 -0
  172. package/dist/clis/xiaohongshu/creator-notes.d.ts +18 -5
  173. package/dist/clis/xiaohongshu/creator-notes.js +189 -71
  174. package/dist/clis/xiaohongshu/creator-notes.test.d.ts +1 -0
  175. package/dist/clis/xiaohongshu/creator-notes.test.js +191 -0
  176. package/dist/clis/xiaohongshu/creator-profile.js +0 -1
  177. package/dist/clis/xiaohongshu/creator-stats.js +0 -1
  178. package/dist/clis/xiaohongshu/download.js +2 -3
  179. package/dist/clis/xiaohongshu/feed.yaml +0 -1
  180. package/dist/clis/xiaohongshu/notifications.yaml +0 -1
  181. package/dist/clis/xiaohongshu/search.js +2 -2
  182. package/dist/clis/xiaohongshu/user.js +1 -2
  183. package/dist/clis/yahoo-finance/quote.js +0 -1
  184. package/dist/clis/youtube/search.js +1 -1
  185. package/dist/clis/youtube/transcript.js +1 -1
  186. package/dist/clis/youtube/video.js +1 -1
  187. package/dist/clis/zhihu/download.js +1 -2
  188. package/dist/clis/zhihu/question.js +1 -1
  189. package/dist/clis/zhihu/search.yaml +4 -3
  190. package/dist/commanderAdapter.d.ts +21 -0
  191. package/dist/commanderAdapter.js +111 -0
  192. package/dist/{engine.d.ts → discovery.d.ts} +0 -6
  193. package/dist/{engine.js → discovery.js} +1 -98
  194. package/dist/download/index.d.ts +2 -6
  195. package/dist/download/index.js +19 -46
  196. package/dist/engine.test.d.ts +1 -1
  197. package/dist/engine.test.js +8 -7
  198. package/dist/execution.d.ts +22 -0
  199. package/dist/execution.js +129 -0
  200. package/dist/explore.js +121 -107
  201. package/dist/external-clis.yaml +48 -0
  202. package/dist/external.d.ts +25 -0
  203. package/dist/external.js +156 -0
  204. package/dist/main.js +1 -1
  205. package/dist/pipeline/steps/browser.js +8 -2
  206. package/dist/registry.d.ts +2 -0
  207. package/dist/registry.js +2 -0
  208. package/dist/runtime.d.ts +5 -0
  209. package/dist/runtime.js +8 -0
  210. package/dist/serialization.d.ts +34 -0
  211. package/dist/serialization.js +63 -0
  212. package/dist/types.d.ts +4 -1
  213. package/docs/.vitepress/config.mts +14 -3
  214. package/docs/adapters/browser/arxiv.md +27 -0
  215. package/docs/adapters/browser/barchart.md +32 -0
  216. package/docs/adapters/browser/bloomberg.md +70 -0
  217. package/docs/adapters/browser/chaoxing.md +39 -0
  218. package/docs/adapters/browser/grok.md +35 -0
  219. package/docs/adapters/browser/hf.md +42 -0
  220. package/docs/adapters/browser/jike.md +45 -0
  221. package/docs/adapters/browser/jimeng.md +39 -0
  222. package/docs/adapters/browser/linux-do.md +45 -0
  223. package/docs/adapters/browser/sinafinance.md +35 -0
  224. package/docs/adapters/browser/stackoverflow.md +35 -0
  225. package/docs/adapters/browser/steam.md +26 -0
  226. package/docs/adapters/browser/twitter.md +3 -0
  227. package/docs/adapters/browser/weread.md +48 -0
  228. package/docs/adapters/browser/wikipedia.md +30 -0
  229. package/docs/adapters/browser/xiaohongshu.md +5 -1
  230. package/docs/adapters/desktop/chatgpt.md +3 -3
  231. package/docs/adapters/index.md +13 -0
  232. package/docs/advanced/download.md +4 -4
  233. package/docs/developer/architecture.md +17 -4
  234. package/package.json +1 -1
  235. package/scripts/check-doc-coverage.sh +69 -0
  236. package/scripts/copy-yaml.cjs +7 -0
  237. package/src/browser/cdp.ts +9 -4
  238. package/src/browser/page.ts +7 -1
  239. package/src/build-manifest.ts +25 -19
  240. package/src/cli.ts +253 -119
  241. package/src/clis/antigravity/serve.ts +323 -50
  242. package/src/clis/apple-podcasts/commands.test.ts +95 -0
  243. package/src/clis/apple-podcasts/search.ts +2 -2
  244. package/src/clis/apple-podcasts/top.ts +12 -2
  245. package/src/clis/arxiv/paper.ts +21 -0
  246. package/src/clis/arxiv/search.ts +24 -0
  247. package/src/clis/arxiv/utils.ts +63 -0
  248. package/src/clis/bilibili/dynamic.ts +1 -1
  249. package/src/clis/bilibili/favorite.ts +1 -1
  250. package/src/clis/bilibili/feed.ts +1 -1
  251. package/src/clis/bilibili/following.ts +1 -1
  252. package/src/clis/bilibili/history.ts +1 -1
  253. package/src/clis/bilibili/me.ts +1 -1
  254. package/src/clis/bilibili/ranking.ts +1 -1
  255. package/src/clis/bilibili/search.ts +3 -3
  256. package/src/clis/bilibili/subtitle.ts +1 -1
  257. package/src/clis/bilibili/user-videos.ts +1 -1
  258. package/src/{bilibili.ts → clis/bilibili/utils.ts} +1 -1
  259. package/src/clis/bloomberg/businessweek.ts +18 -0
  260. package/src/clis/bloomberg/economics.ts +18 -0
  261. package/src/clis/bloomberg/feeds.ts +16 -0
  262. package/src/clis/bloomberg/industries.ts +18 -0
  263. package/src/clis/bloomberg/main.ts +18 -0
  264. package/src/clis/bloomberg/markets.ts +18 -0
  265. package/src/clis/bloomberg/news.ts +136 -0
  266. package/src/clis/bloomberg/opinions.ts +18 -0
  267. package/src/clis/bloomberg/politics.ts +18 -0
  268. package/src/clis/bloomberg/tech.ts +18 -0
  269. package/src/clis/bloomberg/utils.test.ts +135 -0
  270. package/src/clis/bloomberg/utils.ts +429 -0
  271. package/src/clis/boss/batchgreet.ts +167 -0
  272. package/src/clis/boss/chatlist.ts +2 -2
  273. package/src/clis/boss/detail.ts +2 -2
  274. package/src/clis/boss/exchange.ts +126 -0
  275. package/src/clis/boss/greet.ts +198 -0
  276. package/src/clis/boss/invite.ts +177 -0
  277. package/src/clis/boss/joblist.ts +63 -0
  278. package/src/clis/boss/mark.ts +155 -0
  279. package/src/clis/boss/recommend.ts +94 -0
  280. package/src/clis/boss/search.ts +1 -1
  281. package/src/clis/boss/send.ts +1 -1
  282. package/src/clis/boss/stats.ts +130 -0
  283. package/src/clis/chaoxing/assignments.ts +1 -1
  284. package/src/clis/chaoxing/exams.ts +1 -1
  285. package/src/{chaoxing.test.ts → clis/chaoxing/utils.test.ts} +1 -1
  286. package/src/{chaoxing.ts → clis/chaoxing/utils.ts} +1 -3
  287. package/src/clis/chatgpt/README.zh-CN.md +3 -3
  288. package/src/clis/chatgpt/read.ts +1 -1
  289. package/src/clis/chatwise/export.ts +1 -1
  290. package/src/clis/chatwise/model.ts +2 -2
  291. package/src/clis/chatwise/screenshot.ts +1 -1
  292. package/src/clis/codex/export.ts +1 -1
  293. package/src/clis/codex/model.ts +2 -2
  294. package/src/clis/codex/screenshot.ts +1 -1
  295. package/src/clis/coupang/add-to-cart.ts +3 -4
  296. package/src/clis/coupang/search.ts +2 -4
  297. package/src/{coupang.test.ts → clis/coupang/utils.test.ts} +1 -1
  298. package/src/clis/ctrip/search.ts +1 -1
  299. package/src/clis/cursor/export.ts +1 -1
  300. package/src/clis/cursor/model.ts +2 -2
  301. package/src/clis/cursor/screenshot.ts +1 -1
  302. package/src/clis/jike/comment.ts +2 -3
  303. package/src/clis/jike/create.ts +1 -2
  304. package/src/clis/jike/feed.ts +0 -1
  305. package/src/clis/jike/like.ts +1 -2
  306. package/src/clis/jike/notifications.ts +0 -1
  307. package/src/clis/jike/post.yaml +1 -0
  308. package/src/clis/jike/repost.ts +1 -2
  309. package/src/clis/jike/search.ts +2 -3
  310. package/src/clis/jike/topic.yaml +1 -0
  311. package/src/clis/jike/user.yaml +1 -0
  312. package/src/clis/jimeng/history.yaml +0 -1
  313. package/src/clis/linkedin/search.ts +7 -7
  314. package/src/clis/linux-do/category.yaml +1 -0
  315. package/src/clis/linux-do/search.yaml +4 -3
  316. package/src/clis/linux-do/topic.yaml +1 -0
  317. package/src/clis/notion/export.ts +1 -1
  318. package/src/clis/reddit/comment.ts +3 -4
  319. package/src/clis/reddit/read.ts +4 -5
  320. package/src/clis/reddit/save.ts +2 -3
  321. package/src/clis/reddit/saved.ts +0 -1
  322. package/src/clis/reddit/search.yaml +1 -0
  323. package/src/clis/reddit/subscribe.ts +0 -1
  324. package/src/clis/reddit/upvote.ts +2 -3
  325. package/src/clis/reddit/upvoted.ts +0 -1
  326. package/src/clis/reddit/user-comments.yaml +1 -0
  327. package/src/clis/reddit/user-posts.yaml +1 -0
  328. package/src/clis/reddit/user.yaml +1 -0
  329. package/src/clis/reuters/search.ts +1 -1
  330. package/src/clis/sinafinance/news.ts +76 -0
  331. package/src/clis/smzdm/search.ts +2 -3
  332. package/src/clis/stackoverflow/search.yaml +1 -0
  333. package/src/clis/steam/top-sellers.yaml +29 -0
  334. package/src/clis/twitter/accept.ts +2 -2
  335. package/src/clis/twitter/article.ts +2 -2
  336. package/src/clis/twitter/block.ts +92 -0
  337. package/src/clis/twitter/delete.ts +1 -1
  338. package/src/clis/twitter/hide-reply.ts +70 -0
  339. package/src/clis/twitter/like.ts +1 -1
  340. package/src/clis/twitter/post.ts +1 -1
  341. package/src/clis/twitter/reply-dm.ts +1 -1
  342. package/src/clis/twitter/reply.ts +2 -2
  343. package/src/clis/twitter/search.ts +1 -1
  344. package/src/clis/twitter/thread.ts +2 -2
  345. package/src/clis/twitter/trending.ts +113 -0
  346. package/src/clis/twitter/unblock.ts +75 -0
  347. package/src/clis/v2ex/topic.yaml +1 -0
  348. package/src/clis/weibo/hot.ts +0 -1
  349. package/src/clis/weread/book.ts +1 -1
  350. package/src/clis/weread/highlights.ts +1 -1
  351. package/src/clis/weread/notes.ts +1 -1
  352. package/src/clis/weread/search.ts +1 -1
  353. package/src/clis/wikipedia/search.ts +32 -0
  354. package/src/clis/wikipedia/summary.ts +28 -0
  355. package/src/clis/wikipedia/utils.ts +20 -0
  356. package/src/clis/xiaohongshu/creator-note-detail.test.ts +272 -0
  357. package/src/clis/xiaohongshu/creator-note-detail.ts +425 -73
  358. package/src/clis/xiaohongshu/creator-notes-summary.test.ts +54 -0
  359. package/src/clis/xiaohongshu/creator-notes-summary.ts +120 -0
  360. package/src/clis/xiaohongshu/creator-notes.test.ts +211 -0
  361. package/src/clis/xiaohongshu/creator-notes.ts +254 -75
  362. package/src/clis/xiaohongshu/creator-profile.ts +0 -1
  363. package/src/clis/xiaohongshu/creator-stats.ts +0 -1
  364. package/src/clis/xiaohongshu/download.ts +2 -3
  365. package/src/clis/xiaohongshu/feed.yaml +0 -1
  366. package/src/clis/xiaohongshu/notifications.yaml +0 -1
  367. package/src/clis/xiaohongshu/search.ts +2 -2
  368. package/src/clis/xiaohongshu/user.ts +1 -2
  369. package/src/clis/yahoo-finance/quote.ts +0 -1
  370. package/src/clis/youtube/search.ts +1 -1
  371. package/src/clis/youtube/transcript.ts +1 -1
  372. package/src/clis/youtube/video.ts +1 -1
  373. package/src/clis/zhihu/download.ts +1 -2
  374. package/src/clis/zhihu/question.ts +1 -1
  375. package/src/clis/zhihu/search.yaml +4 -3
  376. package/src/commanderAdapter.ts +113 -0
  377. package/src/daemon.ts +3 -3
  378. package/src/{engine.ts → discovery.ts} +1 -108
  379. package/src/download/index.ts +21 -54
  380. package/src/engine.test.ts +8 -7
  381. package/src/execution.ts +138 -0
  382. package/src/explore.ts +135 -109
  383. package/src/external-clis.yaml +48 -0
  384. package/src/external.ts +185 -0
  385. package/src/main.ts +1 -1
  386. package/src/pipeline/steps/browser.ts +7 -2
  387. package/src/registry.ts +5 -0
  388. package/src/runtime.ts +9 -0
  389. package/src/serialization.ts +79 -0
  390. package/src/types.ts +1 -1
  391. package/tests/e2e/browser-public.test.ts +25 -0
  392. package/tests/e2e/public-commands.test.ts +55 -1
  393. package/dist/clis/twitter/trending.yaml +0 -46
  394. package/src/clis/twitter/trending.yaml +0 -46
  395. /package/dist/{chaoxing.test.d.ts → clis/arxiv/paper.d.ts} +0 -0
  396. /package/dist/{coupang.test.d.ts → clis/arxiv/search.d.ts} +0 -0
  397. /package/dist/{bilibili.js → clis/bilibili/utils.js} +0 -0
  398. /package/dist/{coupang.d.ts → clis/coupang/utils.d.ts} +0 -0
  399. /package/dist/{coupang.js → clis/coupang/utils.js} +0 -0
  400. /package/src/{coupang.ts → clis/coupang/utils.ts} +0 -0
package/dist/runtime.js CHANGED
@@ -1,3 +1,11 @@
1
+ import { BrowserBridge, CDPBridge } from './browser/index.js';
2
+ /**
3
+ * Returns the appropriate browser factory based on environment config.
4
+ * Uses CDPBridge when OPENCLI_CDP_ENDPOINT is set, otherwise BrowserBridge.
5
+ */
6
+ export function getBrowserFactory() {
7
+ return (process.env.OPENCLI_CDP_ENDPOINT ? CDPBridge : BrowserBridge);
8
+ }
1
9
  export const DEFAULT_BROWSER_CONNECT_TIMEOUT = parseInt(process.env.OPENCLI_BROWSER_CONNECT_TIMEOUT ?? '30', 10);
2
10
  export const DEFAULT_BROWSER_COMMAND_TIMEOUT = parseInt(process.env.OPENCLI_BROWSER_COMMAND_TIMEOUT ?? '60', 10);
3
11
  export const DEFAULT_BROWSER_EXPLORE_TIMEOUT = parseInt(process.env.OPENCLI_BROWSER_EXPLORE_TIMEOUT ?? '120', 10);
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Serialization and formatting helpers for CLI commands and args.
3
+ *
4
+ * Used by the `list` command, Commander --help, and build-manifest.
5
+ * Separated from registry.ts to keep the registry focused on types + registration.
6
+ */
7
+ import type { Arg, CliCommand } from './registry.js';
8
+ export type SerializedArg = {
9
+ name: string;
10
+ type: string;
11
+ required: boolean;
12
+ positional: boolean;
13
+ choices: string[];
14
+ default: unknown;
15
+ help: string;
16
+ };
17
+ /** Stable arg schema — every field is always present (no sparse objects). */
18
+ export declare function serializeArg(a: Arg): SerializedArg;
19
+ /** Full command metadata for structured output (json/yaml). */
20
+ export declare function serializeCommand(cmd: CliCommand): {
21
+ command: string;
22
+ site: string;
23
+ name: string;
24
+ description: string;
25
+ strategy: string;
26
+ browser: boolean;
27
+ args: SerializedArg[];
28
+ columns: string[];
29
+ domain: string | null;
30
+ };
31
+ /** Human-readable arg summary: `<required> [optional]` style. */
32
+ export declare function formatArgSummary(args: Arg[]): string;
33
+ /** Generate the --help appendix showing registry metadata not exposed by Commander. */
34
+ export declare function formatRegistryHelpText(cmd: CliCommand): string;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Serialization and formatting helpers for CLI commands and args.
3
+ *
4
+ * Used by the `list` command, Commander --help, and build-manifest.
5
+ * Separated from registry.ts to keep the registry focused on types + registration.
6
+ */
7
+ import { fullName, strategyLabel } from './registry.js';
8
+ /** Stable arg schema — every field is always present (no sparse objects). */
9
+ export function serializeArg(a) {
10
+ return {
11
+ name: a.name,
12
+ type: a.type ?? 'string',
13
+ required: !!a.required,
14
+ positional: !!a.positional,
15
+ choices: a.choices ?? [],
16
+ default: a.default ?? null,
17
+ help: a.help ?? '',
18
+ };
19
+ }
20
+ /** Full command metadata for structured output (json/yaml). */
21
+ export function serializeCommand(cmd) {
22
+ return {
23
+ command: fullName(cmd),
24
+ site: cmd.site,
25
+ name: cmd.name,
26
+ description: cmd.description,
27
+ strategy: strategyLabel(cmd),
28
+ browser: !!cmd.browser,
29
+ args: cmd.args.map(serializeArg),
30
+ columns: cmd.columns ?? [],
31
+ domain: cmd.domain ?? null,
32
+ };
33
+ }
34
+ // ── Formatting ──────────────────────────────────────────────────────────────
35
+ /** Human-readable arg summary: `<required> [optional]` style. */
36
+ export function formatArgSummary(args) {
37
+ return args
38
+ .map(a => {
39
+ if (a.positional)
40
+ return a.required ? `<${a.name}>` : `[${a.name}]`;
41
+ return a.required ? `--${a.name}` : `[--${a.name}]`;
42
+ })
43
+ .join(' ');
44
+ }
45
+ /** Generate the --help appendix showing registry metadata not exposed by Commander. */
46
+ export function formatRegistryHelpText(cmd) {
47
+ const lines = [];
48
+ const choicesArgs = cmd.args.filter(a => a.choices?.length);
49
+ for (const a of choicesArgs) {
50
+ const prefix = a.positional ? `<${a.name}>` : `--${a.name}`;
51
+ const def = a.default != null ? ` (default: ${a.default})` : '';
52
+ lines.push(` ${prefix}: ${a.choices.join(', ')}${def}`);
53
+ }
54
+ const meta = [];
55
+ meta.push(`Strategy: ${strategyLabel(cmd)}`);
56
+ meta.push(`Browser: ${cmd.browser ? 'yes' : 'no'}`);
57
+ if (cmd.domain)
58
+ meta.push(`Domain: ${cmd.domain}`);
59
+ lines.push(meta.join(' | '));
60
+ if (cmd.columns?.length)
61
+ lines.push(`Output columns: ${cmd.columns.join(', ')}`);
62
+ return '\n' + lines.join('\n') + '\n';
63
+ }
package/dist/types.d.ts CHANGED
@@ -5,7 +5,10 @@
5
5
  * instead of `any` for browser interactions.
6
6
  */
7
7
  export interface IPage {
8
- goto(url: string): Promise<void>;
8
+ goto(url: string, options?: {
9
+ waitUntil?: 'load' | 'none';
10
+ settleMs?: number;
11
+ }): Promise<void>;
9
12
  evaluate(js: string): Promise<any>;
10
13
  getCookies(opts?: {
11
14
  domain?: string;
@@ -1,7 +1,7 @@
1
1
  import { defineConfig } from 'vitepress'
2
2
 
3
3
  export default defineConfig({
4
- base: '/opencli/',
4
+ base: '/docs/',
5
5
  title: 'OpenCLI',
6
6
  description: 'Make any website or Electron App your CLI — AI-powered, account-safe, self-healing.',
7
7
 
@@ -54,12 +54,19 @@ export default defineConfig({
54
54
  { text: 'YouTube', link: '/adapters/browser/youtube' },
55
55
  { text: 'Xueqiu', link: '/adapters/browser/xueqiu' },
56
56
  { text: 'V2EX', link: '/adapters/browser/v2ex' },
57
+ { text: 'Bloomberg', link: '/adapters/browser/bloomberg' },
57
58
  { text: 'LinkedIn', link: '/adapters/browser/linkedin' },
58
59
  { text: 'Coupang', link: '/adapters/browser/coupang' },
59
60
  { text: 'BOSS Zhipin', link: '/adapters/browser/boss' },
60
61
  { text: 'Ctrip', link: '/adapters/browser/ctrip' },
61
62
  { text: 'Reuters', link: '/adapters/browser/reuters' },
62
63
  { text: 'SMZDM', link: '/adapters/browser/smzdm' },
64
+ { text: 'Jike', link: '/adapters/browser/jike' },
65
+ { text: 'Jimeng', link: '/adapters/browser/jimeng' },
66
+ { text: 'LINUX DO', link: '/adapters/browser/linux-do' },
67
+ { text: 'Chaoxing', link: '/adapters/browser/chaoxing' },
68
+ { text: 'Grok', link: '/adapters/browser/grok' },
69
+ { text: 'WeRead', link: '/adapters/browser/weread' },
63
70
  ],
64
71
  },
65
72
  {
@@ -72,6 +79,12 @@ export default defineConfig({
72
79
  { text: 'Apple Podcasts', link: '/adapters/browser/apple-podcasts' },
73
80
  { text: 'Xiaoyuzhou', link: '/adapters/browser/xiaoyuzhou' },
74
81
  { text: 'Yahoo Finance', link: '/adapters/browser/yahoo-finance' },
82
+ { text: 'arXiv', link: '/adapters/browser/arxiv' },
83
+ { text: 'Barchart', link: '/adapters/browser/barchart' },
84
+ { text: 'Hugging Face', link: '/adapters/browser/hf' },
85
+ { text: 'Sina Finance', link: '/adapters/browser/sinafinance' },
86
+ { text: 'Stack Overflow', link: '/adapters/browser/stackoverflow' },
87
+ { text: 'Wikipedia', link: '/adapters/browser/wikipedia' },
75
88
  ],
76
89
  },
77
90
  {
@@ -137,7 +150,6 @@ export default defineConfig({
137
150
  { text: '快速开始', link: '/zh/guide/getting-started' },
138
151
  { text: '安装', link: '/zh/guide/installation' },
139
152
  { text: 'Browser Bridge', link: '/zh/guide/browser-bridge' },
140
- { text: '问题排查', link: '/zh/guide/troubleshooting' },
141
153
  ],
142
154
  },
143
155
  ],
@@ -154,7 +166,6 @@ export default defineConfig({
154
166
  text: '开发者指南',
155
167
  items: [
156
168
  { text: '贡献指南', link: '/zh/developer/contributing' },
157
- { text: '测试', link: '/zh/developer/testing' },
158
169
  ],
159
170
  },
160
171
  ],
@@ -0,0 +1,27 @@
1
+ # arXiv
2
+
3
+ **Mode**: 🌐 Public · **Domain**: `arxiv.org`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli arxiv search` | Search arXiv papers |
10
+ | `opencli arxiv paper` | Get arXiv paper details by ID |
11
+
12
+ ## Usage Examples
13
+
14
+ ```bash
15
+ # Search for papers
16
+ opencli arxiv search "transformer attention" --limit 10
17
+
18
+ # Get paper details by arXiv ID
19
+ opencli arxiv paper 2301.00001
20
+
21
+ # JSON output
22
+ opencli arxiv search "LLM" -f json
23
+ ```
24
+
25
+ ## Prerequisites
26
+
27
+ - No browser required — uses public arXiv API
@@ -0,0 +1,32 @@
1
+ # Barchart
2
+
3
+ **Mode**: 🌐 Public · **Domain**: `barchart.com`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli barchart quote` | Stock quote with price, volume, and key metrics |
10
+ | `opencli barchart options` | Options chain with greeks, IV, volume, and open interest |
11
+ | `opencli barchart greeks` | Options greeks overview (IV, delta, gamma, theta, vega) |
12
+ | `opencli barchart flow` | Unusual options activity / options flow |
13
+
14
+ ## Usage Examples
15
+
16
+ ```bash
17
+ # Get stock quote
18
+ opencli barchart quote --symbol AAPL
19
+
20
+ # View options chain
21
+ opencli barchart options --symbol TSLA
22
+
23
+ # Options greeks overview
24
+ opencli barchart greeks --symbol NVDA
25
+
26
+ # Unusual options flow
27
+ opencli barchart flow --limit 20 -f json
28
+ ```
29
+
30
+ ## Prerequisites
31
+
32
+ - No browser required — uses public API
@@ -0,0 +1,70 @@
1
+ # Bloomberg
2
+
3
+ **Mode**: 🌐 / 🔐 Mixed · **Domains**: `feeds.bloomberg.com`, `www.bloomberg.com`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli bloomberg main` | Bloomberg homepage top stories from RSS |
10
+ | `opencli bloomberg markets` | Bloomberg Markets top stories from RSS |
11
+ | `opencli bloomberg economics` | Bloomberg Economics top stories from RSS |
12
+ | `opencli bloomberg industries` | Bloomberg Industries top stories from RSS |
13
+ | `opencli bloomberg tech` | Bloomberg Tech top stories from RSS |
14
+ | `opencli bloomberg politics` | Bloomberg Politics top stories from RSS |
15
+ | `opencli bloomberg businessweek` | Bloomberg Businessweek top stories from RSS |
16
+ | `opencli bloomberg opinions` | Bloomberg Opinion top stories from RSS |
17
+ | `opencli bloomberg feeds` | List the RSS feed aliases used by the adapter |
18
+ | `opencli bloomberg news <link>` | Read a standard Bloomberg story/article page and return title, summary, media links, and article text |
19
+
20
+ ## What works today
21
+
22
+ - RSS-backed listing commands work without a browser:
23
+ - `main`
24
+ - `markets`
25
+ - `economics`
26
+ - `industries`
27
+ - `tech`
28
+ - `politics`
29
+ - `businessweek`
30
+ - `opinions`
31
+ - `feeds`
32
+ - `bloomberg news` works on standard Bloomberg story/article pages that expose `#__NEXT_DATA__` and are accessible to your current Chrome session.
33
+
34
+ ## Current limitations
35
+
36
+ - Audio pages and some other non-standard Bloomberg URLs may fail.
37
+ - Some Bloomberg pages can return bot-protection or access-gated responses instead of article data.
38
+ - This adapter is for data retrieval/extraction only. It does **not** bypass Bloomberg paywall, login, entitlement, or other access checks.
39
+
40
+ ## Usage Examples
41
+
42
+ ```bash
43
+ # List supported RSS feed aliases
44
+ opencli bloomberg feeds
45
+
46
+ # Fetch Bloomberg homepage headlines
47
+ opencli bloomberg main --limit 5
48
+
49
+ # Fetch a section feed as JSON
50
+ opencli bloomberg tech --limit 3 -f json
51
+
52
+ # Read a standard article page
53
+ opencli bloomberg news https://www.bloomberg.com/news/articles/2026-03-19/example -f json
54
+
55
+ # Relative article paths also work
56
+ opencli bloomberg news /news/articles/2026-03-19/example
57
+ ```
58
+
59
+ ## Prerequisites
60
+
61
+ - RSS commands do not require Chrome.
62
+ - `bloomberg news` requires:
63
+ - Chrome running
64
+ - a Chrome session that can already access the target Bloomberg article page
65
+ - the [Browser Bridge extension](/guide/browser-bridge)
66
+
67
+ ## Notes
68
+
69
+ - RSS commands support `--limit` with a maximum of 20 items.
70
+ - If `bloomberg news` fails on a page from RSS, try a different standard story/article link first; not every Bloomberg URL in feeds is a normal article page.
@@ -0,0 +1,39 @@
1
+ # 超星学习通 (Chaoxing)
2
+
3
+ **Mode**: 🔐 Browser · **Domain**: `mooc2-ans.chaoxing.com`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli chaoxing assignments` | 学习通作业列表 |
10
+ | `opencli chaoxing exams` | 学习通考试列表 |
11
+
12
+ ## Usage Examples
13
+
14
+ ```bash
15
+ # List all assignments
16
+ opencli chaoxing assignments --limit 20
17
+
18
+ # Filter exams by course name
19
+ opencli chaoxing exams --course "高等数学"
20
+
21
+ # Filter exams by status
22
+ opencli chaoxing exams --status ongoing
23
+
24
+ # JSON output
25
+ opencli chaoxing assignments -f json
26
+ ```
27
+
28
+ ### Options
29
+
30
+ | Option | Description |
31
+ |--------|-------------|
32
+ | `--course` | Filter by course name (fuzzy match) |
33
+ | `--status` | Filter by status: `all`, `upcoming`, `ongoing`, `finished` |
34
+ | `--limit` | Max number of results (default: 20) |
35
+
36
+ ## Prerequisites
37
+
38
+ - Chrome running and **logged into** mooc2-ans.chaoxing.com
39
+ - [Browser Bridge extension](/guide/browser-bridge) installed
@@ -0,0 +1,35 @@
1
+ # Grok
2
+
3
+ **Mode**: 🔐 Browser · **Domain**: `grok.com`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli grok ask` | Send a message to Grok and get response |
10
+
11
+ ## Usage Examples
12
+
13
+ ```bash
14
+ # Ask Grok a question
15
+ opencli grok ask --prompt "Explain quantum computing in simple terms"
16
+
17
+ # Start a new chat session
18
+ opencli grok ask --prompt "Hello" --new
19
+
20
+ # Set custom timeout (default: 120s)
21
+ opencli grok ask --prompt "Write a long essay" --timeout 180
22
+ ```
23
+
24
+ ### Options
25
+
26
+ | Option | Description |
27
+ |--------|-------------|
28
+ | `--prompt` | The message to send (required) |
29
+ | `--timeout` | Wait timeout in seconds (default: 120) |
30
+ | `--new` | Start a new chat session (default: false) |
31
+
32
+ ## Prerequisites
33
+
34
+ - Chrome running and **logged into** grok.com
35
+ - [Browser Bridge extension](/guide/browser-bridge) installed
@@ -0,0 +1,42 @@
1
+ # Hugging Face
2
+
3
+ **Mode**: 🌐 Public · **Domain**: `huggingface.co`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli hf top` | Top upvoted Hugging Face papers |
10
+
11
+ ## Usage Examples
12
+
13
+ ```bash
14
+ # Today's top papers
15
+ opencli hf top --limit 10
16
+
17
+ # All papers (no limit)
18
+ opencli hf top --all
19
+
20
+ # Specific date
21
+ opencli hf top --date 2025-03-01
22
+
23
+ # Weekly/monthly top papers
24
+ opencli hf top --period weekly
25
+ opencli hf top --period monthly
26
+
27
+ # JSON output
28
+ opencli hf top -f json
29
+ ```
30
+
31
+ ### Options
32
+
33
+ | Option | Description |
34
+ |--------|-------------|
35
+ | `--limit` | Number of papers (default: 20) |
36
+ | `--all` | Return all papers, ignoring limit |
37
+ | `--date` | Date in `YYYY-MM-DD` format (defaults to most recent) |
38
+ | `--period` | Time period: `daily`, `weekly`, or `monthly` (default: daily) |
39
+
40
+ ## Prerequisites
41
+
42
+ - No browser required — uses public Hugging Face API
@@ -0,0 +1,45 @@
1
+ # 即刻 (Jike)
2
+
3
+ **Mode**: 🔐 Browser · **Domain**: `web.okjike.com`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli jike feed` | 即刻首页动态流 |
10
+ | `opencli jike search` | 搜索即刻帖子 |
11
+ | `opencli jike post` | 帖子详情及评论 |
12
+ | `opencli jike topic` | 话题详情 |
13
+ | `opencli jike user` | 用户资料 |
14
+ | `opencli jike create` | 发布即刻动态 |
15
+ | `opencli jike comment` | 评论即刻帖子 |
16
+ | `opencli jike like` | 点赞即刻帖子 |
17
+ | `opencli jike repost` | 转发即刻帖子 |
18
+ | `opencli jike notifications` | 即刻通知 |
19
+
20
+ ## Usage Examples
21
+
22
+ ```bash
23
+ # View feed
24
+ opencli jike feed --limit 10
25
+
26
+ # Search posts
27
+ opencli jike search "AI" --limit 20
28
+
29
+ # View post details and comments
30
+ opencli jike post <post-id>
31
+
32
+ # Create a new post
33
+ opencli jike create --content "Hello Jike!"
34
+
35
+ # Like a post
36
+ opencli jike like <post-id>
37
+
38
+ # JSON output
39
+ opencli jike feed -f json
40
+ ```
41
+
42
+ ## Prerequisites
43
+
44
+ - Chrome running and **logged into** web.okjike.com
45
+ - [Browser Bridge extension](/guide/browser-bridge) installed
@@ -0,0 +1,39 @@
1
+ # 即梦AI (Jimeng)
2
+
3
+ **Mode**: 🔐 Browser · **Domain**: `jimeng.jianying.com`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli jimeng generate` | 即梦AI 文生图 — 输入 prompt 生成图片 |
10
+ | `opencli jimeng history` | 查看生成历史 |
11
+
12
+ ## Usage Examples
13
+
14
+ ```bash
15
+ # Generate an image
16
+ opencli jimeng generate --prompt "一只在星空下的猫"
17
+
18
+ # Use a specific model
19
+ opencli jimeng generate --prompt "cyberpunk city" --model high_aes_general_v50
20
+
21
+ # Set custom wait timeout
22
+ opencli jimeng generate --prompt "sunset landscape" --wait 60
23
+
24
+ # View generation history
25
+ opencli jimeng history --limit 10
26
+ ```
27
+
28
+ ### Options (generate)
29
+
30
+ | Option | Description |
31
+ |--------|-------------|
32
+ | `--prompt` | Image description prompt (required) |
33
+ | `--model` | Model: `high_aes_general_v50` (5.0 Lite), `high_aes_general_v42` (4.6), `high_aes_general_v40` (4.0) |
34
+ | `--wait` | Wait seconds for generation (default: 40) |
35
+
36
+ ## Prerequisites
37
+
38
+ - Chrome running and **logged into** jimeng.jianying.com
39
+ - [Browser Bridge extension](/guide/browser-bridge) installed
@@ -0,0 +1,45 @@
1
+ # LINUX DO
2
+
3
+ **Mode**: 🔐 Browser · **Domain**: `linux.do`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli linux-do hot` | 热门话题 |
10
+ | `opencli linux-do latest` | 最新话题 |
11
+ | `opencli linux-do categories` | 板块列表 |
12
+ | `opencli linux-do category` | 板块话题 |
13
+ | `opencli linux-do search` | 搜索话题 |
14
+ | `opencli linux-do topic` | 话题详情 |
15
+
16
+ ## Usage Examples
17
+
18
+ ```bash
19
+ # Hot topics this week
20
+ opencli linux-do hot --limit 20
21
+
22
+ # Hot topics by period
23
+ opencli linux-do hot --period daily
24
+ opencli linux-do hot --period monthly
25
+
26
+ # Latest topics
27
+ opencli linux-do latest --limit 10
28
+
29
+ # List all categories
30
+ opencli linux-do categories
31
+
32
+ # Search topics
33
+ opencli linux-do search "NixOS"
34
+
35
+ # View topic details
36
+ opencli linux-do topic 12345
37
+
38
+ # JSON output
39
+ opencli linux-do hot -f json
40
+ ```
41
+
42
+ ## Prerequisites
43
+
44
+ - Chrome running and **logged into** linux.do
45
+ - [Browser Bridge extension](/guide/browser-bridge) installed
@@ -0,0 +1,35 @@
1
+ # 新浪财经 (Sina Finance)
2
+
3
+ **Mode**: 🌐 Public · **Domain**: `finance.sina.com.cn`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli sinafinance news` | 新浪财经 7×24 小时实时快讯 |
10
+
11
+ ## Usage Examples
12
+
13
+ ```bash
14
+ # Latest financial news
15
+ opencli sinafinance news --limit 20
16
+
17
+ # Filter by type
18
+ opencli sinafinance news --type 1 # A股
19
+ opencli sinafinance news --type 2 # 宏观
20
+ opencli sinafinance news --type 6 # 国际
21
+
22
+ # JSON output
23
+ opencli sinafinance news -f json
24
+ ```
25
+
26
+ ### Options
27
+
28
+ | Option | Description |
29
+ |--------|-------------|
30
+ | `--limit` | Max results, up to 50 (default: 20) |
31
+ | `--type` | News type: `0`=全部, `1`=A股, `2`=宏观, `3`=公司, `4`=数据, `5`=市场, `6`=国际, `7`=观点, `8`=央行, `9`=其它 |
32
+
33
+ ## Prerequisites
34
+
35
+ - No browser required — uses public API
@@ -0,0 +1,35 @@
1
+ # Stack Overflow
2
+
3
+ **Mode**: 🌐 Public · **Domain**: `stackoverflow.com`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli stackoverflow hot` | Hot questions |
10
+ | `opencli stackoverflow search` | Search questions |
11
+ | `opencli stackoverflow bounties` | Questions with active bounties |
12
+ | `opencli stackoverflow unanswered` | Unanswered questions |
13
+
14
+ ## Usage Examples
15
+
16
+ ```bash
17
+ # Hot questions
18
+ opencli stackoverflow hot --limit 10
19
+
20
+ # Search questions
21
+ opencli stackoverflow search "async await" --limit 20
22
+
23
+ # Active bounties
24
+ opencli stackoverflow bounties --limit 10
25
+
26
+ # Unanswered questions
27
+ opencli stackoverflow unanswered --limit 10
28
+
29
+ # JSON output
30
+ opencli stackoverflow hot -f json
31
+ ```
32
+
33
+ ## Prerequisites
34
+
35
+ - No browser required — uses public Stack Exchange API
@@ -0,0 +1,26 @@
1
+ # Steam
2
+
3
+ **Mode**: 🌐 Public · **Domain**: `store.steampowered.com`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli steam top-sellers` | Top selling games on Steam |
10
+
11
+ ## Usage Examples
12
+
13
+ ```bash
14
+ # Quick start
15
+ opencli steam top-sellers
16
+
17
+ # Limit results
18
+ opencli steam top-sellers --limit 5
19
+
20
+ # JSON output
21
+ opencli steam top-sellers -f json
22
+ ```
23
+
24
+ ## Prerequisites
25
+
26
+ - No login required (public API)
@@ -24,6 +24,9 @@
24
24
  | `opencli twitter unfollow` | |
25
25
  | `opencli twitter bookmark` | |
26
26
  | `opencli twitter unbookmark` | |
27
+ | `opencli twitter block` | |
28
+ | `opencli twitter unblock` | |
29
+ | `opencli twitter hide-reply` | |
27
30
  | `opencli twitter download` | |
28
31
  | `opencli twitter accept` | |
29
32
  | `opencli twitter reply-dm` | |