@jackwener/opencli 1.5.4 → 1.5.6

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 (256) hide show
  1. package/README.md +27 -2
  2. package/README.zh-CN.md +36 -4
  3. package/dist/browser/daemon-client.d.ts +5 -1
  4. package/dist/browser/page.d.ts +6 -0
  5. package/dist/browser/page.js +15 -0
  6. package/dist/cli-manifest.json +1284 -67
  7. package/dist/cli.js +14 -14
  8. package/dist/clis/antigravity/serve.js +2 -2
  9. package/dist/clis/band/bands.d.ts +1 -0
  10. package/dist/clis/band/bands.js +72 -0
  11. package/dist/clis/band/mentions.d.ts +1 -0
  12. package/dist/clis/band/mentions.js +127 -0
  13. package/dist/clis/band/post.d.ts +1 -0
  14. package/dist/clis/band/post.js +175 -0
  15. package/dist/clis/band/posts.d.ts +1 -0
  16. package/dist/clis/band/posts.js +94 -0
  17. package/dist/clis/doubao/detail.d.ts +1 -0
  18. package/dist/clis/doubao/detail.js +33 -0
  19. package/dist/clis/doubao/detail.test.d.ts +1 -0
  20. package/dist/clis/doubao/detail.test.js +42 -0
  21. package/dist/clis/doubao/history.d.ts +1 -0
  22. package/dist/clis/doubao/history.js +28 -0
  23. package/dist/clis/doubao/history.test.d.ts +1 -0
  24. package/dist/clis/doubao/history.test.js +37 -0
  25. package/dist/clis/doubao/meeting-summary.d.ts +1 -0
  26. package/dist/clis/doubao/meeting-summary.js +39 -0
  27. package/dist/clis/doubao/meeting-transcript.d.ts +1 -0
  28. package/dist/clis/doubao/meeting-transcript.js +36 -0
  29. package/dist/clis/doubao/utils.d.ts +27 -0
  30. package/dist/clis/doubao/utils.js +317 -0
  31. package/dist/clis/doubao/utils.test.d.ts +1 -0
  32. package/dist/clis/doubao/utils.test.js +24 -0
  33. package/dist/clis/douyin/_shared/public-api.d.ts +33 -0
  34. package/dist/clis/douyin/_shared/public-api.js +29 -0
  35. package/dist/clis/douyin/user-videos.d.ts +5 -0
  36. package/dist/clis/douyin/user-videos.js +74 -0
  37. package/dist/clis/douyin/user-videos.test.d.ts +1 -0
  38. package/dist/clis/douyin/user-videos.test.js +108 -0
  39. package/dist/clis/ones/common.d.ts +32 -0
  40. package/dist/clis/ones/common.js +144 -0
  41. package/dist/clis/ones/enrich-tasks.d.ts +5 -0
  42. package/dist/clis/ones/enrich-tasks.js +37 -0
  43. package/dist/clis/ones/login.d.ts +1 -0
  44. package/dist/clis/ones/login.js +80 -0
  45. package/dist/clis/ones/logout.d.ts +1 -0
  46. package/dist/clis/ones/logout.js +17 -0
  47. package/dist/clis/ones/me.d.ts +1 -0
  48. package/dist/clis/ones/me.js +30 -0
  49. package/dist/clis/ones/my-tasks.d.ts +1 -0
  50. package/dist/clis/ones/my-tasks.js +120 -0
  51. package/dist/clis/ones/resolve-labels.d.ts +10 -0
  52. package/dist/clis/ones/resolve-labels.js +64 -0
  53. package/dist/clis/ones/task-helpers.d.ts +29 -0
  54. package/dist/clis/ones/task-helpers.js +212 -0
  55. package/dist/clis/ones/task-helpers.test.d.ts +1 -0
  56. package/dist/clis/ones/task-helpers.test.js +12 -0
  57. package/dist/clis/ones/task.d.ts +1 -0
  58. package/dist/clis/ones/task.js +66 -0
  59. package/dist/clis/ones/tasks.d.ts +1 -0
  60. package/dist/clis/ones/tasks.js +79 -0
  61. package/dist/clis/ones/token-info.d.ts +1 -0
  62. package/dist/clis/ones/token-info.js +42 -0
  63. package/dist/clis/ones/worklog.d.ts +11 -0
  64. package/dist/clis/ones/worklog.js +267 -0
  65. package/dist/clis/ones/worklog.test.d.ts +1 -0
  66. package/dist/clis/ones/worklog.test.js +20 -0
  67. package/dist/clis/sinafinance/rolling-news.d.ts +4 -0
  68. package/dist/clis/sinafinance/rolling-news.js +40 -0
  69. package/dist/clis/sinafinance/stock.d.ts +8 -0
  70. package/dist/clis/sinafinance/stock.js +117 -0
  71. package/dist/clis/spotify/spotify.d.ts +1 -0
  72. package/dist/clis/spotify/spotify.js +316 -0
  73. package/dist/clis/spotify/utils.d.ts +21 -0
  74. package/dist/clis/spotify/utils.js +66 -0
  75. package/dist/clis/spotify/utils.test.d.ts +1 -0
  76. package/dist/clis/spotify/utils.test.js +67 -0
  77. package/dist/clis/tieba/commands.test.d.ts +4 -0
  78. package/dist/clis/tieba/commands.test.js +79 -0
  79. package/dist/clis/tieba/hot.d.ts +1 -0
  80. package/dist/clis/tieba/hot.js +48 -0
  81. package/dist/clis/tieba/posts.d.ts +1 -0
  82. package/dist/clis/tieba/posts.js +85 -0
  83. package/dist/clis/tieba/read.d.ts +1 -0
  84. package/dist/clis/tieba/read.js +140 -0
  85. package/dist/clis/tieba/search.d.ts +1 -0
  86. package/dist/clis/tieba/search.js +108 -0
  87. package/dist/clis/tieba/utils.d.ts +101 -0
  88. package/dist/clis/tieba/utils.js +240 -0
  89. package/dist/clis/tieba/utils.test.d.ts +1 -0
  90. package/dist/clis/tieba/utils.test.js +290 -0
  91. package/dist/clis/weread/book.js +100 -13
  92. package/dist/clis/weread/commands.test.js +221 -0
  93. package/dist/clis/weread/private-api-regression.test.d.ts +1 -0
  94. package/dist/{weread-private-api-regression.test.js → clis/weread/private-api-regression.test.js} +92 -30
  95. package/dist/clis/weread/search-regression.test.d.ts +1 -0
  96. package/dist/clis/weread/search-regression.test.js +407 -0
  97. package/dist/clis/weread/search.js +143 -7
  98. package/dist/clis/weread/shelf.js +13 -95
  99. package/dist/clis/weread/utils.d.ts +46 -0
  100. package/dist/clis/weread/utils.js +214 -7
  101. package/dist/clis/weread/utils.test.js +71 -1
  102. package/dist/clis/xiaohongshu/publish.d.ts +1 -1
  103. package/dist/clis/xiaohongshu/publish.js +78 -31
  104. package/dist/clis/xiaohongshu/publish.test.js +66 -1
  105. package/dist/clis/xiaohongshu/user-helpers.d.ts +1 -0
  106. package/dist/clis/xiaohongshu/user-helpers.js +2 -0
  107. package/dist/clis/xiaohongshu/user-helpers.test.js +18 -0
  108. package/dist/clis/xueqiu/comments.d.ts +118 -0
  109. package/dist/clis/xueqiu/comments.js +354 -0
  110. package/dist/clis/xueqiu/comments.test.d.ts +1 -0
  111. package/dist/clis/xueqiu/comments.test.js +696 -0
  112. package/dist/clis/youtube/transcript.js +2 -4
  113. package/dist/clis/youtube/utils.d.ts +9 -0
  114. package/dist/clis/youtube/utils.js +67 -3
  115. package/dist/clis/youtube/utils.test.d.ts +1 -0
  116. package/dist/clis/youtube/utils.test.js +37 -0
  117. package/dist/clis/youtube/video.js +16 -15
  118. package/dist/clis/zsxq/dynamics.d.ts +1 -0
  119. package/dist/clis/zsxq/dynamics.js +47 -0
  120. package/dist/clis/zsxq/groups.d.ts +1 -0
  121. package/dist/clis/zsxq/groups.js +32 -0
  122. package/dist/clis/zsxq/search.d.ts +1 -0
  123. package/dist/clis/zsxq/search.js +43 -0
  124. package/dist/clis/zsxq/search.test.d.ts +1 -0
  125. package/dist/clis/zsxq/search.test.js +24 -0
  126. package/dist/clis/zsxq/topic.d.ts +1 -0
  127. package/dist/clis/zsxq/topic.js +47 -0
  128. package/dist/clis/zsxq/topic.test.d.ts +1 -0
  129. package/dist/clis/zsxq/topic.test.js +29 -0
  130. package/dist/clis/zsxq/topics.d.ts +1 -0
  131. package/dist/clis/zsxq/topics.js +25 -0
  132. package/dist/clis/zsxq/topics.test.d.ts +1 -0
  133. package/dist/clis/zsxq/topics.test.js +24 -0
  134. package/dist/clis/zsxq/utils.d.ts +97 -0
  135. package/dist/clis/zsxq/utils.js +230 -0
  136. package/dist/commanderAdapter.js +27 -4
  137. package/dist/commanderAdapter.test.js +39 -0
  138. package/dist/daemon.js +5 -4
  139. package/dist/errors.d.ts +29 -1
  140. package/dist/errors.js +49 -11
  141. package/dist/external-clis.yaml +17 -0
  142. package/dist/external.js +3 -3
  143. package/dist/main.js +2 -1
  144. package/dist/tui.js +2 -1
  145. package/dist/types.d.ts +5 -0
  146. package/docs/.vitepress/config.mts +3 -0
  147. package/docs/adapters/browser/band.md +63 -0
  148. package/docs/adapters/browser/ones.md +59 -0
  149. package/docs/adapters/browser/sinafinance.md +56 -6
  150. package/docs/adapters/browser/spotify.md +62 -0
  151. package/docs/adapters/browser/tieba.md +45 -0
  152. package/docs/adapters/browser/xueqiu.md +5 -0
  153. package/docs/adapters/browser/zsxq.md +49 -0
  154. package/docs/adapters/index.md +5 -2
  155. package/docs/adapters-doc/ones.md +32 -0
  156. package/extension/dist/background.js +1 -2
  157. package/extension/manifest.json +1 -1
  158. package/extension/package.json +1 -1
  159. package/extension/src/background.ts +17 -1
  160. package/extension/src/cdp.ts +42 -0
  161. package/extension/src/protocol.ts +5 -1
  162. package/package.json +1 -1
  163. package/scripts/postinstall.js +16 -0
  164. package/src/browser/daemon-client.ts +5 -1
  165. package/src/browser/page.ts +16 -0
  166. package/src/cli.ts +14 -14
  167. package/src/clis/antigravity/serve.ts +2 -2
  168. package/src/clis/band/bands.ts +76 -0
  169. package/src/clis/band/mentions.ts +134 -0
  170. package/src/clis/band/post.ts +187 -0
  171. package/src/clis/band/posts.ts +106 -0
  172. package/src/clis/doubao/detail.test.ts +53 -0
  173. package/src/clis/doubao/detail.ts +41 -0
  174. package/src/clis/doubao/history.test.ts +45 -0
  175. package/src/clis/doubao/history.ts +32 -0
  176. package/src/clis/doubao/meeting-summary.ts +53 -0
  177. package/src/clis/doubao/meeting-transcript.ts +48 -0
  178. package/src/clis/doubao/utils.test.ts +45 -0
  179. package/src/clis/doubao/utils.ts +371 -0
  180. package/src/clis/douyin/_shared/public-api.ts +84 -0
  181. package/src/clis/douyin/user-videos.test.ts +122 -0
  182. package/src/clis/douyin/user-videos.ts +101 -0
  183. package/src/clis/ones/common.ts +187 -0
  184. package/src/clis/ones/enrich-tasks.ts +47 -0
  185. package/src/clis/ones/login.ts +103 -0
  186. package/src/clis/ones/logout.ts +19 -0
  187. package/src/clis/ones/me.ts +34 -0
  188. package/src/clis/ones/my-tasks.ts +148 -0
  189. package/src/clis/ones/resolve-labels.ts +80 -0
  190. package/src/clis/ones/task-helpers.test.ts +14 -0
  191. package/src/clis/ones/task-helpers.ts +214 -0
  192. package/src/clis/ones/task.ts +79 -0
  193. package/src/clis/ones/tasks.ts +92 -0
  194. package/src/clis/ones/token-info.ts +46 -0
  195. package/src/clis/ones/worklog.test.ts +24 -0
  196. package/src/clis/ones/worklog.ts +306 -0
  197. package/src/clis/sinafinance/rolling-news.ts +42 -0
  198. package/src/clis/sinafinance/stock.ts +127 -0
  199. package/src/clis/spotify/spotify.ts +328 -0
  200. package/src/clis/spotify/utils.test.ts +87 -0
  201. package/src/clis/spotify/utils.ts +92 -0
  202. package/src/clis/tieba/commands.test.ts +86 -0
  203. package/src/clis/tieba/hot.ts +52 -0
  204. package/src/clis/tieba/posts.ts +108 -0
  205. package/src/clis/tieba/read.ts +158 -0
  206. package/src/clis/tieba/search.ts +119 -0
  207. package/src/clis/tieba/utils.test.ts +322 -0
  208. package/src/clis/tieba/utils.ts +348 -0
  209. package/src/clis/weread/book.ts +116 -13
  210. package/src/clis/weread/commands.test.ts +249 -0
  211. package/src/{weread-private-api-regression.test.ts → clis/weread/private-api-regression.test.ts} +108 -30
  212. package/src/clis/weread/search-regression.test.ts +440 -0
  213. package/src/clis/weread/search.ts +189 -9
  214. package/src/clis/weread/shelf.ts +20 -122
  215. package/src/clis/weread/utils.test.ts +81 -1
  216. package/src/clis/weread/utils.ts +264 -7
  217. package/src/clis/xiaohongshu/publish.test.ts +79 -1
  218. package/src/clis/xiaohongshu/publish.ts +84 -30
  219. package/src/clis/xiaohongshu/user-helpers.test.ts +23 -0
  220. package/src/clis/xiaohongshu/user-helpers.ts +4 -0
  221. package/src/clis/xueqiu/comments.test.ts +823 -0
  222. package/src/clis/xueqiu/comments.ts +461 -0
  223. package/src/clis/youtube/transcript.ts +2 -4
  224. package/src/clis/youtube/utils.test.ts +43 -0
  225. package/src/clis/youtube/utils.ts +69 -0
  226. package/src/clis/youtube/video.ts +16 -15
  227. package/src/clis/zsxq/dynamics.ts +60 -0
  228. package/src/clis/zsxq/groups.ts +41 -0
  229. package/src/clis/zsxq/search.test.ts +29 -0
  230. package/src/clis/zsxq/search.ts +54 -0
  231. package/src/clis/zsxq/topic.test.ts +34 -0
  232. package/src/clis/zsxq/topic.ts +68 -0
  233. package/src/clis/zsxq/topics.test.ts +29 -0
  234. package/src/clis/zsxq/topics.ts +36 -0
  235. package/src/clis/zsxq/utils.ts +351 -0
  236. package/src/commanderAdapter.test.ts +47 -0
  237. package/src/commanderAdapter.ts +26 -3
  238. package/src/daemon.ts +5 -4
  239. package/src/errors.ts +71 -10
  240. package/src/external-clis.yaml +17 -0
  241. package/src/external.ts +3 -3
  242. package/src/main.ts +2 -1
  243. package/src/tui.ts +2 -1
  244. package/src/types.ts +5 -0
  245. package/tests/e2e/band-auth.test.ts +20 -0
  246. package/tests/e2e/browser-auth-helpers.ts +18 -0
  247. package/tests/e2e/browser-auth.test.ts +35 -47
  248. package/tests/e2e/browser-public.test.ts +288 -0
  249. package/tests/e2e/management.test.ts +1 -1
  250. package/tests/e2e/plugin-management.test.ts +1 -1
  251. package/vitest.config.ts +1 -0
  252. package/SKILL.md +0 -879
  253. package/dist/weread-private-api-regression.test.d.ts +0 -1
  254. package/dist/weread-search-regression.test.d.ts +0 -1
  255. package/dist/weread-search-regression.test.js +0 -39
  256. package/src/weread-search-regression.test.ts +0 -44
