@jackwener/opencli 1.0.6 → 1.1.0

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 (80) hide show
  1. package/README.md +26 -0
  2. package/README.zh-CN.md +3 -0
  3. package/SKILL.md +7 -2
  4. package/dist/cli-manifest.json +506 -6
  5. package/dist/cli.js +51 -1
  6. package/dist/clis/antigravity/serve.js +296 -47
  7. package/dist/clis/arxiv/paper.d.ts +1 -0
  8. package/dist/clis/arxiv/paper.js +21 -0
  9. package/dist/clis/arxiv/search.d.ts +1 -0
  10. package/dist/clis/arxiv/search.js +24 -0
  11. package/dist/clis/arxiv/utils.d.ts +18 -0
  12. package/dist/clis/arxiv/utils.js +49 -0
  13. package/dist/clis/boss/batchgreet.d.ts +1 -0
  14. package/dist/clis/boss/batchgreet.js +147 -0
  15. package/dist/clis/boss/exchange.d.ts +1 -0
  16. package/dist/clis/boss/exchange.js +111 -0
  17. package/dist/clis/boss/greet.d.ts +1 -0
  18. package/dist/clis/boss/greet.js +175 -0
  19. package/dist/clis/boss/invite.d.ts +1 -0
  20. package/dist/clis/boss/invite.js +158 -0
  21. package/dist/clis/boss/joblist.d.ts +1 -0
  22. package/dist/clis/boss/joblist.js +55 -0
  23. package/dist/clis/boss/mark.d.ts +1 -0
  24. package/dist/clis/boss/mark.js +141 -0
  25. package/dist/clis/boss/recommend.d.ts +1 -0
  26. package/dist/clis/boss/recommend.js +83 -0
  27. package/dist/clis/boss/stats.d.ts +1 -0
  28. package/dist/clis/boss/stats.js +116 -0
  29. package/dist/clis/sinafinance/news.d.ts +7 -0
  30. package/dist/clis/sinafinance/news.js +61 -0
  31. package/dist/clis/wikipedia/search.d.ts +1 -0
  32. package/dist/clis/wikipedia/search.js +30 -0
  33. package/dist/clis/wikipedia/summary.d.ts +1 -0
  34. package/dist/clis/wikipedia/summary.js +28 -0
  35. package/dist/clis/wikipedia/utils.d.ts +8 -0
  36. package/dist/clis/wikipedia/utils.js +18 -0
  37. package/dist/clis/xiaohongshu/creator-note-detail.d.ts +64 -5
  38. package/dist/clis/xiaohongshu/creator-note-detail.js +258 -69
  39. package/dist/clis/xiaohongshu/creator-note-detail.test.d.ts +1 -0
  40. package/dist/clis/xiaohongshu/creator-note-detail.test.js +211 -0
  41. package/dist/clis/xiaohongshu/creator-notes-summary.d.ts +28 -0
  42. package/dist/clis/xiaohongshu/creator-notes-summary.js +92 -0
  43. package/dist/clis/xiaohongshu/creator-notes-summary.test.d.ts +1 -0
  44. package/dist/clis/xiaohongshu/creator-notes-summary.test.js +49 -0
  45. package/dist/clis/xiaohongshu/creator-notes.d.ts +18 -5
  46. package/dist/clis/xiaohongshu/creator-notes.js +159 -71
  47. package/dist/clis/xiaohongshu/creator-notes.test.d.ts +1 -0
  48. package/dist/clis/xiaohongshu/creator-notes.test.js +162 -0
  49. package/dist/external.d.ts +20 -0
  50. package/dist/external.js +159 -0
  51. package/docs/.vitepress/config.mts +1 -1
  52. package/docs/public/CNAME +1 -0
  53. package/package.json +1 -1
  54. package/src/browser/cdp.ts +3 -3
  55. package/src/cli.ts +56 -1
  56. package/src/clis/antigravity/serve.ts +323 -50
  57. package/src/clis/arxiv/paper.ts +21 -0
  58. package/src/clis/arxiv/search.ts +24 -0
  59. package/src/clis/arxiv/utils.ts +63 -0
  60. package/src/clis/boss/batchgreet.ts +167 -0
  61. package/src/clis/boss/exchange.ts +126 -0
  62. package/src/clis/boss/greet.ts +198 -0
  63. package/src/clis/boss/invite.ts +177 -0
  64. package/src/clis/boss/joblist.ts +63 -0
  65. package/src/clis/boss/mark.ts +155 -0
  66. package/src/clis/boss/recommend.ts +94 -0
  67. package/src/clis/boss/stats.ts +130 -0
  68. package/src/clis/sinafinance/news.ts +76 -0
  69. package/src/clis/wikipedia/search.ts +32 -0
  70. package/src/clis/wikipedia/summary.ts +28 -0
  71. package/src/clis/wikipedia/utils.ts +20 -0
  72. package/src/clis/xiaohongshu/creator-note-detail.test.ts +223 -0
  73. package/src/clis/xiaohongshu/creator-note-detail.ts +340 -72
  74. package/src/clis/xiaohongshu/creator-notes-summary.test.ts +54 -0
  75. package/src/clis/xiaohongshu/creator-notes-summary.ts +120 -0
  76. package/src/clis/xiaohongshu/creator-notes.test.ts +178 -0
  77. package/src/clis/xiaohongshu/creator-notes.ts +215 -75
  78. package/src/daemon.ts +3 -3
  79. package/src/external-clis.yaml +39 -0
  80. package/src/external.ts +182 -0
