@jackwener/opencli 1.1.1 → 1.2.1
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/workflows/build-extension.yml +3 -3
- package/.github/workflows/ci.yml +6 -6
- package/.github/workflows/doc-check.yml +3 -3
- package/.github/workflows/e2e-headed.yml +2 -2
- package/.github/workflows/pkg-pr-new.yml +2 -2
- package/.github/workflows/release.yml +3 -3
- package/.github/workflows/security.yml +2 -2
- package/CONTRIBUTING.md +39 -1
- package/README.md +13 -10
- package/README.zh-CN.md +43 -17
- package/SKILL.md +10 -5
- package/dist/browser/cdp.d.ts +4 -4
- package/dist/browser/cdp.js +39 -16
- package/dist/browser/daemon-client.d.ts +4 -2
- package/dist/browser/daemon-client.js +17 -4
- package/dist/browser/dom-helpers.js +38 -7
- package/dist/browser/dom-snapshot.d.ts +86 -0
- package/dist/browser/dom-snapshot.js +729 -0
- package/dist/browser/dom-snapshot.test.d.ts +11 -0
- package/dist/browser/dom-snapshot.test.js +212 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.js +1 -0
- package/dist/browser/mcp.js +3 -1
- package/dist/browser/page.d.ts +14 -24
- package/dist/browser/page.js +46 -6
- package/dist/build-manifest.d.ts +11 -4
- package/dist/build-manifest.js +59 -21
- package/dist/build-manifest.test.js +58 -2
- package/dist/cli-manifest.json +3856 -1509
- package/dist/cli.js +66 -0
- package/dist/clis/barchart/greeks.js +1 -1
- package/dist/clis/barchart/options.js +1 -1
- package/dist/clis/barchart/quote.js +1 -1
- package/dist/clis/bilibili/download.js +1 -1
- package/dist/clis/bilibili/following.js +1 -1
- package/dist/clis/bilibili/subtitle.js +1 -1
- package/dist/clis/bilibili/user-videos.js +1 -1
- package/dist/clis/boss/batchgreet.js +10 -97
- package/dist/clis/boss/chatlist.js +8 -25
- package/dist/clis/boss/chatmsg.js +11 -42
- package/dist/clis/boss/common.d.ts +92 -0
- package/dist/clis/boss/common.js +223 -0
- package/dist/clis/boss/detail.js +7 -49
- package/dist/clis/boss/exchange.js +13 -79
- package/dist/clis/boss/greet.js +18 -145
- package/dist/clis/boss/invite.js +26 -121
- package/dist/clis/boss/joblist.js +6 -31
- package/dist/clis/boss/mark.js +12 -85
- package/dist/clis/boss/recommend.js +10 -49
- package/dist/clis/boss/resume.js +18 -118
- package/dist/clis/boss/search.js +12 -60
- package/dist/clis/boss/send.js +17 -151
- package/dist/clis/boss/stats.js +18 -69
- package/dist/clis/coupang/add-to-cart.js +1 -1
- package/dist/clis/devto/tag.yaml +34 -0
- package/dist/clis/devto/top.yaml +29 -0
- package/dist/clis/devto/user.yaml +33 -0
- package/dist/clis/douban/book-hot.d.ts +1 -0
- package/dist/clis/douban/book-hot.js +14 -0
- package/dist/clis/douban/marks.d.ts +1 -0
- package/dist/clis/douban/marks.js +115 -0
- package/dist/clis/douban/movie-hot.d.ts +1 -0
- package/dist/clis/douban/movie-hot.js +14 -0
- package/dist/clis/douban/reviews.d.ts +1 -0
- package/dist/clis/douban/reviews.js +106 -0
- package/dist/clis/douban/search.d.ts +1 -0
- package/dist/clis/douban/search.js +16 -0
- package/dist/clis/douban/shared.d.ts +4 -0
- package/dist/clis/douban/shared.js +155 -0
- package/dist/clis/douban/subject.yaml +76 -0
- package/dist/clis/douban/top250.yaml +70 -0
- package/dist/clis/douban/utils.d.ts +35 -0
- package/dist/clis/douban/utils.js +48 -0
- package/dist/clis/facebook/add-friend.yaml +43 -0
- package/dist/clis/facebook/events.yaml +44 -0
- package/dist/clis/facebook/feed.yaml +63 -0
- package/dist/clis/facebook/friends.yaml +42 -0
- package/dist/clis/facebook/groups.yaml +50 -0
- package/dist/clis/facebook/join-group.yaml +44 -0
- package/dist/clis/facebook/memories.yaml +39 -0
- package/dist/clis/facebook/notifications.yaml +40 -0
- package/dist/clis/facebook/profile.yaml +37 -0
- package/dist/clis/facebook/search.yaml +46 -0
- package/dist/clis/google/news.d.ts +5 -0
- package/dist/clis/google/news.js +58 -0
- package/dist/clis/google/search.d.ts +10 -0
- package/dist/clis/google/search.js +127 -0
- package/dist/clis/google/suggest.d.ts +5 -0
- package/dist/clis/google/suggest.js +34 -0
- package/dist/clis/google/trends.d.ts +5 -0
- package/dist/clis/google/trends.js +38 -0
- package/dist/clis/google/utils.d.ts +9 -0
- package/dist/clis/google/utils.js +23 -0
- package/dist/clis/google/utils.test.d.ts +1 -0
- package/dist/clis/google/utils.test.js +75 -0
- package/dist/clis/grok/ask.d.ts +14 -0
- package/dist/clis/grok/ask.js +257 -65
- package/dist/clis/grok/ask.test.d.ts +1 -0
- package/dist/clis/grok/ask.test.js +36 -0
- package/dist/clis/instagram/comment.yaml +52 -0
- package/dist/clis/instagram/explore.yaml +43 -0
- package/dist/clis/instagram/follow.yaml +41 -0
- package/dist/clis/instagram/followers.yaml +51 -0
- package/dist/clis/instagram/following.yaml +51 -0
- package/dist/clis/instagram/like.yaml +46 -0
- package/dist/clis/instagram/profile.yaml +42 -0
- package/dist/clis/instagram/save.yaml +46 -0
- package/dist/clis/instagram/saved.yaml +40 -0
- package/dist/clis/instagram/search.yaml +43 -0
- package/dist/clis/instagram/unfollow.yaml +38 -0
- package/dist/clis/instagram/unlike.yaml +46 -0
- package/dist/clis/instagram/unsave.yaml +46 -0
- package/dist/clis/instagram/user.yaml +54 -0
- package/dist/clis/jike/repost.js +1 -1
- package/dist/clis/jimeng/generate.yaml +1 -0
- package/dist/clis/linux-do/category.yaml +1 -0
- package/dist/clis/lobsters/active.yaml +29 -0
- package/dist/clis/lobsters/hot.yaml +29 -0
- package/dist/clis/lobsters/newest.yaml +29 -0
- package/dist/clis/lobsters/tag.yaml +34 -0
- package/dist/clis/medium/feed.d.ts +1 -0
- package/dist/clis/medium/feed.js +15 -0
- package/dist/clis/medium/search.d.ts +1 -0
- package/dist/clis/medium/search.js +15 -0
- package/dist/clis/medium/shared.d.ts +5 -0
- package/dist/clis/medium/shared.js +78 -0
- package/dist/clis/medium/user.d.ts +1 -0
- package/dist/clis/medium/user.js +15 -0
- package/dist/clis/reddit/comment.js +1 -1
- package/dist/clis/reddit/read.js +1 -1
- package/dist/clis/reddit/save.js +1 -1
- package/dist/clis/reddit/subreddit.yaml +1 -0
- package/dist/clis/reddit/subscribe.js +1 -1
- package/dist/clis/reddit/upvote.js +1 -1
- package/dist/clis/sinablog/article.d.ts +1 -0
- package/dist/clis/sinablog/article.js +14 -0
- package/dist/clis/sinablog/hot.d.ts +1 -0
- package/dist/clis/sinablog/hot.js +14 -0
- package/dist/clis/sinablog/search.d.ts +1 -0
- package/dist/clis/sinablog/search.js +51 -0
- package/dist/clis/sinablog/shared.d.ts +7 -0
- package/dist/clis/sinablog/shared.js +187 -0
- package/dist/clis/sinablog/user.d.ts +1 -0
- package/dist/clis/sinablog/user.js +15 -0
- package/dist/clis/substack/feed.d.ts +1 -0
- package/dist/clis/substack/feed.js +15 -0
- package/dist/clis/substack/publication.d.ts +1 -0
- package/dist/clis/substack/publication.js +15 -0
- package/dist/clis/substack/search.d.ts +1 -0
- package/dist/clis/substack/search.js +77 -0
- package/dist/clis/substack/shared.d.ts +4 -0
- package/dist/clis/substack/shared.js +129 -0
- package/dist/clis/tiktok/comment.yaml +66 -0
- package/dist/clis/tiktok/explore.yaml +39 -0
- package/dist/clis/tiktok/follow.yaml +39 -0
- package/dist/clis/tiktok/following.yaml +46 -0
- package/dist/clis/tiktok/friends.yaml +47 -0
- package/dist/clis/tiktok/like.yaml +38 -0
- package/dist/clis/tiktok/live.yaml +51 -0
- package/dist/clis/tiktok/notifications.yaml +52 -0
- package/dist/clis/tiktok/profile.yaml +45 -0
- package/dist/clis/tiktok/save.yaml +34 -0
- package/dist/clis/tiktok/search.yaml +46 -0
- package/dist/clis/tiktok/unfollow.yaml +44 -0
- package/dist/clis/tiktok/unlike.yaml +38 -0
- package/dist/clis/tiktok/unsave.yaml +36 -0
- package/dist/clis/tiktok/user.yaml +44 -0
- package/dist/clis/twitter/download.d.ts +1 -1
- package/dist/clis/twitter/download.js +3 -3
- package/dist/clis/twitter/followers.js +1 -1
- package/dist/clis/twitter/following.js +1 -1
- package/dist/clis/twitter/thread.js +1 -1
- package/dist/clis/twitter/timeline.d.ts +23 -0
- package/dist/clis/twitter/timeline.js +42 -14
- package/dist/clis/twitter/timeline.test.d.ts +1 -0
- package/dist/clis/twitter/timeline.test.js +102 -0
- package/dist/clis/wikipedia/random.d.ts +1 -0
- package/dist/clis/wikipedia/random.js +19 -0
- package/dist/clis/wikipedia/search.js +3 -3
- package/dist/clis/wikipedia/summary.js +4 -9
- package/dist/clis/wikipedia/trending.d.ts +1 -0
- package/dist/clis/wikipedia/trending.js +35 -0
- package/dist/clis/wikipedia/utils.d.ts +28 -0
- package/dist/clis/wikipedia/utils.js +13 -0
- package/dist/clis/xiaohongshu/creator-note-detail.js +1 -1
- package/dist/clis/xiaohongshu/creator-note-detail.test.js +2 -0
- package/dist/clis/xiaohongshu/creator-notes.test.js +2 -0
- package/dist/clis/xiaohongshu/download.js +1 -1
- package/dist/clis/xueqiu/earnings-date.yaml +69 -0
- package/dist/clis/xueqiu/search.yaml +2 -1
- package/dist/clis/xueqiu/stock.yaml +2 -0
- package/dist/clis/yahoo-finance/quote.js +1 -1
- package/dist/commanderAdapter.js +13 -7
- package/dist/daemon.js +21 -0
- package/dist/discovery.d.ts +8 -0
- package/dist/discovery.js +105 -19
- package/dist/doctor.js +3 -1
- package/dist/doctor.test.js +46 -2
- package/dist/engine.test.d.ts +0 -3
- package/dist/engine.test.js +74 -6
- package/dist/execution.d.ts +4 -2
- package/dist/execution.js +31 -7
- package/dist/explore.d.ts +76 -3
- package/dist/explore.js +11 -4
- package/dist/generate.d.ts +41 -2
- package/dist/generate.js +5 -4
- package/dist/main.js +2 -1
- package/dist/pipeline/executor.d.ts +4 -2
- package/dist/pipeline/executor.js +54 -15
- package/dist/pipeline/executor.test.js +33 -6
- package/dist/pipeline/registry.d.ts +1 -1
- package/dist/pipeline/steps/browser.d.ts +7 -7
- package/dist/pipeline/steps/browser.js +15 -7
- package/dist/pipeline/steps/fetch.d.ts +1 -1
- package/dist/pipeline/steps/fetch.js +11 -7
- package/dist/pipeline/steps/transform.d.ts +6 -5
- package/dist/pipeline/steps/transform.js +30 -9
- package/dist/pipeline/template.d.ts +6 -6
- package/dist/pipeline/template.js +43 -5
- package/dist/pipeline/template.test.js +18 -0
- package/dist/pipeline/transform.test.js +11 -0
- package/dist/plugin.d.ts +31 -0
- package/dist/plugin.js +216 -0
- package/dist/plugin.test.d.ts +4 -0
- package/dist/plugin.test.js +76 -0
- package/dist/registry-api.d.ts +11 -0
- package/dist/registry-api.js +9 -0
- package/dist/registry.d.ts +11 -0
- package/dist/registry.js +6 -1
- package/dist/synthesize.d.ts +94 -4
- package/dist/synthesize.js +5 -4
- package/dist/types.d.ts +39 -26
- package/dist/validate.js +8 -2
- package/docs/.vitepress/config.mts +6 -4
- package/docs/adapters/browser/barchart.md +6 -5
- package/docs/adapters/browser/bilibili.md +9 -0
- package/docs/adapters/browser/devto.md +35 -0
- package/docs/adapters/browser/douban.md +38 -0
- package/docs/adapters/browser/facebook.md +36 -0
- package/docs/adapters/browser/google.md +62 -0
- package/docs/adapters/browser/grok.md +26 -8
- package/docs/adapters/browser/instagram.md +46 -0
- package/docs/adapters/browser/lobsters.md +32 -0
- package/docs/adapters/browser/medium.md +32 -0
- package/docs/adapters/browser/reddit.md +9 -0
- package/docs/adapters/browser/sinablog.md +36 -0
- package/docs/adapters/browser/substack.md +38 -0
- package/docs/adapters/browser/tiktok.md +68 -0
- package/docs/adapters/browser/wikipedia.md +11 -2
- package/docs/adapters/browser/xueqiu.md +10 -0
- package/docs/adapters/browser/yahoo-finance.md +6 -5
- package/docs/adapters/desktop/antigravity.md +6 -0
- package/docs/adapters/desktop/chatgpt.md +2 -1
- package/docs/adapters/desktop/codex.md +5 -1
- package/docs/adapters/desktop/cursor.md +4 -0
- package/docs/adapters/desktop/discord.md +7 -7
- package/docs/adapters/index.md +1 -4
- package/docs/guide/getting-started.md +1 -0
- package/docs/guide/plugins.md +153 -0
- package/docs/zh/guide/plugins.md +107 -0
- package/extension/dist/background.js +91 -23
- package/extension/src/background.ts +82 -29
- package/extension/src/cdp.ts +42 -1
- package/package.json +10 -5
- package/scripts/clean-dist.cjs +13 -0
- package/src/browser/cdp.ts +71 -31
- package/src/browser/daemon-client.ts +21 -5
- package/src/browser/dom-helpers.ts +38 -7
- package/src/browser/dom-snapshot.test.ts +249 -0
- package/src/browser/dom-snapshot.ts +770 -0
- package/src/browser/index.ts +2 -0
- package/src/browser/mcp.ts +3 -1
- package/src/browser/page.ts +57 -21
- package/src/build-manifest.test.ts +70 -2
- package/src/build-manifest.ts +94 -26
- package/src/cli.ts +71 -2
- package/src/clis/barchart/greeks.ts +1 -1
- package/src/clis/barchart/options.ts +1 -1
- package/src/clis/barchart/quote.ts +1 -1
- package/src/clis/bilibili/download.ts +1 -1
- package/src/clis/bilibili/following.ts +1 -1
- package/src/clis/bilibili/subtitle.ts +1 -1
- package/src/clis/bilibili/user-videos.ts +1 -1
- package/src/clis/boss/batchgreet.ts +14 -106
- package/src/clis/boss/chatlist.ts +12 -26
- package/src/clis/boss/chatmsg.ts +16 -40
- package/src/clis/boss/common.ts +287 -0
- package/src/clis/boss/detail.ts +8 -54
- package/src/clis/boss/exchange.ts +15 -89
- package/src/clis/boss/greet.ts +23 -160
- package/src/clis/boss/invite.ts +36 -133
- package/src/clis/boss/joblist.ts +7 -36
- package/src/clis/boss/mark.ts +13 -94
- package/src/clis/boss/recommend.ts +12 -57
- package/src/clis/boss/resume.ts +19 -124
- package/src/clis/boss/search.ts +13 -66
- package/src/clis/boss/send.ts +21 -161
- package/src/clis/boss/stats.ts +19 -74
- package/src/clis/coupang/add-to-cart.ts +1 -1
- package/src/clis/devto/tag.yaml +34 -0
- package/src/clis/devto/top.yaml +29 -0
- package/src/clis/devto/user.yaml +33 -0
- package/src/clis/douban/book-hot.ts +15 -0
- package/src/clis/douban/marks.ts +135 -0
- package/src/clis/douban/movie-hot.ts +15 -0
- package/src/clis/douban/reviews.ts +127 -0
- package/src/clis/douban/search.ts +17 -0
- package/src/clis/douban/shared.ts +165 -0
- package/src/clis/douban/subject.yaml +76 -0
- package/src/clis/douban/top250.yaml +70 -0
- package/src/clis/douban/utils.ts +81 -0
- package/src/clis/facebook/add-friend.yaml +43 -0
- package/src/clis/facebook/events.yaml +44 -0
- package/src/clis/facebook/feed.yaml +63 -0
- package/src/clis/facebook/friends.yaml +42 -0
- package/src/clis/facebook/groups.yaml +50 -0
- package/src/clis/facebook/join-group.yaml +44 -0
- package/src/clis/facebook/memories.yaml +39 -0
- package/src/clis/facebook/notifications.yaml +40 -0
- package/src/clis/facebook/profile.yaml +37 -0
- package/src/clis/facebook/search.yaml +46 -0
- package/src/clis/google/news.ts +66 -0
- package/src/clis/google/search.ts +133 -0
- package/src/clis/google/suggest.ts +40 -0
- package/src/clis/google/trends.ts +44 -0
- package/src/clis/google/utils.test.ts +82 -0
- package/src/clis/google/utils.ts +24 -0
- package/src/clis/grok/ask.test.ts +53 -0
- package/src/clis/grok/ask.ts +300 -69
- package/src/clis/instagram/comment.yaml +52 -0
- package/src/clis/instagram/explore.yaml +43 -0
- package/src/clis/instagram/follow.yaml +41 -0
- package/src/clis/instagram/followers.yaml +51 -0
- package/src/clis/instagram/following.yaml +51 -0
- package/src/clis/instagram/like.yaml +46 -0
- package/src/clis/instagram/profile.yaml +42 -0
- package/src/clis/instagram/save.yaml +46 -0
- package/src/clis/instagram/saved.yaml +40 -0
- package/src/clis/instagram/search.yaml +43 -0
- package/src/clis/instagram/unfollow.yaml +38 -0
- package/src/clis/instagram/unlike.yaml +46 -0
- package/src/clis/instagram/unsave.yaml +46 -0
- package/src/clis/instagram/user.yaml +54 -0
- package/src/clis/jike/repost.ts +1 -1
- package/src/clis/jimeng/generate.yaml +1 -0
- package/src/clis/linux-do/category.yaml +1 -0
- package/src/clis/lobsters/active.yaml +29 -0
- package/src/clis/lobsters/hot.yaml +29 -0
- package/src/clis/lobsters/newest.yaml +29 -0
- package/src/clis/lobsters/tag.yaml +34 -0
- package/src/clis/medium/feed.ts +16 -0
- package/src/clis/medium/search.ts +16 -0
- package/src/clis/medium/shared.ts +83 -0
- package/src/clis/medium/user.ts +16 -0
- package/src/clis/reddit/comment.ts +1 -1
- package/src/clis/reddit/read.ts +1 -1
- package/src/clis/reddit/save.ts +1 -1
- package/src/clis/reddit/subreddit.yaml +1 -0
- package/src/clis/reddit/subscribe.ts +1 -1
- package/src/clis/reddit/upvote.ts +1 -1
- package/src/clis/sinablog/article.ts +15 -0
- package/src/clis/sinablog/hot.ts +15 -0
- package/src/clis/sinablog/search.ts +56 -0
- package/src/clis/sinablog/shared.ts +198 -0
- package/src/clis/sinablog/user.ts +16 -0
- package/src/clis/substack/feed.ts +16 -0
- package/src/clis/substack/publication.ts +16 -0
- package/src/clis/substack/search.ts +91 -0
- package/src/clis/substack/shared.ts +132 -0
- package/src/clis/tiktok/comment.yaml +66 -0
- package/src/clis/tiktok/explore.yaml +39 -0
- package/src/clis/tiktok/follow.yaml +39 -0
- package/src/clis/tiktok/following.yaml +46 -0
- package/src/clis/tiktok/friends.yaml +47 -0
- package/src/clis/tiktok/like.yaml +38 -0
- package/src/clis/tiktok/live.yaml +51 -0
- package/src/clis/tiktok/notifications.yaml +52 -0
- package/src/clis/tiktok/profile.yaml +45 -0
- package/src/clis/tiktok/save.yaml +34 -0
- package/src/clis/tiktok/search.yaml +46 -0
- package/src/clis/tiktok/unfollow.yaml +44 -0
- package/src/clis/tiktok/unlike.yaml +38 -0
- package/src/clis/tiktok/unsave.yaml +36 -0
- package/src/clis/tiktok/user.yaml +44 -0
- package/src/clis/twitter/download.ts +3 -3
- package/src/clis/twitter/followers.ts +1 -1
- package/src/clis/twitter/following.ts +1 -1
- package/src/clis/twitter/thread.ts +1 -1
- package/src/clis/twitter/timeline.test.ts +109 -0
- package/src/clis/twitter/timeline.ts +59 -19
- package/src/clis/wikipedia/random.ts +19 -0
- package/src/clis/wikipedia/search.ts +10 -4
- package/src/clis/wikipedia/summary.ts +4 -9
- package/src/clis/wikipedia/trending.ts +41 -0
- package/src/clis/wikipedia/utils.ts +31 -0
- package/src/clis/xiaohongshu/creator-note-detail.test.ts +2 -0
- package/src/clis/xiaohongshu/creator-note-detail.ts +1 -1
- package/src/clis/xiaohongshu/creator-notes.test.ts +2 -0
- package/src/clis/xiaohongshu/download.ts +1 -1
- package/src/clis/xueqiu/earnings-date.yaml +69 -0
- package/src/clis/xueqiu/search.yaml +2 -1
- package/src/clis/xueqiu/stock.yaml +2 -0
- package/src/clis/yahoo-finance/quote.ts +1 -1
- package/src/commanderAdapter.ts +17 -10
- package/src/daemon.ts +23 -0
- package/src/discovery.ts +134 -24
- package/src/doctor.test.ts +59 -2
- package/src/doctor.ts +4 -2
- package/src/engine.test.ts +79 -6
- package/src/execution.ts +42 -16
- package/src/explore.ts +77 -9
- package/src/generate.ts +58 -9
- package/src/main.ts +2 -1
- package/src/pipeline/executor.test.ts +35 -6
- package/src/pipeline/executor.ts +68 -19
- package/src/pipeline/registry.ts +3 -3
- package/src/pipeline/steps/browser.ts +24 -15
- package/src/pipeline/steps/fetch.ts +18 -13
- package/src/pipeline/steps/transform.ts +40 -15
- package/src/pipeline/template.test.ts +18 -0
- package/src/pipeline/template.ts +86 -13
- package/src/pipeline/transform.test.ts +15 -2
- package/src/plugin.test.ts +86 -0
- package/src/plugin.ts +254 -0
- package/src/registry-api.ts +12 -0
- package/src/registry.ts +19 -1
- package/src/synthesize.ts +102 -21
- package/src/types.ts +44 -12
- package/src/validate.ts +19 -4
- package/tests/e2e/browser-public.test.ts +11 -0
- package/tests/e2e/public-commands.test.ts +64 -0
- package/dist/clis/feishu/new.d.ts +0 -1
- package/dist/clis/feishu/new.js +0 -27
- package/dist/clis/feishu/read.d.ts +0 -1
- package/dist/clis/feishu/read.js +0 -40
- package/dist/clis/feishu/search.d.ts +0 -1
- package/dist/clis/feishu/search.js +0 -30
- package/dist/clis/feishu/send.d.ts +0 -1
- package/dist/clis/feishu/send.js +0 -39
- package/dist/clis/feishu/status.d.ts +0 -1
- package/dist/clis/feishu/status.js +0 -28
- package/dist/clis/neteasemusic/like.d.ts +0 -1
- package/dist/clis/neteasemusic/like.js +0 -25
- package/dist/clis/neteasemusic/lyrics.d.ts +0 -1
- package/dist/clis/neteasemusic/lyrics.js +0 -47
- package/dist/clis/neteasemusic/next.d.ts +0 -1
- package/dist/clis/neteasemusic/next.js +0 -26
- package/dist/clis/neteasemusic/play.d.ts +0 -1
- package/dist/clis/neteasemusic/play.js +0 -26
- package/dist/clis/neteasemusic/playing.d.ts +0 -1
- package/dist/clis/neteasemusic/playing.js +0 -59
- package/dist/clis/neteasemusic/playlist.d.ts +0 -1
- package/dist/clis/neteasemusic/playlist.js +0 -46
- package/dist/clis/neteasemusic/prev.d.ts +0 -1
- package/dist/clis/neteasemusic/prev.js +0 -25
- package/dist/clis/neteasemusic/search.d.ts +0 -1
- package/dist/clis/neteasemusic/search.js +0 -52
- package/dist/clis/neteasemusic/status.d.ts +0 -1
- package/dist/clis/neteasemusic/status.js +0 -16
- package/dist/clis/neteasemusic/volume.d.ts +0 -1
- package/dist/clis/neteasemusic/volume.js +0 -54
- package/dist/clis/wechat/chats.d.ts +0 -1
- package/dist/clis/wechat/chats.js +0 -28
- package/dist/clis/wechat/contacts.d.ts +0 -1
- package/dist/clis/wechat/contacts.js +0 -28
- package/dist/clis/wechat/read.d.ts +0 -1
- package/dist/clis/wechat/read.js +0 -58
- package/dist/clis/wechat/search.d.ts +0 -1
- package/dist/clis/wechat/search.js +0 -31
- package/dist/clis/wechat/send.d.ts +0 -1
- package/dist/clis/wechat/send.js +0 -42
- package/dist/clis/wechat/status.d.ts +0 -1
- package/dist/clis/wechat/status.js +0 -29
- package/dist/pipeline.d.ts +0 -7
- package/dist/pipeline.js +0 -7
- package/docs/adapters/browser/github.md +0 -26
- package/docs/adapters/desktop/feishu.md +0 -20
- package/docs/adapters/desktop/neteasemusic.md +0 -31
- package/docs/adapters/desktop/wechat.md +0 -28
- package/src/clis/antigravity/README.md +0 -5
- package/src/clis/antigravity/README.zh-CN.md +0 -51
- package/src/clis/chaoxing/README.md +0 -14
- package/src/clis/chaoxing/README.zh-CN.md +0 -35
- package/src/clis/chatgpt/README.md +0 -5
- package/src/clis/chatgpt/README.zh-CN.md +0 -44
- package/src/clis/chatwise/README.md +0 -5
- package/src/clis/chatwise/README.zh-CN.md +0 -38
- package/src/clis/codex/README.md +0 -5
- package/src/clis/codex/README.zh-CN.md +0 -33
- package/src/clis/cursor/README.md +0 -5
- package/src/clis/cursor/README.zh-CN.md +0 -33
- package/src/clis/discord-app/README.md +0 -5
- package/src/clis/discord-app/README.zh-CN.md +0 -28
- package/src/clis/feishu/README.md +0 -5
- package/src/clis/feishu/README.zh-CN.md +0 -20
- package/src/clis/feishu/new.ts +0 -32
- package/src/clis/feishu/read.ts +0 -48
- package/src/clis/feishu/search.ts +0 -35
- package/src/clis/feishu/send.ts +0 -46
- package/src/clis/feishu/status.ts +0 -34
- package/src/clis/neteasemusic/README.md +0 -5
- package/src/clis/neteasemusic/README.zh-CN.md +0 -31
- package/src/clis/neteasemusic/like.ts +0 -28
- package/src/clis/neteasemusic/lyrics.ts +0 -53
- package/src/clis/neteasemusic/next.ts +0 -30
- package/src/clis/neteasemusic/play.ts +0 -30
- package/src/clis/neteasemusic/playing.ts +0 -62
- package/src/clis/neteasemusic/playlist.ts +0 -51
- package/src/clis/neteasemusic/prev.ts +0 -29
- package/src/clis/neteasemusic/search.ts +0 -58
- package/src/clis/neteasemusic/status.ts +0 -18
- package/src/clis/neteasemusic/volume.ts +0 -61
- package/src/clis/notion/README.md +0 -5
- package/src/clis/notion/README.zh-CN.md +0 -29
- package/src/clis/wechat/README.md +0 -5
- package/src/clis/wechat/README.zh-CN.md +0 -28
- package/src/clis/wechat/chats.ts +0 -33
- package/src/clis/wechat/contacts.ts +0 -33
- package/src/clis/wechat/read.ts +0 -72
- package/src/clis/wechat/search.ts +0 -36
- package/src/clis/wechat/send.ts +0 -49
- package/src/clis/wechat/status.ts +0 -35
- package/src/pipeline.ts +0 -8
package/dist/types.d.ts
CHANGED
|
@@ -4,6 +4,39 @@
|
|
|
4
4
|
* All pipeline steps and CLI adapters should use this interface
|
|
5
5
|
* instead of `any` for browser interactions.
|
|
6
6
|
*/
|
|
7
|
+
export interface BrowserCookie {
|
|
8
|
+
name: string;
|
|
9
|
+
value: string;
|
|
10
|
+
domain: string;
|
|
11
|
+
path?: string;
|
|
12
|
+
secure?: boolean;
|
|
13
|
+
httpOnly?: boolean;
|
|
14
|
+
expirationDate?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface SnapshotOptions {
|
|
17
|
+
interactive?: boolean;
|
|
18
|
+
compact?: boolean;
|
|
19
|
+
maxDepth?: number;
|
|
20
|
+
raw?: boolean;
|
|
21
|
+
viewportExpand?: number;
|
|
22
|
+
maxTextLength?: number;
|
|
23
|
+
}
|
|
24
|
+
export interface WaitOptions {
|
|
25
|
+
text?: string;
|
|
26
|
+
time?: number;
|
|
27
|
+
timeout?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface ScreenshotOptions {
|
|
30
|
+
format?: 'png' | 'jpeg';
|
|
31
|
+
quality?: number;
|
|
32
|
+
fullPage?: boolean;
|
|
33
|
+
path?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface BrowserSessionInfo {
|
|
36
|
+
workspace?: string;
|
|
37
|
+
connected?: boolean;
|
|
38
|
+
[key: string]: unknown;
|
|
39
|
+
}
|
|
7
40
|
export interface IPage {
|
|
8
41
|
goto(url: string, options?: {
|
|
9
42
|
waitUntil?: 'load' | 'none';
|
|
@@ -13,29 +46,14 @@ export interface IPage {
|
|
|
13
46
|
getCookies(opts?: {
|
|
14
47
|
domain?: string;
|
|
15
48
|
url?: string;
|
|
16
|
-
}): Promise<
|
|
17
|
-
|
|
18
|
-
value: string;
|
|
19
|
-
domain: string;
|
|
20
|
-
path?: string;
|
|
21
|
-
secure?: boolean;
|
|
22
|
-
httpOnly?: boolean;
|
|
23
|
-
expirationDate?: number;
|
|
24
|
-
}>>;
|
|
25
|
-
snapshot(opts?: {
|
|
26
|
-
interactive?: boolean;
|
|
27
|
-
compact?: boolean;
|
|
28
|
-
maxDepth?: number;
|
|
29
|
-
raw?: boolean;
|
|
30
|
-
}): Promise<any>;
|
|
49
|
+
}): Promise<BrowserCookie[]>;
|
|
50
|
+
snapshot(opts?: SnapshotOptions): Promise<any>;
|
|
31
51
|
click(ref: string): Promise<void>;
|
|
32
52
|
typeText(ref: string, text: string): Promise<void>;
|
|
33
53
|
pressKey(key: string): Promise<void>;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
timeout?: number;
|
|
38
|
-
}): Promise<void>;
|
|
54
|
+
scrollTo(ref: string): Promise<any>;
|
|
55
|
+
getFormState(): Promise<any>;
|
|
56
|
+
wait(options: number | WaitOptions): Promise<void>;
|
|
39
57
|
tabs(): Promise<any>;
|
|
40
58
|
closeTab(index?: number): Promise<void>;
|
|
41
59
|
newTab(): Promise<void>;
|
|
@@ -49,10 +67,5 @@ export interface IPage {
|
|
|
49
67
|
}): Promise<void>;
|
|
50
68
|
installInterceptor(pattern: string): Promise<void>;
|
|
51
69
|
getInterceptedRequests(): Promise<any[]>;
|
|
52
|
-
screenshot(options?:
|
|
53
|
-
format?: 'png' | 'jpeg';
|
|
54
|
-
quality?: number;
|
|
55
|
-
fullPage?: boolean;
|
|
56
|
-
path?: string;
|
|
57
|
-
}): Promise<string>;
|
|
70
|
+
screenshot(options?: ScreenshotOptions): Promise<string>;
|
|
58
71
|
}
|
package/dist/validate.js
CHANGED
|
@@ -9,6 +9,12 @@ const KNOWN_STEP_NAMES = new Set([
|
|
|
9
9
|
'select', 'map', 'filter', 'sort', 'limit',
|
|
10
10
|
'intercept', 'tap',
|
|
11
11
|
]);
|
|
12
|
+
function isRecord(value) {
|
|
13
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
14
|
+
}
|
|
15
|
+
function getErrorMessage(error) {
|
|
16
|
+
return error instanceof Error ? error.message : String(error);
|
|
17
|
+
}
|
|
12
18
|
export function validateClisWithTarget(dirs, target) {
|
|
13
19
|
const results = [];
|
|
14
20
|
let errors = 0;
|
|
@@ -45,7 +51,7 @@ function validateYamlFile(filePath) {
|
|
|
45
51
|
try {
|
|
46
52
|
const raw = fs.readFileSync(filePath, 'utf-8');
|
|
47
53
|
const def = yaml.load(raw);
|
|
48
|
-
if (!def
|
|
54
|
+
if (!isRecord(def)) {
|
|
49
55
|
errors.push('Not a valid YAML object');
|
|
50
56
|
return { path: filePath, errors, warnings };
|
|
51
57
|
}
|
|
@@ -75,7 +81,7 @@ function validateYamlFile(filePath) {
|
|
|
75
81
|
}
|
|
76
82
|
}
|
|
77
83
|
catch (e) {
|
|
78
|
-
errors.push(`YAML parse error: ${e
|
|
84
|
+
errors.push(`YAML parse error: ${getErrorMessage(e)}`);
|
|
79
85
|
}
|
|
80
86
|
return { path: filePath, errors, warnings };
|
|
81
87
|
}
|
|
@@ -31,6 +31,7 @@ export default defineConfig({
|
|
|
31
31
|
{ text: 'Installation', link: '/guide/installation' },
|
|
32
32
|
{ text: 'Browser Bridge', link: '/guide/browser-bridge' },
|
|
33
33
|
{ text: 'Troubleshooting', link: '/guide/troubleshooting' },
|
|
34
|
+
{ text: 'Plugins', link: '/guide/plugins' },
|
|
34
35
|
],
|
|
35
36
|
},
|
|
36
37
|
],
|
|
@@ -67,6 +68,9 @@ export default defineConfig({
|
|
|
67
68
|
{ text: 'Chaoxing', link: '/adapters/browser/chaoxing' },
|
|
68
69
|
{ text: 'Grok', link: '/adapters/browser/grok' },
|
|
69
70
|
{ text: 'WeRead', link: '/adapters/browser/weread' },
|
|
71
|
+
{ text: 'Douban', link: '/adapters/browser/douban' },
|
|
72
|
+
{ text: 'Sina Blog', link: '/adapters/browser/sinablog' },
|
|
73
|
+
{ text: 'Substack', link: '/adapters/browser/substack' },
|
|
70
74
|
],
|
|
71
75
|
},
|
|
72
76
|
{
|
|
@@ -74,7 +78,7 @@ export default defineConfig({
|
|
|
74
78
|
collapsed: false,
|
|
75
79
|
items: [
|
|
76
80
|
{ text: 'HackerNews', link: '/adapters/browser/hackernews' },
|
|
77
|
-
{ text: '
|
|
81
|
+
{ text: 'Dev.to', link: '/adapters/browser/devto' },
|
|
78
82
|
{ text: 'BBC', link: '/adapters/browser/bbc' },
|
|
79
83
|
{ text: 'Apple Podcasts', link: '/adapters/browser/apple-podcasts' },
|
|
80
84
|
{ text: 'Xiaoyuzhou', link: '/adapters/browser/xiaoyuzhou' },
|
|
@@ -98,9 +102,6 @@ export default defineConfig({
|
|
|
98
102
|
{ text: 'ChatWise', link: '/adapters/desktop/chatwise' },
|
|
99
103
|
{ text: 'Notion', link: '/adapters/desktop/notion' },
|
|
100
104
|
{ text: 'Discord', link: '/adapters/desktop/discord' },
|
|
101
|
-
{ text: 'Feishu', link: '/adapters/desktop/feishu' },
|
|
102
|
-
{ text: 'WeChat', link: '/adapters/desktop/wechat' },
|
|
103
|
-
{ text: 'NeteaseMusic', link: '/adapters/desktop/neteasemusic' },
|
|
104
105
|
],
|
|
105
106
|
},
|
|
106
107
|
],
|
|
@@ -150,6 +151,7 @@ export default defineConfig({
|
|
|
150
151
|
{ text: '快速开始', link: '/zh/guide/getting-started' },
|
|
151
152
|
{ text: '安装', link: '/zh/guide/installation' },
|
|
152
153
|
{ text: 'Browser Bridge', link: '/zh/guide/browser-bridge' },
|
|
154
|
+
{ text: '插件', link: '/zh/guide/plugins' },
|
|
153
155
|
],
|
|
154
156
|
},
|
|
155
157
|
],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Barchart
|
|
2
2
|
|
|
3
|
-
**Mode**:
|
|
3
|
+
**Mode**: 🔐 Browser · **Domain**: `barchart.com`
|
|
4
4
|
|
|
5
5
|
## Commands
|
|
6
6
|
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
17
|
# Get stock quote
|
|
18
|
-
opencli barchart quote
|
|
18
|
+
opencli barchart quote AAPL
|
|
19
19
|
|
|
20
20
|
# View options chain
|
|
21
|
-
opencli barchart options
|
|
21
|
+
opencli barchart options TSLA
|
|
22
22
|
|
|
23
23
|
# Options greeks overview
|
|
24
|
-
opencli barchart greeks
|
|
24
|
+
opencli barchart greeks NVDA
|
|
25
25
|
|
|
26
26
|
# Unusual options flow
|
|
27
27
|
opencli barchart flow --limit 20 -f json
|
|
@@ -29,4 +29,5 @@ opencli barchart flow --limit 20 -f json
|
|
|
29
29
|
|
|
30
30
|
## Prerequisites
|
|
31
31
|
|
|
32
|
-
-
|
|
32
|
+
- Chrome running and able to open `barchart.com`
|
|
33
|
+
- [Browser Bridge extension](/guide/browser-bridge) installed
|
|
@@ -25,6 +25,15 @@
|
|
|
25
25
|
# Quick start
|
|
26
26
|
opencli bilibili hot --limit 5
|
|
27
27
|
|
|
28
|
+
# Search videos
|
|
29
|
+
opencli bilibili search 黑神话 --limit 10
|
|
30
|
+
|
|
31
|
+
# Read one creator's videos
|
|
32
|
+
opencli bilibili user-videos 2 --limit 10
|
|
33
|
+
|
|
34
|
+
# Fetch subtitles
|
|
35
|
+
opencli bilibili subtitle BV1xx411c7mD --lang zh-CN
|
|
36
|
+
|
|
28
37
|
# JSON output
|
|
29
38
|
opencli bilibili hot -f json
|
|
30
39
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Dev.to
|
|
2
|
+
|
|
3
|
+
**Mode**: 🌐 Public · **Domain**: `dev.to`
|
|
4
|
+
|
|
5
|
+
Fetch the latest and greatest developer articles from the DEV community without needing an API key.
|
|
6
|
+
|
|
7
|
+
## Commands
|
|
8
|
+
|
|
9
|
+
| Command | Description |
|
|
10
|
+
|---------|-------------|
|
|
11
|
+
| `opencli devto top` | Top DEV.to articles of the day |
|
|
12
|
+
| `opencli devto tag` | Latest articles for a specific tag |
|
|
13
|
+
| `opencli devto user` | Recent articles from a specific user |
|
|
14
|
+
|
|
15
|
+
## Usage Examples
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Top articles today
|
|
19
|
+
opencli devto top --limit 5
|
|
20
|
+
|
|
21
|
+
# Articles by tag (positional argument)
|
|
22
|
+
opencli devto tag javascript
|
|
23
|
+
opencli devto tag python --limit 20
|
|
24
|
+
|
|
25
|
+
# Articles by a specific author
|
|
26
|
+
opencli devto user ben
|
|
27
|
+
opencli devto user thepracticaldev --limit 5
|
|
28
|
+
|
|
29
|
+
# JSON output
|
|
30
|
+
opencli devto top -f json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Prerequisites
|
|
34
|
+
|
|
35
|
+
- No browser required — uses the public DEV.to API
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# 豆瓣 (Douban)
|
|
2
|
+
|
|
3
|
+
**Mode**: 🔐 Browser (Cookie) · **Domain**: `douban.com`
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
| Command | Description |
|
|
8
|
+
|---------|-------------|
|
|
9
|
+
| `opencli douban movie-hot` | 豆瓣电影热门榜单 |
|
|
10
|
+
| `opencli douban book-hot` | 豆瓣图书热门榜单 |
|
|
11
|
+
| `opencli douban search` | 搜索豆瓣电影、图书或音乐 |
|
|
12
|
+
|
|
13
|
+
## Usage Examples
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# 电影热门
|
|
17
|
+
opencli douban movie-hot --limit 10
|
|
18
|
+
|
|
19
|
+
# 图书热门
|
|
20
|
+
opencli douban book-hot --limit 10
|
|
21
|
+
|
|
22
|
+
# 搜索电影
|
|
23
|
+
opencli douban search "流浪地球"
|
|
24
|
+
|
|
25
|
+
# 搜索图书
|
|
26
|
+
opencli douban search --type book "三体"
|
|
27
|
+
|
|
28
|
+
# 搜索音乐
|
|
29
|
+
opencli douban search --type music "周杰伦"
|
|
30
|
+
|
|
31
|
+
# JSON output
|
|
32
|
+
opencli douban movie-hot -f json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Prerequisites
|
|
36
|
+
|
|
37
|
+
- Chrome logged into `douban.com`
|
|
38
|
+
- Browser Bridge extension installed
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Facebook
|
|
2
|
+
|
|
3
|
+
**Mode**: 🔐 Browser · **Domain**: `facebook.com`
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
| Command | Description |
|
|
8
|
+
|---------|-------------|
|
|
9
|
+
| `opencli facebook profile` | Get user/page profile info |
|
|
10
|
+
| `opencli facebook notifications` | Get recent notifications |
|
|
11
|
+
| `opencli facebook feed` | Get news feed posts |
|
|
12
|
+
| `opencli facebook search` | Search people, pages, posts |
|
|
13
|
+
|
|
14
|
+
## Usage Examples
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# View a profile
|
|
18
|
+
opencli facebook profile zuck
|
|
19
|
+
|
|
20
|
+
# Get notifications
|
|
21
|
+
opencli facebook notifications --limit 10
|
|
22
|
+
|
|
23
|
+
# News feed
|
|
24
|
+
opencli facebook feed --limit 5
|
|
25
|
+
|
|
26
|
+
# Search
|
|
27
|
+
opencli facebook search "OpenAI" --limit 5
|
|
28
|
+
|
|
29
|
+
# JSON output
|
|
30
|
+
opencli facebook profile zuck -f json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Prerequisites
|
|
34
|
+
|
|
35
|
+
- Chrome running and **logged into** facebook.com
|
|
36
|
+
- [Browser Bridge extension](/guide/browser-bridge) installed
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Google
|
|
2
|
+
|
|
3
|
+
**Mode**: 🌐 / 🔐 Mixed · **Domains**: `google.com`, `suggestqueries.google.com`, `news.google.com`, `trends.google.com`
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
| Command | Description |
|
|
8
|
+
|---------|-------------|
|
|
9
|
+
| `opencli google search <keyword>` | Search Google and extract results from the page |
|
|
10
|
+
| `opencli google suggest <keyword>` | Get Google search suggestions |
|
|
11
|
+
| `opencli google news [keyword]` | Get Google News headlines (top stories or search) |
|
|
12
|
+
| `opencli google trends` | Get Google Trends daily trending searches |
|
|
13
|
+
|
|
14
|
+
## What works today
|
|
15
|
+
|
|
16
|
+
- Public API commands work without a browser:
|
|
17
|
+
- `suggest` — JSON API, no auth needed
|
|
18
|
+
- `news` — RSS feed, supports top stories and keyword search
|
|
19
|
+
- `trends` — RSS feed, supports different regions
|
|
20
|
+
- `google search` uses browser mode to extract results from google.com.
|
|
21
|
+
|
|
22
|
+
## Current limitations
|
|
23
|
+
|
|
24
|
+
- `google search` may trigger CAPTCHA in Standalone browser mode. Extension mode (with an established Chrome session) is more reliable.
|
|
25
|
+
- Google frequently changes its DOM structure. If `search` stops returning results, selectors may need updating.
|
|
26
|
+
- Snippet extraction may return empty for some results depending on Google's layout.
|
|
27
|
+
|
|
28
|
+
## Usage Examples
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Search Google
|
|
32
|
+
opencli google search "typescript tutorial" --limit 10
|
|
33
|
+
|
|
34
|
+
# Get search suggestions
|
|
35
|
+
opencli google suggest python
|
|
36
|
+
|
|
37
|
+
# Get top news headlines
|
|
38
|
+
opencli google news --limit 5
|
|
39
|
+
|
|
40
|
+
# Search news for a topic
|
|
41
|
+
opencli google news "artificial intelligence" --limit 10 --lang en --region US
|
|
42
|
+
|
|
43
|
+
# Get trending searches in Japan
|
|
44
|
+
opencli google trends --region JP --limit 10
|
|
45
|
+
|
|
46
|
+
# Output as JSON
|
|
47
|
+
opencli google search "machine learning" -f json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Prerequisites
|
|
51
|
+
|
|
52
|
+
- `suggest`, `news`, `trends` do not require Chrome.
|
|
53
|
+
- `search` requires:
|
|
54
|
+
- Chrome running (or Standalone mode will auto-launch)
|
|
55
|
+
- For best results, use the [Browser Bridge extension](/guide/browser-bridge) with an established Google session
|
|
56
|
+
|
|
57
|
+
## Notes
|
|
58
|
+
|
|
59
|
+
- `suggest` defaults to `--lang zh-CN`; other commands default to `--lang en`.
|
|
60
|
+
- `news` supports `--lang` and `--region` parameters for localized results.
|
|
61
|
+
- `trends` traffic values are raw strings (e.g. "500K+", "1,000,000+"), not numeric.
|
|
62
|
+
- `search` output includes three result types: `result` (standard), `snippet` (featured answer box), and `paa` (People Also Ask).
|
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
# Grok
|
|
2
2
|
|
|
3
|
-
**Mode**:
|
|
3
|
+
**Mode**: Default Grok adapter + optional explicit consumer web path · **Domain**: `grok.com`
|
|
4
4
|
|
|
5
5
|
## Commands
|
|
6
6
|
|
|
7
7
|
| Command | Description |
|
|
8
8
|
|---------|-------------|
|
|
9
|
-
| `opencli grok ask` |
|
|
9
|
+
| `opencli grok ask` | Keep the default Grok ask behavior |
|
|
10
|
+
| `opencli grok ask --web` | Use the explicit grok.com consumer web UI flow |
|
|
10
11
|
|
|
11
12
|
## Usage Examples
|
|
12
13
|
|
|
13
14
|
```bash
|
|
14
|
-
#
|
|
15
|
+
# Default / compatibility path
|
|
15
16
|
opencli grok ask --prompt "Explain quantum computing in simple terms"
|
|
16
17
|
|
|
17
|
-
#
|
|
18
|
-
opencli grok ask --prompt "
|
|
18
|
+
# Explicit consumer web path
|
|
19
|
+
opencli grok ask --prompt "Explain quantum computing in simple terms" --web
|
|
20
|
+
|
|
21
|
+
# Best-effort fresh chat on the consumer web path
|
|
22
|
+
opencli grok ask --prompt "Hello" --web --new
|
|
19
23
|
|
|
20
24
|
# Set custom timeout (default: 120s)
|
|
21
|
-
opencli grok ask --prompt "Write a long essay" --timeout 180
|
|
25
|
+
opencli grok ask --prompt "Write a long essay" --web --timeout 180
|
|
22
26
|
```
|
|
23
27
|
|
|
24
28
|
### Options
|
|
@@ -27,9 +31,23 @@ opencli grok ask --prompt "Write a long essay" --timeout 180
|
|
|
27
31
|
|--------|-------------|
|
|
28
32
|
| `--prompt` | The message to send (required) |
|
|
29
33
|
| `--timeout` | Wait timeout in seconds (default: 120) |
|
|
30
|
-
| `--new` | Start a new chat
|
|
34
|
+
| `--new` | Start a new chat before sending (default: false) |
|
|
35
|
+
| `--web` | Opt into the explicit grok.com consumer web flow (default: false) |
|
|
36
|
+
|
|
37
|
+
## Behavior
|
|
38
|
+
|
|
39
|
+
- `opencli grok ask` keeps the upstream/default behavior intact.
|
|
40
|
+
- `opencli grok ask --web` switches to the newer hardened consumer-web implementation.
|
|
41
|
+
- The `--web` path adds stricter composer detection, clearer blocked/session-gated hints, and waits for a stabilized assistant bubble before returning.
|
|
31
42
|
|
|
32
43
|
## Prerequisites
|
|
33
44
|
|
|
34
|
-
-
|
|
45
|
+
- The Grok adapter still depends on browser-backed access to `grok.com`
|
|
46
|
+
- For `--web`, Chrome should already be running with an authenticated Grok consumer session
|
|
35
47
|
- [Browser Bridge extension](/guide/browser-bridge) installed
|
|
48
|
+
|
|
49
|
+
## Caveats
|
|
50
|
+
|
|
51
|
+
- `--web` drives the Grok consumer web UI in the browser, not an API.
|
|
52
|
+
- It depends on an already-authenticated session and can fail if Grok shows login, challenge, rate-limit, or other session-gating UI.
|
|
53
|
+
- It may break when the Grok composer DOM, submit button behavior, or message bubble structure changes.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Instagram
|
|
2
|
+
|
|
3
|
+
**Mode**: 🔐 Browser · **Domain**: `instagram.com`
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
| Command | Description |
|
|
8
|
+
|---------|-------------|
|
|
9
|
+
| `opencli instagram profile` | Get user profile info |
|
|
10
|
+
| `opencli instagram search` | Search users |
|
|
11
|
+
| `opencli instagram user` | Get recent posts from a user |
|
|
12
|
+
| `opencli instagram explore` | Discover trending posts |
|
|
13
|
+
| `opencli instagram followers` | List user's followers |
|
|
14
|
+
| `opencli instagram following` | List user's following |
|
|
15
|
+
| `opencli instagram saved` | Get your saved posts |
|
|
16
|
+
|
|
17
|
+
## Usage Examples
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# View a user's profile
|
|
21
|
+
opencli instagram profile nasa
|
|
22
|
+
|
|
23
|
+
# Search users
|
|
24
|
+
opencli instagram search nasa --limit 5
|
|
25
|
+
|
|
26
|
+
# View a user's recent posts
|
|
27
|
+
opencli instagram user nasa --limit 10
|
|
28
|
+
|
|
29
|
+
# Discover trending posts
|
|
30
|
+
opencli instagram explore --limit 20
|
|
31
|
+
|
|
32
|
+
# List followers/following
|
|
33
|
+
opencli instagram followers nasa --limit 20
|
|
34
|
+
opencli instagram following nasa --limit 20
|
|
35
|
+
|
|
36
|
+
# Get your saved posts
|
|
37
|
+
opencli instagram saved --limit 10
|
|
38
|
+
|
|
39
|
+
# JSON output
|
|
40
|
+
opencli instagram profile nasa -f json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Prerequisites
|
|
44
|
+
|
|
45
|
+
- Chrome running and **logged into** instagram.com
|
|
46
|
+
- [Browser Bridge extension](/guide/browser-bridge) installed
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Lobsters
|
|
2
|
+
|
|
3
|
+
**Mode**: 🌐 Public · **Domain**: `lobste.rs`
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
| Command | Description |
|
|
8
|
+
|---------|-------------|
|
|
9
|
+
| `opencli lobsters hot` | Hottest stories |
|
|
10
|
+
| `opencli lobsters newest` | Latest stories |
|
|
11
|
+
| `opencli lobsters active` | Most active discussions |
|
|
12
|
+
| `opencli lobsters tag` | Stories by tag |
|
|
13
|
+
|
|
14
|
+
## Usage Examples
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# Quick start
|
|
18
|
+
opencli lobsters hot --limit 10
|
|
19
|
+
|
|
20
|
+
# Filter by tag
|
|
21
|
+
opencli lobsters tag --tag rust --limit 5
|
|
22
|
+
|
|
23
|
+
# JSON output
|
|
24
|
+
opencli lobsters hot -f json
|
|
25
|
+
|
|
26
|
+
# Verbose mode
|
|
27
|
+
opencli lobsters hot -v
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Prerequisites
|
|
31
|
+
|
|
32
|
+
None — all commands use the public JSON API, no browser or login required.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Medium
|
|
2
|
+
|
|
3
|
+
**Mode**: 🌗 Mixed · **Domain**: `medium.com`
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
| Command | Description |
|
|
8
|
+
|---------|-------------|
|
|
9
|
+
| `opencli medium feed` | Get hot Medium posts, optionally scoped to a topic |
|
|
10
|
+
| `opencli medium search` | Search Medium posts by keyword |
|
|
11
|
+
| `opencli medium user` | Get recent articles by a user |
|
|
12
|
+
|
|
13
|
+
## Usage Examples
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Get the general Medium feed
|
|
17
|
+
opencli medium feed --limit 10
|
|
18
|
+
|
|
19
|
+
# Search posts by keyword
|
|
20
|
+
opencli medium search ai
|
|
21
|
+
|
|
22
|
+
# Get articles by a user
|
|
23
|
+
opencli medium user @username
|
|
24
|
+
|
|
25
|
+
# Topic feed as JSON
|
|
26
|
+
opencli medium feed --topic programming -f json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Prerequisites
|
|
30
|
+
|
|
31
|
+
- `opencli medium search` can run without a browser
|
|
32
|
+
- `opencli medium feed` and `opencli medium user` require Browser Bridge access to `medium.com`
|
|
@@ -28,6 +28,15 @@
|
|
|
28
28
|
# Quick start
|
|
29
29
|
opencli reddit hot --limit 5
|
|
30
30
|
|
|
31
|
+
# Read one subreddit
|
|
32
|
+
opencli reddit subreddit python --limit 10
|
|
33
|
+
|
|
34
|
+
# Read a post thread
|
|
35
|
+
opencli reddit read 1abc123 --depth 2
|
|
36
|
+
|
|
37
|
+
# Comment on a post
|
|
38
|
+
opencli reddit comment 1abc123 "Great post"
|
|
39
|
+
|
|
31
40
|
# JSON output
|
|
32
41
|
opencli reddit hot -f json
|
|
33
42
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# 新浪博客 (Sina Blog)
|
|
2
|
+
|
|
3
|
+
**Mode**: 🌐 Public (search) / 🔐 Browser (hot, article, user) · **Domain**: `blog.sina.com.cn`
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
| Command | Description |
|
|
8
|
+
|---------|-------------|
|
|
9
|
+
| `opencli sinablog hot` | 获取新浪博客热门文章/推荐 |
|
|
10
|
+
| `opencli sinablog search` | 搜索新浪博客文章(通过新浪搜索,无需浏览器) |
|
|
11
|
+
| `opencli sinablog article` | 获取新浪博客单篇文章详情 |
|
|
12
|
+
| `opencli sinablog user` | 获取新浪博客用户的文章列表 |
|
|
13
|
+
|
|
14
|
+
## Usage Examples
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# 热门文章
|
|
18
|
+
opencli sinablog hot --limit 10
|
|
19
|
+
|
|
20
|
+
# 搜索文章(公开 API,无需浏览器)
|
|
21
|
+
opencli sinablog search "人工智能"
|
|
22
|
+
|
|
23
|
+
# 文章详情
|
|
24
|
+
opencli sinablog article "https://blog.sina.com.cn/s/blog_xxx.html"
|
|
25
|
+
|
|
26
|
+
# 用户文章列表
|
|
27
|
+
opencli sinablog user 1234567890 --limit 10
|
|
28
|
+
|
|
29
|
+
# JSON output
|
|
30
|
+
opencli sinablog hot -f json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Prerequisites
|
|
34
|
+
|
|
35
|
+
- `search` command: No login required (public API)
|
|
36
|
+
- `hot`, `article`, `user` commands: Chrome with `blog.sina.com.cn` accessible, Browser Bridge extension installed
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Substack
|
|
2
|
+
|
|
3
|
+
**Mode**: 🌐 Public (search) / 🔐 Browser (feed, publication) · **Domain**: `substack.com`
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
| Command | Description |
|
|
8
|
+
|---------|-------------|
|
|
9
|
+
| `opencli substack feed` | Substack 热门文章 Feed |
|
|
10
|
+
| `opencli substack search` | 搜索 Substack 文章和 Newsletter(无需浏览器) |
|
|
11
|
+
| `opencli substack publication` | 获取特定 Substack Newsletter 的最新文章 |
|
|
12
|
+
|
|
13
|
+
## Usage Examples
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# 热门 Feed
|
|
17
|
+
opencli substack feed --limit 10
|
|
18
|
+
|
|
19
|
+
# 按分类浏览
|
|
20
|
+
opencli substack feed --category tech --limit 10
|
|
21
|
+
|
|
22
|
+
# 搜索文章(公开 API,无需浏览器)
|
|
23
|
+
opencli substack search "AI"
|
|
24
|
+
|
|
25
|
+
# 搜索 Newsletter
|
|
26
|
+
opencli substack search "technology" --type publications
|
|
27
|
+
|
|
28
|
+
# 查看特定 Newsletter 的最新文章
|
|
29
|
+
opencli substack publication "https://example.substack.com" --limit 10
|
|
30
|
+
|
|
31
|
+
# JSON output
|
|
32
|
+
opencli substack search "AI" -f json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Prerequisites
|
|
36
|
+
|
|
37
|
+
- `search` command: No login required (public API)
|
|
38
|
+
- `feed`, `publication` commands: Chrome with `substack.com` accessible, Browser Bridge extension installed
|