@@ -402,6 +402,150 @@
402
402
  "type": "ts",
403
403
  "modulePath": "arxiv/search.js"
404
404
  },
405
+ {
406
+ "site": "band",
407
+ "name": "bands",
408
+ "description": "List all Bands you belong to",
409
+ "domain": "www.band.us",
410
+ "strategy": "cookie",
411
+ "browser": true,
412
+ "args": [],
413
+ "columns": [
414
+ "band_no",
415
+ "name",
416
+ "members"
417
+ ],
418
+ "type": "ts",
419
+ "modulePath": "band/bands.js"
420
+ },
421
+ {
422
+ "site": "band",
423
+ "name": "mentions",
424
+ "description": "Show Band notifications where you are @mentioned",
425
+ "domain": "www.band.us",
426
+ "strategy": "intercept",
427
+ "browser": true,
428
+ "args": [
429
+ {
430
+ "name": "filter",
431
+ "type": "str",
432
+ "default": "mentioned",
433
+ "required": false,
434
+ "help": "Filter: mentioned (default) | all | post | comment",
435
+ "choices": [
436
+ "mentioned",
437
+ "all",
438
+ "post",
439
+ "comment"
440
+ ]
441
+ },
442
+ {
443
+ "name": "limit",
444
+ "type": "int",
445
+ "default": 20,
446
+ "required": false,
447
+ "help": "Max results"
448
+ },
449
+ {
450
+ "name": "unread",
451
+ "type": "bool",
452
+ "default": false,
453
+ "required": false,
454
+ "help": "Show only unread notifications"
455
+ }
456
+ ],
457
+ "columns": [
458
+ "time",
459
+ "band",
460
+ "type",
461
+ "from",
462
+ "text",
463
+ "url"
464
+ ],
465
+ "type": "ts",
466
+ "modulePath": "band/mentions.js"
467
+ },
468
+ {
469
+ "site": "band",
470
+ "name": "post",
471
+ "description": "Export full content of a post including comments",
472
+ "domain": "www.band.us",
473
+ "strategy": "cookie",
474
+ "browser": true,
475
+ "args": [
476
+ {
477
+ "name": "band_no",
478
+ "type": "int",
479
+ "required": true,
480
+ "positional": true,
481
+ "help": "Band number"
482
+ },
483
+ {
484
+ "name": "post_no",
485
+ "type": "int",
486
+ "required": true,
487
+ "positional": true,
488
+ "help": "Post number"
489
+ },
490
+ {
491
+ "name": "output",
492
+ "type": "str",
493
+ "default": "",
494
+ "required": false,
495
+ "help": "Directory to save attached photos"
496
+ },
497
+ {
498
+ "name": "comments",
499
+ "type": "bool",
500
+ "default": true,
501
+ "required": false,
502
+ "help": "Include comments (default: true)"
503
+ }
504
+ ],
505
+ "columns": [
506
+ "type",
507
+ "author",
508
+ "date",
509
+ "text"
510
+ ],
511
+ "type": "ts",
512
+ "modulePath": "band/post.js",
513
+ "navigateBefore": false
514
+ },
515
+ {
516
+ "site": "band",
517
+ "name": "posts",
518
+ "description": "List posts from a Band",
519
+ "domain": "www.band.us",
520
+ "strategy": "cookie",
521
+ "browser": true,
522
+ "args": [
523
+ {
524
+ "name": "band_no",
525
+ "type": "int",
526
+ "required": true,
527
+ "positional": true,
528
+ "help": "Band number (get it from: band bands)"
529
+ },
530
+ {
531
+ "name": "limit",
532
+ "type": "int",
533
+ "default": 20,
534
+ "required": false,
535
+ "help": "Max results"
536
+ }
537
+ ],
538
+ "columns": [
539
+ "date",
540
+ "author",
541
+ "content",
542
+ "comments",
543
+ "url"
544
+ ],
545
+ "type": "ts",
546
+ "modulePath": "band/posts.js",
547
+ "navigateBefore": false
548
+ },
405
549
  {
406
550
  "site": "barchart",
407
551
  "name": "flow",
@@ -3875,6 +4019,118 @@
3875
4019
  "modulePath": "doubao/ask.js",
3876
4020
  "navigateBefore": false
3877
4021
  },
