@jackwener/opencli 0.9.5 → 0.9.8
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.
- package/.github/ISSUE_TEMPLATE/bug_report.yml +83 -0
- package/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +42 -0
- package/.github/ISSUE_TEMPLATE/new_site_adapter.yml +57 -0
- package/.github/dependabot.yml +27 -0
- package/.github/pull_request_template.md +24 -0
- package/.github/workflows/ci.yml +14 -8
- package/.github/workflows/e2e-headed.yml +6 -2
- package/.github/workflows/pkg-pr-new.yml +2 -2
- package/.github/workflows/release-please.yml +25 -0
- package/.github/workflows/release.yml +2 -2
- package/.github/workflows/security.yml +36 -0
- package/CLI-ELECTRON.md +89 -36
- package/CONTRIBUTING.md +167 -0
- package/README.md +98 -32
- package/README.zh-CN.md +99 -33
- package/dist/browser/discover.js +22 -7
- package/dist/browser.test.js +23 -0
- package/dist/build-manifest.d.ts +26 -0
- package/dist/build-manifest.js +132 -60
- package/dist/build-manifest.test.d.ts +1 -0
- package/dist/build-manifest.test.js +26 -0
- package/dist/cli-manifest.json +1875 -271
- package/dist/clis/antigravity/model.js +2 -2
- package/dist/clis/antigravity/send.js +2 -2
- package/dist/clis/bilibili/download.d.ts +10 -0
- package/dist/clis/bilibili/download.js +135 -0
- package/dist/clis/chatgpt/ask.d.ts +1 -0
- package/dist/clis/chatgpt/ask.js +68 -0
- package/dist/clis/chatgpt/send.js +11 -0
- package/dist/clis/chatwise/ask.d.ts +1 -0
- package/dist/clis/chatwise/ask.js +76 -0
- package/dist/clis/chatwise/export.d.ts +1 -0
- package/dist/clis/chatwise/export.js +46 -0
- package/dist/clis/chatwise/history.d.ts +1 -0
- package/dist/clis/chatwise/history.js +43 -0
- package/dist/clis/chatwise/model.d.ts +1 -0
- package/dist/clis/chatwise/model.js +81 -0
- package/dist/clis/chatwise/new.d.ts +1 -0
- package/dist/clis/chatwise/new.js +18 -0
- package/dist/clis/chatwise/read.d.ts +1 -0
- package/dist/clis/chatwise/read.js +39 -0
- package/dist/clis/chatwise/screenshot.d.ts +1 -0
- package/dist/clis/chatwise/screenshot.js +27 -0
- package/dist/clis/chatwise/send.d.ts +1 -0
- package/dist/clis/chatwise/send.js +45 -0
- package/dist/clis/chatwise/status.d.ts +1 -0
- package/dist/clis/chatwise/status.js +22 -0
- package/dist/clis/codex/ask.d.ts +1 -0
- package/dist/clis/codex/ask.js +67 -0
- package/dist/clis/codex/export.d.ts +1 -0
- package/dist/clis/codex/export.js +37 -0
- package/dist/clis/codex/history.d.ts +1 -0
- package/dist/clis/codex/history.js +43 -0
- package/dist/clis/codex/read.js +3 -5
- package/dist/clis/codex/screenshot.d.ts +1 -0
- package/dist/clis/codex/screenshot.js +27 -0
- package/dist/clis/codex/send.js +3 -6
- package/dist/clis/codex/status.js +2 -1
- package/dist/clis/cursor/ask.d.ts +1 -0
- package/dist/clis/cursor/ask.js +69 -0
- package/dist/clis/cursor/composer.js +9 -28
- package/dist/clis/cursor/export.d.ts +1 -0
- package/dist/clis/cursor/export.js +51 -0
- package/dist/clis/cursor/history.d.ts +1 -0
- package/dist/clis/cursor/history.js +43 -0
- package/dist/clis/cursor/new.js +4 -13
- package/dist/clis/cursor/screenshot.d.ts +1 -0
- package/dist/clis/cursor/screenshot.js +31 -0
- package/dist/clis/discord-app/channels.d.ts +1 -0
- package/dist/clis/discord-app/channels.js +45 -0
- package/dist/clis/discord-app/members.d.ts +1 -0
- package/dist/clis/discord-app/members.js +38 -0
- package/dist/clis/discord-app/read.d.ts +1 -0
- package/dist/clis/discord-app/read.js +45 -0
- package/dist/clis/discord-app/search.d.ts +1 -0
- package/dist/clis/discord-app/search.js +56 -0
- package/dist/clis/discord-app/send.d.ts +1 -0
- package/dist/clis/discord-app/send.js +27 -0
- package/dist/clis/discord-app/servers.d.ts +1 -0
- package/dist/clis/discord-app/servers.js +36 -0
- package/dist/clis/discord-app/status.d.ts +1 -0
- package/dist/clis/discord-app/status.js +16 -0
- package/dist/clis/feishu/new.d.ts +1 -0
- package/dist/clis/feishu/new.js +27 -0
- package/dist/clis/feishu/read.d.ts +1 -0
- package/dist/clis/feishu/read.js +40 -0
- package/dist/clis/feishu/search.d.ts +1 -0
- package/dist/clis/feishu/search.js +30 -0
- package/dist/clis/feishu/send.d.ts +1 -0
- package/dist/clis/feishu/send.js +39 -0
- package/dist/clis/feishu/status.d.ts +1 -0
- package/dist/clis/feishu/status.js +28 -0
- package/dist/clis/grok/ask.d.ts +1 -0
- package/dist/clis/grok/ask.js +82 -0
- package/dist/clis/grok/debug.d.ts +1 -0
- package/dist/clis/grok/debug.js +45 -0
- package/dist/clis/jimeng/generate.yaml +84 -0
- package/dist/clis/jimeng/history.yaml +47 -0
- package/dist/clis/linux-do/categories.yaml +41 -0
- package/dist/clis/linux-do/category.yaml +49 -0
- package/dist/clis/linux-do/hot.yaml +50 -0
- package/dist/clis/linux-do/latest.yaml +40 -0
- package/dist/clis/linux-do/search.yaml +45 -0
- package/dist/clis/linux-do/topic.yaml +38 -0
- package/dist/clis/notion/export.d.ts +1 -0
- package/dist/clis/notion/export.js +31 -0
- package/dist/clis/notion/favorites.d.ts +1 -0
- package/dist/clis/notion/favorites.js +84 -0
- package/dist/clis/notion/new.d.ts +1 -0
- package/dist/clis/notion/new.js +34 -0
- package/dist/clis/notion/read.d.ts +1 -0
- package/dist/clis/notion/read.js +30 -0
- package/dist/clis/notion/search.d.ts +1 -0
- package/dist/clis/notion/search.js +46 -0
- package/dist/clis/notion/sidebar.d.ts +1 -0
- package/dist/clis/notion/sidebar.js +41 -0
- package/dist/clis/notion/status.d.ts +1 -0
- package/dist/clis/notion/status.js +16 -0
- package/dist/clis/notion/write.d.ts +1 -0
- package/dist/clis/notion/write.js +40 -0
- package/dist/clis/twitter/download.d.ts +8 -0
- package/dist/clis/twitter/download.js +204 -0
- package/dist/clis/wechat/chats.d.ts +1 -0
- package/dist/clis/wechat/chats.js +28 -0
- package/dist/clis/wechat/contacts.d.ts +1 -0
- package/dist/clis/wechat/contacts.js +28 -0
- package/dist/clis/wechat/read.d.ts +1 -0
- package/dist/clis/wechat/read.js +58 -0
- package/dist/clis/wechat/search.d.ts +1 -0
- package/dist/clis/wechat/search.js +31 -0
- package/dist/clis/wechat/send.d.ts +1 -0
- package/dist/clis/wechat/send.js +42 -0
- package/dist/clis/wechat/status.d.ts +1 -0
- package/dist/clis/wechat/status.js +29 -0
- package/dist/clis/xiaohongshu/creator-note-detail.d.ts +10 -0
- package/dist/clis/xiaohongshu/creator-note-detail.js +88 -0
- package/dist/clis/xiaohongshu/creator-notes.d.ts +11 -0
- package/dist/clis/xiaohongshu/creator-notes.js +109 -0
- package/dist/clis/xiaohongshu/creator-profile.d.ts +10 -0
- package/dist/clis/xiaohongshu/creator-profile.js +54 -0
- package/dist/clis/xiaohongshu/creator-stats.d.ts +10 -0
- package/dist/clis/xiaohongshu/creator-stats.js +74 -0
- package/dist/clis/xiaohongshu/download.d.ts +7 -0
- package/dist/clis/xiaohongshu/download.js +155 -0
- package/dist/clis/xiaohongshu/search.js +1 -1
- package/dist/clis/xiaohongshu/user-helpers.d.ts +15 -0
- package/dist/clis/xiaohongshu/user-helpers.js +67 -0
- package/dist/clis/xiaohongshu/user-helpers.test.d.ts +1 -0
- package/dist/clis/xiaohongshu/user-helpers.test.js +81 -0
- package/dist/clis/xiaohongshu/user.js +46 -29
- package/dist/clis/zhihu/download.d.ts +11 -0
- package/dist/clis/zhihu/download.js +186 -0
- package/dist/clis/zhihu/download.test.d.ts +1 -0
- package/dist/clis/zhihu/download.test.js +10 -0
- package/dist/download/index.d.ts +79 -0
- package/dist/download/index.js +325 -0
- package/dist/download/progress.d.ts +36 -0
- package/dist/download/progress.js +111 -0
- package/dist/engine.test.js +15 -0
- package/dist/main.js +16 -3
- package/dist/pipeline/registry.js +2 -0
- package/dist/pipeline/steps/download.d.ts +34 -0
- package/dist/pipeline/steps/download.js +251 -0
- package/dist/pipeline/template.js +28 -0
- package/package.json +4 -3
- package/scripts/test-site.mjs +70 -0
- package/src/browser/discover.ts +23 -7
- package/src/browser.test.ts +23 -0
- package/src/build-manifest.test.ts +28 -0
- package/src/build-manifest.ts +147 -57
- package/src/clis/antigravity/README.md +2 -3
- package/src/clis/antigravity/README.zh-CN.md +2 -3
- package/src/clis/antigravity/SKILL.md +1 -1
- package/src/clis/antigravity/model.ts +2 -2
- package/src/clis/antigravity/send.ts +2 -2
- package/src/clis/bilibili/download.ts +161 -0
- package/src/clis/chatgpt/README.md +25 -16
- package/src/clis/chatgpt/README.zh-CN.md +27 -18
- package/src/clis/chatgpt/ask.ts +77 -0
- package/src/clis/chatgpt/send.ts +12 -0
- package/src/clis/chatwise/README.md +38 -0
- package/src/clis/chatwise/README.zh-CN.md +38 -0
- package/src/clis/chatwise/ask.ts +87 -0
- package/src/clis/chatwise/export.ts +51 -0
- package/src/clis/chatwise/history.ts +47 -0
- package/src/clis/chatwise/model.ts +87 -0
- package/src/clis/chatwise/new.ts +21 -0
- package/src/clis/chatwise/read.ts +42 -0
- package/src/clis/chatwise/screenshot.ts +33 -0
- package/src/clis/chatwise/send.ts +50 -0
- package/src/clis/chatwise/status.ts +25 -0
- package/src/clis/codex/ask.ts +77 -0
- package/src/clis/codex/export.ts +42 -0
- package/src/clis/codex/extract-diff.ts +1 -0
- package/src/clis/codex/history.ts +47 -0
- package/src/clis/codex/read.ts +5 -6
- package/src/clis/codex/screenshot.ts +33 -0
- package/src/clis/codex/send.ts +6 -7
- package/src/clis/codex/status.ts +4 -2
- package/src/clis/cursor/ask.ts +81 -0
- package/src/clis/cursor/composer.ts +9 -30
- package/src/clis/cursor/export.ts +57 -0
- package/src/clis/cursor/history.ts +47 -0
- package/src/clis/cursor/new.ts +4 -15
- package/src/clis/cursor/screenshot.ts +38 -0
- package/src/clis/discord-app/README.md +28 -0
- package/src/clis/discord-app/README.zh-CN.md +28 -0
- package/src/clis/discord-app/channels.ts +48 -0
- package/src/clis/discord-app/members.ts +41 -0
- package/src/clis/discord-app/read.ts +49 -0
- package/src/clis/discord-app/search.ts +64 -0
- package/src/clis/discord-app/send.ts +32 -0
- package/src/clis/discord-app/servers.ts +39 -0
- package/src/clis/discord-app/status.ts +18 -0
- package/src/clis/feishu/README.md +20 -0
- package/src/clis/feishu/README.zh-CN.md +20 -0
- package/src/clis/feishu/new.ts +32 -0
- package/src/clis/feishu/read.ts +48 -0
- package/src/clis/feishu/search.ts +35 -0
- package/src/clis/feishu/send.ts +46 -0
- package/src/clis/feishu/status.ts +34 -0
- package/src/clis/grok/ask.ts +90 -0
- package/src/clis/grok/debug.ts +49 -0
- package/src/clis/jimeng/generate.yaml +84 -0
- package/src/clis/jimeng/history.yaml +47 -0
- package/src/clis/linux-do/categories.yaml +41 -0
- package/src/clis/linux-do/category.yaml +49 -0
- package/src/clis/linux-do/hot.yaml +50 -0
- package/src/clis/linux-do/latest.yaml +40 -0
- package/src/clis/linux-do/search.yaml +45 -0
- package/src/clis/linux-do/topic.yaml +38 -0
- package/src/clis/notion/README.md +29 -0
- package/src/clis/notion/README.zh-CN.md +29 -0
- package/src/clis/notion/export.ts +36 -0
- package/src/clis/notion/favorites.ts +87 -0
- package/src/clis/notion/new.ts +39 -0
- package/src/clis/notion/read.ts +33 -0
- package/src/clis/notion/search.ts +54 -0
- package/src/clis/notion/sidebar.ts +44 -0
- package/src/clis/notion/status.ts +18 -0
- package/src/clis/notion/write.ts +45 -0
- package/src/clis/twitter/download.ts +227 -0
- package/src/clis/wechat/README.md +28 -0
- package/src/clis/wechat/README.zh-CN.md +28 -0
- package/src/clis/wechat/chats.ts +33 -0
- package/src/clis/wechat/contacts.ts +33 -0
- package/src/clis/wechat/read.ts +72 -0
- package/src/clis/wechat/search.ts +36 -0
- package/src/clis/wechat/send.ts +49 -0
- package/src/clis/wechat/status.ts +35 -0
- package/src/clis/xiaohongshu/creator-note-detail.ts +95 -0
- package/src/clis/xiaohongshu/creator-notes.ts +116 -0
- package/src/clis/xiaohongshu/creator-profile.ts +60 -0
- package/src/clis/xiaohongshu/creator-stats.ts +81 -0
- package/src/clis/xiaohongshu/download.ts +173 -0
- package/src/clis/xiaohongshu/search.ts +1 -1
- package/src/clis/xiaohongshu/user-helpers.test.ts +106 -0
- package/src/clis/xiaohongshu/user-helpers.ts +85 -0
- package/src/clis/xiaohongshu/user.ts +52 -32
- package/src/clis/zhihu/download.test.ts +12 -0
- package/src/clis/zhihu/download.ts +223 -0
- package/src/download/index.ts +395 -0
- package/src/download/progress.ts +125 -0
- package/src/engine.test.ts +17 -0
- package/src/main.ts +12 -3
- package/src/pipeline/registry.ts +2 -0
- package/src/pipeline/steps/download.ts +310 -0
- package/src/pipeline/template.ts +26 -0
- package/tests/e2e/browser-auth.test.ts +25 -0
package/dist/cli-manifest.json
CHANGED
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"modulePath": "antigravity/model.js",
|
|
48
48
|
"domain": "localhost",
|
|
49
49
|
"columns": [
|
|
50
|
-
"
|
|
50
|
+
"Status"
|
|
51
51
|
]
|
|
52
52
|
},
|
|
53
53
|
{
|
|
@@ -105,8 +105,8 @@
|
|
|
105
105
|
"modulePath": "antigravity/send.js",
|
|
106
106
|
"domain": "localhost",
|
|
107
107
|
"columns": [
|
|
108
|
-
"
|
|
109
|
-
"
|
|
108
|
+
"Status",
|
|
109
|
+
"Message"
|
|
110
110
|
]
|
|
111
111
|
},
|
|
112
112
|
{
|
|
@@ -149,7 +149,12 @@
|
|
|
149
149
|
"type": "str",
|
|
150
150
|
"default": "all",
|
|
151
151
|
"required": false,
|
|
152
|
-
"help": "Filter: all, call, or put"
|
|
152
|
+
"help": "Filter: all, call, or put",
|
|
153
|
+
"choices": [
|
|
154
|
+
"all",
|
|
155
|
+
"call",
|
|
156
|
+
"put"
|
|
157
|
+
]
|
|
153
158
|
},
|
|
154
159
|
{
|
|
155
160
|
"name": "limit",
|
|
@@ -237,7 +242,11 @@
|
|
|
237
242
|
"type": "str",
|
|
238
243
|
"default": "Call",
|
|
239
244
|
"required": false,
|
|
240
|
-
"help": "Option type: Call or Put"
|
|
245
|
+
"help": "Option type: Call or Put",
|
|
246
|
+
"choices": [
|
|
247
|
+
"Call",
|
|
248
|
+
"Put"
|
|
249
|
+
]
|
|
241
250
|
},
|
|
242
251
|
{
|
|
243
252
|
"name": "limit",
|
|
@@ -325,6 +334,44 @@
|
|
|
325
334
|
"url"
|
|
326
335
|
]
|
|
327
336
|
},
|
|
337
|
+
{
|
|
338
|
+
"site": "bilibili",
|
|
339
|
+
"name": "download",
|
|
340
|
+
"description": "下载B站视频(需要 yt-dlp)",
|
|
341
|
+
"strategy": "cookie",
|
|
342
|
+
"browser": true,
|
|
343
|
+
"args": [
|
|
344
|
+
{
|
|
345
|
+
"name": "bvid",
|
|
346
|
+
"type": "str",
|
|
347
|
+
"required": true,
|
|
348
|
+
"help": "Video BV ID (e.g., BV1xxx)"
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"name": "output",
|
|
352
|
+
"type": "str",
|
|
353
|
+
"default": "./bilibili-downloads",
|
|
354
|
+
"required": false,
|
|
355
|
+
"help": "Output directory"
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"name": "quality",
|
|
359
|
+
"type": "str",
|
|
360
|
+
"default": "best",
|
|
361
|
+
"required": false,
|
|
362
|
+
"help": "Video quality (best, 1080p, 720p, 480p)"
|
|
363
|
+
}
|
|
364
|
+
],
|
|
365
|
+
"type": "ts",
|
|
366
|
+
"modulePath": "bilibili/download.js",
|
|
367
|
+
"domain": "www.bilibili.com",
|
|
368
|
+
"columns": [
|
|
369
|
+
"bvid",
|
|
370
|
+
"title",
|
|
371
|
+
"status",
|
|
372
|
+
"size"
|
|
373
|
+
]
|
|
374
|
+
},
|
|
328
375
|
{
|
|
329
376
|
"site": "bilibili",
|
|
330
377
|
"name": "dynamic",
|
|
@@ -810,6 +857,36 @@
|
|
|
810
857
|
"url"
|
|
811
858
|
]
|
|
812
859
|
},
|
|
860
|
+
{
|
|
861
|
+
"site": "chatgpt",
|
|
862
|
+
"name": "ask",
|
|
863
|
+
"description": "Send a prompt and wait for the AI response (send + wait + read)",
|
|
864
|
+
"strategy": "public",
|
|
865
|
+
"browser": false,
|
|
866
|
+
"args": [
|
|
867
|
+
{
|
|
868
|
+
"name": "text",
|
|
869
|
+
"type": "str",
|
|
870
|
+
"required": true,
|
|
871
|
+
"positional": true,
|
|
872
|
+
"help": "Prompt to send"
|
|
873
|
+
},
|
|
874
|
+
{
|
|
875
|
+
"name": "timeout",
|
|
876
|
+
"type": "str",
|
|
877
|
+
"default": "30)",
|
|
878
|
+
"required": false,
|
|
879
|
+
"help": "Max seconds to wait for response (default: 30)"
|
|
880
|
+
}
|
|
881
|
+
],
|
|
882
|
+
"type": "ts",
|
|
883
|
+
"modulePath": "chatgpt/ask.js",
|
|
884
|
+
"domain": "localhost",
|
|
885
|
+
"columns": [
|
|
886
|
+
"Role",
|
|
887
|
+
"Text"
|
|
888
|
+
]
|
|
889
|
+
},
|
|
813
890
|
{
|
|
814
891
|
"site": "chatgpt",
|
|
815
892
|
"name": "new",
|
|
@@ -876,39 +953,79 @@
|
|
|
876
953
|
]
|
|
877
954
|
},
|
|
878
955
|
{
|
|
879
|
-
"site": "
|
|
880
|
-
"name": "
|
|
881
|
-
"description": "
|
|
956
|
+
"site": "chatwise",
|
|
957
|
+
"name": "ask",
|
|
958
|
+
"description": "Send a prompt and wait for the AI response (send + wait + read)",
|
|
882
959
|
"strategy": "ui",
|
|
883
960
|
"browser": true,
|
|
884
|
-
"args": [
|
|
961
|
+
"args": [
|
|
962
|
+
{
|
|
963
|
+
"name": "text",
|
|
964
|
+
"type": "str",
|
|
965
|
+
"required": true,
|
|
966
|
+
"positional": true,
|
|
967
|
+
"help": "Prompt to send"
|
|
968
|
+
},
|
|
969
|
+
{
|
|
970
|
+
"name": "timeout",
|
|
971
|
+
"type": "str",
|
|
972
|
+
"default": "30)",
|
|
973
|
+
"required": false,
|
|
974
|
+
"help": "Max seconds to wait (default: 30)"
|
|
975
|
+
}
|
|
976
|
+
],
|
|
885
977
|
"type": "ts",
|
|
886
|
-
"modulePath": "
|
|
978
|
+
"modulePath": "chatwise/ask.js",
|
|
887
979
|
"domain": "localhost",
|
|
888
980
|
"columns": [
|
|
889
|
-
"
|
|
890
|
-
"
|
|
981
|
+
"Role",
|
|
982
|
+
"Text"
|
|
891
983
|
]
|
|
892
984
|
},
|
|
893
985
|
{
|
|
894
|
-
"site": "
|
|
895
|
-
"name": "
|
|
896
|
-
"description": "
|
|
986
|
+
"site": "chatwise",
|
|
987
|
+
"name": "export",
|
|
988
|
+
"description": "Export the current ChatWise conversation to a Markdown file",
|
|
897
989
|
"strategy": "ui",
|
|
898
990
|
"browser": true,
|
|
899
|
-
"args": [
|
|
991
|
+
"args": [
|
|
992
|
+
{
|
|
993
|
+
"name": "output",
|
|
994
|
+
"type": "str",
|
|
995
|
+
"default": "/tmp/chatwise-export.md)",
|
|
996
|
+
"required": false,
|
|
997
|
+
"positional": true,
|
|
998
|
+
"help": "Output file (default: /tmp/chatwise-export.md)"
|
|
999
|
+
}
|
|
1000
|
+
],
|
|
900
1001
|
"type": "ts",
|
|
901
|
-
"modulePath": "
|
|
1002
|
+
"modulePath": "chatwise/export.js",
|
|
902
1003
|
"domain": "localhost",
|
|
903
1004
|
"columns": [
|
|
1005
|
+
"Status",
|
|
904
1006
|
"File",
|
|
905
|
-
"
|
|
1007
|
+
"Messages"
|
|
906
1008
|
]
|
|
907
1009
|
},
|
|
908
1010
|
{
|
|
909
|
-
"site": "
|
|
1011
|
+
"site": "chatwise",
|
|
1012
|
+
"name": "history",
|
|
1013
|
+
"description": "List conversation history in ChatWise sidebar",
|
|
1014
|
+
"strategy": "ui",
|
|
1015
|
+
"browser": true,
|
|
1016
|
+
"args": [],
|
|
1017
|
+
"type": "ts",
|
|
1018
|
+
"modulePath": "chatwise/history.js",
|
|
1019
|
+
"domain": "localhost",
|
|
1020
|
+
"columns": [
|
|
1021
|
+
"Index",
|
|
1022
|
+
"Title"
|
|
1023
|
+
]
|
|
1024
|
+
},
|
|
1025
|
+
{
|
|
1026
|
+
"site": "chatwise",
|
|
910
1027
|
"name": "model",
|
|
911
|
-
"description": "Get or switch the
|
|
1028
|
+
"description": "Get or switch the active AI model in ChatWise",
|
|
912
1029
|
"strategy": "ui",
|
|
913
1030
|
"browser": true,
|
|
914
1031
|
"args": [
|
|
@@ -917,11 +1034,11 @@
|
|
|
917
1034
|
"type": "str",
|
|
918
1035
|
"required": false,
|
|
919
1036
|
"positional": true,
|
|
920
|
-
"help": "
|
|
1037
|
+
"help": "Model to switch to (e.g. gpt-4, claude-3)"
|
|
921
1038
|
}
|
|
922
1039
|
],
|
|
923
1040
|
"type": "ts",
|
|
924
|
-
"modulePath": "
|
|
1041
|
+
"modulePath": "chatwise/model.js",
|
|
925
1042
|
"domain": "localhost",
|
|
926
1043
|
"columns": [
|
|
927
1044
|
"Status",
|
|
@@ -929,38 +1046,61 @@
|
|
|
929
1046
|
]
|
|
930
1047
|
},
|
|
931
1048
|
{
|
|
932
|
-
"site": "
|
|
1049
|
+
"site": "chatwise",
|
|
933
1050
|
"name": "new",
|
|
934
|
-
"description": "Start a new
|
|
1051
|
+
"description": "Start a new conversation in ChatWise",
|
|
935
1052
|
"strategy": "ui",
|
|
936
1053
|
"browser": true,
|
|
937
1054
|
"args": [],
|
|
938
1055
|
"type": "ts",
|
|
939
|
-
"modulePath": "
|
|
1056
|
+
"modulePath": "chatwise/new.js",
|
|
940
1057
|
"domain": "localhost",
|
|
941
1058
|
"columns": [
|
|
942
|
-
"Status"
|
|
943
|
-
"Action"
|
|
1059
|
+
"Status"
|
|
944
1060
|
]
|
|
945
1061
|
},
|
|
946
1062
|
{
|
|
947
|
-
"site": "
|
|
1063
|
+
"site": "chatwise",
|
|
948
1064
|
"name": "read",
|
|
949
|
-
"description": "Read the
|
|
1065
|
+
"description": "Read the current ChatWise conversation history",
|
|
950
1066
|
"strategy": "ui",
|
|
951
1067
|
"browser": true,
|
|
952
1068
|
"args": [],
|
|
953
1069
|
"type": "ts",
|
|
954
|
-
"modulePath": "
|
|
1070
|
+
"modulePath": "chatwise/read.js",
|
|
955
1071
|
"domain": "localhost",
|
|
956
1072
|
"columns": [
|
|
957
|
-
"
|
|
1073
|
+
"Content"
|
|
958
1074
|
]
|
|
959
1075
|
},
|
|
960
1076
|
{
|
|
961
|
-
"site": "
|
|
1077
|
+
"site": "chatwise",
|
|
1078
|
+
"name": "screenshot",
|
|
1079
|
+
"description": "Capture a snapshot of the current ChatWise window (DOM + Accessibility tree)",
|
|
1080
|
+
"strategy": "ui",
|
|
1081
|
+
"browser": true,
|
|
1082
|
+
"args": [
|
|
1083
|
+
{
|
|
1084
|
+
"name": "output",
|
|
1085
|
+
"type": "str",
|
|
1086
|
+
"default": "/tmp/chatwise-snapshot)",
|
|
1087
|
+
"required": false,
|
|
1088
|
+
"positional": true,
|
|
1089
|
+
"help": "Output file path (default: /tmp/chatwise-snapshot)"
|
|
1090
|
+
}
|
|
1091
|
+
],
|
|
1092
|
+
"type": "ts",
|
|
1093
|
+
"modulePath": "chatwise/screenshot.js",
|
|
1094
|
+
"domain": "localhost",
|
|
1095
|
+
"columns": [
|
|
1096
|
+
"Status",
|
|
1097
|
+
"File"
|
|
1098
|
+
]
|
|
1099
|
+
},
|
|
1100
|
+
{
|
|
1101
|
+
"site": "chatwise",
|
|
962
1102
|
"name": "send",
|
|
963
|
-
"description": "Send
|
|
1103
|
+
"description": "Send a message to the active ChatWise conversation",
|
|
964
1104
|
"strategy": "ui",
|
|
965
1105
|
"browser": true,
|
|
966
1106
|
"args": [
|
|
@@ -969,11 +1109,11 @@
|
|
|
969
1109
|
"type": "str",
|
|
970
1110
|
"required": true,
|
|
971
1111
|
"positional": true,
|
|
972
|
-
"help": "
|
|
1112
|
+
"help": "Message to send"
|
|
973
1113
|
}
|
|
974
1114
|
],
|
|
975
1115
|
"type": "ts",
|
|
976
|
-
"modulePath": "
|
|
1116
|
+
"modulePath": "chatwise/send.js",
|
|
977
1117
|
"domain": "localhost",
|
|
978
1118
|
"columns": [
|
|
979
1119
|
"Status",
|
|
@@ -981,14 +1121,14 @@
|
|
|
981
1121
|
]
|
|
982
1122
|
},
|
|
983
1123
|
{
|
|
984
|
-
"site": "
|
|
1124
|
+
"site": "chatwise",
|
|
985
1125
|
"name": "status",
|
|
986
|
-
"description": "Check active CDP connection to
|
|
1126
|
+
"description": "Check active CDP connection to ChatWise Desktop",
|
|
987
1127
|
"strategy": "ui",
|
|
988
1128
|
"browser": true,
|
|
989
1129
|
"args": [],
|
|
990
1130
|
"type": "ts",
|
|
991
|
-
"modulePath": "
|
|
1131
|
+
"modulePath": "chatwise/status.js",
|
|
992
1132
|
"domain": "localhost",
|
|
993
1133
|
"columns": [
|
|
994
1134
|
"Status",
|
|
@@ -997,174 +1137,109 @@
|
|
|
997
1137
|
]
|
|
998
1138
|
},
|
|
999
1139
|
{
|
|
1000
|
-
"site": "
|
|
1001
|
-
"name": "
|
|
1002
|
-
"description": "
|
|
1003
|
-
"strategy": "
|
|
1004
|
-
"browser": true,
|
|
1005
|
-
"args": [
|
|
1006
|
-
{
|
|
1007
|
-
"name": "productId",
|
|
1008
|
-
"type": "str",
|
|
1009
|
-
"required": false,
|
|
1010
|
-
"help": "Coupang product ID"
|
|
1011
|
-
},
|
|
1012
|
-
{
|
|
1013
|
-
"name": "url",
|
|
1014
|
-
"type": "str",
|
|
1015
|
-
"required": false,
|
|
1016
|
-
"help": "Canonical product URL"
|
|
1017
|
-
}
|
|
1018
|
-
],
|
|
1019
|
-
"type": "ts",
|
|
1020
|
-
"modulePath": "coupang/add-to-cart.js",
|
|
1021
|
-
"domain": "www.coupang.com",
|
|
1022
|
-
"columns": [
|
|
1023
|
-
"ok",
|
|
1024
|
-
"product_id",
|
|
1025
|
-
"url",
|
|
1026
|
-
"message"
|
|
1027
|
-
]
|
|
1028
|
-
},
|
|
1029
|
-
{
|
|
1030
|
-
"site": "coupang",
|
|
1031
|
-
"name": "search",
|
|
1032
|
-
"description": "Search Coupang products with logged-in browser session",
|
|
1033
|
-
"strategy": "cookie",
|
|
1140
|
+
"site": "codex",
|
|
1141
|
+
"name": "ask",
|
|
1142
|
+
"description": "Send a prompt and wait for the AI response (send + wait + read)",
|
|
1143
|
+
"strategy": "ui",
|
|
1034
1144
|
"browser": true,
|
|
1035
1145
|
"args": [
|
|
1036
1146
|
{
|
|
1037
|
-
"name": "
|
|
1147
|
+
"name": "text",
|
|
1038
1148
|
"type": "str",
|
|
1039
1149
|
"required": true,
|
|
1040
|
-
"
|
|
1041
|
-
|
|
1042
|
-
{
|
|
1043
|
-
"name": "page",
|
|
1044
|
-
"type": "int",
|
|
1045
|
-
"default": 1,
|
|
1046
|
-
"required": false,
|
|
1047
|
-
"help": "Search result page number"
|
|
1048
|
-
},
|
|
1049
|
-
{
|
|
1050
|
-
"name": "limit",
|
|
1051
|
-
"type": "int",
|
|
1052
|
-
"default": 20,
|
|
1053
|
-
"required": false,
|
|
1054
|
-
"help": "Max results (max 50)"
|
|
1150
|
+
"positional": true,
|
|
1151
|
+
"help": "Prompt to send"
|
|
1055
1152
|
},
|
|
1056
1153
|
{
|
|
1057
|
-
"name": "
|
|
1154
|
+
"name": "timeout",
|
|
1058
1155
|
"type": "str",
|
|
1156
|
+
"default": "60)",
|
|
1059
1157
|
"required": false,
|
|
1060
|
-
"help": "
|
|
1158
|
+
"help": "Max seconds to wait for response (default: 60)"
|
|
1061
1159
|
}
|
|
1062
1160
|
],
|
|
1063
1161
|
"type": "ts",
|
|
1064
|
-
"modulePath": "
|
|
1065
|
-
"domain": "
|
|
1162
|
+
"modulePath": "codex/ask.js",
|
|
1163
|
+
"domain": "localhost",
|
|
1066
1164
|
"columns": [
|
|
1067
|
-
"
|
|
1068
|
-
"
|
|
1069
|
-
"price",
|
|
1070
|
-
"unit_price",
|
|
1071
|
-
"rating",
|
|
1072
|
-
"review_count",
|
|
1073
|
-
"rocket",
|
|
1074
|
-
"delivery_type",
|
|
1075
|
-
"delivery_promise",
|
|
1076
|
-
"url"
|
|
1165
|
+
"Role",
|
|
1166
|
+
"Text"
|
|
1077
1167
|
]
|
|
1078
1168
|
},
|
|
1079
1169
|
{
|
|
1080
|
-
"site": "
|
|
1081
|
-
"name": "
|
|
1082
|
-
"description": "
|
|
1083
|
-
"strategy": "
|
|
1170
|
+
"site": "codex",
|
|
1171
|
+
"name": "dump",
|
|
1172
|
+
"description": "Dump the DOM and Accessibility tree of Codex for reverse-engineering",
|
|
1173
|
+
"strategy": "ui",
|
|
1084
1174
|
"browser": true,
|
|
1085
|
-
"args": [
|
|
1086
|
-
{
|
|
1087
|
-
"name": "query",
|
|
1088
|
-
"type": "str",
|
|
1089
|
-
"required": true,
|
|
1090
|
-
"help": "Search keyword (city or attraction)"
|
|
1091
|
-
},
|
|
1092
|
-
{
|
|
1093
|
-
"name": "limit",
|
|
1094
|
-
"type": "int",
|
|
1095
|
-
"default": 15,
|
|
1096
|
-
"required": false,
|
|
1097
|
-
"help": "Number of results"
|
|
1098
|
-
}
|
|
1099
|
-
],
|
|
1175
|
+
"args": [],
|
|
1100
1176
|
"type": "ts",
|
|
1101
|
-
"modulePath": "
|
|
1102
|
-
"domain": "
|
|
1177
|
+
"modulePath": "codex/dump.js",
|
|
1178
|
+
"domain": "localhost",
|
|
1103
1179
|
"columns": [
|
|
1104
|
-
"
|
|
1105
|
-
"
|
|
1106
|
-
"type",
|
|
1107
|
-
"score",
|
|
1108
|
-
"price",
|
|
1109
|
-
"url"
|
|
1180
|
+
"action",
|
|
1181
|
+
"files"
|
|
1110
1182
|
]
|
|
1111
1183
|
},
|
|
1112
1184
|
{
|
|
1113
|
-
"site": "
|
|
1114
|
-
"name": "
|
|
1115
|
-
"description": "
|
|
1185
|
+
"site": "codex",
|
|
1186
|
+
"name": "export",
|
|
1187
|
+
"description": "Export the current Codex conversation to a Markdown file",
|
|
1116
1188
|
"strategy": "ui",
|
|
1117
1189
|
"browser": true,
|
|
1118
1190
|
"args": [
|
|
1119
1191
|
{
|
|
1120
|
-
"name": "
|
|
1192
|
+
"name": "output",
|
|
1121
1193
|
"type": "str",
|
|
1122
|
-
"
|
|
1194
|
+
"default": "/tmp/codex-export.md)",
|
|
1195
|
+
"required": false,
|
|
1123
1196
|
"positional": true,
|
|
1124
|
-
"help": "
|
|
1197
|
+
"help": "Output file (default: /tmp/codex-export.md)"
|
|
1125
1198
|
}
|
|
1126
1199
|
],
|
|
1127
1200
|
"type": "ts",
|
|
1128
|
-
"modulePath": "
|
|
1201
|
+
"modulePath": "codex/export.js",
|
|
1129
1202
|
"domain": "localhost",
|
|
1130
1203
|
"columns": [
|
|
1131
1204
|
"Status",
|
|
1132
|
-
"
|
|
1205
|
+
"File",
|
|
1206
|
+
"Messages"
|
|
1133
1207
|
]
|
|
1134
1208
|
},
|
|
1135
1209
|
{
|
|
1136
|
-
"site": "
|
|
1137
|
-
"name": "
|
|
1138
|
-
"description": "
|
|
1210
|
+
"site": "codex",
|
|
1211
|
+
"name": "extract-diff",
|
|
1212
|
+
"description": "Extract visual code review diff patches from Codex",
|
|
1139
1213
|
"strategy": "ui",
|
|
1140
1214
|
"browser": true,
|
|
1141
1215
|
"args": [],
|
|
1142
1216
|
"type": "ts",
|
|
1143
|
-
"modulePath": "
|
|
1217
|
+
"modulePath": "codex/extract-diff.js",
|
|
1144
1218
|
"domain": "localhost",
|
|
1145
1219
|
"columns": [
|
|
1146
|
-
"
|
|
1147
|
-
"
|
|
1220
|
+
"File",
|
|
1221
|
+
"Diff"
|
|
1148
1222
|
]
|
|
1149
1223
|
},
|
|
1150
1224
|
{
|
|
1151
|
-
"site": "
|
|
1152
|
-
"name": "
|
|
1153
|
-
"description": "
|
|
1225
|
+
"site": "codex",
|
|
1226
|
+
"name": "history",
|
|
1227
|
+
"description": "List recent conversation threads in Codex",
|
|
1154
1228
|
"strategy": "ui",
|
|
1155
1229
|
"browser": true,
|
|
1156
1230
|
"args": [],
|
|
1157
1231
|
"type": "ts",
|
|
1158
|
-
"modulePath": "
|
|
1232
|
+
"modulePath": "codex/history.js",
|
|
1159
1233
|
"domain": "localhost",
|
|
1160
1234
|
"columns": [
|
|
1161
|
-
"
|
|
1235
|
+
"Index",
|
|
1236
|
+
"Title"
|
|
1162
1237
|
]
|
|
1163
1238
|
},
|
|
1164
1239
|
{
|
|
1165
|
-
"site": "
|
|
1240
|
+
"site": "codex",
|
|
1166
1241
|
"name": "model",
|
|
1167
|
-
"description": "Get or switch the currently active AI model in
|
|
1242
|
+
"description": "Get or switch the currently active AI model in Codex Desktop",
|
|
1168
1243
|
"strategy": "ui",
|
|
1169
1244
|
"browser": true,
|
|
1170
1245
|
"args": [
|
|
@@ -1173,11 +1248,11 @@
|
|
|
1173
1248
|
"type": "str",
|
|
1174
1249
|
"required": false,
|
|
1175
1250
|
"positional": true,
|
|
1176
|
-
"help": "The ID of the model to switch to (e.g.
|
|
1251
|
+
"help": "The ID of the model to switch to (e.g. gpt-4)"
|
|
1177
1252
|
}
|
|
1178
1253
|
],
|
|
1179
1254
|
"type": "ts",
|
|
1180
|
-
"modulePath": "
|
|
1255
|
+
"modulePath": "codex/model.js",
|
|
1181
1256
|
"domain": "localhost",
|
|
1182
1257
|
"columns": [
|
|
1183
1258
|
"Status",
|
|
@@ -1185,38 +1260,62 @@
|
|
|
1185
1260
|
]
|
|
1186
1261
|
},
|
|
1187
1262
|
{
|
|
1188
|
-
"site": "
|
|
1263
|
+
"site": "codex",
|
|
1189
1264
|
"name": "new",
|
|
1190
|
-
"description": "Start a new
|
|
1265
|
+
"description": "Start a new Codex conversation thread / isolated workspace",
|
|
1191
1266
|
"strategy": "ui",
|
|
1192
1267
|
"browser": true,
|
|
1193
1268
|
"args": [],
|
|
1194
1269
|
"type": "ts",
|
|
1195
|
-
"modulePath": "
|
|
1270
|
+
"modulePath": "codex/new.js",
|
|
1196
1271
|
"domain": "localhost",
|
|
1197
1272
|
"columns": [
|
|
1198
|
-
"Status"
|
|
1273
|
+
"Status",
|
|
1274
|
+
"Action"
|
|
1199
1275
|
]
|
|
1200
1276
|
},
|
|
1201
1277
|
{
|
|
1202
|
-
"site": "
|
|
1278
|
+
"site": "codex",
|
|
1203
1279
|
"name": "read",
|
|
1204
|
-
"description": "Read the current
|
|
1280
|
+
"description": "Read the contents of the current Codex conversation thread",
|
|
1205
1281
|
"strategy": "ui",
|
|
1206
1282
|
"browser": true,
|
|
1207
1283
|
"args": [],
|
|
1208
1284
|
"type": "ts",
|
|
1209
|
-
"modulePath": "
|
|
1285
|
+
"modulePath": "codex/read.js",
|
|
1210
1286
|
"domain": "localhost",
|
|
1211
1287
|
"columns": [
|
|
1212
|
-
"
|
|
1213
|
-
"Text"
|
|
1288
|
+
"Content"
|
|
1214
1289
|
]
|
|
1215
1290
|
},
|
|
1216
1291
|
{
|
|
1217
|
-
"site": "
|
|
1292
|
+
"site": "codex",
|
|
1293
|
+
"name": "screenshot",
|
|
1294
|
+
"description": "Capture a snapshot of the current Codex window (DOM + Accessibility tree)",
|
|
1295
|
+
"strategy": "ui",
|
|
1296
|
+
"browser": true,
|
|
1297
|
+
"args": [
|
|
1298
|
+
{
|
|
1299
|
+
"name": "output",
|
|
1300
|
+
"type": "str",
|
|
1301
|
+
"default": "/tmp/codex-snapshot.txt)",
|
|
1302
|
+
"required": false,
|
|
1303
|
+
"positional": true,
|
|
1304
|
+
"help": "Output file path (default: /tmp/codex-snapshot.txt)"
|
|
1305
|
+
}
|
|
1306
|
+
],
|
|
1307
|
+
"type": "ts",
|
|
1308
|
+
"modulePath": "codex/screenshot.js",
|
|
1309
|
+
"domain": "localhost",
|
|
1310
|
+
"columns": [
|
|
1311
|
+
"Status",
|
|
1312
|
+
"File"
|
|
1313
|
+
]
|
|
1314
|
+
},
|
|
1315
|
+
{
|
|
1316
|
+
"site": "codex",
|
|
1218
1317
|
"name": "send",
|
|
1219
|
-
"description": "Send
|
|
1318
|
+
"description": "Send text/commands to the Codex AI composer",
|
|
1220
1319
|
"strategy": "ui",
|
|
1221
1320
|
"browser": true,
|
|
1222
1321
|
"args": [
|
|
@@ -1225,11 +1324,11 @@
|
|
|
1225
1324
|
"type": "str",
|
|
1226
1325
|
"required": true,
|
|
1227
1326
|
"positional": true,
|
|
1228
|
-
"help": "Text
|
|
1327
|
+
"help": "Text, command (e.g. /review), or skill (e.g. $imagegen)"
|
|
1229
1328
|
}
|
|
1230
1329
|
],
|
|
1231
1330
|
"type": "ts",
|
|
1232
|
-
"modulePath": "
|
|
1331
|
+
"modulePath": "codex/send.js",
|
|
1233
1332
|
"domain": "localhost",
|
|
1234
1333
|
"columns": [
|
|
1235
1334
|
"Status",
|
|
@@ -1237,14 +1336,14 @@
|
|
|
1237
1336
|
]
|
|
1238
1337
|
},
|
|
1239
1338
|
{
|
|
1240
|
-
"site": "
|
|
1339
|
+
"site": "codex",
|
|
1241
1340
|
"name": "status",
|
|
1242
|
-
"description": "Check active CDP connection to
|
|
1341
|
+
"description": "Check active CDP connection to OpenAI Codex App",
|
|
1243
1342
|
"strategy": "ui",
|
|
1244
1343
|
"browser": true,
|
|
1245
1344
|
"args": [],
|
|
1246
1345
|
"type": "ts",
|
|
1247
|
-
"modulePath": "
|
|
1346
|
+
"modulePath": "codex/status.js",
|
|
1248
1347
|
"domain": "localhost",
|
|
1249
1348
|
"columns": [
|
|
1250
1349
|
"Status",
|
|
@@ -1253,145 +1352,1319 @@
|
|
|
1253
1352
|
]
|
|
1254
1353
|
},
|
|
1255
1354
|
{
|
|
1256
|
-
"site": "
|
|
1257
|
-
"name": "
|
|
1258
|
-
"description": "
|
|
1259
|
-
"
|
|
1260
|
-
"
|
|
1261
|
-
"browser": false,
|
|
1355
|
+
"site": "coupang",
|
|
1356
|
+
"name": "add-to-cart",
|
|
1357
|
+
"description": "Add a Coupang product to cart using logged-in browser session",
|
|
1358
|
+
"strategy": "cookie",
|
|
1359
|
+
"browser": true,
|
|
1262
1360
|
"args": [
|
|
1263
1361
|
{
|
|
1264
|
-
"name": "
|
|
1265
|
-
"type": "
|
|
1266
|
-
"default": 20,
|
|
1362
|
+
"name": "productId",
|
|
1363
|
+
"type": "str",
|
|
1267
1364
|
"required": false,
|
|
1268
|
-
"help": "
|
|
1269
|
-
}
|
|
1270
|
-
],
|
|
1271
|
-
"columns": [
|
|
1272
|
-
"rank",
|
|
1273
|
-
"title",
|
|
1274
|
-
"score",
|
|
1275
|
-
"author",
|
|
1276
|
-
"comments"
|
|
1277
|
-
],
|
|
1278
|
-
"pipeline": [
|
|
1279
|
-
{
|
|
1280
|
-
"fetch": {
|
|
1281
|
-
"url": "https://hacker-news.firebaseio.com/v0/topstories.json"
|
|
1282
|
-
}
|
|
1283
|
-
},
|
|
1284
|
-
{
|
|
1285
|
-
"limit": 30
|
|
1286
|
-
},
|
|
1287
|
-
{
|
|
1288
|
-
"map": {
|
|
1289
|
-
"id": "${{ item }}"
|
|
1290
|
-
}
|
|
1291
|
-
},
|
|
1292
|
-
{
|
|
1293
|
-
"fetch": {
|
|
1294
|
-
"url": "https://hacker-news.firebaseio.com/v0/item/${{ item.id }}.json"
|
|
1295
|
-
}
|
|
1296
|
-
},
|
|
1297
|
-
{
|
|
1298
|
-
"map": {
|
|
1299
|
-
"rank": "${{ index + 1 }}",
|
|
1300
|
-
"title": "${{ item.title }}",
|
|
1301
|
-
"score": "${{ item.score }}",
|
|
1302
|
-
"author": "${{ item.by }}",
|
|
1303
|
-
"comments": "${{ item.descendants }}",
|
|
1304
|
-
"url": "${{ item.url }}"
|
|
1305
|
-
}
|
|
1365
|
+
"help": "Coupang product ID"
|
|
1306
1366
|
},
|
|
1307
1367
|
{
|
|
1308
|
-
"
|
|
1368
|
+
"name": "url",
|
|
1369
|
+
"type": "str",
|
|
1370
|
+
"required": false,
|
|
1371
|
+
"help": "Canonical product URL"
|
|
1309
1372
|
}
|
|
1310
1373
|
],
|
|
1311
|
-
"type": "
|
|
1374
|
+
"type": "ts",
|
|
1375
|
+
"modulePath": "coupang/add-to-cart.js",
|
|
1376
|
+
"domain": "www.coupang.com",
|
|
1377
|
+
"columns": [
|
|
1378
|
+
"ok",
|
|
1379
|
+
"product_id",
|
|
1380
|
+
"url",
|
|
1381
|
+
"message"
|
|
1382
|
+
]
|
|
1312
1383
|
},
|
|
1313
1384
|
{
|
|
1314
|
-
"site": "
|
|
1385
|
+
"site": "coupang",
|
|
1315
1386
|
"name": "search",
|
|
1316
|
-
"description": "",
|
|
1317
|
-
"strategy": "
|
|
1387
|
+
"description": "Search Coupang products with logged-in browser session",
|
|
1388
|
+
"strategy": "cookie",
|
|
1318
1389
|
"browser": true,
|
|
1319
1390
|
"args": [
|
|
1320
1391
|
{
|
|
1321
1392
|
"name": "query",
|
|
1322
|
-
"type": "
|
|
1393
|
+
"type": "str",
|
|
1323
1394
|
"required": true,
|
|
1324
|
-
"help": "
|
|
1325
|
-
},
|
|
1326
|
-
{
|
|
1327
|
-
"name": "location",
|
|
1328
|
-
"type": "string",
|
|
1329
|
-
"required": false,
|
|
1330
|
-
"help": "Location text such as San Francisco Bay Area"
|
|
1395
|
+
"help": "Search keyword"
|
|
1331
1396
|
},
|
|
1332
1397
|
{
|
|
1333
|
-
"name": "
|
|
1398
|
+
"name": "page",
|
|
1334
1399
|
"type": "int",
|
|
1335
|
-
"default":
|
|
1400
|
+
"default": 1,
|
|
1336
1401
|
"required": false,
|
|
1337
|
-
"help": "
|
|
1402
|
+
"help": "Search result page number"
|
|
1338
1403
|
},
|
|
1339
1404
|
{
|
|
1340
|
-
"name": "
|
|
1405
|
+
"name": "limit",
|
|
1341
1406
|
"type": "int",
|
|
1342
|
-
"default":
|
|
1407
|
+
"default": 20,
|
|
1343
1408
|
"required": false,
|
|
1344
|
-
"help": "
|
|
1409
|
+
"help": "Max results (max 50)"
|
|
1345
1410
|
},
|
|
1346
1411
|
{
|
|
1347
|
-
"name": "
|
|
1348
|
-
"type": "
|
|
1349
|
-
"default": false,
|
|
1412
|
+
"name": "filter",
|
|
1413
|
+
"type": "str",
|
|
1350
1414
|
"required": false,
|
|
1351
|
-
"help": "
|
|
1352
|
-
}
|
|
1415
|
+
"help": "Optional search filter (currently supports: rocket)"
|
|
1416
|
+
}
|
|
1417
|
+
],
|
|
1418
|
+
"type": "ts",
|
|
1419
|
+
"modulePath": "coupang/search.js",
|
|
1420
|
+
"domain": "www.coupang.com",
|
|
1421
|
+
"columns": [
|
|
1422
|
+
"rank",
|
|
1423
|
+
"title",
|
|
1424
|
+
"price",
|
|
1425
|
+
"unit_price",
|
|
1426
|
+
"rating",
|
|
1427
|
+
"review_count",
|
|
1428
|
+
"rocket",
|
|
1429
|
+
"delivery_type",
|
|
1430
|
+
"delivery_promise",
|
|
1431
|
+
"url"
|
|
1432
|
+
]
|
|
1433
|
+
},
|
|
1434
|
+
{
|
|
1435
|
+
"site": "ctrip",
|
|
1436
|
+
"name": "search",
|
|
1437
|
+
"description": "携程旅行搜索",
|
|
1438
|
+
"strategy": "cookie",
|
|
1439
|
+
"browser": true,
|
|
1440
|
+
"args": [
|
|
1353
1441
|
{
|
|
1354
|
-
"name": "
|
|
1355
|
-
"type": "
|
|
1356
|
-
"required":
|
|
1357
|
-
"help": "
|
|
1442
|
+
"name": "query",
|
|
1443
|
+
"type": "str",
|
|
1444
|
+
"required": true,
|
|
1445
|
+
"help": "Search keyword (city or attraction)"
|
|
1358
1446
|
},
|
|
1359
1447
|
{
|
|
1360
|
-
"name": "
|
|
1361
|
-
"type": "
|
|
1448
|
+
"name": "limit",
|
|
1449
|
+
"type": "int",
|
|
1450
|
+
"default": 15,
|
|
1362
1451
|
"required": false,
|
|
1363
|
-
"help": "
|
|
1364
|
-
}
|
|
1452
|
+
"help": "Number of results"
|
|
1453
|
+
}
|
|
1454
|
+
],
|
|
1455
|
+
"type": "ts",
|
|
1456
|
+
"modulePath": "ctrip/search.js",
|
|
1457
|
+
"domain": "www.ctrip.com",
|
|
1458
|
+
"columns": [
|
|
1459
|
+
"rank",
|
|
1460
|
+
"name",
|
|
1461
|
+
"type",
|
|
1462
|
+
"score",
|
|
1463
|
+
"price",
|
|
1464
|
+
"url"
|
|
1465
|
+
]
|
|
1466
|
+
},
|
|
1467
|
+
{
|
|
1468
|
+
"site": "cursor",
|
|
1469
|
+
"name": "ask",
|
|
1470
|
+
"description": "Send a prompt and wait for the AI response (send + wait + read)",
|
|
1471
|
+
"strategy": "ui",
|
|
1472
|
+
"browser": true,
|
|
1473
|
+
"args": [
|
|
1365
1474
|
{
|
|
1366
|
-
"name": "
|
|
1367
|
-
"type": "
|
|
1368
|
-
"required":
|
|
1369
|
-
"
|
|
1475
|
+
"name": "text",
|
|
1476
|
+
"type": "str",
|
|
1477
|
+
"required": true,
|
|
1478
|
+
"positional": true,
|
|
1479
|
+
"help": "Prompt to send"
|
|
1370
1480
|
},
|
|
1371
1481
|
{
|
|
1372
|
-
"name": "
|
|
1373
|
-
"type": "
|
|
1482
|
+
"name": "timeout",
|
|
1483
|
+
"type": "str",
|
|
1484
|
+
"default": "30)",
|
|
1374
1485
|
"required": false,
|
|
1375
|
-
"help": "
|
|
1376
|
-
}
|
|
1377
|
-
|
|
1486
|
+
"help": "Max seconds to wait for response (default: 30)"
|
|
1487
|
+
}
|
|
1488
|
+
],
|
|
1489
|
+
"type": "ts",
|
|
1490
|
+
"modulePath": "cursor/ask.js",
|
|
1491
|
+
"domain": "localhost",
|
|
1492
|
+
"columns": [
|
|
1493
|
+
"Role",
|
|
1494
|
+
"Text"
|
|
1495
|
+
]
|
|
1496
|
+
},
|
|
1497
|
+
{
|
|
1498
|
+
"site": "cursor",
|
|
1499
|
+
"name": "composer",
|
|
1500
|
+
"description": "Send a prompt directly into Cursor Composer (Cmd+I shortcut)",
|
|
1501
|
+
"strategy": "ui",
|
|
1502
|
+
"browser": true,
|
|
1503
|
+
"args": [
|
|
1504
|
+
{
|
|
1505
|
+
"name": "text",
|
|
1506
|
+
"type": "str",
|
|
1507
|
+
"required": true,
|
|
1508
|
+
"positional": true,
|
|
1509
|
+
"help": "Text to send into Composer"
|
|
1510
|
+
}
|
|
1511
|
+
],
|
|
1512
|
+
"type": "ts",
|
|
1513
|
+
"modulePath": "cursor/composer.js",
|
|
1514
|
+
"domain": "localhost",
|
|
1515
|
+
"columns": [
|
|
1516
|
+
"Status",
|
|
1517
|
+
"InjectedText"
|
|
1518
|
+
]
|
|
1519
|
+
},
|
|
1520
|
+
{
|
|
1521
|
+
"site": "cursor",
|
|
1522
|
+
"name": "dump",
|
|
1523
|
+
"description": "Dump the DOM and Accessibility tree of Cursor for reverse-engineering",
|
|
1524
|
+
"strategy": "ui",
|
|
1525
|
+
"browser": true,
|
|
1526
|
+
"args": [],
|
|
1527
|
+
"type": "ts",
|
|
1528
|
+
"modulePath": "cursor/dump.js",
|
|
1529
|
+
"domain": "localhost",
|
|
1530
|
+
"columns": [
|
|
1531
|
+
"action",
|
|
1532
|
+
"files"
|
|
1533
|
+
]
|
|
1534
|
+
},
|
|
1535
|
+
{
|
|
1536
|
+
"site": "cursor",
|
|
1537
|
+
"name": "export",
|
|
1538
|
+
"description": "Export the current ${site} conversation to a Markdown file",
|
|
1539
|
+
"strategy": "ui",
|
|
1540
|
+
"browser": true,
|
|
1541
|
+
"args": [
|
|
1542
|
+
{
|
|
1543
|
+
"name": "output",
|
|
1544
|
+
"type": "str",
|
|
1545
|
+
"default": "/tmp/${site",
|
|
1546
|
+
"required": false,
|
|
1547
|
+
"positional": true,
|
|
1548
|
+
"help": "Output file (default: /tmp/${site}-export.md)"
|
|
1549
|
+
}
|
|
1550
|
+
],
|
|
1551
|
+
"type": "ts",
|
|
1552
|
+
"modulePath": "cursor/export.js",
|
|
1553
|
+
"domain": "localhost",
|
|
1554
|
+
"columns": [
|
|
1555
|
+
"Status",
|
|
1556
|
+
"File",
|
|
1557
|
+
"Messages"
|
|
1558
|
+
]
|
|
1559
|
+
},
|
|
1560
|
+
{
|
|
1561
|
+
"site": "cursor",
|
|
1562
|
+
"name": "extract-code",
|
|
1563
|
+
"description": "Extract multi-line code blocks from the current Cursor conversation",
|
|
1564
|
+
"strategy": "ui",
|
|
1565
|
+
"browser": true,
|
|
1566
|
+
"args": [],
|
|
1567
|
+
"type": "ts",
|
|
1568
|
+
"modulePath": "cursor/extract-code.js",
|
|
1569
|
+
"domain": "localhost",
|
|
1570
|
+
"columns": [
|
|
1571
|
+
"Code"
|
|
1572
|
+
]
|
|
1573
|
+
},
|
|
1574
|
+
{
|
|
1575
|
+
"site": "cursor",
|
|
1576
|
+
"name": "history",
|
|
1577
|
+
"description": "List recent chat sessions from the Cursor sidebar",
|
|
1578
|
+
"strategy": "ui",
|
|
1579
|
+
"browser": true,
|
|
1580
|
+
"args": [],
|
|
1581
|
+
"type": "ts",
|
|
1582
|
+
"modulePath": "cursor/history.js",
|
|
1583
|
+
"domain": "localhost",
|
|
1584
|
+
"columns": [
|
|
1585
|
+
"Index",
|
|
1586
|
+
"Title"
|
|
1587
|
+
]
|
|
1588
|
+
},
|
|
1589
|
+
{
|
|
1590
|
+
"site": "cursor",
|
|
1591
|
+
"name": "model",
|
|
1592
|
+
"description": "Get or switch the currently active AI model in Cursor",
|
|
1593
|
+
"strategy": "ui",
|
|
1594
|
+
"browser": true,
|
|
1595
|
+
"args": [
|
|
1596
|
+
{
|
|
1597
|
+
"name": "model_name",
|
|
1598
|
+
"type": "str",
|
|
1599
|
+
"required": false,
|
|
1600
|
+
"positional": true,
|
|
1601
|
+
"help": "The ID of the model to switch to (e.g. claude-3.5-sonnet)"
|
|
1602
|
+
}
|
|
1603
|
+
],
|
|
1604
|
+
"type": "ts",
|
|
1605
|
+
"modulePath": "cursor/model.js",
|
|
1606
|
+
"domain": "localhost",
|
|
1607
|
+
"columns": [
|
|
1608
|
+
"Status",
|
|
1609
|
+
"Model"
|
|
1610
|
+
]
|
|
1611
|
+
},
|
|
1612
|
+
{
|
|
1613
|
+
"site": "cursor",
|
|
1614
|
+
"name": "new",
|
|
1615
|
+
"description": "Start a new Cursor chat or Composer session",
|
|
1616
|
+
"strategy": "ui",
|
|
1617
|
+
"browser": true,
|
|
1618
|
+
"args": [],
|
|
1619
|
+
"type": "ts",
|
|
1620
|
+
"modulePath": "cursor/new.js",
|
|
1621
|
+
"domain": "localhost",
|
|
1622
|
+
"columns": [
|
|
1623
|
+
"Status"
|
|
1624
|
+
]
|
|
1625
|
+
},
|
|
1626
|
+
{
|
|
1627
|
+
"site": "cursor",
|
|
1628
|
+
"name": "read",
|
|
1629
|
+
"description": "Read the current Cursor chat/composer conversation history",
|
|
1630
|
+
"strategy": "ui",
|
|
1631
|
+
"browser": true,
|
|
1632
|
+
"args": [],
|
|
1633
|
+
"type": "ts",
|
|
1634
|
+
"modulePath": "cursor/read.js",
|
|
1635
|
+
"domain": "localhost",
|
|
1636
|
+
"columns": [
|
|
1637
|
+
"Role",
|
|
1638
|
+
"Text"
|
|
1639
|
+
]
|
|
1640
|
+
},
|
|
1641
|
+
{
|
|
1642
|
+
"site": "cursor",
|
|
1643
|
+
"name": "screenshot",
|
|
1644
|
+
"description": "Capture a snapshot of the current ${site} window (DOM + Accessibility tree)",
|
|
1645
|
+
"strategy": "ui",
|
|
1646
|
+
"browser": true,
|
|
1647
|
+
"args": [
|
|
1648
|
+
{
|
|
1649
|
+
"name": "output",
|
|
1650
|
+
"type": "str",
|
|
1651
|
+
"default": "/tmp/${site",
|
|
1652
|
+
"required": false,
|
|
1653
|
+
"positional": true,
|
|
1654
|
+
"help": "Output file path (default: /tmp/${site}-snapshot.txt)"
|
|
1655
|
+
}
|
|
1656
|
+
],
|
|
1657
|
+
"type": "ts",
|
|
1658
|
+
"modulePath": "cursor/screenshot.js",
|
|
1659
|
+
"domain": "localhost",
|
|
1660
|
+
"columns": [
|
|
1661
|
+
"Status",
|
|
1662
|
+
"File"
|
|
1663
|
+
]
|
|
1664
|
+
},
|
|
1665
|
+
{
|
|
1666
|
+
"site": "cursor",
|
|
1667
|
+
"name": "send",
|
|
1668
|
+
"description": "Send a prompt directly into Cursor Composer/Chat",
|
|
1669
|
+
"strategy": "ui",
|
|
1670
|
+
"browser": true,
|
|
1671
|
+
"args": [
|
|
1672
|
+
{
|
|
1673
|
+
"name": "text",
|
|
1674
|
+
"type": "str",
|
|
1675
|
+
"required": true,
|
|
1676
|
+
"positional": true,
|
|
1677
|
+
"help": "Text to send into Cursor"
|
|
1678
|
+
}
|
|
1679
|
+
],
|
|
1680
|
+
"type": "ts",
|
|
1681
|
+
"modulePath": "cursor/send.js",
|
|
1682
|
+
"domain": "localhost",
|
|
1683
|
+
"columns": [
|
|
1684
|
+
"Status",
|
|
1685
|
+
"InjectedText"
|
|
1686
|
+
]
|
|
1687
|
+
},
|
|
1688
|
+
{
|
|
1689
|
+
"site": "cursor",
|
|
1690
|
+
"name": "status",
|
|
1691
|
+
"description": "Check active CDP connection to Cursor AI Editor",
|
|
1692
|
+
"strategy": "ui",
|
|
1693
|
+
"browser": true,
|
|
1694
|
+
"args": [],
|
|
1695
|
+
"type": "ts",
|
|
1696
|
+
"modulePath": "cursor/status.js",
|
|
1697
|
+
"domain": "localhost",
|
|
1698
|
+
"columns": [
|
|
1699
|
+
"Status",
|
|
1700
|
+
"Url",
|
|
1701
|
+
"Title"
|
|
1702
|
+
]
|
|
1703
|
+
},
|
|
1704
|
+
{
|
|
1705
|
+
"site": "discord-app",
|
|
1706
|
+
"name": "channels",
|
|
1707
|
+
"description": "List channels in the current Discord server",
|
|
1708
|
+
"strategy": "ui",
|
|
1709
|
+
"browser": true,
|
|
1710
|
+
"args": [],
|
|
1711
|
+
"type": "ts",
|
|
1712
|
+
"modulePath": "discord-app/channels.js",
|
|
1713
|
+
"domain": "localhost",
|
|
1714
|
+
"columns": [
|
|
1715
|
+
"Index",
|
|
1716
|
+
"Channel",
|
|
1717
|
+
"Type"
|
|
1718
|
+
]
|
|
1719
|
+
},
|
|
1720
|
+
{
|
|
1721
|
+
"site": "discord-app",
|
|
1722
|
+
"name": "members",
|
|
1723
|
+
"description": "List online members in the current Discord channel",
|
|
1724
|
+
"strategy": "ui",
|
|
1725
|
+
"browser": true,
|
|
1726
|
+
"args": [],
|
|
1727
|
+
"type": "ts",
|
|
1728
|
+
"modulePath": "discord-app/members.js",
|
|
1729
|
+
"domain": "localhost",
|
|
1730
|
+
"columns": [
|
|
1731
|
+
"Index",
|
|
1732
|
+
"Name",
|
|
1733
|
+
"Status"
|
|
1734
|
+
]
|
|
1735
|
+
},
|
|
1736
|
+
{
|
|
1737
|
+
"site": "discord-app",
|
|
1738
|
+
"name": "read",
|
|
1739
|
+
"description": "Read recent messages from the active Discord channel",
|
|
1740
|
+
"strategy": "ui",
|
|
1741
|
+
"browser": true,
|
|
1742
|
+
"args": [
|
|
1743
|
+
{
|
|
1744
|
+
"name": "count",
|
|
1745
|
+
"type": "str",
|
|
1746
|
+
"default": "20)",
|
|
1747
|
+
"required": false,
|
|
1748
|
+
"help": "Number of messages to read (default: 20)"
|
|
1749
|
+
}
|
|
1750
|
+
],
|
|
1751
|
+
"type": "ts",
|
|
1752
|
+
"modulePath": "discord-app/read.js",
|
|
1753
|
+
"domain": "localhost",
|
|
1754
|
+
"columns": [
|
|
1755
|
+
"Author",
|
|
1756
|
+
"Time",
|
|
1757
|
+
"Message"
|
|
1758
|
+
]
|
|
1759
|
+
},
|
|
1760
|
+
{
|
|
1761
|
+
"site": "discord-app",
|
|
1762
|
+
"name": "search",
|
|
1763
|
+
"description": "Search messages in the current Discord server/channel (Cmd+F)",
|
|
1764
|
+
"strategy": "ui",
|
|
1765
|
+
"browser": true,
|
|
1766
|
+
"args": [
|
|
1767
|
+
{
|
|
1768
|
+
"name": "query",
|
|
1769
|
+
"type": "str",
|
|
1770
|
+
"required": true,
|
|
1771
|
+
"positional": true,
|
|
1772
|
+
"help": "Search query"
|
|
1773
|
+
}
|
|
1774
|
+
],
|
|
1775
|
+
"type": "ts",
|
|
1776
|
+
"modulePath": "discord-app/search.js",
|
|
1777
|
+
"domain": "localhost",
|
|
1778
|
+
"columns": [
|
|
1779
|
+
"Index",
|
|
1780
|
+
"Author",
|
|
1781
|
+
"Message"
|
|
1782
|
+
]
|
|
1783
|
+
},
|
|
1784
|
+
{
|
|
1785
|
+
"site": "discord-app",
|
|
1786
|
+
"name": "send",
|
|
1787
|
+
"description": "Send a message in the active Discord channel",
|
|
1788
|
+
"strategy": "ui",
|
|
1789
|
+
"browser": true,
|
|
1790
|
+
"args": [
|
|
1791
|
+
{
|
|
1792
|
+
"name": "text",
|
|
1793
|
+
"type": "str",
|
|
1794
|
+
"required": true,
|
|
1795
|
+
"positional": true,
|
|
1796
|
+
"help": "Message to send"
|
|
1797
|
+
}
|
|
1798
|
+
],
|
|
1799
|
+
"type": "ts",
|
|
1800
|
+
"modulePath": "discord-app/send.js",
|
|
1801
|
+
"domain": "localhost",
|
|
1802
|
+
"columns": [
|
|
1803
|
+
"Status"
|
|
1804
|
+
]
|
|
1805
|
+
},
|
|
1806
|
+
{
|
|
1807
|
+
"site": "discord-app",
|
|
1808
|
+
"name": "servers",
|
|
1809
|
+
"description": "List all Discord servers (guilds) in the sidebar",
|
|
1810
|
+
"strategy": "ui",
|
|
1811
|
+
"browser": true,
|
|
1812
|
+
"args": [],
|
|
1813
|
+
"type": "ts",
|
|
1814
|
+
"modulePath": "discord-app/servers.js",
|
|
1815
|
+
"domain": "localhost",
|
|
1816
|
+
"columns": [
|
|
1817
|
+
"Index",
|
|
1818
|
+
"Server"
|
|
1819
|
+
]
|
|
1820
|
+
},
|
|
1821
|
+
{
|
|
1822
|
+
"site": "discord-app",
|
|
1823
|
+
"name": "status",
|
|
1824
|
+
"description": "Check active CDP connection to Discord Desktop",
|
|
1825
|
+
"strategy": "ui",
|
|
1826
|
+
"browser": true,
|
|
1827
|
+
"args": [],
|
|
1828
|
+
"type": "ts",
|
|
1829
|
+
"modulePath": "discord-app/status.js",
|
|
1830
|
+
"domain": "localhost",
|
|
1831
|
+
"columns": [
|
|
1832
|
+
"Status",
|
|
1833
|
+
"Url",
|
|
1834
|
+
"Title"
|
|
1835
|
+
]
|
|
1836
|
+
},
|
|
1837
|
+
{
|
|
1838
|
+
"site": "feishu",
|
|
1839
|
+
"name": "new",
|
|
1840
|
+
"description": "Create a new message or document in Feishu",
|
|
1841
|
+
"strategy": "public",
|
|
1842
|
+
"browser": false,
|
|
1843
|
+
"args": [],
|
|
1844
|
+
"type": "ts",
|
|
1845
|
+
"modulePath": "feishu/new.js",
|
|
1846
|
+
"domain": "localhost",
|
|
1847
|
+
"columns": [
|
|
1848
|
+
"Status"
|
|
1849
|
+
]
|
|
1850
|
+
},
|
|
1851
|
+
{
|
|
1852
|
+
"site": "feishu",
|
|
1853
|
+
"name": "read",
|
|
1854
|
+
"description": "Read the current chat content by selecting all and copying",
|
|
1855
|
+
"strategy": "public",
|
|
1856
|
+
"browser": false,
|
|
1857
|
+
"args": [],
|
|
1858
|
+
"type": "ts",
|
|
1859
|
+
"modulePath": "feishu/read.js",
|
|
1860
|
+
"domain": "localhost",
|
|
1861
|
+
"columns": [
|
|
1862
|
+
"Content"
|
|
1863
|
+
]
|
|
1864
|
+
},
|
|
1865
|
+
{
|
|
1866
|
+
"site": "feishu",
|
|
1867
|
+
"name": "search",
|
|
1868
|
+
"description": "Open Feishu global search and type a query (Cmd+K)",
|
|
1869
|
+
"strategy": "public",
|
|
1870
|
+
"browser": false,
|
|
1871
|
+
"args": [
|
|
1872
|
+
{
|
|
1873
|
+
"name": "query",
|
|
1874
|
+
"type": "str",
|
|
1875
|
+
"required": true,
|
|
1876
|
+
"positional": true,
|
|
1877
|
+
"help": "Search query"
|
|
1878
|
+
}
|
|
1879
|
+
],
|
|
1880
|
+
"type": "ts",
|
|
1881
|
+
"modulePath": "feishu/search.js",
|
|
1882
|
+
"domain": "localhost",
|
|
1883
|
+
"columns": [
|
|
1884
|
+
"Status"
|
|
1885
|
+
]
|
|
1886
|
+
},
|
|
1887
|
+
{
|
|
1888
|
+
"site": "feishu",
|
|
1889
|
+
"name": "send",
|
|
1890
|
+
"description": "Send a message in the active Feishu (Lark) conversation",
|
|
1891
|
+
"strategy": "public",
|
|
1892
|
+
"browser": false,
|
|
1893
|
+
"args": [
|
|
1894
|
+
{
|
|
1895
|
+
"name": "text",
|
|
1896
|
+
"type": "str",
|
|
1897
|
+
"required": true,
|
|
1898
|
+
"positional": true,
|
|
1899
|
+
"help": "Message to send"
|
|
1900
|
+
}
|
|
1901
|
+
],
|
|
1902
|
+
"type": "ts",
|
|
1903
|
+
"modulePath": "feishu/send.js",
|
|
1904
|
+
"domain": "localhost",
|
|
1905
|
+
"columns": [
|
|
1906
|
+
"Status"
|
|
1907
|
+
]
|
|
1908
|
+
},
|
|
1909
|
+
{
|
|
1910
|
+
"site": "feishu",
|
|
1911
|
+
"name": "status",
|
|
1912
|
+
"description": "Check if Feishu (Lark) Desktop is running on macOS",
|
|
1913
|
+
"strategy": "public",
|
|
1914
|
+
"browser": false,
|
|
1915
|
+
"args": [],
|
|
1916
|
+
"type": "ts",
|
|
1917
|
+
"modulePath": "feishu/status.js",
|
|
1918
|
+
"domain": "localhost",
|
|
1919
|
+
"columns": [
|
|
1920
|
+
"Status",
|
|
1921
|
+
"Detail"
|
|
1922
|
+
]
|
|
1923
|
+
},
|
|
1924
|
+
{
|
|
1925
|
+
"site": "grok",
|
|
1926
|
+
"name": "ask",
|
|
1927
|
+
"description": "Send a message to Grok and get response",
|
|
1928
|
+
"strategy": "cookie",
|
|
1929
|
+
"browser": true,
|
|
1930
|
+
"args": [
|
|
1931
|
+
{
|
|
1932
|
+
"name": "prompt",
|
|
1933
|
+
"type": "string",
|
|
1934
|
+
"required": true,
|
|
1935
|
+
"help": ""
|
|
1936
|
+
},
|
|
1937
|
+
{
|
|
1938
|
+
"name": "timeout",
|
|
1939
|
+
"type": "int",
|
|
1940
|
+
"default": 120,
|
|
1941
|
+
"required": false,
|
|
1942
|
+
"help": ""
|
|
1943
|
+
},
|
|
1944
|
+
{
|
|
1945
|
+
"name": "new",
|
|
1946
|
+
"type": "boolean",
|
|
1947
|
+
"default": false,
|
|
1948
|
+
"required": false,
|
|
1949
|
+
"help": ""
|
|
1950
|
+
}
|
|
1951
|
+
],
|
|
1952
|
+
"type": "ts",
|
|
1953
|
+
"modulePath": "grok/ask.js",
|
|
1954
|
+
"domain": "grok.com",
|
|
1955
|
+
"columns": [
|
|
1956
|
+
"response"
|
|
1957
|
+
]
|
|
1958
|
+
},
|
|
1959
|
+
{
|
|
1960
|
+
"site": "grok",
|
|
1961
|
+
"name": "debug",
|
|
1962
|
+
"description": "Debug grok page structure",
|
|
1963
|
+
"strategy": "cookie",
|
|
1964
|
+
"browser": true,
|
|
1965
|
+
"args": [],
|
|
1966
|
+
"type": "ts",
|
|
1967
|
+
"modulePath": "grok/debug.js",
|
|
1968
|
+
"domain": "grok.com",
|
|
1969
|
+
"columns": [
|
|
1970
|
+
"data"
|
|
1971
|
+
]
|
|
1972
|
+
},
|
|
1973
|
+
{
|
|
1974
|
+
"site": "hackernews",
|
|
1975
|
+
"name": "top",
|
|
1976
|
+
"description": "Hacker News top stories",
|
|
1977
|
+
"domain": "news.ycombinator.com",
|
|
1978
|
+
"strategy": "public",
|
|
1979
|
+
"browser": false,
|
|
1980
|
+
"args": [
|
|
1981
|
+
{
|
|
1982
|
+
"name": "limit",
|
|
1983
|
+
"type": "int",
|
|
1984
|
+
"default": 20,
|
|
1985
|
+
"required": false,
|
|
1986
|
+
"help": "Number of stories"
|
|
1987
|
+
}
|
|
1988
|
+
],
|
|
1989
|
+
"columns": [
|
|
1990
|
+
"rank",
|
|
1991
|
+
"title",
|
|
1992
|
+
"score",
|
|
1993
|
+
"author",
|
|
1994
|
+
"comments"
|
|
1995
|
+
],
|
|
1996
|
+
"pipeline": [
|
|
1997
|
+
{
|
|
1998
|
+
"fetch": {
|
|
1999
|
+
"url": "https://hacker-news.firebaseio.com/v0/topstories.json"
|
|
2000
|
+
}
|
|
2001
|
+
},
|
|
2002
|
+
{
|
|
2003
|
+
"limit": 30
|
|
2004
|
+
},
|
|
2005
|
+
{
|
|
2006
|
+
"map": {
|
|
2007
|
+
"id": "${{ item }}"
|
|
2008
|
+
}
|
|
2009
|
+
},
|
|
2010
|
+
{
|
|
2011
|
+
"fetch": {
|
|
2012
|
+
"url": "https://hacker-news.firebaseio.com/v0/item/${{ item.id }}.json"
|
|
2013
|
+
}
|
|
2014
|
+
},
|
|
2015
|
+
{
|
|
2016
|
+
"map": {
|
|
2017
|
+
"rank": "${{ index + 1 }}",
|
|
2018
|
+
"title": "${{ item.title }}",
|
|
2019
|
+
"score": "${{ item.score }}",
|
|
2020
|
+
"author": "${{ item.by }}",
|
|
2021
|
+
"comments": "${{ item.descendants }}",
|
|
2022
|
+
"url": "${{ item.url }}"
|
|
2023
|
+
}
|
|
2024
|
+
},
|
|
2025
|
+
{
|
|
2026
|
+
"limit": "${{ args.limit }}"
|
|
2027
|
+
}
|
|
2028
|
+
],
|
|
2029
|
+
"type": "yaml"
|
|
2030
|
+
},
|
|
2031
|
+
{
|
|
2032
|
+
"site": "jimeng",
|
|
2033
|
+
"name": "generate",
|
|
2034
|
+
"description": "即梦AI 文生图 — 输入 prompt 生成图片",
|
|
2035
|
+
"domain": "jimeng.jianying.com",
|
|
2036
|
+
"strategy": "cookie",
|
|
2037
|
+
"browser": true,
|
|
2038
|
+
"args": [
|
|
2039
|
+
{
|
|
2040
|
+
"name": "prompt",
|
|
2041
|
+
"type": "string",
|
|
2042
|
+
"required": true,
|
|
2043
|
+
"help": "图片描述 prompt"
|
|
2044
|
+
},
|
|
2045
|
+
{
|
|
2046
|
+
"name": "model",
|
|
2047
|
+
"type": "string",
|
|
2048
|
+
"default": "high_aes_general_v50",
|
|
2049
|
+
"required": false,
|
|
2050
|
+
"help": "模型: high_aes_general_v50 (5.0 Lite), high_aes_general_v42 (4.6), high_aes_general_v40 (4.0)"
|
|
2051
|
+
},
|
|
2052
|
+
{
|
|
2053
|
+
"name": "wait",
|
|
2054
|
+
"type": "int",
|
|
2055
|
+
"default": 40,
|
|
2056
|
+
"required": false,
|
|
2057
|
+
"help": "等待生成完成的秒数"
|
|
2058
|
+
}
|
|
2059
|
+
],
|
|
2060
|
+
"columns": [
|
|
2061
|
+
"status",
|
|
2062
|
+
"prompt",
|
|
2063
|
+
"image_count",
|
|
2064
|
+
"image_urls"
|
|
2065
|
+
],
|
|
2066
|
+
"pipeline": [
|
|
2067
|
+
{
|
|
2068
|
+
"navigate": "https://jimeng.jianying.com/ai-tool/generate?type=image&workspace=0"
|
|
2069
|
+
},
|
|
2070
|
+
{
|
|
2071
|
+
"wait": 3
|
|
2072
|
+
},
|
|
2073
|
+
{
|
|
2074
|
+
"evaluate": "(async () => {\n const prompt = ${{ args.prompt | json }};\n const waitSec = ${{ args.wait }};\n \n // Step 1: Count existing images before generation\n const beforeImgs = document.querySelectorAll('img[src*=\"dreamina-sign\"], img[src*=\"tb4s082cfz\"]').length;\n \n // Step 2: Clear and set prompt\n const editors = document.querySelectorAll('[contenteditable=\"true\"]');\n const editor = editors[0];\n if (!editor) return [{ status: 'failed', prompt: prompt, image_count: 0, image_urls: 'Editor not found' }];\n \n editor.focus();\n await new Promise(r => setTimeout(r, 200));\n document.execCommand('selectAll');\n await new Promise(r => setTimeout(r, 100));\n document.execCommand('delete');\n await new Promise(r => setTimeout(r, 200));\n document.execCommand('insertText', false, prompt);\n await new Promise(r => setTimeout(r, 500));\n \n // Step 3: Click generate\n const btn = document.querySelector('.lv-btn.lv-btn-primary[class*=\"circle\"]');\n if (!btn) return [{ status: 'failed', prompt: prompt, image_count: 0, image_urls: 'Generate button not found' }];\n btn.click();\n \n // Step 4: Wait for new images to appear\n let newImgs = [];\n for (let i = 0; i < waitSec; i++) {\n await new Promise(r => setTimeout(r, 1000));\n const allImgs = document.querySelectorAll('img[src*=\"dreamina-sign\"], img[src*=\"tb4s082cfz\"]');\n if (allImgs.length > beforeImgs) {\n // New images appeared — generation complete\n newImgs = Array.from(allImgs).slice(0, allImgs.length - beforeImgs);\n break;\n }\n }\n \n if (newImgs.length === 0) {\n return [{ status: 'timeout', prompt: prompt, image_count: 0, image_urls: 'Generation may still be in progress' }];\n }\n \n // Step 5: Extract image URLs (use thumbnail URLs which are accessible)\n const urls = newImgs.map(img => img.src);\n \n return [{ \n status: 'success', \n prompt: prompt.substring(0, 80), \n image_count: urls.length, \n image_urls: urls.join('\\n')\n }];\n})()\n"
|
|
2075
|
+
},
|
|
2076
|
+
{
|
|
2077
|
+
"map": {
|
|
2078
|
+
"status": "${{ item.status }}",
|
|
2079
|
+
"prompt": "${{ item.prompt }}",
|
|
2080
|
+
"image_count": "${{ item.image_count }}",
|
|
2081
|
+
"image_urls": "${{ item.image_urls }}"
|
|
2082
|
+
}
|
|
2083
|
+
}
|
|
2084
|
+
],
|
|
2085
|
+
"type": "yaml"
|
|
2086
|
+
},
|
|
2087
|
+
{
|
|
2088
|
+
"site": "jimeng",
|
|
2089
|
+
"name": "history",
|
|
2090
|
+
"description": "即梦AI 查看最近生成的作品",
|
|
2091
|
+
"domain": "jimeng.jianying.com",
|
|
2092
|
+
"strategy": "cookie",
|
|
2093
|
+
"browser": true,
|
|
2094
|
+
"args": [
|
|
2095
|
+
{
|
|
2096
|
+
"name": "limit",
|
|
2097
|
+
"type": "int",
|
|
2098
|
+
"default": 5,
|
|
2099
|
+
"required": false,
|
|
2100
|
+
"help": ""
|
|
2101
|
+
}
|
|
2102
|
+
],
|
|
2103
|
+
"columns": [
|
|
2104
|
+
"prompt",
|
|
2105
|
+
"model",
|
|
2106
|
+
"status",
|
|
2107
|
+
"image_url",
|
|
2108
|
+
"created_at"
|
|
2109
|
+
],
|
|
2110
|
+
"pipeline": [
|
|
2111
|
+
{
|
|
2112
|
+
"navigate": "https://jimeng.jianying.com/ai-tool/generate?type=image&workspace=0"
|
|
2113
|
+
},
|
|
2114
|
+
{
|
|
2115
|
+
"wait": 3
|
|
2116
|
+
},
|
|
2117
|
+
{
|
|
2118
|
+
"evaluate": "(async () => {\n const limit = ${{ args.limit }};\n const res = await fetch('/mweb/v1/get_history?aid=513695&device_platform=web®ion=cn&da_version=3.3.11&web_version=7.5.0&aigc_features=app_lip_sync', {\n method: 'POST',\n credentials: 'include',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ cursor: '', count: limit, need_page_item: true, need_aigc_data: true, aigc_mode_list: ['workbench'] })\n });\n const data = await res.json();\n const items = data?.data?.history_list || [];\n return items.slice(0, limit).map(item => {\n const params = item.aigc_image_params?.text2image_params || {};\n const images = item.image?.large_images || [];\n return {\n prompt: params.prompt || item.common_attr?.title || 'N/A',\n model: params.model_config?.model_name || 'unknown',\n status: item.common_attr?.status === 102 ? 'completed' : 'pending',\n image_url: images[0]?.image_url || '',\n created_at: new Date((item.common_attr?.create_time || 0) * 1000).toLocaleString('zh-CN'),\n };\n });\n})()\n"
|
|
2119
|
+
},
|
|
2120
|
+
{
|
|
2121
|
+
"map": {
|
|
2122
|
+
"prompt": "${{ item.prompt }}",
|
|
2123
|
+
"model": "${{ item.model }}",
|
|
2124
|
+
"status": "${{ item.status }}",
|
|
2125
|
+
"image_url": "${{ item.image_url }}",
|
|
2126
|
+
"created_at": "${{ item.created_at }}"
|
|
2127
|
+
}
|
|
2128
|
+
},
|
|
2129
|
+
{
|
|
2130
|
+
"limit": "${{ args.limit }}"
|
|
2131
|
+
}
|
|
2132
|
+
],
|
|
2133
|
+
"type": "yaml"
|
|
2134
|
+
},
|
|
2135
|
+
{
|
|
2136
|
+
"site": "linkedin",
|
|
2137
|
+
"name": "search",
|
|
2138
|
+
"description": "",
|
|
2139
|
+
"strategy": "header",
|
|
2140
|
+
"browser": true,
|
|
2141
|
+
"args": [
|
|
2142
|
+
{
|
|
2143
|
+
"name": "query",
|
|
2144
|
+
"type": "string",
|
|
2145
|
+
"required": true,
|
|
2146
|
+
"help": "Job search keywords"
|
|
2147
|
+
},
|
|
2148
|
+
{
|
|
2149
|
+
"name": "location",
|
|
2150
|
+
"type": "string",
|
|
2151
|
+
"required": false,
|
|
2152
|
+
"help": "Location text such as San Francisco Bay Area"
|
|
2153
|
+
},
|
|
2154
|
+
{
|
|
2155
|
+
"name": "limit",
|
|
2156
|
+
"type": "int",
|
|
2157
|
+
"default": 10,
|
|
2158
|
+
"required": false,
|
|
2159
|
+
"help": "Number of jobs to return (max 100)"
|
|
2160
|
+
},
|
|
2161
|
+
{
|
|
2162
|
+
"name": "start",
|
|
2163
|
+
"type": "int",
|
|
2164
|
+
"default": 0,
|
|
2165
|
+
"required": false,
|
|
2166
|
+
"help": "Result offset for pagination"
|
|
2167
|
+
},
|
|
2168
|
+
{
|
|
2169
|
+
"name": "details",
|
|
2170
|
+
"type": "bool",
|
|
2171
|
+
"default": false,
|
|
2172
|
+
"required": false,
|
|
2173
|
+
"help": "Include full job description and apply URL (slower)"
|
|
2174
|
+
},
|
|
2175
|
+
{
|
|
2176
|
+
"name": "company",
|
|
2177
|
+
"type": "string",
|
|
2178
|
+
"required": false,
|
|
2179
|
+
"help": "Comma-separated company names or LinkedIn company IDs"
|
|
2180
|
+
},
|
|
2181
|
+
{
|
|
2182
|
+
"name": "experience_level",
|
|
2183
|
+
"type": "string",
|
|
2184
|
+
"required": false,
|
|
2185
|
+
"help": "Comma-separated: internship, entry, associate, mid-senior, director, executive"
|
|
2186
|
+
},
|
|
2187
|
+
{
|
|
2188
|
+
"name": "job_type",
|
|
2189
|
+
"type": "string",
|
|
2190
|
+
"required": false,
|
|
2191
|
+
"help": "Comma-separated: full-time, part-time, contract, temporary, volunteer, internship, other"
|
|
2192
|
+
},
|
|
2193
|
+
{
|
|
2194
|
+
"name": "date_posted",
|
|
2195
|
+
"type": "string",
|
|
2196
|
+
"required": false,
|
|
2197
|
+
"help": "One of: any, month, week, 24h"
|
|
2198
|
+
},
|
|
2199
|
+
{
|
|
1378
2200
|
"name": "remote",
|
|
1379
2201
|
"type": "string",
|
|
1380
2202
|
"required": false,
|
|
1381
|
-
"help": "Comma-separated: on-site, hybrid, remote"
|
|
2203
|
+
"help": "Comma-separated: on-site, hybrid, remote"
|
|
2204
|
+
}
|
|
2205
|
+
],
|
|
2206
|
+
"type": "ts",
|
|
2207
|
+
"modulePath": "linkedin/search.js",
|
|
2208
|
+
"domain": "www.linkedin.com",
|
|
2209
|
+
"columns": [
|
|
2210
|
+
"rank",
|
|
2211
|
+
"title",
|
|
2212
|
+
"company",
|
|
2213
|
+
"location",
|
|
2214
|
+
"listed",
|
|
2215
|
+
"salary",
|
|
2216
|
+
"url"
|
|
2217
|
+
]
|
|
2218
|
+
},
|
|
2219
|
+
{
|
|
2220
|
+
"site": "linux-do",
|
|
2221
|
+
"name": "categories",
|
|
2222
|
+
"description": "linux.do 分类列表",
|
|
2223
|
+
"domain": "linux.do",
|
|
2224
|
+
"strategy": "cookie",
|
|
2225
|
+
"browser": true,
|
|
2226
|
+
"args": [
|
|
2227
|
+
{
|
|
2228
|
+
"name": "limit",
|
|
2229
|
+
"type": "int",
|
|
2230
|
+
"default": 20,
|
|
2231
|
+
"required": false,
|
|
2232
|
+
"help": "Number of categories"
|
|
2233
|
+
}
|
|
2234
|
+
],
|
|
2235
|
+
"columns": [
|
|
2236
|
+
"name",
|
|
2237
|
+
"slug",
|
|
2238
|
+
"id",
|
|
2239
|
+
"topics",
|
|
2240
|
+
"description"
|
|
2241
|
+
],
|
|
2242
|
+
"pipeline": [
|
|
2243
|
+
{
|
|
2244
|
+
"navigate": "https://linux.do"
|
|
2245
|
+
},
|
|
2246
|
+
{
|
|
2247
|
+
"evaluate": "(async () => {\n const res = await fetch('/categories.json', { credentials: 'include' });\n if (!res.ok) throw new Error('HTTP ' + res.status + ' - 请先登录 linux.do');\n let data;\n try { data = await res.json(); } catch { throw new Error('响应不是有效 JSON - 请先登录 linux.do'); }\n const cats = data?.category_list?.categories || [];\n return cats.slice(0, ${{ args.limit }}).map(c => ({\n name: c.name,\n slug: c.slug,\n id: c.id,\n topics: c.topic_count,\n description: (c.description_text || '').slice(0, 80),\n }));\n})()\n"
|
|
2248
|
+
},
|
|
2249
|
+
{
|
|
2250
|
+
"map": {
|
|
2251
|
+
"name": "${{ item.name }}",
|
|
2252
|
+
"slug": "${{ item.slug }}",
|
|
2253
|
+
"id": "${{ item.id }}",
|
|
2254
|
+
"topics": "${{ item.topics }}",
|
|
2255
|
+
"description": "${{ item.description }}"
|
|
2256
|
+
}
|
|
2257
|
+
},
|
|
2258
|
+
{
|
|
2259
|
+
"limit": "${{ args.limit }}"
|
|
2260
|
+
}
|
|
2261
|
+
],
|
|
2262
|
+
"type": "yaml"
|
|
2263
|
+
},
|
|
2264
|
+
{
|
|
2265
|
+
"site": "linux-do",
|
|
2266
|
+
"name": "category",
|
|
2267
|
+
"description": "linux.do 分类内话题",
|
|
2268
|
+
"domain": "linux.do",
|
|
2269
|
+
"strategy": "cookie",
|
|
2270
|
+
"browser": true,
|
|
2271
|
+
"args": [
|
|
2272
|
+
{
|
|
2273
|
+
"name": "slug",
|
|
2274
|
+
"type": "str",
|
|
2275
|
+
"required": true,
|
|
2276
|
+
"help": "Category slug (use 'categories' command to find)"
|
|
2277
|
+
},
|
|
2278
|
+
{
|
|
2279
|
+
"name": "id",
|
|
2280
|
+
"type": "int",
|
|
2281
|
+
"required": true,
|
|
2282
|
+
"help": "Category ID (use 'categories' command to find)"
|
|
2283
|
+
},
|
|
2284
|
+
{
|
|
2285
|
+
"name": "limit",
|
|
2286
|
+
"type": "int",
|
|
2287
|
+
"default": 20,
|
|
2288
|
+
"required": false,
|
|
2289
|
+
"help": "Number of topics"
|
|
2290
|
+
}
|
|
2291
|
+
],
|
|
2292
|
+
"columns": [
|
|
2293
|
+
"rank",
|
|
2294
|
+
"title",
|
|
2295
|
+
"replies",
|
|
2296
|
+
"views",
|
|
2297
|
+
"likes"
|
|
2298
|
+
],
|
|
2299
|
+
"pipeline": [
|
|
2300
|
+
{
|
|
2301
|
+
"navigate": "https://linux.do"
|
|
2302
|
+
},
|
|
2303
|
+
{
|
|
2304
|
+
"evaluate": "(async () => {\n const slug = ${{ args.slug | json }};\n const res = await fetch('/c/' + encodeURIComponent(slug) + '/${{ args.id }}.json', { credentials: 'include' });\n if (!res.ok) throw new Error('HTTP ' + res.status + ' - 请先登录 linux.do');\n let data;\n try { data = await res.json(); } catch { throw new Error('响应不是有效 JSON - 请先登录 linux.do'); }\n const topics = data?.topic_list?.topics || [];\n return topics.slice(0, ${{ args.limit }}).map(t => ({\n title: t.title,\n replies: (t.posts_count || 1) - 1,\n views: t.views,\n likes: t.like_count,\n }));\n})()\n"
|
|
2305
|
+
},
|
|
2306
|
+
{
|
|
2307
|
+
"map": {
|
|
2308
|
+
"rank": "${{ index + 1 }}",
|
|
2309
|
+
"title": "${{ item.title }}",
|
|
2310
|
+
"replies": "${{ item.replies }}",
|
|
2311
|
+
"views": "${{ item.views }}",
|
|
2312
|
+
"likes": "${{ item.likes }}"
|
|
2313
|
+
}
|
|
2314
|
+
},
|
|
2315
|
+
{
|
|
2316
|
+
"limit": "${{ args.limit }}"
|
|
2317
|
+
}
|
|
2318
|
+
],
|
|
2319
|
+
"type": "yaml"
|
|
2320
|
+
},
|
|
2321
|
+
{
|
|
2322
|
+
"site": "linux-do",
|
|
2323
|
+
"name": "hot",
|
|
2324
|
+
"description": "linux.do 热门话题",
|
|
2325
|
+
"domain": "linux.do",
|
|
2326
|
+
"strategy": "cookie",
|
|
2327
|
+
"browser": true,
|
|
2328
|
+
"args": [
|
|
2329
|
+
{
|
|
2330
|
+
"name": "limit",
|
|
2331
|
+
"type": "int",
|
|
2332
|
+
"default": 20,
|
|
2333
|
+
"required": false,
|
|
2334
|
+
"help": "Number of topics"
|
|
2335
|
+
},
|
|
2336
|
+
{
|
|
2337
|
+
"name": "period",
|
|
2338
|
+
"type": "str",
|
|
2339
|
+
"default": "weekly",
|
|
2340
|
+
"required": false,
|
|
2341
|
+
"help": "Time period",
|
|
2342
|
+
"choices": [
|
|
2343
|
+
"all",
|
|
2344
|
+
"daily",
|
|
2345
|
+
"weekly",
|
|
2346
|
+
"monthly",
|
|
2347
|
+
"yearly"
|
|
2348
|
+
]
|
|
2349
|
+
}
|
|
2350
|
+
],
|
|
2351
|
+
"columns": [
|
|
2352
|
+
"rank",
|
|
2353
|
+
"title",
|
|
2354
|
+
"replies",
|
|
2355
|
+
"views",
|
|
2356
|
+
"likes",
|
|
2357
|
+
"category"
|
|
2358
|
+
],
|
|
2359
|
+
"pipeline": [
|
|
2360
|
+
{
|
|
2361
|
+
"navigate": "https://linux.do"
|
|
2362
|
+
},
|
|
2363
|
+
{
|
|
2364
|
+
"evaluate": "(async () => {\n const period = ${{ args.period | json }};\n const res = await fetch('/top.json?period=' + encodeURIComponent(period), { credentials: 'include' });\n if (!res.ok) throw new Error('HTTP ' + res.status + ' - 请先登录 linux.do');\n let data;\n try { data = await res.json(); } catch { throw new Error('响应不是有效 JSON - 请先登录 linux.do'); }\n const topics = data?.topic_list?.topics || [];\n const cats = data?.topic_list?.categories || data?.categories || [];\n const catMap = Object.fromEntries(cats.map(c => [c.id, c.name]));\n return topics.slice(0, ${{ args.limit }}).map(t => ({\n title: t.title,\n replies: (t.posts_count || 1) - 1,\n views: t.views,\n likes: t.like_count,\n category: catMap[t.category_id] || String(t.category_id),\n }));\n})()\n"
|
|
2365
|
+
},
|
|
2366
|
+
{
|
|
2367
|
+
"map": {
|
|
2368
|
+
"rank": "${{ index + 1 }}",
|
|
2369
|
+
"title": "${{ item.title }}",
|
|
2370
|
+
"replies": "${{ item.replies }}",
|
|
2371
|
+
"views": "${{ item.views }}",
|
|
2372
|
+
"likes": "${{ item.likes }}",
|
|
2373
|
+
"category": "${{ item.category }}"
|
|
2374
|
+
}
|
|
2375
|
+
},
|
|
2376
|
+
{
|
|
2377
|
+
"limit": "${{ args.limit }}"
|
|
2378
|
+
}
|
|
2379
|
+
],
|
|
2380
|
+
"type": "yaml"
|
|
2381
|
+
},
|
|
2382
|
+
{
|
|
2383
|
+
"site": "linux-do",
|
|
2384
|
+
"name": "latest",
|
|
2385
|
+
"description": "linux.do 最新话题",
|
|
2386
|
+
"domain": "linux.do",
|
|
2387
|
+
"strategy": "cookie",
|
|
2388
|
+
"browser": true,
|
|
2389
|
+
"args": [
|
|
2390
|
+
{
|
|
2391
|
+
"name": "limit",
|
|
2392
|
+
"type": "int",
|
|
2393
|
+
"default": 20,
|
|
2394
|
+
"required": false,
|
|
2395
|
+
"help": "Number of topics"
|
|
2396
|
+
}
|
|
2397
|
+
],
|
|
2398
|
+
"columns": [
|
|
2399
|
+
"rank",
|
|
2400
|
+
"title",
|
|
2401
|
+
"replies",
|
|
2402
|
+
"views",
|
|
2403
|
+
"likes"
|
|
2404
|
+
],
|
|
2405
|
+
"pipeline": [
|
|
2406
|
+
{
|
|
2407
|
+
"navigate": "https://linux.do"
|
|
2408
|
+
},
|
|
2409
|
+
{
|
|
2410
|
+
"evaluate": "(async () => {\n const res = await fetch('/latest.json', { credentials: 'include' });\n if (!res.ok) throw new Error('HTTP ' + res.status + ' - 请先登录 linux.do');\n let data;\n try { data = await res.json(); } catch { throw new Error('响应不是有效 JSON - 请先登录 linux.do'); }\n const topics = data?.topic_list?.topics || [];\n return topics.slice(0, ${{ args.limit }}).map(t => ({\n title: t.title,\n replies: (t.posts_count || 1) - 1,\n views: t.views,\n likes: t.like_count,\n }));\n})()\n"
|
|
2411
|
+
},
|
|
2412
|
+
{
|
|
2413
|
+
"map": {
|
|
2414
|
+
"rank": "${{ index + 1 }}",
|
|
2415
|
+
"title": "${{ item.title }}",
|
|
2416
|
+
"replies": "${{ item.replies }}",
|
|
2417
|
+
"views": "${{ item.views }}",
|
|
2418
|
+
"likes": "${{ item.likes }}"
|
|
2419
|
+
}
|
|
2420
|
+
},
|
|
2421
|
+
{
|
|
2422
|
+
"limit": "${{ args.limit }}"
|
|
2423
|
+
}
|
|
2424
|
+
],
|
|
2425
|
+
"type": "yaml"
|
|
2426
|
+
},
|
|
2427
|
+
{
|
|
2428
|
+
"site": "linux-do",
|
|
2429
|
+
"name": "search",
|
|
2430
|
+
"description": "搜索 linux.do",
|
|
2431
|
+
"domain": "linux.do",
|
|
2432
|
+
"strategy": "cookie",
|
|
2433
|
+
"browser": true,
|
|
2434
|
+
"args": [
|
|
2435
|
+
{
|
|
2436
|
+
"name": "keyword",
|
|
2437
|
+
"type": "str",
|
|
2438
|
+
"required": true,
|
|
2439
|
+
"help": "Search keyword"
|
|
2440
|
+
},
|
|
2441
|
+
{
|
|
2442
|
+
"name": "limit",
|
|
2443
|
+
"type": "int",
|
|
2444
|
+
"default": 20,
|
|
2445
|
+
"required": false,
|
|
2446
|
+
"help": "Number of results"
|
|
2447
|
+
}
|
|
2448
|
+
],
|
|
2449
|
+
"columns": [
|
|
2450
|
+
"rank",
|
|
2451
|
+
"title",
|
|
2452
|
+
"views",
|
|
2453
|
+
"likes",
|
|
2454
|
+
"replies"
|
|
2455
|
+
],
|
|
2456
|
+
"pipeline": [
|
|
2457
|
+
{
|
|
2458
|
+
"navigate": "https://linux.do"
|
|
2459
|
+
},
|
|
2460
|
+
{
|
|
2461
|
+
"evaluate": "(async () => {\n const keyword = ${{ args.keyword | json }};\n const res = await fetch('/search.json?q=' + encodeURIComponent(keyword), { credentials: 'include' });\n if (!res.ok) throw new Error('HTTP ' + res.status + ' - 请先登录 linux.do');\n let data;\n try { data = await res.json(); } catch { throw new Error('响应不是有效 JSON - 请先登录 linux.do'); }\n const topics = data?.topics || [];\n return topics.slice(0, ${{ args.limit }}).map(t => ({\n title: t.title,\n views: t.views,\n likes: t.like_count,\n replies: (t.posts_count || 1) - 1,\n }));\n})()\n"
|
|
2462
|
+
},
|
|
2463
|
+
{
|
|
2464
|
+
"map": {
|
|
2465
|
+
"rank": "${{ index + 1 }}",
|
|
2466
|
+
"title": "${{ item.title }}",
|
|
2467
|
+
"views": "${{ item.views }}",
|
|
2468
|
+
"likes": "${{ item.likes }}",
|
|
2469
|
+
"replies": "${{ item.replies }}"
|
|
2470
|
+
}
|
|
2471
|
+
},
|
|
2472
|
+
{
|
|
2473
|
+
"limit": "${{ args.limit }}"
|
|
2474
|
+
}
|
|
2475
|
+
],
|
|
2476
|
+
"type": "yaml"
|
|
2477
|
+
},
|
|
2478
|
+
{
|
|
2479
|
+
"site": "linux-do",
|
|
2480
|
+
"name": "topic",
|
|
2481
|
+
"description": "linux.do 帖子详情和回复(首页)",
|
|
2482
|
+
"domain": "linux.do",
|
|
2483
|
+
"strategy": "cookie",
|
|
2484
|
+
"browser": true,
|
|
2485
|
+
"args": [
|
|
2486
|
+
{
|
|
2487
|
+
"name": "id",
|
|
2488
|
+
"type": "int",
|
|
2489
|
+
"required": true,
|
|
2490
|
+
"help": "Topic ID"
|
|
2491
|
+
}
|
|
2492
|
+
],
|
|
2493
|
+
"columns": [
|
|
2494
|
+
"author",
|
|
2495
|
+
"content",
|
|
2496
|
+
"likes",
|
|
2497
|
+
"created_at"
|
|
2498
|
+
],
|
|
2499
|
+
"pipeline": [
|
|
2500
|
+
{
|
|
2501
|
+
"navigate": "https://linux.do"
|
|
2502
|
+
},
|
|
2503
|
+
{
|
|
2504
|
+
"evaluate": "(async () => {\n const res = await fetch('/t/${{ args.id }}.json', { credentials: 'include' });\n if (!res.ok) throw new Error('HTTP ' + res.status + ' - 请先登录 linux.do');\n let data;\n try { data = await res.json(); } catch { throw new Error('响应不是有效 JSON - 请先登录 linux.do'); }\n const strip = (html) => (html || '').replace(/<br\\s*\\/?>/gi, ' ').replace(/<\\/(p|div|li|blockquote|h[1-6])>/gi, ' ').replace(/<[^>]+>/g, '').replace(/ /g, ' ').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '\"').replace(/&#(?:(\\d+)|x([0-9a-fA-F]+));/g, (_, dec, hex) => { try { return String.fromCodePoint(dec !== undefined ? Number(dec) : parseInt(hex, 16)); } catch { return ''; } }).replace(/\\s+/g, ' ').trim();\n const posts = data?.post_stream?.posts || [];\n return posts.map(p => ({\n author: p.username,\n content: strip(p.cooked).slice(0, 200),\n likes: p.like_count,\n created_at: p.created_at,\n }));\n})()\n"
|
|
2505
|
+
},
|
|
2506
|
+
{
|
|
2507
|
+
"map": {
|
|
2508
|
+
"author": "${{ item.author }}",
|
|
2509
|
+
"content": "${{ item.content }}",
|
|
2510
|
+
"likes": "${{ item.likes }}",
|
|
2511
|
+
"created_at": "${{ item.created_at }}"
|
|
2512
|
+
}
|
|
2513
|
+
}
|
|
2514
|
+
],
|
|
2515
|
+
"type": "yaml"
|
|
2516
|
+
},
|
|
2517
|
+
{
|
|
2518
|
+
"site": "notion",
|
|
2519
|
+
"name": "export",
|
|
2520
|
+
"description": "Export the current Notion page as Markdown",
|
|
2521
|
+
"strategy": "ui",
|
|
2522
|
+
"browser": true,
|
|
2523
|
+
"args": [
|
|
2524
|
+
{
|
|
2525
|
+
"name": "output",
|
|
2526
|
+
"type": "str",
|
|
2527
|
+
"default": "/tmp/notion-export.md)",
|
|
2528
|
+
"required": false,
|
|
2529
|
+
"positional": true,
|
|
2530
|
+
"help": "Output file (default: /tmp/notion-export.md)"
|
|
1382
2531
|
}
|
|
1383
2532
|
],
|
|
1384
2533
|
"type": "ts",
|
|
1385
|
-
"modulePath": "
|
|
1386
|
-
"domain": "
|
|
2534
|
+
"modulePath": "notion/export.js",
|
|
2535
|
+
"domain": "localhost",
|
|
2536
|
+
"columns": [
|
|
2537
|
+
"Status",
|
|
2538
|
+
"File"
|
|
2539
|
+
]
|
|
2540
|
+
},
|
|
2541
|
+
{
|
|
2542
|
+
"site": "notion",
|
|
2543
|
+
"name": "favorites",
|
|
2544
|
+
"description": "List pages from the Notion Favorites section in the sidebar",
|
|
2545
|
+
"strategy": "ui",
|
|
2546
|
+
"browser": true,
|
|
2547
|
+
"args": [],
|
|
2548
|
+
"type": "ts",
|
|
2549
|
+
"modulePath": "notion/favorites.js",
|
|
2550
|
+
"domain": "localhost",
|
|
2551
|
+
"columns": [
|
|
2552
|
+
"Index",
|
|
2553
|
+
"Title",
|
|
2554
|
+
"Icon"
|
|
2555
|
+
]
|
|
2556
|
+
},
|
|
2557
|
+
{
|
|
2558
|
+
"site": "notion",
|
|
2559
|
+
"name": "new",
|
|
2560
|
+
"description": "Create a new page in Notion",
|
|
2561
|
+
"strategy": "ui",
|
|
2562
|
+
"browser": true,
|
|
2563
|
+
"args": [
|
|
2564
|
+
{
|
|
2565
|
+
"name": "title",
|
|
2566
|
+
"type": "str",
|
|
2567
|
+
"required": false,
|
|
2568
|
+
"positional": true,
|
|
2569
|
+
"help": "Page title (optional)"
|
|
2570
|
+
}
|
|
2571
|
+
],
|
|
2572
|
+
"type": "ts",
|
|
2573
|
+
"modulePath": "notion/new.js",
|
|
2574
|
+
"domain": "localhost",
|
|
2575
|
+
"columns": [
|
|
2576
|
+
"Status"
|
|
2577
|
+
]
|
|
2578
|
+
},
|
|
2579
|
+
{
|
|
2580
|
+
"site": "notion",
|
|
2581
|
+
"name": "read",
|
|
2582
|
+
"description": "Read the content of the currently open Notion page",
|
|
2583
|
+
"strategy": "ui",
|
|
2584
|
+
"browser": true,
|
|
2585
|
+
"args": [],
|
|
2586
|
+
"type": "ts",
|
|
2587
|
+
"modulePath": "notion/read.js",
|
|
2588
|
+
"domain": "localhost",
|
|
2589
|
+
"columns": [
|
|
2590
|
+
"Title",
|
|
2591
|
+
"Content"
|
|
2592
|
+
]
|
|
2593
|
+
},
|
|
2594
|
+
{
|
|
2595
|
+
"site": "notion",
|
|
2596
|
+
"name": "search",
|
|
2597
|
+
"description": "Search pages and databases in Notion via Quick Find (Cmd+P)",
|
|
2598
|
+
"strategy": "ui",
|
|
2599
|
+
"browser": true,
|
|
2600
|
+
"args": [
|
|
2601
|
+
{
|
|
2602
|
+
"name": "query",
|
|
2603
|
+
"type": "str",
|
|
2604
|
+
"required": true,
|
|
2605
|
+
"positional": true,
|
|
2606
|
+
"help": "Search query"
|
|
2607
|
+
}
|
|
2608
|
+
],
|
|
2609
|
+
"type": "ts",
|
|
2610
|
+
"modulePath": "notion/search.js",
|
|
2611
|
+
"domain": "localhost",
|
|
2612
|
+
"columns": [
|
|
2613
|
+
"Index",
|
|
2614
|
+
"Title"
|
|
2615
|
+
]
|
|
2616
|
+
},
|
|
2617
|
+
{
|
|
2618
|
+
"site": "notion",
|
|
2619
|
+
"name": "sidebar",
|
|
2620
|
+
"description": "List pages and databases from the Notion sidebar",
|
|
2621
|
+
"strategy": "ui",
|
|
2622
|
+
"browser": true,
|
|
2623
|
+
"args": [],
|
|
2624
|
+
"type": "ts",
|
|
2625
|
+
"modulePath": "notion/sidebar.js",
|
|
2626
|
+
"domain": "localhost",
|
|
2627
|
+
"columns": [
|
|
2628
|
+
"Index",
|
|
2629
|
+
"Title"
|
|
2630
|
+
]
|
|
2631
|
+
},
|
|
2632
|
+
{
|
|
2633
|
+
"site": "notion",
|
|
2634
|
+
"name": "status",
|
|
2635
|
+
"description": "Check active CDP connection to Notion Desktop",
|
|
2636
|
+
"strategy": "ui",
|
|
2637
|
+
"browser": true,
|
|
2638
|
+
"args": [],
|
|
2639
|
+
"type": "ts",
|
|
2640
|
+
"modulePath": "notion/status.js",
|
|
2641
|
+
"domain": "localhost",
|
|
2642
|
+
"columns": [
|
|
2643
|
+
"Status",
|
|
2644
|
+
"Url",
|
|
2645
|
+
"Title"
|
|
2646
|
+
]
|
|
2647
|
+
},
|
|
2648
|
+
{
|
|
2649
|
+
"site": "notion",
|
|
2650
|
+
"name": "write",
|
|
2651
|
+
"description": "Append text content to the currently open Notion page",
|
|
2652
|
+
"strategy": "ui",
|
|
2653
|
+
"browser": true,
|
|
2654
|
+
"args": [
|
|
2655
|
+
{
|
|
2656
|
+
"name": "text",
|
|
2657
|
+
"type": "str",
|
|
2658
|
+
"required": true,
|
|
2659
|
+
"positional": true,
|
|
2660
|
+
"help": "Text to append to the page"
|
|
2661
|
+
}
|
|
2662
|
+
],
|
|
2663
|
+
"type": "ts",
|
|
2664
|
+
"modulePath": "notion/write.js",
|
|
2665
|
+
"domain": "localhost",
|
|
1387
2666
|
"columns": [
|
|
1388
|
-
"
|
|
1389
|
-
"title",
|
|
1390
|
-
"company",
|
|
1391
|
-
"location",
|
|
1392
|
-
"listed",
|
|
1393
|
-
"salary",
|
|
1394
|
-
"url"
|
|
2667
|
+
"Status"
|
|
1395
2668
|
]
|
|
1396
2669
|
},
|
|
1397
2670
|
{
|
|
@@ -2200,6 +3473,44 @@
|
|
|
2200
3473
|
"message"
|
|
2201
3474
|
]
|
|
2202
3475
|
},
|
|
3476
|
+
{
|
|
3477
|
+
"site": "twitter",
|
|
3478
|
+
"name": "download",
|
|
3479
|
+
"description": "下载 Twitter/X 媒体(图片和视频)",
|
|
3480
|
+
"strategy": "cookie",
|
|
3481
|
+
"browser": true,
|
|
3482
|
+
"args": [
|
|
3483
|
+
{
|
|
3484
|
+
"name": "username",
|
|
3485
|
+
"type": "str",
|
|
3486
|
+
"required": false,
|
|
3487
|
+
"help": "Twitter username (downloads from media tab)"
|
|
3488
|
+
},
|
|
3489
|
+
{
|
|
3490
|
+
"name": "limit",
|
|
3491
|
+
"type": "int",
|
|
3492
|
+
"default": 10,
|
|
3493
|
+
"required": false,
|
|
3494
|
+
"help": "Number of tweets to scan"
|
|
3495
|
+
},
|
|
3496
|
+
{
|
|
3497
|
+
"name": "output",
|
|
3498
|
+
"type": "str",
|
|
3499
|
+
"default": "./twitter-downloads",
|
|
3500
|
+
"required": false,
|
|
3501
|
+
"help": "Output directory"
|
|
3502
|
+
}
|
|
3503
|
+
],
|
|
3504
|
+
"type": "ts",
|
|
3505
|
+
"modulePath": "twitter/download.js",
|
|
3506
|
+
"domain": "x.com",
|
|
3507
|
+
"columns": [
|
|
3508
|
+
"index",
|
|
3509
|
+
"type",
|
|
3510
|
+
"status",
|
|
3511
|
+
"size"
|
|
3512
|
+
]
|
|
3513
|
+
},
|
|
2203
3514
|
{
|
|
2204
3515
|
"site": "twitter",
|
|
2205
3516
|
"name": "follow",
|
|
@@ -2778,6 +4089,107 @@
|
|
|
2778
4089
|
],
|
|
2779
4090
|
"type": "yaml"
|
|
2780
4091
|
},
|
|
4092
|
+
{
|
|
4093
|
+
"site": "wechat",
|
|
4094
|
+
"name": "chats",
|
|
4095
|
+
"description": "Open the WeChat chats panel (conversation list)",
|
|
4096
|
+
"strategy": "public",
|
|
4097
|
+
"browser": false,
|
|
4098
|
+
"args": [],
|
|
4099
|
+
"type": "ts",
|
|
4100
|
+
"modulePath": "wechat/chats.js",
|
|
4101
|
+
"domain": "localhost",
|
|
4102
|
+
"columns": [
|
|
4103
|
+
"Status"
|
|
4104
|
+
]
|
|
4105
|
+
},
|
|
4106
|
+
{
|
|
4107
|
+
"site": "wechat",
|
|
4108
|
+
"name": "contacts",
|
|
4109
|
+
"description": "Open the WeChat contacts panel",
|
|
4110
|
+
"strategy": "public",
|
|
4111
|
+
"browser": false,
|
|
4112
|
+
"args": [],
|
|
4113
|
+
"type": "ts",
|
|
4114
|
+
"modulePath": "wechat/contacts.js",
|
|
4115
|
+
"domain": "localhost",
|
|
4116
|
+
"columns": [
|
|
4117
|
+
"Status"
|
|
4118
|
+
]
|
|
4119
|
+
},
|
|
4120
|
+
{
|
|
4121
|
+
"site": "wechat",
|
|
4122
|
+
"name": "read",
|
|
4123
|
+
"description": "Read the current chat content by selecting all and copying",
|
|
4124
|
+
"strategy": "public",
|
|
4125
|
+
"browser": false,
|
|
4126
|
+
"args": [],
|
|
4127
|
+
"type": "ts",
|
|
4128
|
+
"modulePath": "wechat/read.js",
|
|
4129
|
+
"domain": "localhost",
|
|
4130
|
+
"columns": [
|
|
4131
|
+
"Content"
|
|
4132
|
+
]
|
|
4133
|
+
},
|
|
4134
|
+
{
|
|
4135
|
+
"site": "wechat",
|
|
4136
|
+
"name": "search",
|
|
4137
|
+
"description": "Open WeChat search and type a query (find contacts or messages)",
|
|
4138
|
+
"strategy": "public",
|
|
4139
|
+
"browser": false,
|
|
4140
|
+
"args": [
|
|
4141
|
+
{
|
|
4142
|
+
"name": "query",
|
|
4143
|
+
"type": "str",
|
|
4144
|
+
"required": true,
|
|
4145
|
+
"positional": true,
|
|
4146
|
+
"help": "Search query (contact name or keyword)"
|
|
4147
|
+
}
|
|
4148
|
+
],
|
|
4149
|
+
"type": "ts",
|
|
4150
|
+
"modulePath": "wechat/search.js",
|
|
4151
|
+
"domain": "localhost",
|
|
4152
|
+
"columns": [
|
|
4153
|
+
"Status"
|
|
4154
|
+
]
|
|
4155
|
+
},
|
|
4156
|
+
{
|
|
4157
|
+
"site": "wechat",
|
|
4158
|
+
"name": "send",
|
|
4159
|
+
"description": "Send a message in the active WeChat conversation via clipboard paste",
|
|
4160
|
+
"strategy": "public",
|
|
4161
|
+
"browser": false,
|
|
4162
|
+
"args": [
|
|
4163
|
+
{
|
|
4164
|
+
"name": "text",
|
|
4165
|
+
"type": "str",
|
|
4166
|
+
"required": true,
|
|
4167
|
+
"positional": true,
|
|
4168
|
+
"help": "Message to send"
|
|
4169
|
+
}
|
|
4170
|
+
],
|
|
4171
|
+
"type": "ts",
|
|
4172
|
+
"modulePath": "wechat/send.js",
|
|
4173
|
+
"domain": "localhost",
|
|
4174
|
+
"columns": [
|
|
4175
|
+
"Status"
|
|
4176
|
+
]
|
|
4177
|
+
},
|
|
4178
|
+
{
|
|
4179
|
+
"site": "wechat",
|
|
4180
|
+
"name": "status",
|
|
4181
|
+
"description": "Check if WeChat Desktop is running on macOS",
|
|
4182
|
+
"strategy": "public",
|
|
4183
|
+
"browser": false,
|
|
4184
|
+
"args": [],
|
|
4185
|
+
"type": "ts",
|
|
4186
|
+
"modulePath": "wechat/status.js",
|
|
4187
|
+
"domain": "localhost",
|
|
4188
|
+
"columns": [
|
|
4189
|
+
"Status",
|
|
4190
|
+
"Detail"
|
|
4191
|
+
]
|
|
4192
|
+
},
|
|
2781
4193
|
{
|
|
2782
4194
|
"site": "weibo",
|
|
2783
4195
|
"name": "hot",
|
|
@@ -2805,6 +4217,137 @@
|
|
|
2805
4217
|
"url"
|
|
2806
4218
|
]
|
|
2807
4219
|
},
|
|
4220
|
+
{
|
|
4221
|
+
"site": "xiaohongshu",
|
|
4222
|
+
"name": "creator-note-detail",
|
|
4223
|
+
"description": "小红书单篇笔记详细数据 (阅读/互动/点赞/收藏/评论/分享,区分自然流量/推广/视频)",
|
|
4224
|
+
"strategy": "cookie",
|
|
4225
|
+
"browser": true,
|
|
4226
|
+
"args": [
|
|
4227
|
+
{
|
|
4228
|
+
"name": "note_id",
|
|
4229
|
+
"type": "string",
|
|
4230
|
+
"required": true,
|
|
4231
|
+
"help": "Note ID (from note URL or creator-notes command)"
|
|
4232
|
+
}
|
|
4233
|
+
],
|
|
4234
|
+
"type": "ts",
|
|
4235
|
+
"modulePath": "xiaohongshu/creator-note-detail.js",
|
|
4236
|
+
"domain": "creator.xiaohongshu.com",
|
|
4237
|
+
"columns": [
|
|
4238
|
+
"channel",
|
|
4239
|
+
"reads",
|
|
4240
|
+
"engagement",
|
|
4241
|
+
"likes",
|
|
4242
|
+
"collects",
|
|
4243
|
+
"comments",
|
|
4244
|
+
"shares"
|
|
4245
|
+
]
|
|
4246
|
+
},
|
|
4247
|
+
{
|
|
4248
|
+
"site": "xiaohongshu",
|
|
4249
|
+
"name": "creator-notes",
|
|
4250
|
+
"description": "小红书创作者笔记列表 + 每篇数据 (标题/日期/观看/点赞/收藏/评论)",
|
|
4251
|
+
"strategy": "cookie",
|
|
4252
|
+
"browser": true,
|
|
4253
|
+
"args": [
|
|
4254
|
+
{
|
|
4255
|
+
"name": "limit",
|
|
4256
|
+
"type": "int",
|
|
4257
|
+
"default": 20,
|
|
4258
|
+
"required": false,
|
|
4259
|
+
"help": "Number of notes to return"
|
|
4260
|
+
}
|
|
4261
|
+
],
|
|
4262
|
+
"type": "ts",
|
|
4263
|
+
"modulePath": "xiaohongshu/creator-notes.js",
|
|
4264
|
+
"domain": "creator.xiaohongshu.com",
|
|
4265
|
+
"columns": [
|
|
4266
|
+
"rank",
|
|
4267
|
+
"id",
|
|
4268
|
+
"title",
|
|
4269
|
+
"date",
|
|
4270
|
+
"views",
|
|
4271
|
+
"likes",
|
|
4272
|
+
"collects",
|
|
4273
|
+
"comments",
|
|
4274
|
+
"url"
|
|
4275
|
+
]
|
|
4276
|
+
},
|
|
4277
|
+
{
|
|
4278
|
+
"site": "xiaohongshu",
|
|
4279
|
+
"name": "creator-profile",
|
|
4280
|
+
"description": "小红书创作者账号信息 (粉丝/关注/获赞/成长等级)",
|
|
4281
|
+
"strategy": "cookie",
|
|
4282
|
+
"browser": true,
|
|
4283
|
+
"args": [],
|
|
4284
|
+
"type": "ts",
|
|
4285
|
+
"modulePath": "xiaohongshu/creator-profile.js",
|
|
4286
|
+
"domain": "creator.xiaohongshu.com",
|
|
4287
|
+
"columns": [
|
|
4288
|
+
"field",
|
|
4289
|
+
"value"
|
|
4290
|
+
]
|
|
4291
|
+
},
|
|
4292
|
+
{
|
|
4293
|
+
"site": "xiaohongshu",
|
|
4294
|
+
"name": "creator-stats",
|
|
4295
|
+
"description": "小红书创作者数据总览 (观看/点赞/收藏/评论/分享/涨粉,含每日趋势)",
|
|
4296
|
+
"strategy": "cookie",
|
|
4297
|
+
"browser": true,
|
|
4298
|
+
"args": [
|
|
4299
|
+
{
|
|
4300
|
+
"name": "period",
|
|
4301
|
+
"type": "string",
|
|
4302
|
+
"default": "seven",
|
|
4303
|
+
"required": false,
|
|
4304
|
+
"help": "Stats period: seven or thirty",
|
|
4305
|
+
"choices": [
|
|
4306
|
+
"seven",
|
|
4307
|
+
"thirty"
|
|
4308
|
+
]
|
|
4309
|
+
}
|
|
4310
|
+
],
|
|
4311
|
+
"type": "ts",
|
|
4312
|
+
"modulePath": "xiaohongshu/creator-stats.js",
|
|
4313
|
+
"domain": "creator.xiaohongshu.com",
|
|
4314
|
+
"columns": [
|
|
4315
|
+
"metric",
|
|
4316
|
+
"total",
|
|
4317
|
+
"trend"
|
|
4318
|
+
]
|
|
4319
|
+
},
|
|
4320
|
+
{
|
|
4321
|
+
"site": "xiaohongshu",
|
|
4322
|
+
"name": "download",
|
|
4323
|
+
"description": "下载小红书笔记中的图片和视频",
|
|
4324
|
+
"strategy": "cookie",
|
|
4325
|
+
"browser": true,
|
|
4326
|
+
"args": [
|
|
4327
|
+
{
|
|
4328
|
+
"name": "note_id",
|
|
4329
|
+
"type": "str",
|
|
4330
|
+
"required": true,
|
|
4331
|
+
"help": "Note ID (from URL)"
|
|
4332
|
+
},
|
|
4333
|
+
{
|
|
4334
|
+
"name": "output",
|
|
4335
|
+
"type": "str",
|
|
4336
|
+
"default": "./xiaohongshu-downloads",
|
|
4337
|
+
"required": false,
|
|
4338
|
+
"help": "Output directory"
|
|
4339
|
+
}
|
|
4340
|
+
],
|
|
4341
|
+
"type": "ts",
|
|
4342
|
+
"modulePath": "xiaohongshu/download.js",
|
|
4343
|
+
"domain": "www.xiaohongshu.com",
|
|
4344
|
+
"columns": [
|
|
4345
|
+
"index",
|
|
4346
|
+
"type",
|
|
4347
|
+
"status",
|
|
4348
|
+
"size"
|
|
4349
|
+
]
|
|
4350
|
+
},
|
|
2808
4351
|
{
|
|
2809
4352
|
"site": "xiaohongshu",
|
|
2810
4353
|
"name": "feed",
|
|
@@ -2957,30 +4500,50 @@
|
|
|
2957
4500
|
"likes"
|
|
2958
4501
|
]
|
|
2959
4502
|
},
|
|
4503
|
+
{
|
|
4504
|
+
"site": "xiaohongshu",
|
|
4505
|
+
"name": "user-helpers",
|
|
4506
|
+
"description": "",
|
|
4507
|
+
"strategy": "cookie",
|
|
4508
|
+
"browser": true,
|
|
4509
|
+
"args": [],
|
|
4510
|
+
"type": "ts",
|
|
4511
|
+
"modulePath": "xiaohongshu/user-helpers.js"
|
|
4512
|
+
},
|
|
4513
|
+
{
|
|
4514
|
+
"site": "xiaohongshu",
|
|
4515
|
+
"name": "user-helpers.test",
|
|
4516
|
+
"description": "",
|
|
4517
|
+
"strategy": "cookie",
|
|
4518
|
+
"browser": true,
|
|
4519
|
+
"args": [],
|
|
4520
|
+
"type": "ts",
|
|
4521
|
+
"modulePath": "xiaohongshu/user-helpers.test.js"
|
|
4522
|
+
},
|
|
2960
4523
|
{
|
|
2961
4524
|
"site": "xiaohongshu",
|
|
2962
4525
|
"name": "user",
|
|
2963
|
-
"description": "Get
|
|
2964
|
-
"strategy": "
|
|
4526
|
+
"description": "Get public notes from a Xiaohongshu user profile",
|
|
4527
|
+
"strategy": "cookie",
|
|
2965
4528
|
"browser": true,
|
|
2966
4529
|
"args": [
|
|
2967
4530
|
{
|
|
2968
4531
|
"name": "id",
|
|
2969
4532
|
"type": "string",
|
|
2970
4533
|
"required": true,
|
|
2971
|
-
"help": ""
|
|
4534
|
+
"help": "User id or profile URL"
|
|
2972
4535
|
},
|
|
2973
4536
|
{
|
|
2974
4537
|
"name": "limit",
|
|
2975
4538
|
"type": "int",
|
|
2976
4539
|
"default": 15,
|
|
2977
4540
|
"required": false,
|
|
2978
|
-
"help": ""
|
|
4541
|
+
"help": "Number of notes to return"
|
|
2979
4542
|
}
|
|
2980
4543
|
],
|
|
2981
4544
|
"type": "ts",
|
|
2982
4545
|
"modulePath": "xiaohongshu/user.js",
|
|
2983
|
-
"domain": "xiaohongshu.com",
|
|
4546
|
+
"domain": "www.xiaohongshu.com",
|
|
2984
4547
|
"columns": [
|
|
2985
4548
|
"id",
|
|
2986
4549
|
"title",
|
|
@@ -3536,6 +5099,47 @@
|
|
|
3536
5099
|
"value"
|
|
3537
5100
|
]
|
|
3538
5101
|
},
|
|
5102
|
+
{
|
|
5103
|
+
"site": "zhihu",
|
|
5104
|
+
"name": "download",
|
|
5105
|
+
"description": "导出知乎文章为 Markdown 格式",
|
|
5106
|
+
"strategy": "cookie",
|
|
5107
|
+
"browser": true,
|
|
5108
|
+
"args": [
|
|
5109
|
+
{
|
|
5110
|
+
"name": "url",
|
|
5111
|
+
"type": "str",
|
|
5112
|
+
"required": true,
|
|
5113
|
+
"help": "Article URL (zhuanlan.zhihu.com/p/xxx)"
|
|
5114
|
+
},
|
|
5115
|
+
{
|
|
5116
|
+
"name": "output",
|
|
5117
|
+
"type": "str",
|
|
5118
|
+
"default": "./zhihu-articles",
|
|
5119
|
+
"required": false,
|
|
5120
|
+
"help": "Output directory"
|
|
5121
|
+
}
|
|
5122
|
+
],
|
|
5123
|
+
"type": "ts",
|
|
5124
|
+
"modulePath": "zhihu/download.js",
|
|
5125
|
+
"domain": "zhuanlan.zhihu.com",
|
|
5126
|
+
"columns": [
|
|
5127
|
+
"title",
|
|
5128
|
+
"author",
|
|
5129
|
+
"status",
|
|
5130
|
+
"size"
|
|
5131
|
+
]
|
|
5132
|
+
},
|
|
5133
|
+
{
|
|
5134
|
+
"site": "zhihu",
|
|
5135
|
+
"name": "download.test",
|
|
5136
|
+
"description": "",
|
|
5137
|
+
"strategy": "cookie",
|
|
5138
|
+
"browser": true,
|
|
5139
|
+
"args": [],
|
|
5140
|
+
"type": "ts",
|
|
5141
|
+
"modulePath": "zhihu/download.test.js"
|
|
5142
|
+
},
|
|
3539
5143
|
{
|
|
3540
5144
|
"site": "zhihu",
|
|
3541
5145
|
"name": "hot",
|