package/README.md CHANGED
@@ -39,6 +39,7 @@ Turn ANY Electron application into a CLI tool! Recombine, script, and extend app
39
39
  - **CLI All Electron** — CLI-ify apps like Antigravity Ultra! Now AI can control itself natively using cc/openclaw!
40
40
  - **Account-safe** — Reuses Chrome's logged-in state; your credentials never leave the browser.
41
41
  - **AI Agent ready** — `explore` discovers APIs, `synthesize` generates adapters, `cascade` finds auth strategies.
42
+ - **External CLI Hub** — Discover, auto-install, and passthrough commands to any external CLI (gh, obsidian, docker, kubectl, etc). Zero setup.
42
43
  - **Self-healing setup** — `opencli setup` verifies Browser Bridge connectivity; `opencli doctor` diagnoses daemon, extension, and live browser connectivity.
43
44
  - **Dynamic Loader** — Simply drop `.ts` or `.yaml` adapters into the `clis/` folder for auto-registration.
44
45
  - **Dual-Engine Architecture** — Supports both YAML declarative data pipelines and robust browser runtime TypeScript injections.
@@ -137,12 +138,37 @@ Run `opencli list` for the live registry.
137
138
  | **bbc** | `news` | Public |
138
139
  | **ctrip** | `search` | Browser |
139
140
  | **github** | `search` | Public |
141
+ | **arxiv** | `search` `paper` | Public |
142
+ | **wikipedia** | `search` `summary` | Public |
140
143
  | **hackernews** | `top` | Public |
141
144
  | **linkedin** | `search` | Browser |
142
145
  | **reuters** | `search` | Browser |
143
146
  | **smzdm** | `search` | Browser |
144
147
  | **weibo** | `hot` | Browser |
145
148
  | **yahoo-finance** | `quote` | Browser |
149
+ | **sinafinance** | `news` | 🌐 Public |
150
+
151
+ ### External CLI Hub
152
+
153
+ OpenCLI acts as a universal hub for your existing command-line tools. It provides unified discovery, automatic installation, and pure passthrough execution.
154
+
155
+ | External CLI | Description | Commands Example |
156
+ |--------------|-------------|------------------|
157
+ | **gh** | GitHub CLI | `opencli gh pr list --limit 5` |
158
+ | **obsidian** | Obsidian vault management | `opencli obsidian search query="AI"` |
159
+ | **docker** | Docker command-line interface | `opencli docker ps` |
160
+ | **kubectl** | Kubernetes command-line tool | `opencli kubectl get pods` |
161
+ | **readwise** | Readwise & Reader CLI | `opencli readwise login` |
162
+
163
+ **Zero Configuration**: OpenCLI purely passes your inputs to the underlying binary via standard I/O streams. The external CLI works exactly as it naturally would, maintaining its standard output formats.
164
+
165
+ **Auto-Installation**: If you run `opencli gh ...` and `gh` is not installed on your system, OpenCLI will automatically try to install it using your system's package manager (e.g., `brew install gh`) before seamlessly re-running the command.
166
+
167
+ **Register Your Own**:
168
+ Add any local CLI to your OpenCLI registry so AI agents can automatically discover it via the `opencli list` command.
169
+ ```bash
170
+ opencli register mycli
171
+ ```
146
172
 