4022
+ {
4023
+ "site": "doubao",
4024
+ "name": "detail",
4025
+ "description": "Read a specific Doubao conversation by ID",
4026
+ "domain": "www.doubao.com",
4027
+ "strategy": "cookie",
4028
+ "browser": true,
4029
+ "args": [
4030
+ {
4031
+ "name": "id",
4032
+ "type": "str",
4033
+ "required": true,
4034
+ "positional": true,
4035
+ "help": "Conversation ID (numeric or full URL)"
4036
+ }
4037
+ ],
4038
+ "columns": [
4039
+ "Role",
4040
+ "Text"
4041
+ ],
4042
+ "type": "ts",
4043
+ "modulePath": "doubao/detail.js",
4044
+ "navigateBefore": false
4045
+ },
4046
+ {
4047
+ "site": "doubao",
4048
+ "name": "history",
4049
+ "description": "List conversation history from Doubao sidebar",
4050
+ "domain": "www.doubao.com",
4051
+ "strategy": "cookie",
4052
+ "browser": true,
4053
+ "args": [
4054
+ {
4055
+ "name": "limit",
4056
+ "type": "str",
4057
+ "default": "50",
4058
+ "required": false,
4059
+ "help": "Max number of conversations to show"
4060
+ }
4061
+ ],
4062
+ "columns": [
4063
+ "Index",
4064
+ "Id",
4065
+ "Title",
4066
+ "Url"
4067
+ ],
4068
+ "type": "ts",
4069
+ "modulePath": "doubao/history.js",
4070
+ "navigateBefore": false
4071
+ },
4072
+ {
4073
+ "site": "doubao",
4074
+ "name": "meeting-summary",
4075
+ "description": "Get meeting summary and chapters from a Doubao conversation",
4076
+ "domain": "www.doubao.com",
4077
+ "strategy": "cookie",
4078
+ "browser": true,
4079
+ "args": [
4080
+ {
4081
+ "name": "id",
4082
+ "type": "str",
4083
+ "required": true,
4084
+ "positional": true,
4085
+ "help": "Conversation ID (numeric or full URL)"
4086
+ },
4087
+ {
4088
+ "name": "chapters",
4089
+ "type": "str",
4090
+ "default": "false",
4091
+ "required": false,
4092
+ "help": "Also include AI chapters"
4093
+ }
4094
+ ],
4095
+ "columns": [
4096
+ "Section",
4097
+ "Content"
4098
+ ],
4099
+ "type": "ts",
4100
+ "modulePath": "doubao/meeting-summary.js",
4101
+ "navigateBefore": false
4102
+ },
4103
+ {
4104
+ "site": "doubao",
4105
+ "name": "meeting-transcript",
4106
+ "description": "Get or download the meeting transcript from a Doubao conversation",
4107
+ "domain": "www.doubao.com",
4108
+ "strategy": "cookie",
4109
+ "browser": true,
4110
+ "args": [
4111
+ {
4112
+ "name": "id",
4113
+ "type": "str",
4114
+ "required": true,
4115
+ "positional": true,
4116
+ "help": "Conversation ID (numeric or full URL)"
4117
+ },
4118
+ {
4119
+ "name": "download",
4120
+ "type": "str",
4121
+ "default": "false",
4122
+ "required": false,
4123
+ "help": "Trigger browser file download instead of reading text"
4124
+ }
4125
+ ],
4126
+ "columns": [
4127
+ "Section",
4128
+ "Content"
4129
+ ],
4130
+ "type": "ts",
4131
+ "modulePath": "doubao/meeting-transcript.js",
4132
+ "navigateBefore": false
4133
+ },
3878
4134
  {
3879
4135
  "site": "doubao",
3880
4136
  "name": "new",
@@ -4504,6 +4760,55 @@
4504
4760
  "type": "ts",
4505
4761
  "modulePath": "douyin/update.js"
4506
4762
  },
