@jackwener/opencli 1.6.1 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/README.md +27 -45
  3. package/README.zh-CN.md +32 -34
  4. package/autoresearch/browse-tasks.json +18 -20
  5. package/autoresearch/commands/debug.ts +163 -0
  6. package/autoresearch/commands/fix.ts +145 -0
  7. package/autoresearch/commands/plan.ts +88 -0
  8. package/autoresearch/commands/run.ts +138 -0
  9. package/autoresearch/config.ts +82 -0
  10. package/autoresearch/engine.ts +359 -0
  11. package/autoresearch/eval-all.ts +127 -0
  12. package/autoresearch/eval-browse.ts +1 -1
  13. package/autoresearch/eval-publish.ts +238 -0
  14. package/autoresearch/eval-save.ts +249 -0
  15. package/autoresearch/eval-skill.ts +14 -8
  16. package/autoresearch/eval-v2ex.ts +220 -0
  17. package/autoresearch/eval-zhihu.ts +230 -0
  18. package/autoresearch/logger.ts +69 -0
  19. package/autoresearch/presets/combined-reliability.ts +27 -0
  20. package/autoresearch/presets/index.ts +23 -0
  21. package/autoresearch/presets/operate-reliability.ts +24 -0
  22. package/autoresearch/presets/save-reliability.ts +26 -0
  23. package/autoresearch/presets/skill-quality.ts +20 -0
  24. package/autoresearch/presets/v2ex-reliability.ts +24 -0
  25. package/autoresearch/presets/zhihu-reliability.ts +25 -0
  26. package/autoresearch/publish-tasks.json +345 -0
  27. package/autoresearch/run-save.sh +11 -0
  28. package/autoresearch/save-adapters/xhs-explore-deep.ts +64 -0
  29. package/autoresearch/save-adapters/xhs-note-comments.ts +61 -0
  30. package/autoresearch/save-adapters/xhs-search-full.ts +62 -0
  31. package/autoresearch/save-adapters/zhihu-hot-detail.ts +52 -0
  32. package/autoresearch/save-adapters/zhihu-question-full.ts +57 -0
  33. package/autoresearch/save-adapters/zhihu-search-detail.ts +53 -0
  34. package/autoresearch/save-tasks.json +281 -0
  35. package/autoresearch/v2ex-tasks.json +899 -0
  36. package/autoresearch/zhihu-tasks.json +848 -0
  37. package/dist/browser/base-page.d.ts +4 -2
  38. package/dist/browser/base-page.js +37 -4
  39. package/dist/browser/bridge.js +10 -8
  40. package/dist/browser/cdp.js +2 -6
  41. package/dist/browser/daemon-client.d.ts +11 -1
  42. package/dist/browser/daemon-client.js +3 -0
  43. package/dist/browser/dom-helpers.d.ts +4 -2
  44. package/dist/browser/dom-helpers.js +42 -31
  45. package/dist/browser/dom-snapshot.js +23 -1
  46. package/dist/browser/page.d.ts +7 -2
  47. package/dist/browser/page.js +112 -30
  48. package/dist/browser.test.js +1 -1
  49. package/dist/build-manifest.d.ts +1 -0
  50. package/dist/build-manifest.js +1 -0
  51. package/dist/cli-manifest.json +1135 -184
  52. package/dist/cli.d.ts +2 -0
  53. package/dist/cli.js +48 -7
  54. package/dist/cli.test.d.ts +1 -0
  55. package/dist/cli.test.js +88 -0
  56. package/dist/clis/1688/item.d.ts +70 -0
  57. package/dist/clis/1688/item.js +187 -0
  58. package/dist/clis/1688/item.test.d.ts +1 -0
  59. package/dist/clis/1688/item.test.js +67 -0
  60. package/dist/clis/1688/search.d.ts +56 -0
  61. package/dist/clis/1688/search.js +309 -0
  62. package/dist/clis/1688/search.test.d.ts +1 -0
  63. package/dist/clis/1688/search.test.js +75 -0
  64. package/dist/clis/1688/shared.d.ts +112 -0
  65. package/dist/clis/1688/shared.js +514 -0
  66. package/dist/clis/1688/shared.test.d.ts +1 -0
  67. package/dist/clis/1688/shared.test.js +57 -0
  68. package/dist/clis/1688/store.d.ts +45 -0
  69. package/dist/clis/1688/store.js +226 -0
  70. package/dist/clis/1688/store.test.d.ts +1 -0
  71. package/dist/clis/1688/store.test.js +62 -0
  72. package/dist/clis/amazon/bestsellers.d.ts +0 -20
  73. package/dist/clis/amazon/bestsellers.js +6 -129
  74. package/dist/clis/amazon/bestsellers.test.js +12 -3
  75. package/dist/clis/amazon/movers-shakers.d.ts +1 -0
  76. package/dist/clis/amazon/movers-shakers.js +7 -0
  77. package/dist/clis/amazon/new-releases.d.ts +1 -0
  78. package/dist/clis/amazon/new-releases.js +7 -0
  79. package/dist/clis/amazon/rankings.d.ts +59 -0
  80. package/dist/clis/amazon/rankings.js +226 -0
  81. package/dist/clis/amazon/rankings.test.d.ts +1 -0
  82. package/dist/clis/amazon/rankings.test.js +41 -0
  83. package/dist/clis/amazon/shared.d.ts +11 -0
  84. package/dist/clis/amazon/shared.js +121 -11
  85. package/dist/clis/amazon/shared.test.js +11 -0
  86. package/dist/clis/bilibili/comments.js +2 -2
  87. package/dist/clis/bilibili/comments.test.js +3 -2
  88. package/dist/clis/bilibili/download.js +2 -1
  89. package/dist/clis/bilibili/subtitle.js +4 -3
  90. package/dist/clis/bilibili/subtitle.test.js +2 -1
  91. package/dist/clis/bilibili/utils.d.ts +5 -0
  92. package/dist/clis/bilibili/utils.js +30 -0
  93. package/dist/clis/bilibili/utils.test.d.ts +1 -0
  94. package/dist/clis/bilibili/utils.test.js +17 -0
  95. package/dist/clis/douban/marks.js +1 -1
  96. package/dist/clis/douban/subject.yaml +50 -19
  97. package/dist/clis/doubao/utils.js +32 -12
  98. package/dist/clis/douyin/_shared/browser-fetch.test.js +0 -1
  99. package/dist/clis/douyin/_shared/transcode.test.js +0 -2
  100. package/dist/clis/douyin/draft.test.js +0 -2
  101. package/dist/clis/facebook/search.test.js +0 -2
  102. package/dist/clis/gemini/ask.js +9 -3
  103. package/dist/clis/gemini/ask.test.d.ts +1 -0
  104. package/dist/clis/gemini/ask.test.js +100 -0
  105. package/dist/clis/gemini/reply-state.test.d.ts +1 -0
  106. package/dist/clis/gemini/reply-state.test.js +641 -0
  107. package/dist/clis/gemini/utils.d.ts +44 -1
  108. package/dist/clis/gemini/utils.js +528 -61
  109. package/dist/clis/gemini/utils.test.js +149 -2
  110. package/dist/clis/hupu/detail.d.ts +1 -0
  111. package/dist/clis/hupu/detail.js +72 -0
  112. package/dist/clis/hupu/hot.yaml +43 -0
  113. package/dist/clis/hupu/like.d.ts +1 -0
  114. package/dist/clis/hupu/like.js +75 -0
  115. package/dist/clis/hupu/reply.d.ts +1 -0
  116. package/dist/clis/hupu/reply.js +71 -0
  117. package/dist/clis/hupu/search.d.ts +1 -0
  118. package/dist/clis/hupu/search.js +59 -0
  119. package/dist/clis/hupu/unlike.d.ts +1 -0
  120. package/dist/clis/hupu/unlike.js +75 -0
  121. package/dist/clis/hupu/utils.d.ts +20 -0
  122. package/dist/clis/hupu/utils.js +319 -0
  123. package/dist/clis/instagram/_shared/private-publish.d.ts +138 -0
  124. package/dist/clis/instagram/_shared/private-publish.js +1030 -0
  125. package/dist/clis/instagram/_shared/private-publish.test.d.ts +1 -0
  126. package/dist/clis/instagram/_shared/private-publish.test.js +705 -0
  127. package/dist/clis/instagram/_shared/protocol-capture.d.ts +26 -0
  128. package/dist/clis/instagram/_shared/protocol-capture.js +282 -0
  129. package/dist/clis/instagram/_shared/protocol-capture.test.d.ts +1 -0
  130. package/dist/clis/instagram/_shared/protocol-capture.test.js +114 -0
  131. package/dist/clis/instagram/_shared/runtime-info.d.ts +9 -0
  132. package/dist/clis/instagram/_shared/runtime-info.js +81 -0
  133. package/dist/clis/instagram/note.d.ts +1 -0
  134. package/dist/clis/instagram/note.js +222 -0
  135. package/dist/clis/instagram/note.test.d.ts +1 -0
  136. package/dist/clis/instagram/note.test.js +81 -0
  137. package/dist/clis/instagram/post.d.ts +4 -0
  138. package/dist/clis/instagram/post.js +1496 -0
  139. package/dist/clis/instagram/post.test.d.ts +1 -0
  140. package/dist/clis/instagram/post.test.js +1647 -0
  141. package/dist/clis/instagram/reel.d.ts +1 -0
  142. package/dist/clis/instagram/reel.js +826 -0
  143. package/dist/clis/instagram/reel.test.d.ts +1 -0
  144. package/dist/clis/instagram/reel.test.js +167 -0
  145. package/dist/clis/instagram/story.d.ts +1 -0
  146. package/dist/clis/instagram/story.js +115 -0
  147. package/dist/clis/instagram/story.test.d.ts +1 -0
  148. package/dist/clis/instagram/story.test.js +167 -0
  149. package/dist/clis/sinafinance/stock-rank.d.ts +4 -0
  150. package/dist/clis/sinafinance/stock-rank.js +65 -0
  151. package/dist/clis/substack/utils.test.js +0 -2
  152. package/dist/clis/twitter/post.js +72 -45
  153. package/dist/clis/twitter/post.test.d.ts +1 -0
  154. package/dist/clis/twitter/post.test.js +116 -0
  155. package/dist/clis/twitter/reply.d.ts +12 -0
  156. package/dist/clis/twitter/reply.js +257 -35
  157. package/dist/clis/twitter/reply.test.d.ts +1 -0
  158. package/dist/clis/twitter/reply.test.js +151 -0
  159. package/dist/clis/xianyu/chat.d.ts +7 -0
  160. package/dist/clis/xianyu/chat.js +146 -0
  161. package/dist/clis/xianyu/chat.test.d.ts +1 -0
  162. package/dist/clis/xianyu/chat.test.js +15 -0
  163. package/dist/clis/xianyu/item.d.ts +7 -0
  164. package/dist/clis/xianyu/item.js +152 -0
  165. package/dist/clis/xianyu/item.test.d.ts +1 -0
  166. package/dist/clis/xianyu/item.test.js +56 -0
  167. package/dist/clis/xianyu/search.d.ts +10 -0
  168. package/dist/clis/xianyu/search.js +134 -0
  169. package/dist/clis/xianyu/search.test.d.ts +1 -0
  170. package/dist/clis/xianyu/search.test.js +17 -0
  171. package/dist/clis/xianyu/utils.d.ts +1 -0
  172. package/dist/clis/xianyu/utils.js +8 -0
  173. package/dist/clis/xiaoe/catalog.yaml +129 -0
  174. package/dist/clis/xiaoe/content.yaml +43 -0
  175. package/dist/clis/xiaoe/courses.yaml +73 -0
  176. package/dist/clis/xiaoe/detail.yaml +39 -0
  177. package/dist/clis/xiaoe/play-url.yaml +124 -0
  178. package/dist/clis/xiaohongshu/comments.test.js +0 -2
  179. package/dist/clis/xiaohongshu/creator-note-detail.test.js +0 -2
  180. package/dist/clis/xiaohongshu/creator-notes.test.js +0 -2
  181. package/dist/clis/xiaohongshu/download.test.js +0 -2
  182. package/dist/clis/xiaohongshu/note.test.js +0 -2
  183. package/dist/clis/xiaohongshu/publish.test.js +0 -2
  184. package/dist/clis/xiaohongshu/search.js +29 -20
  185. package/dist/clis/xiaohongshu/search.test.js +56 -48
  186. package/dist/clis/yuanbao/ask.d.ts +21 -0
  187. package/dist/clis/yuanbao/ask.js +427 -0
  188. package/dist/clis/yuanbao/ask.test.d.ts +1 -0
  189. package/dist/clis/yuanbao/ask.test.js +124 -0
  190. package/dist/clis/yuanbao/new.d.ts +1 -0
  191. package/dist/clis/yuanbao/new.js +70 -0
  192. package/dist/clis/yuanbao/new.test.d.ts +1 -0
  193. package/dist/clis/yuanbao/new.test.js +30 -0
  194. package/dist/clis/yuanbao/shared.d.ts +13 -0
  195. package/dist/clis/yuanbao/shared.js +49 -0
  196. package/dist/clis/zhihu/question.js +30 -19
  197. package/dist/clis/zhihu/question.test.js +34 -16
  198. package/dist/commanderAdapter.js +8 -4
  199. package/dist/commanderAdapter.test.js +42 -0
  200. package/dist/completion.js +3 -1
  201. package/dist/completion.test.d.ts +1 -0
  202. package/dist/completion.test.js +23 -0
  203. package/dist/doctor.js +1 -1
  204. package/dist/electron-apps.d.ts +2 -0
  205. package/dist/electron-apps.js +7 -1
  206. package/dist/errors.js +1 -1
  207. package/dist/execution.js +25 -35
  208. package/dist/explore.js +1 -1
  209. package/dist/launcher.d.ts +4 -0
  210. package/dist/launcher.js +64 -8
  211. package/dist/launcher.test.js +88 -7
  212. package/dist/output.d.ts +2 -0
  213. package/dist/output.js +10 -1
  214. package/dist/output.test.d.ts +0 -3
  215. package/dist/output.test.js +59 -92
  216. package/dist/pipeline/executor.test.js +0 -2
  217. package/dist/pipeline/steps/download.test.js +0 -2
  218. package/dist/registry.d.ts +2 -0
  219. package/dist/serialization.d.ts +1 -0
  220. package/dist/serialization.js +1 -0
  221. package/dist/types.d.ts +9 -2
  222. package/docs/.vitepress/config.mts +4 -0
  223. package/docs/adapters/browser/1688.md +52 -0
  224. package/docs/adapters/browser/36kr.md +2 -1
  225. package/docs/adapters/browser/doubao.md +5 -1
  226. package/docs/adapters/browser/hupu.md +53 -0
  227. package/docs/adapters/browser/sinafinance.md +32 -2
  228. package/docs/adapters/browser/weibo.md +6 -1
  229. package/docs/adapters/browser/wikipedia.md +2 -0
  230. package/docs/adapters/browser/xianyu.md +42 -0
  231. package/docs/adapters/browser/xiaoe.md +44 -0
  232. package/docs/adapters/browser/yuanbao.md +64 -0
  233. package/docs/adapters/index.md +14 -5
  234. package/docs/comparison.md +1 -1
  235. package/docs/developer/ai-workflow.md +2 -2
  236. package/docs/developer/contributing.md +1 -1
  237. package/docs/developer/testing.md +2 -0
  238. package/docs/guide/plugins.md +1 -0
  239. package/docs/guide/troubleshooting.md +11 -0
  240. package/docs/superpowers/specs/2026-04-03-v2ex-autoresearch-design.md +41 -0
  241. package/docs/zh/guide/plugins.md +1 -0
  242. package/extension/dist/background.js +1127 -0
  243. package/extension/src/background.test.ts +39 -0
  244. package/extension/src/background.ts +223 -34
  245. package/extension/src/cdp.ts +194 -4
  246. package/extension/src/protocol.ts +22 -1
  247. package/package.json +3 -2
  248. package/scripts/postinstall.js +1 -1
  249. package/skills/opencli-explorer/SKILL.md +1 -1
  250. package/skills/opencli-oneshot/SKILL.md +2 -2
  251. package/skills/opencli-operate/SKILL.md +120 -27
  252. package/skills/opencli-usage/SKILL.md +31 -20
  253. package/skills/opencli-usage/browser.md +114 -16
  254. package/skills/opencli-usage/public-api.md +32 -3
  255. package/skills/smart-search/SKILL.md +156 -0
  256. package/skills/smart-search/references/sources-ai.md +74 -0
  257. package/skills/smart-search/references/sources-info.md +43 -0
  258. package/skills/smart-search/references/sources-media.md +50 -0
  259. package/skills/smart-search/references/sources-other.md +42 -0
  260. package/skills/smart-search/references/sources-shopping.md +31 -0
  261. package/skills/smart-search/references/sources-social.md +51 -0
  262. package/skills/smart-search/references/sources-tech.md +42 -0
  263. package/skills/smart-search/references/sources-travel.md +20 -0
  264. package/src/browser/base-page.ts +41 -6
  265. package/src/browser/bridge.ts +11 -8
  266. package/src/browser/cdp.ts +1 -8
  267. package/src/browser/daemon-client.ts +11 -1
  268. package/src/browser/dom-helpers.ts +43 -31
  269. package/src/browser/dom-snapshot.ts +23 -1
  270. package/src/browser/page.ts +115 -31
  271. package/src/browser.test.ts +1 -1
  272. package/src/build-manifest.ts +2 -0
  273. package/src/cli.test.ts +133 -0
  274. package/src/cli.ts +73 -11
  275. package/src/clis/1688/item.test.ts +69 -0
  276. package/src/clis/1688/item.ts +282 -0
  277. package/src/clis/1688/search.test.ts +81 -0
  278. package/src/clis/1688/search.ts +402 -0
  279. package/src/clis/1688/shared.test.ts +75 -0
  280. package/src/clis/1688/shared.ts +623 -0
  281. package/src/clis/1688/store.test.ts +69 -0
  282. package/src/clis/1688/store.ts +300 -0
  283. package/src/clis/amazon/bestsellers.test.ts +12 -3
  284. package/src/clis/amazon/bestsellers.ts +6 -178
  285. package/src/clis/amazon/movers-shakers.ts +8 -0
  286. package/src/clis/amazon/new-releases.ts +8 -0
  287. package/src/clis/amazon/rankings.test.ts +47 -0
  288. package/src/clis/amazon/rankings.ts +312 -0
  289. package/src/clis/amazon/shared.test.ts +16 -0
  290. package/src/clis/amazon/shared.ts +134 -12
  291. package/src/clis/bilibili/comments.test.ts +4 -3
  292. package/src/clis/bilibili/comments.ts +2 -2
  293. package/src/clis/bilibili/download.ts +2 -1
  294. package/src/clis/bilibili/subtitle.test.ts +2 -1
  295. package/src/clis/bilibili/subtitle.ts +4 -3
  296. package/src/clis/bilibili/utils.test.ts +21 -0
  297. package/src/clis/bilibili/utils.ts +27 -0
  298. package/src/clis/douban/marks.ts +1 -1
  299. package/src/clis/douban/subject.yaml +50 -19
  300. package/src/clis/doubao/utils.ts +32 -12
  301. package/src/clis/douyin/_shared/browser-fetch.test.ts +0 -1
  302. package/src/clis/douyin/_shared/transcode.test.ts +0 -2
  303. package/src/clis/douyin/draft.test.ts +0 -2
  304. package/src/clis/facebook/search.test.ts +0 -2
  305. package/src/clis/gemini/ask.test.ts +116 -0
  306. package/src/clis/gemini/ask.ts +10 -3
  307. package/src/clis/gemini/reply-state.test.ts +708 -0
  308. package/src/clis/gemini/utils.test.ts +184 -2
  309. package/src/clis/gemini/utils.ts +588 -60
  310. package/src/clis/hupu/detail.ts +126 -0
  311. package/src/clis/hupu/hot.yaml +43 -0
  312. package/src/clis/hupu/like.ts +76 -0
  313. package/src/clis/hupu/reply.ts +76 -0
  314. package/src/clis/hupu/search.ts +95 -0
  315. package/src/clis/hupu/unlike.ts +76 -0
  316. package/src/clis/hupu/utils.ts +381 -0
  317. package/src/clis/instagram/_shared/private-publish.test.ts +827 -0
  318. package/src/clis/instagram/_shared/private-publish.ts +1303 -0
  319. package/src/clis/instagram/_shared/protocol-capture.test.ts +148 -0
  320. package/src/clis/instagram/_shared/protocol-capture.ts +321 -0
  321. package/src/clis/instagram/_shared/runtime-info.ts +91 -0
  322. package/src/clis/instagram/note.test.ts +96 -0
  323. package/src/clis/instagram/note.ts +254 -0
  324. package/src/clis/instagram/post.test.ts +1716 -0
  325. package/src/clis/instagram/post.ts +1620 -0
  326. package/src/clis/instagram/reel.test.ts +191 -0
  327. package/src/clis/instagram/reel.ts +886 -0
  328. package/src/clis/instagram/story.test.ts +191 -0
  329. package/src/clis/instagram/story.ts +151 -0
  330. package/src/clis/sinafinance/stock-rank.ts +68 -0
  331. package/src/clis/substack/utils.test.ts +0 -2
  332. package/src/clis/twitter/post.test.ts +157 -0
  333. package/src/clis/twitter/post.ts +82 -48
  334. package/src/clis/twitter/reply.test.ts +177 -0
  335. package/src/clis/twitter/reply.ts +285 -39
  336. package/src/clis/xianyu/chat.test.ts +20 -0
  337. package/src/clis/xianyu/chat.ts +175 -0
  338. package/src/clis/xianyu/item.test.ts +67 -0
  339. package/src/clis/xianyu/item.ts +172 -0
  340. package/src/clis/xianyu/search.test.ts +22 -0
  341. package/src/clis/xianyu/search.ts +151 -0
  342. package/src/clis/xianyu/utils.ts +9 -0
  343. package/src/clis/xiaoe/catalog.yaml +129 -0
  344. package/src/clis/xiaoe/content.yaml +43 -0
  345. package/src/clis/xiaoe/courses.yaml +73 -0
  346. package/src/clis/xiaoe/detail.yaml +39 -0
  347. package/src/clis/xiaoe/play-url.yaml +124 -0
  348. package/src/clis/xiaohongshu/comments.test.ts +0 -2
  349. package/src/clis/xiaohongshu/creator-note-detail.test.ts +0 -2
  350. package/src/clis/xiaohongshu/creator-notes.test.ts +0 -2
  351. package/src/clis/xiaohongshu/download.test.ts +0 -2
  352. package/src/clis/xiaohongshu/note.test.ts +0 -2
  353. package/src/clis/xiaohongshu/publish.test.ts +0 -2
  354. package/src/clis/xiaohongshu/search.test.ts +59 -48
  355. package/src/clis/xiaohongshu/search.ts +31 -21
  356. package/src/clis/yuanbao/ask.test.ts +156 -0
  357. package/src/clis/yuanbao/ask.ts +522 -0
  358. package/src/clis/yuanbao/new.test.ts +36 -0
  359. package/src/clis/yuanbao/new.ts +81 -0
  360. package/src/clis/yuanbao/shared.ts +57 -0
  361. package/src/clis/zhihu/question.test.ts +42 -17
  362. package/src/clis/zhihu/question.ts +31 -26
  363. package/src/commanderAdapter.test.ts +51 -0
  364. package/src/commanderAdapter.ts +8 -4
  365. package/src/completion.test.ts +30 -0
  366. package/src/completion.ts +3 -1
  367. package/src/doctor.ts +1 -1
  368. package/src/electron-apps.ts +9 -1
  369. package/src/errors.ts +1 -1
  370. package/src/execution.ts +26 -30
  371. package/src/explore.ts +1 -1
  372. package/src/launcher.test.ts +121 -7
  373. package/src/launcher.ts +87 -9
  374. package/src/output.test.ts +50 -90
  375. package/src/output.ts +10 -1
  376. package/src/pipeline/executor.test.ts +0 -2
  377. package/src/pipeline/steps/download.test.ts +0 -2
  378. package/src/registry.ts +2 -0
  379. package/src/serialization.ts +2 -0
  380. package/src/types.ts +9 -2
  381. package/tests/e2e/browser-auth.test.ts +9 -0
  382. package/CLI-EXPLORER.md +0 -724
  383. package/CLI-ONESHOT.md +0 -216
  384. package/SKILL.md +0 -59
