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