4763
+ {
4764
+ "site": "douyin",
4765
+ "name": "user-videos",
4766
+ "description": "获取指定用户的视频列表(含下载地址和热门评论)",
4767
+ "domain": "www.douyin.com",
4768
+ "strategy": "cookie",
4769
+ "browser": true,
4770
+ "args": [
4771
+ {
4772
+ "name": "sec_uid",
4773
+ "type": "string",
4774
+ "required": true,
4775
+ "positional": true,
4776
+ "help": "用户 sec_uid(URL 末尾部分)"
4777
+ },
4778
+ {
4779
+ "name": "limit",
4780
+ "type": "int",
4781
+ "default": 20,
4782
+ "required": false,
4783
+ "help": "获取数量(最大 20)"
4784
+ },
4785
+ {
4786
+ "name": "with_comments",
4787
+ "type": "bool",
4788
+ "default": true,
4789
+ "required": false,
4790
+ "help": "包含热门评论(默认: true)"
4791
+ },
4792
+ {
4793
+ "name": "comment_limit",
4794
+ "type": "int",
4795
+ "default": 10,
4796
+ "required": false,
4797
+ "help": "每个视频获取多少条评论(最大 10)"
4798
+ }
4799
+ ],
4800
+ "columns": [
4801
+ "index",
4802
+ "aweme_id",
4803
+ "title",
4804
+ "duration",
4805
+ "digg_count",
4806
+ "play_url",
4807
+ "top_comments"
4808
+ ],
4809
+ "type": "ts",
4810
+ "modulePath": "douyin/user-videos.js"
4811
+ },
4507
4812
  {
4508
4813
  "site": "douyin",
4509
4814
  "name": "videos",
@@ -7893,33 +8198,313 @@
7893
8198
  "modulePath": "notion/write.js"
7894
8199
  },