147
173
  ### Desktop App Adapters
148
174
 
package/README.zh-CN.md CHANGED
@@ -138,12 +138,15 @@ npm install -g @jackwener/opencli@latest
138
138
  | **bbc** | `news` | 公共 API |
139
139
  | **ctrip** | `search` | 浏览器 |
140
140
  | **github** | `search` | 公共 API |
141
+ | **arxiv** | `search` `paper` | 公开 |
142
+ | **wikipedia** | `search` `summary` | 公开 |
141
143
  | **hackernews** | `top` | 公共 API |
142
144
  | **linkedin** | `search` | 浏览器 |
143
145
  | **reuters** | `search` | 浏览器 |
144
146
  | **smzdm** | `search` | 浏览器 |
145
147
  | **weibo** | `hot` | 浏览器 |
146
148
  | **yahoo-finance** | `quote` | 浏览器 |
149
+ | **sinafinance** | `news` | 🌐 公开 |
147
150
 
148
151
  ### 桌面应用适配器
149
152
 
package/SKILL.md CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: opencli
3
3
  description: "OpenCLI — Make any website or Electron App your CLI. Zero risk, AI-powered, reuse Chrome login. 80+ commands across 19 sites."
4
- version: 0.7.4
4
+ version: 1.1.0
5
5
  author: jackwener
6
6
  tags: [cli, browser, web, chrome-extension, cdp, bilibili, zhihu, twitter, github, v2ex, hackernews, reddit, xiaohongshu, xueqiu, youtube, boss, coupang, AI, agent]
7
7
  ---
@@ -143,6 +143,9 @@ opencli youtube transcript --url "xxx" --lang zh-Hans --mode raw # 指定语言
143
143
  # Yahoo Finance (browser)
144
144
  opencli yahoo-finance quote --symbol AAPL # 股票行情
145
145
 
146
+ # Sina Finance
147
+ opencli sinafinance news --limit 10 --type 1 # 7x24实时快讯 (0=全部 1=A股 2=宏观 3=公司 4=数据 5=市场 6=国际 7=观点 8=央行 9=其它)
148
+
146
149
  # Reuters (browser)
147
150
  opencli reuters search --query "AI" # 路透社搜索
148
151
 
@@ -165,9 +168,11 @@ opencli antigravity watch # 流式监听增量消息
165
168
  ### Management Commands
166
169
 