@@ -54,6 +54,7 @@ export default defineConfig({
54
54
  { text: 'Bilibili', link: '/adapters/browser/bilibili' },
55
55
  { text: 'Zhihu', link: '/adapters/browser/zhihu' },
56
56
  { text: 'Xiaohongshu', link: '/adapters/browser/xiaohongshu' },
57
+ { text: 'Xiaoe', link: '/adapters/browser/xiaoe' },
57
58
  { text: 'Weibo', link: '/adapters/browser/weibo' },
58
59
  { text: 'YouTube', link: '/adapters/browser/youtube' },
59
60
  { text: 'Xueqiu', link: '/adapters/browser/xueqiu' },
@@ -73,7 +74,9 @@ export default defineConfig({
73
74
  { text: 'Chaoxing', link: '/adapters/browser/chaoxing' },
74
75
  { text: 'Grok', link: '/adapters/browser/grok' },
75
76
  { text: 'Amazon', link: '/adapters/browser/amazon' },
77
+ { text: '1688', link: '/adapters/browser/1688' },
76
78
  { text: 'Gemini', link: '/adapters/browser/gemini' },
79
+ { text: 'Yuanbao', link: '/adapters/browser/yuanbao' },
77
80
  { text: 'NotebookLM', link: '/adapters/browser/notebooklm' },
78
81
  { text: 'WeRead', link: '/adapters/browser/weread' },
79
82
  { text: 'Douban', link: '/adapters/browser/douban' },
@@ -91,6 +94,7 @@ export default defineConfig({
91
94
  { text: 'TikTok', link: '/adapters/browser/tiktok' },
92
95
  { text: 'Web (Generic)', link: '/adapters/browser/web' },
93
96
  { text: 'Weixin', link: '/adapters/browser/weixin' },
97
+ { text: 'Xianyu', link: '/adapters/browser/xianyu' },
94
98
  ],
95
99
  },
96
100
  {
@@ -0,0 +1,52 @@
1
+ # 1688
2
+
3
+ **Mode**: 🔐 Browser · **Domain**: `1688.com`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli 1688 search "<query>" --limit <n>` | Search public product candidates with price, MOQ, seller link, and visible badges |
10
+ | `opencli 1688 item <url-or-offer-id>` | Read a public product detail page with price tiers, MOQ, delivery text, and seller basics |
11
+ | `opencli 1688 store <url-or-member-id>` | Read a public supplier/store page with company info, years on platform, categories, and visible service signals |
12
+
13
+ ## Usage Examples
14
+
15
+ ```bash
16
+ # Search products
17
+ opencli 1688 search "桌面置物架 宿舍 收纳" --limit 10
18
+
19
+ # JSON output
20
+ opencli 1688 search "桌面置物架 宿舍 收纳" --limit 10 -f json
21
+
22
+ # Read an item by offer id
23
+ opencli 1688 item 841141931191 -f json
24
+
25
+ # Read an item by URL
26
+ opencli 1688 item https://detail.1688.com/offer/841141931191.html -f json
27
+
28
+ # Read a supplier store
29
+ opencli 1688 store https://shop52908bfw19166.1688.com/ -f json
30
+
31
+ # Read a supplier by member id
32
+ opencli 1688 store b2b-22154705262941f196 -f json
33
+ ```
34
+
35
+ ## Prerequisites
36
+
37
+ - Chrome running and **logged into** `1688.com`
38
+ - [Browser Bridge extension](/guide/browser-bridge) installed
39
+
40
+ ## Notes
41
+
42
+ - This adapter only returns fields visible on public pages. It does not send inquiries, place orders, or access seller back office data.
43
+ - Prefer stable identifiers such as `offer_id`, `member_id`, and `shop_id` for follow-up workflows.
44
+ - `search --limit` defaults to `20` and is capped at `100`.
45
+ - `search` deduplicates with key priority: `offer_id` first, then canonical `item_url`.
46
+ - `item` can be more sensitive to the active browser target than `search` or `store`.
47
+
48
+ ## Troubleshooting
49
+
50
+ - If `opencli 1688 item` reports `did not expose product context`, first make sure the open page is a real `detail.1688.com` item page.
51
+ - If the browser target is too broad, retry with `OPENCLI_CDP_TARGET=detail.1688.com`.
52
+ - If you hit a slider or verification page, refresh the real page in Chrome and retry.
@@ -44,4 +44,5 @@ opencli 36kr hot -f json
44
44
 
45
45
  ## Prerequisites
46
46
 
47
- - No browser required — uses public API
47
+ - `news`: No browser required — uses public RSS feed
48
+ - `hot`, `search`, `article`: Chrome running with [Browser Bridge extension](/guide/browser-bridge) installed
@@ -11,12 +11,16 @@ Browser adapter for [Doubao Chat](https://www.doubao.com/chat).
11
11
  | `opencli doubao send "..."` | Send a message to the current Doubao chat |
12
12
  | `opencli doubao read` | Read the visible Doubao conversation |
13
13
  | `opencli doubao ask "..."` | Send a prompt and wait for a reply |
14
+ | `opencli doubao detail <id>` | 对话详情 |
15
+ | `opencli doubao history` | 历史对话列表 |
16
+ | `opencli doubao meeting-summary <id>` | 会议总结 |
17
+ | `opencli doubao meeting-transcript <id>` | 会议记录 |
14
18
 
15
19
  ## Prerequisites
16
20
 
17
21
  - Chrome is running
18
22
  - You are already logged into [doubao.com](https://www.doubao.com/)
19
- - Playwright MCP Bridge / browser bridge is configured for OpenCLI
23
+ - Browser Bridge extension is installed and enabled for OpenCLI
20
24
 
21
25
  ## Examples
22
26
 
@@ -0,0 +1,53 @@
1
+ # Hupu (虎扑)
2
+
3
+ **Mode**: 🌐 Public / 🔐 Browser · **Domain**: `bbs.hupu.com`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli hupu hot` | Read Hupu hot threads |
10
+ | `opencli hupu search <keyword>` | Search Hupu threads by keyword |
11
+ | `opencli hupu detail <tid>` | Read one thread and optional hot replies |
12
+ | `opencli hupu reply <tid> <text>` | Reply to a thread or quote one reply |
13
+ | `opencli hupu like <tid> <pid>` | Like one reply |
14
+ | `opencli hupu unlike <tid> <pid>` | Cancel like on one reply |
15
+
16
+ ## Usage Examples
17
+
18
+ ```bash
19
+ # Hot threads
20
+ opencli hupu hot --limit 5
21
+
22
+ # Search threads
23
+ opencli hupu search 湖人 --limit 10
24
+
25
+ # Read one thread and include hot replies
26
+ opencli hupu detail 638234927 --replies true
27
+
28
+ # Reply to the thread
29
+ opencli hupu reply 638234927 "hello from opencli" --topic_id 502
30
+
31
+ # Quote one hot reply by pid
32
+ opencli hupu reply 638234927 "replying to this comment" --topic_id 502 --quote_id 174908
33
+
34
+ # Like / unlike one reply
35
+ opencli hupu like 638234927 174908 --fid 4860
36
+ opencli hupu unlike 638234927 174908 --fid 4860
37
+
38
+ # JSON output
39
+ opencli hupu detail 638234927 -f json
40
+ ```
41
+
42
+ ## Notes
43
+
44
+ - `reply --topic_id` maps to Hupu's API `topicId`, for example `502` for Basketball News
45
+ - `reply --quote_id` is the quoted reply `pid`
46
+ - `like` / `unlike --fid` uses the forum ID from thread metadata
47
+ - `detail --replies true` appends top hot replies to the content field
48
+
49
+ ## Prerequisites
50
+
51
+ - Chrome running and able to open `bbs.hupu.com`
52
+ - [Browser Bridge extension](/guide/browser-bridge) installed
53
+ - For `reply`, `like`, and `unlike`, a valid Hupu login session in Chrome is required
@@ -9,6 +9,7 @@
9
9
  | `opencli sinafinance news` | 新浪财经 7×24 小时实时快讯 | 🌐 Public |
10
10
  | `opencli sinafinance rolling-news` | 新浪财经滚动新闻 | 🔐 Browser |
11
11
  | `opencli sinafinance stock` | 新浪财经行情(A股/港股/美股) | 🌐 Public |
12
+ | `opencli sinafinance stock-rank` | 新浪财经热搜榜 | 🔐 Browser |
12
13
 
13
14
  ## Usage Examples
14
15
 
@@ -56,6 +57,28 @@ opencli sinafinance stock 招商证券
56
57
  opencli sinafinance stock 贵州茅台 -f json
57
58
  ```
58
59
 
60
+ ### stock-rank - 热搜榜
61
+
62
+ ```bash
63
+ # Default A股热搜榜
64
+ opencli sinafinance stock-rank
65
+
66
+ # 港股热搜榜
67
+ opencli sinafinance stock-rank --market hk
68
+
69
+ # 美股热搜榜
70
+ opencli sinafinance stock-rank --market us
71
+
72
+ # 外汇热搜榜
73
+ opencli sinafinance stock-rank --market ft
74
+
75
+ # 期货热搜榜
76
+ opencli sinafinance stock-rank --market wh
77
+
78
+ # JSON output
79
+ opencli sinafinance stock-rank -f json
80
+ ```
81
+
59
82
  ## Options
60
83
 
61
84
  ### news
@@ -71,11 +94,17 @@ opencli sinafinance stock 贵州茅台 -f json
71
94
  |--------|-------------|
72
95
  | `--market` | Market: `cn`, `hk`, `us`, `auto` (default: auto). When `auto`, searches in cn, hk, us order |
73
96
 
97
+ ### stock-rank
98
+
99
+ | Option | Description |
100
+ |--------|-------------|
101
+ | `--market` | Market: `cn` (A股, 默认), `ft` (期货), `us` (美股), `wh` (外汇), `hk` (港股) |
102
+
74
103
  ## Prerequisites
75
104
 
76
105
  - `news` & `stock`: No browser required — uses public API
77
- - `rolling-news`: Chrome running and **logged into** `finance.sina.com.cn`
78
- - For `rolling-news`: [Browser Bridge extension](/guide/browser-bridge) installed
106
+ - `rolling-news` & `stock-rank`: Chrome running and **logged into** `finance.sina.com.cn`
107
+ - For `rolling-news` & `stock-rank`: [Browser Bridge extension](/guide/browser-bridge) installed
79
108
 
80
109
  ## Notes
81
110
 
@@ -83,3 +112,4 @@ opencli sinafinance stock 贵州茅台 -f json
83
112
  - `stock` supports Chinese names, Chinese codes, and ticker symbols; auto-detects market
84
113
  - Market priority for auto-detection: cn (A股) → hk (港股) → us (美股)
85
114
  - US stock `High`/`Low` columns show 52-week range; A股/港股 show today's range
115
+ - `stock-rank` scrapes the hot search list from the Sina Finance homepage; requires browser login
@@ -6,8 +6,13 @@
6
6
 
7
7
  | Command | Description |
8
8
  |---------|-------------|
9
- | `opencli weibo hot` | |
9
+ | `opencli weibo hot` | 微博热搜 |
10
10
  | `opencli weibo search` | Search Weibo posts by keyword |
11
+ | `opencli weibo feed` | 首页时间线 |
12
+ | `opencli weibo user` | 用户信息 |
13
+ | `opencli weibo me` | 我的信息 |
14
+ | `opencli weibo post` | 发微博 |
15
+ | `opencli weibo comments` | 微博评论 |
11
16
 
12
17
  ## Usage Examples
13
18
 
@@ -8,6 +8,8 @@
8
8
  |---------|-------------|
9
9
  | `opencli wikipedia search` | Search Wikipedia articles |
10
10
  | `opencli wikipedia summary` | Get Wikipedia article summary |
11
+ | `opencli wikipedia random` | Random Wikipedia article |
12
+ | `opencli wikipedia trending` | Trending Wikipedia articles |
11
13
 
12
14
  ## Usage Examples
13
15
 
@@ -0,0 +1,42 @@
1
+ # Xianyu (闲鱼)
2
+
3
+ **Mode**: 🔐 Browser · **Domain**: `goofish.com`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli xianyu search <query>` | Search Xianyu items by keyword and return item cards with `item_id` |
10
+ | `opencli xianyu item <item_id>` | Fetch item details including title, price, condition, brand, seller, and image URLs |
11
+ | `opencli xianyu chat <item_id> <user_id>` | Open a Xianyu chat session for the item/user pair and optionally send a message with `--text` |
12
+
13
+ ## Usage Examples
14
+
15
+ ```bash
16
+ # Search items
17
+ opencli xianyu search "macbook" --limit 5
18
+
19
+ # Read a single item's details
20
+ opencli xianyu item 1040754408976
21
+
22
+ # Open a chat session
23
+ opencli xianyu chat 1038951278192 3650092411
24
+
25
+ # Send a message in chat
26
+ opencli xianyu chat 1038951278192 3650092411 --text "你好,这个还在吗?"
27
+
28
+ # JSON output
29
+ opencli xianyu search "笔记本电脑" -f json
30
+ opencli xianyu item 1040754408976 -f json
31
+ ```
32
+
33
+ ## Prerequisites
34
+
35
+ - Chrome running and **logged into** `goofish.com`
36
+ - [Browser Bridge extension](/guide/browser-bridge) installed
37
+
38
+ ## Notes
39
+
40
+ - `search` returns `item_id`, which can be passed directly into `opencli xianyu item`
41
+ - `chat` requires both the item ID and the target user's `user_id` / `peerUserId`
42
+ - Browser-authenticated commands depend on the active Chrome login session remaining valid
@@ -0,0 +1,44 @@
1
+ # Xiaoe (小鹅通)
2
+
3
+ **Mode**: 🔐 Browser · **Domain**: `study.xiaoe-tech.com` / `*.h5.xet.citv.cn`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli xiaoe courses` | List purchased courses with course URLs and shop names |
10
+ | `opencli xiaoe detail <url>` | Read course metadata such as title, price, student count, and shop |
11
+ | `opencli xiaoe catalog <url>` | Read the full course outline for normal courses, columns, and big columns |
12
+ | `opencli xiaoe play-url <url>` | Resolve the M3U8 playback URL for video lessons or live replays |
13
+ | `opencli xiaoe content <url>` | Extract rich-text lesson or page content as plain text |
14
+
15
+ ## Usage Examples
16
+
17
+ ```bash
18
+ # List purchased courses
19
+ opencli xiaoe courses --limit 10
20
+
21
+ # Read course metadata
22
+ opencli xiaoe detail "https://appxxxx.h5.xet.citv.cn/p/course/ecourse/v_xxxxx"
23
+
24
+ # Read the course outline
25
+ opencli xiaoe catalog "https://appxxxx.h5.xet.citv.cn/p/course/ecourse/v_xxxxx"
26
+
27
+ # Resolve a lesson M3U8 URL
28
+ opencli xiaoe play-url "https://appxxxx.h5.xet.citv.cn/v1/course/video/v_xxxxx?product_id=p_xxxxx" -f json
29
+
30
+ # Extract page content
31
+ opencli xiaoe content "https://appxxxx.h5.xet.citv.cn/v1/course/text/t_xxxxx"
32
+ ```
33
+
34
+ ## Prerequisites
35
+
36
+ - Chrome running and **logged into** the target Xiaoe shop
37
+ - [Browser Bridge extension](/guide/browser-bridge) installed
38
+
39
+ ## Notes
40
+
41
+ - `courses` starts from `study.xiaoe-tech.com` and matches purchased course cards back to Vue data to recover shop names and course URLs
42
+ - `catalog` supports normal courses, columns, and big columns by reading Vuex / Vue component state after the course page loads
43
+ - `play-url` uses a direct API path for video lessons and falls back to runtime resource inspection for live replays
44
+ - Cross-shop course URLs are preserved, so you can take a URL from `courses` and pass it directly into `detail`, `catalog`, `play-url`, or `content`
@@ -0,0 +1,64 @@
1
+ # Yuanbao
2
+
3
+ **Mode**: 🔐 Browser · **Domain**: `yuanbao.tencent.com`
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `opencli yuanbao new` | Start a new Yuanbao conversation |
10
+ | `opencli yuanbao ask <prompt>` | Send a prompt to Yuanbao web chat and wait for the reply |
11
+
12
+ ## Usage Examples
13
+
14
+ ```bash
15
+ # Start a fresh chat
16
+ opencli yuanbao new
17
+
18
+ # Basic ask (internet search on by default, deep thinking off by default)
19
+ opencli yuanbao ask "你好"
20
+
21
+ # Wait longer for a longer answer
22
+ opencli yuanbao ask "帮我总结这篇文章" --timeout 90
23
+
24
+ # Disable internet search explicitly
25
+ opencli yuanbao ask "你好" --search false
26
+
27
+ # Enable deep thinking explicitly
28
+ opencli yuanbao ask "你好" --think true
29
+ ```
30
+
31
+ ## Options
32
+
33
+ ### `new`
34
+
35
+ - No options
36
+
37
+ ### `ask`
38
+
39
+ | Option | Description |
40
+ |--------|-------------|
41
+ | `prompt` | Prompt to send (required positional argument) |
42
+ | `--timeout` | Max seconds to wait for a reply (default: `60`) |
43
+ | `--search` | Enable internet search before sending (default: `true`) |
44
+ | `--think` | Enable deep thinking before sending (default: `false`) |
45
+
46
+ ## Behavior
47
+
48
+ - The adapter targets the Yuanbao consumer web UI and sends the prompt through the visible Quill composer.
49
+ - `new` clicks the left-side Yuanbao new-chat trigger and falls back to reloading the Yuanbao homepage if needed.
50
+ - Before sending, it aligns the `联网搜索` and `深度思考` buttons to the requested `--search` / `--think` state.
51
+ - It waits for transcript changes to stabilize before returning the assistant reply.
52
+ - If Yuanbao opens a login gate instead of answering, the command returns a `[BLOCKED]` system message with a session hint.
53
+
54
+ ## Prerequisites
55
+
56
+ - Chrome is running
57
+ - You are already logged into `yuanbao.tencent.com`
58
+ - [Browser Bridge extension](/guide/browser-bridge) is installed
59
+
60
+ ## Caveats
61
+
62
+ - This adapter drives the Yuanbao web UI, not a public API.
63
+ - It depends on the current browser session and may fail if Yuanbao shows login, consent, challenge, or other gating UI.
64
+ - DOM or product changes on Yuanbao can break composer detection, submit behavior, or transcript extraction.
@@ -6,17 +6,19 @@ Run `opencli list` for the live registry.
6
6
 
7
7
  | Site | Commands | Mode |
8
8
  |------|----------|------|
9
- | **[twitter](./browser/twitter)** | `trending` `bookmarks` `profile` `search` `timeline` `thread` `following` `followers` `notifications` `post` `reply` `delete` `like` `article` `follow` `unfollow` `bookmark` `unbookmark` `download` `accept` `reply-dm` `block` `unblock` `hide-reply` | 🔐 Browser |
9
+ | **[twitter](./browser/twitter)** | `trending` `bookmarks` `profile` `search` `timeline` `thread` `following` `followers` `notifications` `post` `reply` `delete` `like` `likes` `article` `follow` `unfollow` `bookmark` `unbookmark` `download` `accept` `reply-dm` `block` `unblock` `hide-reply` | 🔐 Browser |
10
10
  | **[reddit](./browser/reddit)** | `hot` `frontpage` `popular` `search` `subreddit` `read` `user` `user-posts` `user-comments` `upvote` `save` `comment` `subscribe` `saved` `upvoted` | 🔐 Browser |
11
11
  | **[tieba](./browser/tieba)** | `hot` `posts` `search` `read` | 🔐 Browser |
12
+ | **[hupu](./browser/hupu)** | `hot` `search` `detail` `reply` `like` `unlike` | 🌐 / 🔐 |
12
13
  | **[bilibili](./browser/bilibili)** | `hot` `search` `me` `favorite` `history` `feed` `subtitle` `dynamic` `ranking` `following` `user-videos` `download` | 🔐 Browser |
13
14
  | **[zhihu](./browser/zhihu)** | `hot` `search` `question` `download` | 🔐 Browser |
14
- | **[xiaohongshu](./browser/xiaohongshu)** | `search` `notifications` `feed` `user` `download` `publish` `creator-notes` `creator-note-detail` `creator-notes-summary` `creator-profile` `creator-stats` | 🔐 Browser |
15
+ | **[xiaohongshu](./browser/xiaohongshu)** | `search` `notifications` `feed` `user` `note` `comments` `download` `publish` `creator-notes` `creator-note-detail` `creator-notes-summary` `creator-profile` `creator-stats` | 🔐 Browser |
16
+ | **[xiaoe](./browser/xiaoe)** | `courses` `detail` `catalog` `play-url` `content` | 🔐 Browser |
15
17
  | **[xueqiu](./browser/xueqiu)** | `feed` `hot-stock` `hot` `search` `stock` `comments` `watchlist` `earnings-date` `fund-holdings` `fund-snapshot` | 🔐 Browser |
16
18
  | **[youtube](./browser/youtube)** | `search` `video` `transcript` | 🔐 Browser |
17
19
  | **[v2ex](./browser/v2ex)** | `hot` `latest` `topic` `node` `user` `member` `replies` `nodes` `daily` `me` `notifications` | 🌐 / 🔐 |
18
20
  | **[bloomberg](./browser/bloomberg)** | `main` `markets` `economics` `industries` `tech` `politics` `businessweek` `opinions` `feeds` `news` | 🌐 / 🔐 |
19
- | **[weibo](./browser/weibo)** | `hot` `search` | 🔐 Browser |
21
+ | **[weibo](./browser/weibo)** | `hot` `search` `feed` `user` `me` `post` `comments` | 🔐 Browser |
20
22
  | **[linkedin](./browser/linkedin)** | `search` `timeline` | 🔐 Browser |
21
23
  | **[coupang](./browser/coupang)** | `search` `add-to-cart` | 🔐 Browser |
22
24
  | **[boss](./browser/boss)** | `search` `detail` `recommend` `joblist` `greet` `batchgreet` `send` `chatlist` `chatmsg` `invite` `mark` `exchange` `resume` `stats` | 🔐 Browser |
@@ -26,10 +28,11 @@ Run `opencli list` for the live registry.
26
28
  | **[jike](./browser/jike)** | `feed` `search` `post` `topic` `user` `create` `comment` `like` `repost` `notifications` | 🔐 Browser |
27
29
  | **[jimeng](./browser/jimeng)** | `generate` `history` | 🔐 Browser |
28
30
  | **[yollomi](./browser/yollomi)** | `generate` `video` `edit` `upload` `models` `remove-bg` `upscale` `face-swap` `restore` `try-on` `background` `object-remover` | 🔐 Browser |
29
- | **[linux-do](./browser/linux-do)** | `feed` `categories` `tags` `search` `topic` `user-topics` `user-posts` | 🔐 Browser |
31
+ | **[linux-do](./browser/linux-do)** | `hot` `latest` `feed` `search` `categories` `category` `tags` `topic` `user-posts` `user-topics` | 🔐 Browser |
30
32
  | **[chaoxing](./browser/chaoxing)** | `assignments` `exams` | 🔐 Browser |
31
33
  | **[grok](./browser/grok)** | `ask` | 🔐 Browser |
32
34
  | **[gemini](./browser/gemini)** | `new` `ask` `image` | 🔐 Browser |
35
+ | **[yuanbao](./browser/yuanbao)** | `new` `ask` | 🔐 Browser |
33
36
  | **[notebooklm](./browser/notebooklm)** | `status` `list` `open` `select` `current` `get` `metadata` `source-list` `source-get` `source-fulltext` `source-guide` `history` `note-list` `notes-list` `notes-get` `summary` | 🔐 Browser |
34
37
  | **[doubao](./browser/doubao)** | `status` `new` `send` `read` `ask` `history` `detail` `meeting-summary` `meeting-transcript` | 🔐 Browser |
35
38
  | **[weread](./browser/weread)** | `shelf` `search` `book` `ranking` `notebooks` `highlights` `notes` | 🔐 Browser |
@@ -45,11 +48,17 @@ Run `opencli list` for the live registry.
45
48
  | **[google](./browser/google)** | `news` `search` `suggest` `trends` | 🌐 / 🔐 |
46
49
  | **[jd](./browser/jd)** | `item` | 🔐 Browser |
47
50
  | **[amazon](./browser/amazon)** | `bestsellers` `search` `product` `offer` `discussion` | 🔐 Browser |
51
+ | **[1688](./browser/1688)** | `search` `item` `store` | 🔐 Browser |
48
52
  | **[web](./browser/web)** | `read` | 🔐 Browser |
49
53
  | **[weixin](./browser/weixin)** | `download` | 🔐 Browser |
50
54
  | **[36kr](./browser/36kr)** | `news` `hot` `search` `article` | 🌐 / 🔐 |
51
55
  | **[producthunt](./browser/producthunt)** | `posts` `today` `hot` `browse` | 🌐 / 🔐 |
52
56
  | **[ones](./browser/ones)** | `login` `me` `token-info` `tasks` `my-tasks` `task` `worklog` `logout` | 🔐 Browser Bridge + `ONES_BASE_URL` |
57
+ | **[band](./browser/band)** | `bands` `posts` `post` `mentions` | 🔐 Browser |
58
+ | **[zsxq](./browser/zsxq)** | `groups` `dynamics` `topics` `topic` `search` | 🔐 Browser |
59
+ | **[bluesky](./browser/bluesky)** | `search` `profile` `user` `feeds` `followers` `following` `thread` `trending` `starter-packs` | 🌐 Public |
60
+ | **[douyin](./browser/douyin)** | `profile` `videos` `user-videos` `activities` `collections` `hashtag` `location` `stats` `publish` `draft` `drafts` `delete` `update` | 🔐 Browser |
61
+ | **[xianyu](./browser/xianyu)** | `search` `item` `chat` | 🔐 Browser |
53
62
 
54
63
  ## Public API Adapters
55
64
 
@@ -80,7 +89,7 @@ Run `opencli list` for the live registry.
80
89
  | **[Cursor](./desktop/cursor)** | Control Cursor IDE | `status` `send` `read` `new` `dump` `composer` `model` `extract-code` `ask` `screenshot` `history` `export` |
81
90
  | **[Codex](./desktop/codex)** | Drive OpenAI Codex CLI agent | `status` `send` `read` `new` `extract-diff` `model` `ask` `screenshot` `history` `export` |
82
91
  | **[Antigravity](./desktop/antigravity)** | Control Antigravity Ultra | `status` `send` `read` `new` `dump` `extract-code` `model` `watch` |
83
- | **[ChatGPT](./desktop/chatgpt)** | Automate ChatGPT macOS app | `status` `new` `send` `read` `ask` |
92
+ | **[ChatGPT](./desktop/chatgpt)** | Automate ChatGPT macOS app | `status` `new` `send` `read` `ask` `model` |
84
93
  | **[ChatWise](./desktop/chatwise)** | Multi-LLM client | `status` `new` `send` `read` `ask` `model` `history` `export` `screenshot` |
85
94
  | **[Notion](./desktop/notion)** | Search, read, write pages | `status` `search` `read` `new` `write` `sidebar` `favorites` `export` |
86
95
  | **[Discord](./desktop/discord)** | Desktop messages & channels | `status` `send` `read` `channels` `servers` `search` `members` |
@@ -87,7 +87,7 @@ OpenCLI occupies a specific niche in the browser automation ecosystem. This guid
87
87
  - **Zero LLM cost** — No tokens consumed at runtime. Run 10,000 times for free.
88
88
  - **Deterministic output** — Same command always returns the same schema. Pipeable, scriptable, CI-friendly.
89
89
  - **Speed** — Adapter commands return in seconds, not minutes.
90
- - **Broad platform coverage** — 50+ sites spanning global platforms (Reddit, HackerNews, Twitter, YouTube) and Chinese platforms (Bilibili, Zhihu, Xiaohongshu, Douban, Weibo) with adapters that understand local anti-bot patterns.
90
+ - **Broad platform coverage** — 73+ sites spanning global platforms (Reddit, HackerNews, Twitter, YouTube) and Chinese platforms (Bilibili, Zhihu, Xiaohongshu, Douban, Weibo) with adapters that understand local anti-bot patterns.
91
91
  - **Desktop app control** — CDP adapters for Cursor, Codex, Notion, ChatGPT, Discord, and more.
92
92
  - **Easy to extend** — Drop a `.yaml` or `.ts` adapter into the `clis/` folder for auto-registration. Contributing a new site adapter is straightforward.
93
93
 
@@ -12,7 +12,7 @@ opencli generate https://example.com --goal "trending"
12
12
 
13
13
  This runs: explore → synthesize → register in one shot.
14
14
 
15
- For the complete one-shot workflow details, see [CLI-ONESHOT.md](https://github.com/jackwener/opencli/blob/main/CLI-ONESHOT.md).
15
+ For the complete one-shot workflow details, see [opencli-oneshot skill](https://github.com/jackwener/opencli/blob/main/skills/opencli-oneshot/SKILL.md).
16
16
 
17
17
  ## Full Mode (Explorer Workflow)
18
18
 
@@ -63,4 +63,4 @@ The explorer uses a decision tree to determine the best authentication approach:
63
63
  4. **BROWSER** — Full browser automation
64
64
  5. **CDP** — Chrome DevTools Protocol for Electron apps
65
65
 
66
- For the complete browser exploration workflow and debugging guide, see [CLI-EXPLORER.md](https://github.com/jackwener/opencli/blob/main/CLI-EXPLORER.md).
66
+ For the complete browser exploration workflow and debugging guide, see [opencli-explorer skill](https://github.com/jackwener/opencli/blob/main/skills/opencli-explorer/SKILL.md).
@@ -86,7 +86,7 @@ cli({
86
86
  domain: 'www.mysite.com',
87
87
  strategy: Strategy.COOKIE,
88
88
  args: [
89
- { name: 'query', required: true, help: 'Search query' },
89
+ { name: 'query', positional: true, required: true, help: 'Search query' },
90
90
  { name: 'limit', type: 'int', default: 10, help: 'Max results' },
91
91
  ],
92
92
  columns: ['title', 'url', 'date'],
@@ -131,6 +131,8 @@ npx vitest src/
131
131
  - `browser-public.test.ts` 使用 `tryBrowserCommand()`,站点反爬或地域限制导致空数据时会 warn + pass
132
132
  - `browser-auth.test.ts` 验证 **graceful failure**,重点是不 crash、不 hang、错误信息可控
133
133
  - 如需测试完整登录态,保持 Chrome 登录态并安装 Browser Bridge 扩展,再手动运行对应测试
134
+ - 对依赖具体 host 页面上下文的 browser adapter,除了单测外,还应手动验证真实命令,并把必要的 target host 约束写进 adapter docs / troubleshooting
135
+ - 对会主动导航页面的 browser commands,手动验证时优先串行执行;多个 CLI 进程同时连到同一个 CDP target 可能互相覆盖导航,制造假的 adapter 故障
134
136
 
135
137
  ---
136
138
 
@@ -243,6 +243,7 @@ On startup, if both `my-command.ts` and `my-command.js` exist, the `.js` version
243
243
  | [opencli-plugin-github-trending](https://github.com/ByteYue/opencli-plugin-github-trending) | YAML | GitHub Trending repositories |
244
244
  | [opencli-plugin-hot-digest](https://github.com/ByteYue/opencli-plugin-hot-digest) | TS | Multi-platform trending aggregator (zhihu, weibo, bilibili, v2ex, stackoverflow, reddit, linux-do) |
245
245
  | [opencli-plugin-juejin](https://github.com/Astro-Han/opencli-plugin-juejin) | YAML | 稀土掘金 (Juejin) hot articles, categories, and article feed |
246
+ | [opencli-plugin-rubysec](https://github.com/nullptrKey/opencli-plugin-rubysec) | TS | RubySec advisory archive and advisory article reader |
246
247
 
247
248
  ## Troubleshooting
248
249
 
@@ -12,6 +12,17 @@
12
12
  - Your login session in Chrome might have expired. Open a normal Chrome tab, navigate to the target site, and log in or refresh the page.
13
13
  - Some sites have geographic restrictions (e.g., Bilibili, Zhihu from outside China).
14
14
 
15
+ ### Browser command opens the page but still cannot read context
16
+
17
+ - A healthy Browser Bridge connection does not guarantee that the current page target exposes the data your adapter expects.
18
+ - Some browser adapters are sensitive to the active host or page context.
19
+ - Example: `opencli 1688 item` may fail with `did not expose product context` if the target is too broad.
20
+ - Retry on a real item page, refresh the page in Chrome, and if needed narrow the target, for example:
21
+
22
+ ```bash
23
+ OPENCLI_CDP_TARGET=detail.1688.com opencli 1688 item 841141931191 -f json
24
+ ```
25
+
15
26
  ### Node API errors
16
27
 
17
28
  - Make sure you are using **Node.js >= 20**. Some dependencies require modern Node APIs.
@@ -0,0 +1,41 @@
1
+ # V2EX AutoResearch Test Suite Design
2
+
3
+ ## Goal
4
+
5
+ Build a comprehensive test suite using V2EX (https://v2ex.com/) as the single target website to iteratively improve OpenCLI Operate's reliability and Claude Code skill effectiveness. Run 10 rounds of AutoResearch iteration (5 code-level + 5 SKILL.md-level).
6
+
7
+ ## Test Suite Structure — 5 Layers, 40 Tasks
8
+
9
+ ### Layer 1: Atomic (10 tasks)
10
+ Single operate commands testing command-level reliability.
11
+
12
+ ### Layer 2: Single Page (10 tasks)
13
+ Meaningful extraction/interaction within one page.
14
+
15
+ ### Layer 3: Multi-Step (10 tasks)
16
+ Cross-page navigation + extraction combos.
17
+
18
+ ### Layer 4: Write Operations (5 tasks)
19
+ Login-required write operations (reply, favorite, thank).
20
+
21
+ ### Layer 5: Complex Chain (5 tasks)
22
+ Long chains: cross-post reference, multi-node comparison, full workflows.
23
+
24
+ ## Test Infrastructure
25
+
26
+ - **v2ex-tasks.json** — Layer 1 deterministic tasks (browse commands + judge criteria)
27
+ - **eval-v2ex.ts** — Runner for V2EX tasks (reuses eval-browse.ts pattern)
28
+ - **v2ex-skill-tasks** — Layer 2 LLM E2E tasks embedded in eval runner
29
+ - **presets/v2ex-reliability.ts** — AutoResearch preset for code optimization
30
+ - **presets/v2ex-skill.ts** — AutoResearch preset for SKILL.md optimization
31
+
32
+ ## AutoResearch Iteration Plan
33
+
34
+ - Rounds 1-5: Layer 1 preset → optimize src/browser/*.ts code
35
+ - Rounds 6-10: Layer 2 preset → optimize skills/opencli-operate/SKILL.md
36
+ - Alternating: fix code issues first, then improve LLM guidance
37
+
38
+ ## Success Criteria
39
+
40
+ - Layer 1 baseline → target 100% pass rate after 5 code iterations
41
+ - Layer 2 baseline → target 100% pass rate after 5 SKILL.md iterations
@@ -167,6 +167,7 @@ cli({
167
167
  - `opencli-plugin-github-trending`:GitHub Trending 仓库
168
168
  - `opencli-plugin-hot-digest`:多平台热点聚合(zhihu、weibo、bilibili、v2ex、stackoverflow、reddit、linux-do)
169
169
  - `opencli-plugin-juejin`:稀土掘金热榜、分类和文章流
170
+ - `opencli-plugin-rubysec`:RubySec 漏洞归档与单篇漏洞文章读取
170
171
 
171
172
  ## 排查问题
172
173