7895
8200
  {
7896
- "site": "paperreview",
7897
- "name": "feedback",
7898
- "description": "Submit feedback for a paperreview.ai review token",
7899
- "domain": "paperreview.ai",
7900
- "strategy": "public",
7901
- "browser": false,
8201
+ "site": "ones",
8202
+ "name": "login",
8203
+ "description": "ONES Project API — login via Chrome Bridge (POST auth/login); stderr prints export hints for ONES_USER_ID / TOKEN",
8204
+ "domain": "ones.cn",
8205
+ "strategy": "cookie",
8206
+ "browser": true,
7902
8207
  "args": [
7903
8208
  {
7904
- "name": "token",
8209
+ "name": "email",
7905
8210
  "type": "str",
7906
- "required": true,
7907
- "positional": true,
7908
- "help": "Review token returned by paperreview.ai"
8211
+ "required": false,
8212
+ "help": "Account email (or set ONES_EMAIL)"
7909
8213
  },
7910
8214
  {
7911
- "name": "helpfulness",
7912
- "type": "int",
7913
- "required": true,
7914
- "help": "Helpfulness score from 1 to 5"
8215
+ "name": "phone",
8216
+ "type": "str",
8217
+ "required": false,
8218
+ "help": "Account phone (or set ONES_PHONE); ignored if email is set"
7915
8219
  },
7916
8220
  {
7917
- "name": "critical-error",
8221
+ "name": "password",
7918
8222
  "type": "str",
7919
- "required": true,
7920
- "help": "Whether the review contains a critical error",
7921
- "choices": [
7922
- "yes",
8223
+ "required": false,
8224
+ "help": "Password (or set ONES_PASSWORD)"
8225
+ }
8226
+ ],
8227
+ "columns": [
8228
+ "uuid",
8229
+ "name",
8230
+ "email",
8231
+ "token_preview"
8232
+ ],
8233
+ "type": "ts",
8234
+ "modulePath": "ones/login.js",
8235
+ "navigateBefore": false
8236
+ },
8237
+ {
8238
+ "site": "ones",
8239
+ "name": "logout",
8240
+ "description": "ONES Project API — invalidate current token (GET auth/logout) via Chrome Bridge",
8241
+ "domain": "ones.cn",
8242
+ "strategy": "cookie",
8243
+ "browser": true,
8244
+ "args": [],
8245
+ "columns": [
8246
+ "ok",
8247
+ "detail"
8248
+ ],
8249
+ "type": "ts",
8250
+ "modulePath": "ones/logout.js",
8251
+ "navigateBefore": false
8252
+ },
8253
+ {
8254
+ "site": "ones",
8255
+ "name": "me",
8256
+ "description": "ONES Project API — current user (GET users/me) via Chrome Bridge",
8257
+ "domain": "ones.cn",
8258
+ "strategy": "cookie",
8259
+ "browser": true,
8260
+ "args": [],
8261
+ "columns": [
8262
+ "uuid",
8263
+ "name",
8264
+ "email",
8265
+ "phone",
8266
+ "status"
8267
+ ],
8268
+ "type": "ts",
8269
+ "modulePath": "ones/me.js",
8270
+ "navigateBefore": false
8271
+ },
8272
+ {
8273
+ "site": "ones",
8274
+ "name": "my-tasks",
8275
+ "description": "ONES — my work items (filters/peek + strict must query). Default: assignee=me. Use --mode if your site uses field004 for assignee.",
8276
+ "domain": "ones.cn",
8277
+ "strategy": "cookie",
8278
+ "browser": true,
8279
+ "args": [
8280
+ {
8281
+ "name": "team",
8282
+ "type": "str",
8283
+ "required": false,
8284
+ "positional": true,
8285
+ "help": "Team UUID from URL …/team/<uuid>/…, or set ONES_TEAM_UUID"
8286
+ },
8287
+ {
8288
+ "name": "limit",
8289
+ "type": "int",
8290
+ "default": 100,
8291
+ "required": false,
8292
+ "help": "Max rows (default 100, max 500)"
8293
+ },
8294
+ {
8295
+ "name": "mode",
8296
+ "type": "str",
8297
+ "default": "assign",
8298
+ "required": false,
8299
+ "help": "assign=负责人(顶层 assign);field004=负责人(筛选器示例里的 field004);owner=创建者;both=负责人∪创建者(两次 peek 去重)",
8300
+ "choices": [
8301
+ "assign",
8302
+ "field004",
8303
+ "owner",
8304
+ "both"
8305
+ ]
8306
+ }
8307
+ ],
8308
+ "columns": [
8309
+ "title",
8310
+ "status",
8311
+ "project",
8312
+ "uuid",
8313
+ "updated",
8314
+ "工时"
8315
+ ],
8316
+ "type": "ts",
8317
+ "modulePath": "ones/my-tasks.js",
8318
+ "navigateBefore": false
8319
+ },
8320
+ {
8321
+ "site": "ones",
8322
+ "name": "task",
8323
+ "description": "ONES — work item detail (GET team/:team/task/:id/info); id is URL segment after …/task/",
8324
+ "domain": "ones.cn",
8325
+ "strategy": "cookie",
8326
+ "browser": true,
8327
+ "args": [
8328
+ {
8329
+ "name": "id",
8330
+ "type": "str",
8331
+ "required": true,
8332
+ "positional": true,
8333
+ "help": "Work item UUID (often 16 chars) from …/task/<id>"
8334
+ },
8335
+ {
8336
+ "name": "team",
8337
+ "type": "str",
8338
+ "required": false,
8339
+ "help": "Team UUID (8 chars from …/team/<team>/…), or set ONES_TEAM_UUID"
8340
+ }
8341
+ ],
8342
+ "columns": [
8343
+ "uuid",
8344
+ "summary",
8345
+ "number",
8346
+ "status_uuid",
8347
+ "assign",
8348
+ "owner",
8349
+ "project_uuid",
8350
+ "updated"
8351
+ ],
8352
+ "type": "ts",
8353
+ "modulePath": "ones/task.js",
8354
+ "navigateBefore": false
8355
+ },
8356
+ {
8357
+ "site": "ones",
8358
+ "name": "tasks",
8359
+ "description": "ONES Project API — list work items (POST team/:team/filters/peek); use token-info -f json for team uuid",
8360
+ "domain": "ones.cn",
8361
+ "strategy": "cookie",
8362
+ "browser": true,
8363
+ "args": [
8364
+ {
8365
+ "name": "team",
8366
+ "type": "str",
8367
+ "required": false,
8368
+ "positional": true,
8369
+ "help": "Team UUID (8 chars), or set ONES_TEAM_UUID"
8370
+ },
8371
+ {
8372
+ "name": "project",
8373
+ "type": "str",
8374
+ "required": false,
8375
+ "help": "Filter by project UUID (field006 / 所属项目)"
8376
+ },
8377
+ {
8378
+ "name": "assign",
8379
+ "type": "str",
8380
+ "required": false,
8381
+ "help": "Filter by assignee user UUID (负责人 assign)"
8382
+ },
8383
+ {
8384
+ "name": "limit",
8385
+ "type": "int",
8386
+ "default": 30,
8387
+ "required": false,
8388
+ "help": "Max rows after flattening groups (default 30)"
8389
+ }
8390
+ ],
8391
+ "columns": [
8392
+ "title",
8393
+ "status",
8394
+ "project",
8395
+ "uuid",
8396
+ "updated",
8397
+ "工时"
8398
+ ],
8399
+ "type": "ts",
8400
+ "modulePath": "ones/tasks.js",
8401
+ "navigateBefore": false
8402
+ },
8403
+ {
8404
+ "site": "ones",
8405
+ "name": "token-info",
8406
+ "description": "ONES Project API — session detail (GET auth/token_info) via Chrome Bridge: user, teams, org",
8407
+ "domain": "ones.cn",
8408
+ "strategy": "cookie",
8409
+ "browser": true,
8410
+ "args": [],
8411
+ "columns": [
8412
+ "uuid",
8413
+ "name",
8414
+ "email",
8415
+ "teams",
8416
+ "org_name"
8417
+ ],
8418
+ "type": "ts",
8419
+ "modulePath": "ones/token-info.js",
8420
+ "navigateBefore": false
8421
+ },
8422
+ {
8423
+ "site": "ones",
8424
+ "name": "worklog",
8425
+ "description": "ONES — log work hours on a task (defaults to today; use --date to backfill; endpoint falls back by deployment).",
8426
+ "domain": "ones.cn",
8427
+ "strategy": "cookie",
8428
+ "browser": true,
8429
+ "args": [
8430
+ {
8431
+ "name": "task",
8432
+ "type": "str",
8433
+ "required": true,
8434
+ "positional": true,
8435
+ "help": "Work item UUID (usually 16 chars), from my-tasks or browser URL …/task/<id>"
8436
+ },
8437
+ {
8438
+ "name": "hours",
8439
+ "type": "str",
8440
+ "required": true,
8441
+ "positional": true,
8442
+ "help": "Hours to log for this entry (e.g. 2 or 1.5), converted with ONES_MANHOUR_SCALE"
8443
+ },
8444
+ {
8445
+ "name": "team",
8446
+ "type": "str",
8447
+ "required": false,
8448
+ "help": "Team UUID from URL …/team/<uuid>/…, or set ONES_TEAM_UUID"
8449
+ },
8450
+ {
8451
+ "name": "date",
8452
+ "type": "str",
8453
+ "required": false,
8454
+ "help": "Entry date YYYY-MM-DD, defaults to today (local timezone); use for backfill"
8455
+ },
8456
+ {
8457
+ "name": "note",
8458
+ "type": "str",
8459
+ "required": false,
8460
+ "help": "Optional note (written to description/desc)"
8461
+ },
8462
+ {
8463
+ "name": "owner",
8464
+ "type": "str",
8465
+ "required": false,
8466
+ "help": "Owner user UUID (defaults to current logged-in user)"
8467
+ }
8468
+ ],
8469
+ "columns": [
8470
+ "task",
8471
+ "date",
8472
+ "hours",
8473
+ "owner",
8474
+ "endpoint"
8475
+ ],
8476
+ "type": "ts",
8477
+ "modulePath": "ones/worklog.js",
8478
+ "navigateBefore": false
8479
+ },
8480
+ {
8481
+ "site": "paperreview",
8482
+ "name": "feedback",
8483
+ "description": "Submit feedback for a paperreview.ai review token",
8484
+ "domain": "paperreview.ai",
8485
+ "strategy": "public",
8486
+ "browser": false,
8487
+ "args": [
8488
+ {
8489
+ "name": "token",
8490
+ "type": "str",
8491
+ "required": true,
8492
+ "positional": true,
8493
+ "help": "Review token returned by paperreview.ai"
8494
+ },
8495
+ {
8496
+ "name": "helpfulness",
8497
+ "type": "int",
8498
+ "required": true,
8499
+ "help": "Helpfulness score from 1 to 5"
8500
+ },
8501
+ {
8502
+ "name": "critical-error",
8503
+ "type": "str",
8504
+ "required": true,
8505
+ "help": "Whether the review contains a critical error",
8506
+ "choices": [
8507
+ "yes",
7923
8508
  "no"
7924
8509
  ]
7925
8510
  },
@@ -9282,6 +9867,61 @@
9282
9867
  "type": "ts",
9283
9868
  "modulePath": "sinafinance/news.js"
9284
9869
  },
9870
+ {
9871
+ "site": "sinafinance",
9872
+ "name": "rolling-news",
9873
+ "description": "新浪财经滚动新闻",
9874
+ "domain": "finance.sina.com.cn/roll",
9875
+ "strategy": "cookie",
9876
+ "browser": true,
9877
+ "args": [],
9878
+ "columns": [
9879
+ "column",
9880
+ "title",
9881
+ "date",
9882
+ "url"
9883
+ ],
9884
+ "type": "ts",
9885
+ "modulePath": "sinafinance/rolling-news.js"
9886
+ },
9887
+ {
9888
+ "site": "sinafinance",
9889
+ "name": "stock",
9890
+ "description": "新浪财经行情(A股/港股/美股)",
9891
+ "domain": "suggest3.sinajs.cn,hq.sinajs.cn",
9892
+ "strategy": "public",
9893
+ "browser": false,
9894
+ "args": [
9895
+ {
9896
+ "name": "key",
9897
+ "type": "string",
9898
+ "required": true,
9899
+ "positional": true,
9900
+ "help": "Stock name or code (e.g. 贵州茅台, 腾讯控股, AAPL)"
9901
+ },
9902
+ {
9903
+ "name": "market",
9904
+ "type": "string",
9905
+ "default": "auto",
9906
+ "required": false,
9907
+ "help": "Market: cn, hk, us, auto (default: auto searches cn → hk → us)"
9908
+ }
9909
+ ],
9910
+ "columns": [
9911
+ "Symbol",
9912
+ "Name",
9913
+ "Price",
9914
+ "Change",
9915
+ "ChangePercent",
9916
+ "Open",
9917
+ "High",
9918
+ "Low",
9919
+ "Volume",
9920
+ "MarketCap"
9921
+ ],
9922
+ "type": "ts",
9923
+ "modulePath": "sinafinance/stock.js"
9924
+ },
9285
9925
  {
9286
9926
  "site": "smzdm",
9287
9927
  "name": "search",
@@ -9316,6 +9956,228 @@
9316
9956
  "type": "ts",
9317
9957
  "modulePath": "smzdm/search.js"
9318
9958
  },
9959
+ {
9960
+ "site": "spotify",
9961
+ "name": "auth",
9962
+ "description": "Authenticate with Spotify (OAuth — run once)",
9963
+ "strategy": "public",
9964
+ "browser": false,
9965
+ "args": [],
9966
+ "columns": [
9967
+ "status"
9968
+ ],
9969
+ "type": "ts",
9970
+ "modulePath": "spotify/spotify.js"
9971
+ },
9972
+ {
9973
+ "site": "spotify",
9974
+ "name": "next",
9975
+ "description": "Skip to next track",
9976
+ "strategy": "public",
9977
+ "browser": false,
9978
+ "args": [],
9979
+ "columns": [
9980
+ "status"
9981
+ ],
9982
+ "type": "ts",
9983
+ "modulePath": "spotify/spotify.js"
9984
+ },
9985
+ {
9986
+ "site": "spotify",
9987
+ "name": "pause",
9988
+ "description": "Pause playback",
9989
+ "strategy": "public",
9990
+ "browser": false,
9991
+ "args": [],
9992
+ "columns": [
9993
+ "status"
9994
+ ],
9995
+ "type": "ts",
9996
+ "modulePath": "spotify/spotify.js"
9997
+ },
9998
+ {
9999
+ "site": "spotify",
10000
+ "name": "play",
10001
+ "description": "Resume playback or search and play a track/artist",
10002
+ "strategy": "public",
10003
+ "browser": false,
10004
+ "args": [
10005
+ {
10006
+ "name": "query",
10007
+ "type": "str",
10008
+ "default": "",
10009
+ "required": false,
10010
+ "positional": true,
10011
+ "help": "Track or artist to play (optional)"
10012
+ }
10013
+ ],
10014
+ "columns": [
10015
+ "track",
10016
+ "artist",
10017
+ "status"
10018
+ ],
10019
+ "type": "ts",
10020
+ "modulePath": "spotify/spotify.js"
10021
+ },
10022
+ {
10023
+ "site": "spotify",
10024
+ "name": "prev",
10025
+ "description": "Skip to previous track",
10026
+ "strategy": "public",
10027
+ "browser": false,
10028
+ "args": [],
10029
+ "columns": [
10030
+ "status"
10031
+ ],
10032
+ "type": "ts",
10033
+ "modulePath": "spotify/spotify.js"
10034
+ },
10035
+ {
10036
+ "site": "spotify",
10037
+ "name": "queue",
10038
+ "description": "Add a track to the playback queue",
10039
+ "strategy": "public",
10040
+ "browser": false,
10041
+ "args": [
10042
+ {
10043
+ "name": "query",
10044
+ "type": "str",
10045
+ "required": true,
10046
+ "positional": true,
10047
+ "help": "Track to add to queue"
10048
+ }
10049
+ ],
10050
+ "columns": [
10051
+ "track",
10052
+ "artist",
10053
+ "status"
10054
+ ],
10055
+ "type": "ts",
10056
+ "modulePath": "spotify/spotify.js"
10057
+ },
10058
+ {
10059
+ "site": "spotify",
10060
+ "name": "repeat",
10061
+ "description": "Set repeat mode (off / track / context)",
10062
+ "strategy": "public",
10063
+ "browser": false,
10064
+ "args": [
10065
+ {
10066
+ "name": "mode",
10067
+ "type": "str",
10068
+ "default": "context",
10069
+ "required": false,
10070
+ "positional": true,
10071
+ "help": "off / track / context",
10072
+ "choices": [
10073
+ "off",
10074
+ "track",
10075
+ "context"
10076
+ ]
10077
+ }
10078
+ ],
10079
+ "columns": [
10080
+ "repeat"
10081
+ ],
10082
+ "type": "ts",
10083
+ "modulePath": "spotify/spotify.js"
10084
+ },
10085
+ {
10086
+ "site": "spotify",
10087
+ "name": "search",
10088
+ "description": "Search for tracks",
10089
+ "strategy": "public",
10090
+ "browser": false,
10091
+ "args": [
10092
+ {
10093
+ "name": "query",
10094
+ "type": "str",
10095
+ "required": true,
10096
+ "positional": true,
10097
+ "help": "Search query"
10098
+ },
10099
+ {
10100
+ "name": "limit",
10101
+ "type": "int",
10102
+ "default": 10,
10103
+ "required": false,
10104
+ "help": "Number of results (default: 10)"
10105
+ }
10106
+ ],
10107
+ "columns": [
10108
+ "track",
10109
+ "artist",
10110
+ "album",
10111
+ "uri"
10112
+ ],
10113
+ "type": "ts",
10114
+ "modulePath": "spotify/spotify.js"
10115
+ },
10116
+ {
10117
+ "site": "spotify",
10118
+ "name": "shuffle",
10119
+ "description": "Toggle shuffle on/off",
10120
+ "strategy": "public",
10121
+ "browser": false,
10122
+ "args": [
10123
+ {
10124
+ "name": "state",
10125
+ "type": "str",
10126
+ "default": "on",
10127
+ "required": false,
10128
+ "positional": true,
10129
+ "help": "on or off",
10130
+ "choices": [
10131
+ "on",
10132
+ "off"
10133
+ ]
10134
+ }
10135
+ ],
10136
+ "columns": [
10137
+ "shuffle"
10138
+ ],
10139
+ "type": "ts",
10140
+ "modulePath": "spotify/spotify.js"
10141
+ },
10142
+ {
10143
+ "site": "spotify",
10144
+ "name": "status",
10145
+ "description": "Show current playback status",
10146
+ "strategy": "public",
10147
+ "browser": false,
10148
+ "args": [],
10149
+ "columns": [
10150
+ "track",
10151
+ "artist",
10152
+ "album",
10153
+ "status",
10154
+ "progress"
10155
+ ],
10156
+ "type": "ts",
10157
+ "modulePath": "spotify/spotify.js"
10158
+ },
10159
+ {
10160
+ "site": "spotify",
10161
+ "name": "volume",
10162
+ "description": "Set playback volume (0-100)",
10163
+ "strategy": "public",
10164
+ "browser": false,
10165
+ "args": [
10166
+ {
10167
+ "name": "level",
10168
+ "type": "int",
10169
+ "default": 50,
10170
+ "required": true,
10171
+ "positional": true,
10172
+ "help": "Volume 0–100"
10173
+ }
10174
+ ],
10175
+ "columns": [
10176
+ "volume"
10177
+ ],
10178
+ "type": "ts",
10179
+ "modulePath": "spotify/spotify.js"
10180
+ },
9319
10181
  {
9320
10182
  "site": "stackoverflow",
9321
10183
  "name": "bounties",
@@ -9555,99 +10417,249 @@
9555
10417
  "limit": "${{ args.limit }}"
9556
10418
  }
9557
10419
  ],
9558
- "type": "yaml"
10420
+ "type": "yaml"
10421
+ },
10422
+ {
10423
+ "site": "substack",
10424
+ "name": "feed",
10425
+ "description": "Substack 热门文章 Feed",
10426
+ "domain": "substack.com",
10427
+ "strategy": "cookie",
10428
+ "browser": true,
10429
+ "args": [
10430
+ {
10431
+ "name": "category",
10432
+ "type": "str",
10433
+ "default": "all",
10434
+ "required": false,
10435
+ "help": "文章分类: all, tech, business, culture, politics, science, health"
10436
+ },
10437
+ {
10438
+ "name": "limit",
10439
+ "type": "int",
10440
+ "default": 20,
10441
+ "required": false,
10442
+ "help": "返回的文章数量"
10443
+ }
10444
+ ],
10445
+ "columns": [
10446
+ "rank",
10447
+ "title",
10448
+ "author",
10449
+ "date",
10450
+ "readTime",
10451
+ "url"
10452
+ ],
10453
+ "type": "ts",
10454
+ "modulePath": "substack/feed.js"
10455
+ },
10456
+ {
10457
+ "site": "substack",
10458
+ "name": "publication",
10459
+ "description": "获取特定 Substack Newsletter 的最新文章",
10460
+ "domain": "substack.com",
10461
+ "strategy": "cookie",
10462
+ "browser": true,
10463
+ "args": [
10464
+ {
10465
+ "name": "url",
10466
+ "type": "str",
10467
+ "required": true,
10468
+ "positional": true,
10469
+ "help": "Newsletter URL(如 https://example.substack.com)"
10470
+ },
10471
+ {
10472
+ "name": "limit",
10473
+ "type": "int",
10474
+ "default": 20,
10475
+ "required": false,
10476
+ "help": "返回的文章数量"
10477
+ }
10478
+ ],
10479
+ "columns": [
10480
+ "rank",
10481
+ "title",
10482
+ "date",
10483
+ "description",
10484
+ "url"
10485
+ ],
10486
+ "type": "ts",
10487
+ "modulePath": "substack/publication.js"
10488
+ },
10489
+ {
10490
+ "site": "substack",
10491
+ "name": "search",
10492
+ "description": "搜索 Substack 文章和 Newsletter",
10493
+ "domain": "substack.com",
10494
+ "strategy": "public",
10495
+ "browser": false,
10496
+ "args": [
10497
+ {
10498
+ "name": "keyword",
10499
+ "type": "str",
10500
+ "required": true,
10501
+ "positional": true,
10502
+ "help": "搜索关键词"
10503
+ },
10504
+ {
10505
+ "name": "type",
10506
+ "type": "str",
10507
+ "default": "posts",
10508
+ "required": false,
10509
+ "help": "搜索类型(posts=文章, publications=Newsletter)",
10510
+ "choices": [
10511
+ "posts",
10512
+ "publications"
10513
+ ]
10514
+ },
10515
+ {
10516
+ "name": "limit",
10517
+ "type": "int",
10518
+ "default": 20,
10519
+ "required": false,
10520
+ "help": "返回结果数量"
10521
+ }
10522
+ ],
10523
+ "columns": [
10524
+ "rank",
10525
+ "title",
10526
+ "author",
10527
+ "date",
10528
+ "description",
10529
+ "url"
10530
+ ],
10531
+ "type": "ts",
10532
+ "modulePath": "substack/search.js"
10533
+ },
10534
+ {
10535
+ "site": "tieba",
10536
+ "name": "hot",
10537
+ "description": "Tieba hot topics",
10538
+ "domain": "tieba.baidu.com",
10539
+ "strategy": "public",
10540
+ "browser": true,
10541
+ "args": [
10542
+ {
10543
+ "name": "limit",
10544
+ "type": "int",
10545
+ "default": 20,
10546
+ "required": false,
10547
+ "help": "Number of items to return"
10548
+ }
10549
+ ],
10550
+ "columns": [
10551
+ "rank",
10552
+ "title",
10553
+ "discussions",
10554
+ "description"
10555
+ ],
10556
+ "type": "ts",
10557
+ "modulePath": "tieba/hot.js",
10558
+ "navigateBefore": false
9559
10559
  },