167
170
  ```bash
168
- opencli list # List all commands
171
+ opencli list # List all commands (including External CLIs)
169
172
  opencli list --json # JSON output
170
173
  opencli list -f yaml # YAML output
174
+ opencli install <name> # Auto-install an external CLI (e.g., gh, obsidian)
175
+ opencli register <name> # Register a local custom CLI for unified discovery
171
176
  opencli validate # Validate all CLI definitions
172
177
  opencli validate bilibili # Validate specific site
173
178
  opencli setup # Interactive Browser Bridge setup and connectivity check
@@ -260,6 +260,73 @@
260
260
  "type": "ts",
261
261
  "modulePath": "apple-podcasts/utils.test.js"
262
262
  },
263
+ {
264
+ "site": "arxiv",
265
+ "name": "paper",
266
+ "description": "Get arXiv paper details by ID",
267
+ "strategy": "public",
268
+ "browser": false,
269
+ "args": [
270
+ {
271
+ "name": "id",
272
+ "type": "str",
273
+ "required": true,
274
+ "positional": true,
275
+ "help": "arXiv paper ID (e.g. 1706.03762)"
276
+ }
277
+ ],
278
+ "type": "ts",
279
+ "modulePath": "arxiv/paper.js",
280
+ "columns": [
281
+ "id",
282
+ "title",
283
+ "authors",
284
+ "published",
285
+ "abstract",
286
+ "url"
287
+ ]
288
+ },
289
+ {
290
+ "site": "arxiv",
291
+ "name": "search",
292
+ "description": "Search arXiv papers",
293
+ "strategy": "public",
294
+ "browser": false,
295
+ "args": [
296
+ {
297
+ "name": "keyword",
298
+ "type": "str",
299
+ "required": true,
300
+ "positional": true,
301
+ "help": "Search keyword (e.g. "
302
+ },
303
+ {
304
+ "name": "limit",
305
+ "type": "int",
306
+ "default": 10,
307
+ "required": false,
308
+ "help": "Max results (max 25)"
309
+ }
310
+ ],
311
+ "type": "ts",
312
+ "modulePath": "arxiv/search.js",
313
+ "columns": [
314
+ "id",
315
+ "title",
316
+ "authors",
317
+ "published"
318
+ ]
319
+ },
320
+ {
321
+ "site": "arxiv",
322
+ "name": "utils",
323
+ "description": "",
324
+ "strategy": "cookie",
325
+ "browser": true,
326
+ "args": [],
327
+ "type": "ts",
328
+ "modulePath": "arxiv/utils.js"
329
+ },
263
330
  {
264
331
  "site": "barchart",
265
332
  "name": "flow",
@@ -863,6 +930,44 @@
863
930
  "url"
864
931
  ]
865
932
  },
933
+ {
934
+ "site": "boss",
935
+ "name": "batchgreet",
936
+ "description": "BOSS直聘批量向推荐候选人发送招呼",
937
+ "strategy": "cookie",
938
+ "browser": true,
939
+ "args": [
940
+ {
941
+ "name": "job_id",
942
+ "type": "str",
943
+ "default": "",
944
+ "required": false,
945
+ "help": "Filter by encrypted job ID (greet all jobs if empty)"
946
+ },
947
+ {
948
+ "name": "limit",
949
+ "type": "int",
950
+ "default": 5,
951
+ "required": false,
952
+ "help": "Max candidates to greet"
953
+ },
954
+ {
955
+ "name": "text",
956
+ "type": "str",
957
+ "default": "",
958
+ "required": false,
959
+ "help": "Custom greeting message (uses default if empty)"
960
+ }
961
+ ],
962
+ "type": "ts",
963
+ "modulePath": "boss/batchgreet.js",
964
+ "domain": "www.zhipin.com",
965
+ "columns": [
966
+ "name",
967
+ "status",
968
+ "detail"
969
+ ]
970
+ },
866
971
  {
867
972
  "site": "boss",
868
973
  "name": "chatlist",
@@ -973,6 +1078,203 @@
973
1078
  "url"
974
1079
  ]
975
1080
  },
1081
+ {
1082
+ "site": "boss",
1083
+ "name": "exchange",
1084
+ "description": "BOSS直聘交换联系方式(请求手机/微信)",
1085
+ "strategy": "cookie",
1086
+ "browser": true,
1087
+ "args": [
1088
+ {
1089
+ "name": "uid",
1090
+ "type": "str",
1091
+ "required": true,
1092
+ "help": "Encrypted UID of the candidate"
1093
+ },
1094
+ {
1095
+ "name": "type",
1096
+ "type": "str",
1097
+ "default": "phone",
1098
+ "required": false,
1099
+ "help": "Exchange type: phone or wechat",
1100
+ "choices": [
1101
+ "phone",
1102
+ "wechat"
1103
+ ]
1104
+ }
1105
+ ],
1106
+ "type": "ts",
1107
+ "modulePath": "boss/exchange.js",
1108
+ "domain": "www.zhipin.com",
1109
+ "columns": [
1110
+ "status",
1111
+ "detail"
1112
+ ]
1113
+ },
1114
+ {
1115
+ "site": "boss",
1116
+ "name": "greet",
1117
+ "description": "BOSS直聘向新候选人发送招呼(开始聊天)",
1118
+ "strategy": "cookie",
1119
+ "browser": true,
1120
+ "args": [
1121
+ {
1122
+ "name": "uid",
1123
+ "type": "str",
1124
+ "required": true,
1125
+ "help": "Encrypted UID of the candidate (from recommend)"
1126
+ },
1127
+ {
1128
+ "name": "security_id",
1129
+ "type": "str",
1130
+ "required": true,
1131
+ "help": "Security ID of the candidate"
1132
+ },
1133
+ {
1134
+ "name": "job_id",
1135
+ "type": "str",
1136
+ "required": true,
1137
+ "help": "Encrypted job ID"
1138
+ },
1139
+ {
1140
+ "name": "text",
1141
+ "type": "str",
1142
+ "default": "",
1143
+ "required": false,
1144
+ "help": "Custom greeting message (uses default template if empty)"
1145
+ }
1146
+ ],
1147
+ "type": "ts",
1148
+ "modulePath": "boss/greet.js",
1149
+ "domain": "www.zhipin.com",
1150
+ "columns": [
1151
+ "status",
1152
+ "detail"
1153
+ ]
1154
+ },
1155
+ {
1156
+ "site": "boss",
1157
+ "name": "invite",
1158
+ "description": "BOSS直聘发送面试邀请",
1159
+ "strategy": "cookie",
1160
+ "browser": true,
1161
+ "args": [
1162
+ {
1163
+ "name": "uid",
1164
+ "type": "str",
1165
+ "required": true,
1166
+ "help": "Encrypted UID of the candidate"
1167
+ },
1168
+ {
1169
+ "name": "time",
1170
+ "type": "str",
1171
+ "required": true,
1172
+ "help": "Interview time (e.g. 2025-04-01 14:00)"
1173
+ },
1174
+ {
1175
+ "name": "address",
1176
+ "type": "str",
1177
+ "default": "",
1178
+ "required": false,
1179
+ "help": "Interview address (uses saved address if empty)"
1180
+ },
1181
+ {
1182
+ "name": "contact",
1183
+ "type": "str",
1184
+ "default": "",
1185
+ "required": false,
1186
+ "help": "Contact person name (uses saved contact if empty)"
1187
+ }
1188
+ ],
1189
+ "type": "ts",
1190
+ "modulePath": "boss/invite.js",
1191
+ "domain": "www.zhipin.com",
1192
+ "columns": [
1193
+ "status",
1194
+ "detail"
1195
+ ]
1196
+ },
1197
+ {
1198
+ "site": "boss",
1199
+ "name": "joblist",
1200
+ "description": "BOSS直聘查看我发布的职位列表",
1201
+ "strategy": "cookie",
1202
+ "browser": true,
1203
+ "args": [],
1204
+ "type": "ts",
1205
+ "modulePath": "boss/joblist.js",
1206
+ "domain": "www.zhipin.com",
1207
+ "columns": [
1208
+ "job_name",
1209
+ "salary",
1210
+ "city",
1211
+ "status",
1212
+ "encrypt_job_id"
1213
+ ]
1214
+ },
1215
+ {
1216
+ "site": "boss",
1217
+ "name": "mark",
1218
+ "description": "BOSS直聘给候选人添加标签",
1219
+ "strategy": "cookie",
1220
+ "browser": true,
1221
+ "args": [
1222
+ {
1223
+ "name": "uid",
1224
+ "type": "str",
1225
+ "required": true,
1226
+ "help": "Encrypted UID of the candidate"
1227
+ },
1228
+ {
1229
+ "name": "label",
1230
+ "type": "str",
1231
+ "required": true,
1232
+ "help": "Label name (新招呼/沟通中/已约面/已获取简历/已交换电话/已交换微信/不合适/收藏) or label ID"
1233
+ },
1234
+ {
1235
+ "name": "remove",
1236
+ "type": "boolean",
1237
+ "default": false,
1238
+ "required": false,
1239
+ "help": "Remove the label instead of adding"
1240
+ }
1241
+ ],
1242
+ "type": "ts",
1243
+ "modulePath": "boss/mark.js",
1244
+ "domain": "www.zhipin.com",
1245
+ "columns": [
1246
+ "status",
1247
+ "detail"
1248
+ ]
1249
+ },
1250
+ {
1251
+ "site": "boss",
1252
+ "name": "recommend",
1253
+ "description": "BOSS直聘查看推荐候选人(新招呼列表)",
1254
+ "strategy": "cookie",
1255
+ "browser": true,
1256
+ "args": [
1257
+ {
1258
+ "name": "limit",
1259
+ "type": "int",
1260
+ "default": 20,
1261
+ "required": false,
1262
+ "help": "Number of results to return"
1263
+ }
1264
+ ],
1265
+ "type": "ts",
1266
+ "modulePath": "boss/recommend.js",
1267
+ "domain": "www.zhipin.com",
1268
+ "columns": [
1269
+ "name",
1270
+ "job_name",
1271
+ "last_time",
1272
+ "labels",
1273
+ "encrypt_uid",
1274
+ "security_id",
1275
+ "encrypt_job_id"
1276
+ ]
1277
+ },
976
1278
  {
977
1279
  "site": "boss",
978
1280
  "name": "resume",
@@ -1110,6 +1412,33 @@
1110
1412
  "detail"
1111
1413
  ]
1112
1414
  },
1415
+ {
1416
+ "site": "boss",
1417
+ "name": "stats",
1418
+ "description": "BOSS直聘职位数据统计",
1419
+ "strategy": "cookie",
1420
+ "browser": true,
1421
+ "args": [
1422
+ {
1423
+ "name": "job_id",
1424
+ "type": "str",
1425
+ "default": "",
1426
+ "required": false,
1427
+ "help": "Encrypted job ID (show all if empty)"
1428
+ }
1429
+ ],
1430
+ "type": "ts",
1431
+ "modulePath": "boss/stats.js",
1432
+ "domain": "www.zhipin.com",
1433
+ "columns": [
1434
+ "job_name",
1435
+ "salary",
1436
+ "city",
1437
+ "status",
1438
+ "total_chats",
1439
+ "encrypt_job_id"
1440
+ ]
1441
+ },
1113
1442
  {
1114
1443
  "site": "chaoxing",
1115
1444
  "name": "assignments",
@@ -4240,6 +4569,38 @@
4240
4569
  "url"
4241
4570
  ]
4242
4571
  },
4572
+ {
4573
+ "site": "sinafinance",
4574
+ "name": "news",
4575
+ "description": "新浪财经 7x24 小时实时快讯",
4576
+ "strategy": "public",
4577
+ "browser": false,
4578
+ "args": [
4579
+ {
4580
+ "name": "limit",
4581
+ "type": "int",
4582
+ "default": 20,
4583
+ "required": false,
4584
+ "help": "Max results (max 50)"
4585
+ },
4586
+ {
4587
+ "name": "type",
4588
+ "type": "int",
4589
+ "default": 0,
4590
+ "required": false,
4591
+ "help": "News type: 0=全部 1=A股 2=宏观 3=公司 4=数据 5=市场 6=国际 7=观点 8=央行 9=其它"
4592
+ }
4593
+ ],
4594
+ "type": "ts",
4595
+ "modulePath": "sinafinance/news.js",
4596
+ "domain": "app.cj.sina.com.cn",
4597
+ "columns": [
4598
+ "id",
4599
+ "time",
4600
+ "content",
4601
+ "views"
4602
+ ]
4603
+ },
4243
4604
  {
4244
4605
  "site": "smzdm",
4245
4606
  "name": "search",
@@ -5594,10 +5955,88 @@
5594
5955
  "type": "ts",
5595
5956
  "modulePath": "weread/utils.test.js"
5596
5957
  },
5958
+ {
5959
+ "site": "wikipedia",
5960
+ "name": "search",
5961
+ "description": "Search Wikipedia articles",
5962
+ "strategy": "public",
5963
+ "browser": false,
5964
+ "args": [
5965
+ {
5966
+ "name": "keyword",
5967
+ "type": "str",
5968
+ "required": true,
5969
+ "positional": true,
5970
+ "help": "Search keyword"
5971
+ },
5972
+ {
5973
+ "name": "limit",
5974
+ "type": "int",
5975
+ "default": 10,
5976
+ "required": false,
5977
+ "help": "Max results"
5978
+ },
5979
+ {
5980
+ "name": "lang",
5981
+ "type": "str",
5982
+ "default": "en",
5983
+ "required": false,
5984
+ "help": "Language code (e.g. en, zh, ja)"
5985
+ }
5986
+ ],
5987
+ "type": "ts",
5988
+ "modulePath": "wikipedia/search.js",
5989
+ "columns": [
5990
+ "title",
5991
+ "snippet",
5992
+ "url"
5993
+ ]
5994
+ },
5995
+ {
5996
+ "site": "wikipedia",
5997
+ "name": "summary",
5998
+ "description": "Get Wikipedia article summary",
5999
+ "strategy": "public",
6000
+ "browser": false,
6001
+ "args": [
6002
+ {
6003
+ "name": "title",
6004
+ "type": "str",
6005
+ "required": true,
6006
+ "positional": true,
6007
+ "help": "Article title (e.g. "
6008
+ },
6009
+ {
6010
+ "name": "lang",
6011
+ "type": "str",
6012
+ "default": "en",
6013
+ "required": false,
6014
+ "help": "Language code (e.g. en, zh, ja)"
6015
+ }
6016
+ ],
6017
+ "type": "ts",
6018
+ "modulePath": "wikipedia/summary.js",
6019
+ "columns": [
6020
+ "title",
6021
+ "description",
6022
+ "extract",
6023
+ "url"
6024
+ ]
6025
+ },
6026
+ {
6027
+ "site": "wikipedia",
6028
+ "name": "utils",
6029
+ "description": "",
6030
+ "strategy": "cookie",
6031
+ "browser": true,
6032
+ "args": [],
6033
+ "type": "ts",
6034
+ "modulePath": "wikipedia/utils.js"
6035
+ },
5597
6036
  {
5598
6037
  "site": "xiaohongshu",
5599
6038
  "name": "creator-note-detail",
5600
- "description": "小红书单篇笔记详细数据 (阅读/互动/点赞/收藏/评论/分享,区分自然流量/推广/视频)",
6039
+ "description": "小红书单篇笔记详情页数据 (笔记信息 + 核心/互动数据 + 观看来源 + 观众画像 + 趋势数据)",
5601
6040
  "strategy": "cookie",
5602
6041
  "browser": true,
5603
6042
  "args": [
@@ -5605,22 +6044,73 @@
5605
6044
  "name": "note_id",
5606
6045
  "type": "string",
5607
6046
  "required": true,
5608
- "help": "Note ID (from note URL or creator-notes command)"
6047
+ "help": "Note ID (from creator-notes or note-detail page URL)"
5609
6048
  }
5610
6049
  ],
5611
6050
  "type": "ts",
5612
6051
  "modulePath": "xiaohongshu/creator-note-detail.js",
5613
6052
  "domain": "creator.xiaohongshu.com",
5614
6053
  "columns": [
5615
- "channel",
5616
- "reads",
5617
- "engagement",
6054
+ "section",
6055
+ "metric",
6056
+ "value",
6057
+ "extra"
6058
+ ]
6059
+ },
6060
+ {
6061
+ "site": "xiaohongshu",
6062
+ "name": "creator-note-detail.test",
6063
+ "description": "",
6064
+ "strategy": "cookie",
6065
+ "browser": true,
6066
+ "args": [],
6067
+ "type": "ts",
6068
+ "modulePath": "xiaohongshu/creator-note-detail.test.js"
6069
+ },
6070
+ {
6071
+ "site": "xiaohongshu",
6072
+ "name": "creator-notes-summary",
6073
+ "description": "小红书最近笔记批量摘要 (列表 + 单篇关键数据汇总)",
6074
+ "strategy": "cookie",
6075
+ "browser": true,
6076
+ "args": [
6077
+ {
6078
+ "name": "limit",
6079
+ "type": "int",
6080
+ "default": 3,
6081
+ "required": false,
6082
+ "help": "Number of recent notes to summarize"
6083
+ }
6084
+ ],
6085
+ "type": "ts",
6086
+ "modulePath": "xiaohongshu/creator-notes-summary.js",
6087
+ "domain": "creator.xiaohongshu.com",
6088
+ "columns": [
6089
+ "rank",
6090
+ "id",
6091
+ "title",
6092
+ "views",
5618
6093
  "likes",
5619
6094
  "collects",
5620
6095
  "comments",
5621
- "shares"
6096
+ "shares",
6097
+ "avg_view_time",
6098
+ "rise_fans",
6099
+ "top_source",
6100
+ "top_interest",
6101
+ "url"
5622
6102
  ]
5623
6103
  },
6104
+ {
6105
+ "site": "xiaohongshu",
6106
+ "name": "creator-notes-summary.test",
6107
+ "description": "",
6108
+ "strategy": "cookie",
6109
+ "browser": true,
6110
+ "args": [],
6111
+ "type": "ts",
6112
+ "modulePath": "xiaohongshu/creator-notes-summary.test.js"
6113
+ },
5624
6114
  {
5625
6115
  "site": "xiaohongshu",
5626
6116
  "name": "creator-notes",
@@ -5651,6 +6141,16 @@
5651
6141
  "url"
5652
6142
  ]
5653
6143
  },
6144
+ {
6145
+ "site": "xiaohongshu",
6146
+ "name": "creator-notes.test",
6147
+ "description": "",
6148
+ "strategy": "cookie",
6149
+ "browser": true,
6150
+ "args": [],
6151
+ "type": "ts",
6152
+ "modulePath": "xiaohongshu/creator-notes.test.js"
6153
+ },
5654
6154
  {
5655
6155
  "site": "xiaohongshu",
5656
6156
  "name": "creator-profile",