9560
10560
  {
9561
- "site": "substack",
9562
- "name": "feed",
9563
- "description": "Substack 热门文章 Feed",
9564
- "domain": "substack.com",
10561
+ "site": "tieba",
10562
+ "name": "posts",
10563
+ "description": "Browse posts in a tieba forum",
10564
+ "domain": "tieba.baidu.com",
9565
10565
  "strategy": "cookie",
9566
10566
  "browser": true,
9567
10567
  "args": [
9568
10568
  {
9569
- "name": "category",
9570
- "type": "str",
9571
- "default": "all",
10569
+ "name": "forum",
10570
+ "type": "string",
10571
+ "required": true,
10572
+ "positional": true,
10573
+ "help": "Forum name in Chinese"
10574
+ },
10575
+ {
10576
+ "name": "page",
10577
+ "type": "int",
10578
+ "default": 1,
9572
10579
  "required": false,
9573
- "help": "文章分类: all, tech, business, culture, politics, science, health"
10580
+ "help": "Page number"
9574
10581
  },
9575
10582
  {
9576
10583
  "name": "limit",
9577
10584
  "type": "int",
9578
10585
  "default": 20,
9579
10586
  "required": false,
9580
- "help": "返回的文章数量"
10587
+ "help": "Number of items to return"
9581
10588
  }
9582
10589
  ],
9583
10590
  "columns": [
9584
10591
  "rank",
9585
10592
  "title",
9586
10593
  "author",
9587
- "date",
9588
- "readTime",
9589
- "url"
10594
+ "replies"
9590
10595
  ],
9591
10596
  "type": "ts",
9592
- "modulePath": "substack/feed.js"
10597
+ "modulePath": "tieba/posts.js",
10598
+ "navigateBefore": false
9593
10599
  },
9594
10600
  {
9595
- "site": "substack",
9596
- "name": "publication",
9597
- "description": "获取特定 Substack Newsletter 的最新文章",
9598
- "domain": "substack.com",
10601
+ "site": "tieba",
10602
+ "name": "read",
10603
+ "description": "Read a tieba thread",
10604
+ "domain": "tieba.baidu.com",
9599
10605
  "strategy": "cookie",
9600
10606
  "browser": true,
9601
10607
  "args": [
9602
10608
  {
9603
- "name": "url",
9604
- "type": "str",
10609
+ "name": "id",
10610
+ "type": "string",
9605
10611
  "required": true,
9606
10612
  "positional": true,
9607
- "help": "Newsletter URL(如 https://example.substack.com)"
10613
+ "help": "Thread ID"
10614
+ },
10615
+ {
10616
+ "name": "page",
10617
+ "type": "int",
10618
+ "default": 1,
10619
+ "required": false,
10620
+ "help": "Page number"
9608
10621
  },
9609
10622
  {
9610
10623
  "name": "limit",
9611
10624
  "type": "int",
9612
- "default": 20,
10625
+ "default": 30,
9613
10626
  "required": false,
9614
- "help": "返回的文章数量"
10627
+ "help": "Number of replies to return"
9615
10628
  }
9616
10629
  ],
9617
10630
  "columns": [
9618
- "rank",
9619
- "title",
9620
- "date",
9621
- "description",
9622
- "url"
10631
+ "floor",
10632
+ "author",
10633
+ "content",
10634
+ "time"
9623
10635
  ],
9624
10636
  "type": "ts",
9625
- "modulePath": "substack/publication.js"
10637
+ "modulePath": "tieba/read.js",
10638
+ "navigateBefore": false
9626
10639
  },
9627
10640
  {
9628
- "site": "substack",
10641
+ "site": "tieba",
9629
10642
  "name": "search",
9630
- "description": "搜索 Substack 文章和 Newsletter",
9631
- "domain": "substack.com",
9632
- "strategy": "public",
9633
- "browser": false,
10643
+ "description": "Search posts across tieba",
10644
+ "domain": "tieba.baidu.com",
10645
+ "strategy": "cookie",
10646
+ "browser": true,
9634
10647
  "args": [
9635
10648
  {
9636
10649
  "name": "keyword",
9637
- "type": "str",
10650
+ "type": "string",
9638
10651
  "required": true,
9639
10652
  "positional": true,
9640
- "help": "搜索关键词"
10653
+ "help": "Search keyword"
9641
10654
  },
9642
10655
  {
9643
- "name": "type",
9644
- "type": "str",
9645
- "default": "posts",
10656
+ "name": "page",
10657
+ "type": "int",
10658
+ "default": 1,
9646
10659
  "required": false,
9647
- "help": "搜索类型(posts=文章, publications=Newsletter)",
10660
+ "help": "Page number (currently only 1 is supported)",
9648
10661
  "choices": [
9649
- "posts",
9650
- "publications"
10662
+ "1"
9651
10663
  ]
9652
10664
  },
9653
10665
  {
@@ -9655,19 +10667,19 @@
9655
10667
  "type": "int",
9656
10668
  "default": 20,
9657
10669
  "required": false,
9658
- "help": "返回结果数量"
10670
+ "help": "Number of items to return"
9659
10671
  }
9660
10672
  ],
9661
10673
  "columns": [
9662
10674
  "rank",
9663
10675
  "title",
10676
+ "forum",
9664
10677
  "author",
9665
- "date",
9666
- "description",
9667
- "url"
10678
+ "time"
9668
10679
  ],
9669
10680
  "type": "ts",
9670
- "modulePath": "substack/search.js"
10681
+ "modulePath": "tieba/search.js",
10682
+ "navigateBefore": false
9671
10683
  },
9672
10684
  {
9673
10685
  "site": "tiktok",
@@ -11692,7 +12704,7 @@
11692
12704
  "type": "str",
11693
12705
  "required": true,
11694
12706
  "positional": true,
11695
- "help": "Book ID (numeric, from search or shelf results)"
12707
+ "help": "Book ID from search or shelf results"
11696
12708
  }
11697
12709
  ],
11698
12710
  "columns": [
@@ -12521,6 +13533,42 @@
12521
13533
  "type": "ts",
12522
13534
  "modulePath": "xiaoyuzhou/podcast.js"
12523
13535
  },
13536
+ {
13537
+ "site": "xueqiu",
13538
+ "name": "comments",
13539
+ "description": "获取单只股票的讨论动态",
13540
+ "domain": "xueqiu.com",
13541
+ "strategy": "cookie",
13542
+ "browser": true,
13543
+ "args": [
13544
+ {
13545
+ "name": "symbol",
13546
+ "type": "str",
13547
+ "required": true,
13548
+ "positional": true,
13549
+ "help": "Stock symbol, e.g. SH600519, AAPL, or 00700"
13550
+ },
13551
+ {
13552
+ "name": "limit",
13553
+ "type": "int",
13554
+ "default": 20,
13555
+ "required": false,
13556
+ "help": "Number of discussion posts to return"
13557
+ }
13558
+ ],
13559
+ "columns": [
13560
+ "author",
13561
+ "text",
13562
+ "likes",
13563
+ "replies",
13564
+ "retweets",
13565
+ "created_at",
13566
+ "url"
13567
+ ],
13568
+ "type": "ts",
13569
+ "modulePath": "xueqiu/comments.js",
13570
+ "navigateBefore": false
13571
+ },
12524
13572
  {
12525
13573
  "site": "xueqiu",
12526
13574
  "name": "earnings-date",
@@ -13855,5 +14903,174 @@
13855
14903
  }
13856
14904
  ],
13857
14905
  "type": "yaml"
14906
+ },
14907
+ {
14908
+ "site": "zsxq",
14909
+ "name": "dynamics",
14910
+ "description": "获取所有星球的最新动态",
14911
+ "domain": "wx.zsxq.com",
14912
+ "strategy": "cookie",
14913
+ "browser": true,
14914
+ "args": [
14915
+ {
14916
+ "name": "limit",
14917
+ "type": "int",
14918
+ "default": 20,
14919
+ "required": false,
14920
+ "help": "Number of dynamics to return"
14921
+ }
14922
+ ],
14923
+ "columns": [
14924
+ "time",
14925
+ "group",
14926
+ "author",
14927
+ "title",
14928
+ "comments",
14929
+ "likes",
14930
+ "url"
14931
+ ],
14932
+ "type": "ts",
14933
+ "modulePath": "zsxq/dynamics.js"
14934
+ },
14935
+ {
14936
+ "site": "zsxq",
14937
+ "name": "groups",
14938
+ "description": "列出当前账号加入的星球",
14939
+ "domain": "wx.zsxq.com",
14940
+ "strategy": "cookie",
14941
+ "browser": true,
14942
+ "args": [
14943
+ {
14944
+ "name": "limit",
14945
+ "type": "int",
14946
+ "default": 50,
14947
+ "required": false,
14948
+ "help": "Number of groups to return"
14949
+ }
14950
+ ],
14951
+ "columns": [
14952
+ "group_id",
14953
+ "name",
14954
+ "category",
14955
+ "members",
14956
+ "topics",
14957
+ "joined_at",
14958
+ "url"
14959
+ ],
14960
+ "type": "ts",
14961
+ "modulePath": "zsxq/groups.js"
14962
+ },
14963
+ {
14964
+ "site": "zsxq",
14965
+ "name": "search",
14966
+ "description": "搜索星球内容",
14967
+ "domain": "wx.zsxq.com",
14968
+ "strategy": "cookie",
14969
+ "browser": true,
14970
+ "args": [
14971
+ {
14972
+ "name": "keyword",
14973
+ "type": "str",
14974
+ "required": true,
14975
+ "positional": true,
14976
+ "help": "Search keyword"
14977
+ },
14978
+ {
14979
+ "name": "limit",
14980
+ "type": "int",
14981
+ "default": 20,
14982
+ "required": false,
14983
+ "help": "Number of results to return"
14984
+ },
14985
+ {
14986
+ "name": "group_id",
14987
+ "type": "str",
14988
+ "required": false,
14989
+ "help": "Optional group id; defaults to the active group in Chrome"
14990
+ }
14991
+ ],
14992
+ "columns": [
14993
+ "topic_id",
14994
+ "group",
14995
+ "author",
14996
+ "title",
14997
+ "comments",
14998
+ "likes",
14999
+ "time",
15000
+ "url"
15001
+ ],
15002
+ "type": "ts",
15003
+ "modulePath": "zsxq/search.js"
15004
+ },
15005
+ {
15006
+ "site": "zsxq",
15007
+ "name": "topic",
15008
+ "description": "获取单个话题详情和评论",
15009
+ "domain": "wx.zsxq.com",
15010
+ "strategy": "cookie",
15011
+ "browser": true,
15012
+ "args": [
15013
+ {
15014
+ "name": "id",
15015
+ "type": "str",
15016
+ "required": true,
15017
+ "positional": true,
15018
+ "help": "Topic ID"
15019
+ },
15020
+ {
15021
+ "name": "comment_limit",
15022
+ "type": "int",
15023
+ "default": 20,
15024
+ "required": false,
15025
+ "help": "Number of comments to fetch"
15026
+ }
15027
+ ],
15028
+ "columns": [
15029
+ "topic_id",
15030
+ "type",
15031
+ "author",
15032
+ "title",
15033
+ "comments",
15034
+ "likes",
15035
+ "comment_preview",
15036
+ "url"
15037
+ ],
15038
+ "type": "ts",
15039
+ "modulePath": "zsxq/topic.js"
15040
+ },
15041
+ {
15042
+ "site": "zsxq",
15043
+ "name": "topics",
15044
+ "description": "获取当前星球的话题列表",
15045
+ "domain": "wx.zsxq.com",
15046
+ "strategy": "cookie",
15047
+ "browser": true,
15048
+ "args": [
15049
+ {
15050
+ "name": "limit",
15051
+ "type": "int",
15052
+ "default": 20,
15053
+ "required": false,
15054
+ "help": "Number of topics to return"
15055
+ },
15056
+ {
15057
+ "name": "group_id",
15058
+ "type": "str",
15059
+ "required": false,
15060
+ "help": "Optional group id; defaults to the active group in Chrome"
15061
+ }
15062
+ ],
15063
+ "columns": [
15064
+ "topic_id",
15065
+ "type",
15066
+ "author",
15067
+ "title",
15068
+ "comments",
15069
+ "likes",
15070
+ "time",
15071
+ "url"
15072
+ ],
15073
+ "type": "ts",
15074
+ "modulePath": "zsxq/topics.js"
13858
15075
  }
13859
15076
  ]