clawmoney 0.17.24 → 0.17.39
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/dist/commands/api-setup.d.ts +22 -0
- package/dist/commands/api-setup.js +189 -0
- package/dist/commands/provider-setup.js +7 -8
- package/dist/hub/executor.d.ts +11 -3
- package/dist/hub/executor.js +71 -732
- package/dist/hub/poller.js +37 -1
- package/dist/hub/provider.js +5 -1
- package/dist/hub/types.d.ts +18 -2
- package/dist/task/daemon.d.ts +2 -0
- package/dist/task/daemon.js +160 -0
- package/dist/task/skills/bilibili/_bnbot.d.ts +2 -0
- package/dist/task/skills/bilibili/_bnbot.js +42 -0
- package/dist/task/skills/bilibili/_helpers.d.ts +1 -0
- package/dist/task/skills/bilibili/_helpers.js +1 -0
- package/dist/task/skills/bilibili/_skill.d.ts +7 -0
- package/dist/task/skills/bilibili/_skill.js +48 -0
- package/dist/task/skills/bilibili/_ytdlp.d.ts +30 -0
- package/dist/task/skills/bilibili/_ytdlp.js +128 -0
- package/dist/task/skills/bilibili/comments.d.ts +1 -0
- package/dist/task/skills/bilibili/comments.js +3 -0
- package/dist/task/skills/bilibili/download.d.ts +2 -0
- package/dist/task/skills/bilibili/download.js +24 -0
- package/dist/task/skills/bilibili/feed-detail.d.ts +1 -0
- package/dist/task/skills/bilibili/feed-detail.js +3 -0
- package/dist/task/skills/bilibili/feed.d.ts +1 -0
- package/dist/task/skills/bilibili/feed.js +6 -0
- package/dist/task/skills/bilibili/following.d.ts +1 -0
- package/dist/task/skills/bilibili/following.js +6 -0
- package/dist/task/skills/bilibili/hot.d.ts +1 -0
- package/dist/task/skills/bilibili/hot.js +3 -0
- package/dist/task/skills/bilibili/ranking.d.ts +1 -0
- package/dist/task/skills/bilibili/ranking.js +3 -0
- package/dist/task/skills/bilibili/search.d.ts +1 -0
- package/dist/task/skills/bilibili/search.js +3 -0
- package/dist/task/skills/bilibili/subtitle.d.ts +1 -0
- package/dist/task/skills/bilibili/subtitle.js +3 -0
- package/dist/task/skills/bilibili/user-videos.d.ts +1 -0
- package/dist/task/skills/bilibili/user-videos.js +3 -0
- package/dist/task/skills/bilibili/video.d.ts +1 -0
- package/dist/task/skills/bilibili/video.js +3 -0
- package/dist/task/skills/chatgpt/_bnbot.d.ts +32 -0
- package/dist/task/skills/chatgpt/_bnbot.js +148 -0
- package/dist/task/skills/chatgpt/ask.d.ts +2 -0
- package/dist/task/skills/chatgpt/ask.js +83 -0
- package/dist/task/skills/chatgpt/image-generate.d.ts +2 -0
- package/dist/task/skills/chatgpt/image-generate.js +82 -0
- package/dist/task/skills/chatgpt/web-image-generate.d.ts +2 -0
- package/dist/task/skills/chatgpt/web-image-generate.js +103 -0
- package/dist/task/skills/codex/_bnbot.d.ts +10 -0
- package/dist/task/skills/codex/_bnbot.js +76 -0
- package/dist/task/skills/codex/_upload.d.ts +16 -0
- package/dist/task/skills/codex/_upload.js +75 -0
- package/dist/task/skills/codex/image-generate.d.ts +2 -0
- package/dist/task/skills/codex/image-generate.js +80 -0
- package/dist/task/skills/douyin/_bnbot.d.ts +47 -0
- package/dist/task/skills/douyin/_bnbot.js +128 -0
- package/dist/task/skills/douyin/challenge-posts.d.ts +2 -0
- package/dist/task/skills/douyin/challenge-posts.js +26 -0
- package/dist/task/skills/douyin/music-posts.d.ts +2 -0
- package/dist/task/skills/douyin/music-posts.js +26 -0
- package/dist/task/skills/douyin/post-comments.d.ts +2 -0
- package/dist/task/skills/douyin/post-comments.js +26 -0
- package/dist/task/skills/douyin/search-account.d.ts +2 -0
- package/dist/task/skills/douyin/search-account.js +26 -0
- package/dist/task/skills/douyin/search-general.d.ts +2 -0
- package/dist/task/skills/douyin/search-general.js +26 -0
- package/dist/task/skills/douyin/search-live.d.ts +2 -0
- package/dist/task/skills/douyin/search-live.js +26 -0
- package/dist/task/skills/douyin/search-video.d.ts +2 -0
- package/dist/task/skills/douyin/search-video.js +26 -0
- package/dist/task/skills/douyin/user-followers.d.ts +2 -0
- package/dist/task/skills/douyin/user-followers.js +26 -0
- package/dist/task/skills/douyin/user-following.d.ts +2 -0
- package/dist/task/skills/douyin/user-following.js +26 -0
- package/dist/task/skills/douyin/user-info.d.ts +2 -0
- package/dist/task/skills/douyin/user-info.js +25 -0
- package/dist/task/skills/douyin/user-liked.d.ts +2 -0
- package/dist/task/skills/douyin/user-liked.js +26 -0
- package/dist/task/skills/douyin/user-posts.d.ts +2 -0
- package/dist/task/skills/douyin/user-posts.js +26 -0
- package/dist/task/skills/echo.d.ts +6 -0
- package/dist/task/skills/echo.js +12 -0
- package/dist/task/skills/flow/_bnbot.d.ts +23 -0
- package/dist/task/skills/flow/_bnbot.js +112 -0
- package/dist/task/skills/flow/image-generate.d.ts +2 -0
- package/dist/task/skills/flow/image-generate.js +81 -0
- package/dist/task/skills/flow/video-generate.d.ts +2 -0
- package/dist/task/skills/flow/video-generate.js +82 -0
- package/dist/task/skills/gemini/_bnbot.d.ts +10 -0
- package/dist/task/skills/gemini/_bnbot.js +75 -0
- package/dist/task/skills/gemini/image-generate.d.ts +2 -0
- package/dist/task/skills/gemini/image-generate.js +80 -0
- package/dist/task/skills/gemini/video-generate.d.ts +2 -0
- package/dist/task/skills/gemini/video-generate.js +71 -0
- package/dist/task/skills/index.d.ts +18 -0
- package/dist/task/skills/index.js +452 -0
- package/dist/task/skills/linkedin/_bnbot.d.ts +10 -0
- package/dist/task/skills/linkedin/_bnbot.js +42 -0
- package/dist/task/skills/linkedin/_helpers.d.ts +1 -0
- package/dist/task/skills/linkedin/_helpers.js +1 -0
- package/dist/task/skills/linkedin/_skill.d.ts +7 -0
- package/dist/task/skills/linkedin/_skill.js +48 -0
- package/dist/task/skills/linkedin/job-search.d.ts +1 -0
- package/dist/task/skills/linkedin/job-search.js +11 -0
- package/dist/task/skills/opencli/_bnbot.d.ts +3 -0
- package/dist/task/skills/opencli/_bnbot.js +66 -0
- package/dist/task/skills/opencli/_skill.d.ts +7 -0
- package/dist/task/skills/opencli/_skill.js +48 -0
- package/dist/task/skills/opencli/platforms.d.ts +86 -0
- package/dist/task/skills/opencli/platforms.js +205 -0
- package/dist/task/skills/reddit/_bnbot.d.ts +58 -0
- package/dist/task/skills/reddit/_bnbot.js +192 -0
- package/dist/task/skills/reddit/_helpers.d.ts +1 -0
- package/dist/task/skills/reddit/_helpers.js +1 -0
- package/dist/task/skills/reddit/_skill.d.ts +7 -0
- package/dist/task/skills/reddit/_skill.js +48 -0
- package/dist/task/skills/reddit/best-popular-posts.d.ts +1 -0
- package/dist/task/skills/reddit/best-popular-posts.js +3 -0
- package/dist/task/skills/reddit/comments-by-subreddit.d.ts +1 -0
- package/dist/task/skills/reddit/comments-by-subreddit.js +6 -0
- package/dist/task/skills/reddit/comments-by-username.d.ts +1 -0
- package/dist/task/skills/reddit/comments-by-username.js +8 -0
- package/dist/task/skills/reddit/controversial-posts-by-subreddit.d.ts +1 -0
- package/dist/task/skills/reddit/controversial-posts-by-subreddit.js +7 -0
- package/dist/task/skills/reddit/new-subreddits.d.ts +1 -0
- package/dist/task/skills/reddit/new-subreddits.js +3 -0
- package/dist/task/skills/reddit/popular-posts-by-country.d.ts +1 -0
- package/dist/task/skills/reddit/popular-posts-by-country.js +8 -0
- package/dist/task/skills/reddit/popular-posts.d.ts +1 -0
- package/dist/task/skills/reddit/popular-posts.js +3 -0
- package/dist/task/skills/reddit/popular-subreddits.d.ts +1 -0
- package/dist/task/skills/reddit/popular-subreddits.js +3 -0
- package/dist/task/skills/reddit/post-comments-with-sort.d.ts +1 -0
- package/dist/task/skills/reddit/post-comments-with-sort.js +7 -0
- package/dist/task/skills/reddit/post-comments.d.ts +1 -0
- package/dist/task/skills/reddit/post-comments.js +6 -0
- package/dist/task/skills/reddit/post-details.d.ts +1 -0
- package/dist/task/skills/reddit/post-details.js +3 -0
- package/dist/task/skills/reddit/post-duplicates.d.ts +1 -0
- package/dist/task/skills/reddit/post-duplicates.js +6 -0
- package/dist/task/skills/reddit/posts-by-subreddit.d.ts +1 -0
- package/dist/task/skills/reddit/posts-by-subreddit.js +8 -0
- package/dist/task/skills/reddit/posts-by-username.d.ts +1 -0
- package/dist/task/skills/reddit/posts-by-username.js +8 -0
- package/dist/task/skills/reddit/profile.d.ts +1 -0
- package/dist/task/skills/reddit/profile.js +3 -0
- package/dist/task/skills/reddit/rising-popular-posts.d.ts +1 -0
- package/dist/task/skills/reddit/rising-popular-posts.js +3 -0
- package/dist/task/skills/reddit/search-posts.d.ts +1 -0
- package/dist/task/skills/reddit/search-posts.js +9 -0
- package/dist/task/skills/reddit/search-subreddits.d.ts +1 -0
- package/dist/task/skills/reddit/search-subreddits.js +6 -0
- package/dist/task/skills/reddit/search-users.d.ts +1 -0
- package/dist/task/skills/reddit/search-users.js +6 -0
- package/dist/task/skills/reddit/similar-subreddits.d.ts +1 -0
- package/dist/task/skills/reddit/similar-subreddits.js +6 -0
- package/dist/task/skills/reddit/subreddit-info.d.ts +1 -0
- package/dist/task/skills/reddit/subreddit-info.js +3 -0
- package/dist/task/skills/reddit/subreddit-moderators.d.ts +1 -0
- package/dist/task/skills/reddit/subreddit-moderators.js +3 -0
- package/dist/task/skills/reddit/subreddit-rules.d.ts +1 -0
- package/dist/task/skills/reddit/subreddit-rules.js +3 -0
- package/dist/task/skills/reddit/top-comments-by-username.d.ts +1 -0
- package/dist/task/skills/reddit/top-comments-by-username.js +7 -0
- package/dist/task/skills/reddit/top-popular-posts.d.ts +1 -0
- package/dist/task/skills/reddit/top-popular-posts.js +3 -0
- package/dist/task/skills/reddit/top-posts-by-subreddit.d.ts +1 -0
- package/dist/task/skills/reddit/top-posts-by-subreddit.js +7 -0
- package/dist/task/skills/reddit/top-posts-by-username.d.ts +1 -0
- package/dist/task/skills/reddit/top-posts-by-username.js +7 -0
- package/dist/task/skills/reddit/user-overview.d.ts +1 -0
- package/dist/task/skills/reddit/user-overview.js +8 -0
- package/dist/task/skills/reddit/user-post-rank-in-subreddit.d.ts +1 -0
- package/dist/task/skills/reddit/user-post-rank-in-subreddit.js +8 -0
- package/dist/task/skills/reddit/user-stats.d.ts +1 -0
- package/dist/task/skills/reddit/user-stats.js +3 -0
- package/dist/task/skills/tiktok/_bnbot.d.ts +211 -0
- package/dist/task/skills/tiktok/_bnbot.js +415 -0
- package/dist/task/skills/tiktok/_helpers.d.ts +1 -0
- package/dist/task/skills/tiktok/_helpers.js +3 -0
- package/dist/task/skills/tiktok/_ytdlp.d.ts +113 -0
- package/dist/task/skills/tiktok/_ytdlp.js +322 -0
- package/dist/task/skills/tiktok/ads-detail.d.ts +2 -0
- package/dist/task/skills/tiktok/ads-detail.js +25 -0
- package/dist/task/skills/tiktok/ads-top.d.ts +2 -0
- package/dist/task/skills/tiktok/ads-top.js +22 -0
- package/dist/task/skills/tiktok/challenge-info.d.ts +2 -0
- package/dist/task/skills/tiktok/challenge-info.js +25 -0
- package/dist/task/skills/tiktok/challenge-posts.d.ts +2 -0
- package/dist/task/skills/tiktok/challenge-posts.js +26 -0
- package/dist/task/skills/tiktok/collection-info.d.ts +2 -0
- package/dist/task/skills/tiktok/collection-info.js +25 -0
- package/dist/task/skills/tiktok/collection-posts.d.ts +2 -0
- package/dist/task/skills/tiktok/collection-posts.js +28 -0
- package/dist/task/skills/tiktok/commercial-music.d.ts +2 -0
- package/dist/task/skills/tiktok/commercial-music.js +44 -0
- package/dist/task/skills/tiktok/commercial-playlist-detail.d.ts +2 -0
- package/dist/task/skills/tiktok/commercial-playlist-detail.js +30 -0
- package/dist/task/skills/tiktok/commercial-playlists.d.ts +2 -0
- package/dist/task/skills/tiktok/commercial-playlists.js +22 -0
- package/dist/task/skills/tiktok/effect-info.d.ts +2 -0
- package/dist/task/skills/tiktok/effect-info.js +25 -0
- package/dist/task/skills/tiktok/effect-posts.d.ts +2 -0
- package/dist/task/skills/tiktok/effect-posts.js +26 -0
- package/dist/task/skills/tiktok/music-download.d.ts +11 -0
- package/dist/task/skills/tiktok/music-download.js +37 -0
- package/dist/task/skills/tiktok/music-info.d.ts +2 -0
- package/dist/task/skills/tiktok/music-info.js +25 -0
- package/dist/task/skills/tiktok/music-posts.d.ts +2 -0
- package/dist/task/skills/tiktok/music-posts.js +26 -0
- package/dist/task/skills/tiktok/music-unlimited.d.ts +2 -0
- package/dist/task/skills/tiktok/music-unlimited.js +22 -0
- package/dist/task/skills/tiktok/place-info.d.ts +2 -0
- package/dist/task/skills/tiktok/place-info.js +25 -0
- package/dist/task/skills/tiktok/place-posts.d.ts +2 -0
- package/dist/task/skills/tiktok/place-posts.js +26 -0
- package/dist/task/skills/tiktok/post-comment-replies.d.ts +2 -0
- package/dist/task/skills/tiktok/post-comment-replies.js +34 -0
- package/dist/task/skills/tiktok/post-comments.d.ts +2 -0
- package/dist/task/skills/tiktok/post-comments.js +26 -0
- package/dist/task/skills/tiktok/post-detail.d.ts +13 -0
- package/dist/task/skills/tiktok/post-detail.js +48 -0
- package/dist/task/skills/tiktok/post-discover.d.ts +2 -0
- package/dist/task/skills/tiktok/post-discover.js +26 -0
- package/dist/task/skills/tiktok/post-explore.d.ts +2 -0
- package/dist/task/skills/tiktok/post-explore.js +24 -0
- package/dist/task/skills/tiktok/post-related.d.ts +2 -0
- package/dist/task/skills/tiktok/post-related.js +26 -0
- package/dist/task/skills/tiktok/search-account.d.ts +2 -0
- package/dist/task/skills/tiktok/search-account.js +26 -0
- package/dist/task/skills/tiktok/search-general.d.ts +2 -0
- package/dist/task/skills/tiktok/search-general.js +26 -0
- package/dist/task/skills/tiktok/search-live.d.ts +2 -0
- package/dist/task/skills/tiktok/search-live.js +26 -0
- package/dist/task/skills/tiktok/search-suggestions.d.ts +2 -0
- package/dist/task/skills/tiktok/search-suggestions.js +25 -0
- package/dist/task/skills/tiktok/search.d.ts +2 -0
- package/dist/task/skills/tiktok/search.js +22 -0
- package/dist/task/skills/tiktok/top-product-detail.d.ts +2 -0
- package/dist/task/skills/tiktok/top-product-detail.js +25 -0
- package/dist/task/skills/tiktok/top-product-metrics.d.ts +2 -0
- package/dist/task/skills/tiktok/top-product-metrics.js +25 -0
- package/dist/task/skills/tiktok/top-products.d.ts +2 -0
- package/dist/task/skills/tiktok/top-products.js +22 -0
- package/dist/task/skills/tiktok/trending-creator.d.ts +2 -0
- package/dist/task/skills/tiktok/trending-creator.js +22 -0
- package/dist/task/skills/tiktok/trending-hashtag.d.ts +2 -0
- package/dist/task/skills/tiktok/trending-hashtag.js +22 -0
- package/dist/task/skills/tiktok/trending-keyword-posts.d.ts +2 -0
- package/dist/task/skills/tiktok/trending-keyword-posts.js +30 -0
- package/dist/task/skills/tiktok/trending-keyword-sentence.d.ts +2 -0
- package/dist/task/skills/tiktok/trending-keyword-sentence.js +32 -0
- package/dist/task/skills/tiktok/trending-keyword.d.ts +2 -0
- package/dist/task/skills/tiktok/trending-keyword.js +22 -0
- package/dist/task/skills/tiktok/trending-song.d.ts +2 -0
- package/dist/task/skills/tiktok/trending-song.js +22 -0
- package/dist/task/skills/tiktok/trending-video.d.ts +2 -0
- package/dist/task/skills/tiktok/trending-video.js +22 -0
- package/dist/task/skills/tiktok/trending.d.ts +2 -0
- package/dist/task/skills/tiktok/trending.js +18 -0
- package/dist/task/skills/tiktok/user-followers.d.ts +2 -0
- package/dist/task/skills/tiktok/user-followers.js +24 -0
- package/dist/task/skills/tiktok/user-followings.d.ts +2 -0
- package/dist/task/skills/tiktok/user-followings.js +26 -0
- package/dist/task/skills/tiktok/user-info-by-id.d.ts +2 -0
- package/dist/task/skills/tiktok/user-info-by-id.js +25 -0
- package/dist/task/skills/tiktok/user-info-region.d.ts +2 -0
- package/dist/task/skills/tiktok/user-info-region.js +25 -0
- package/dist/task/skills/tiktok/user-info.d.ts +2 -0
- package/dist/task/skills/tiktok/user-info.js +24 -0
- package/dist/task/skills/tiktok/user-liked-posts.d.ts +2 -0
- package/dist/task/skills/tiktok/user-liked-posts.js +26 -0
- package/dist/task/skills/tiktok/user-playlist.d.ts +2 -0
- package/dist/task/skills/tiktok/user-playlist.js +26 -0
- package/dist/task/skills/tiktok/user-posts.d.ts +14 -0
- package/dist/task/skills/tiktok/user-posts.js +55 -0
- package/dist/task/skills/tiktok/user-repost.d.ts +2 -0
- package/dist/task/skills/tiktok/user-repost.js +26 -0
- package/dist/task/skills/tiktok/user-story.d.ts +2 -0
- package/dist/task/skills/tiktok/user-story.js +26 -0
- package/dist/task/skills/tiktok/user-video-download-batch.d.ts +17 -0
- package/dist/task/skills/tiktok/user-video-download-batch.js +49 -0
- package/dist/task/skills/tiktok/video-download.d.ts +11 -0
- package/dist/task/skills/tiktok/video-download.js +43 -0
- package/dist/task/skills/x/_bnbot.d.ts +46 -0
- package/dist/task/skills/x/_bnbot.js +169 -0
- package/dist/task/skills/x/_mapper.d.ts +129 -0
- package/dist/task/skills/x/_mapper.js +233 -0
- package/dist/task/skills/x/_unimplemented.d.ts +17 -0
- package/dist/task/skills/x/_unimplemented.js +24 -0
- package/dist/task/skills/x/search.d.ts +8 -0
- package/dist/task/skills/x/search.js +35 -0
- package/dist/task/skills/x/trends.d.ts +7 -0
- package/dist/task/skills/x/trends.js +32 -0
- package/dist/task/skills/x/tweet-article.d.ts +7 -0
- package/dist/task/skills/x/tweet-article.js +34 -0
- package/dist/task/skills/x/tweet-likers.d.ts +7 -0
- package/dist/task/skills/x/tweet-likers.js +34 -0
- package/dist/task/skills/x/tweet-retweeters.d.ts +6 -0
- package/dist/task/skills/x/tweet-retweeters.js +33 -0
- package/dist/task/skills/x/tweet.d.ts +8 -0
- package/dist/task/skills/x/tweet.js +42 -0
- package/dist/task/skills/x/user-by-screen-name.d.ts +13 -0
- package/dist/task/skills/x/user-by-screen-name.js +25 -0
- package/dist/task/skills/x/user-followers.d.ts +9 -0
- package/dist/task/skills/x/user-followers.js +45 -0
- package/dist/task/skills/x/user-following.d.ts +7 -0
- package/dist/task/skills/x/user-following.js +38 -0
- package/dist/task/skills/x/user-tweets.d.ts +7 -0
- package/dist/task/skills/x/user-tweets.js +34 -0
- package/dist/task/skills/x-search.d.ts +16 -0
- package/dist/task/skills/x-search.js +91 -0
- package/dist/task/skills/xiaohongshu/_bnbot.d.ts +2 -0
- package/dist/task/skills/xiaohongshu/_bnbot.js +51 -0
- package/dist/task/skills/xiaohongshu/_helpers.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/_helpers.js +1 -0
- package/dist/task/skills/xiaohongshu/_skill.d.ts +7 -0
- package/dist/task/skills/xiaohongshu/_skill.js +48 -0
- package/dist/task/skills/xiaohongshu/creator-hot-inspiration-feed.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/creator-hot-inspiration-feed.js +3 -0
- package/dist/task/skills/xiaohongshu/creator-inspiration-feed.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/creator-inspiration-feed.js +3 -0
- package/dist/task/skills/xiaohongshu/image-note-detail.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/image-note-detail.js +3 -0
- package/dist/task/skills/xiaohongshu/mixed-note-detail.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/mixed-note-detail.js +3 -0
- package/dist/task/skills/xiaohongshu/note-comments.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/note-comments.js +3 -0
- package/dist/task/skills/xiaohongshu/product-detail.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/product-detail.js +3 -0
- package/dist/task/skills/xiaohongshu/product-recommendations.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/product-recommendations.js +3 -0
- package/dist/task/skills/xiaohongshu/product-review-overview.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/product-review-overview.js +3 -0
- package/dist/task/skills/xiaohongshu/product-reviews.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/product-reviews.js +3 -0
- package/dist/task/skills/xiaohongshu/search-groups.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/search-groups.js +3 -0
- package/dist/task/skills/xiaohongshu/search-images.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/search-images.js +3 -0
- package/dist/task/skills/xiaohongshu/search-notes.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/search-notes.js +3 -0
- package/dist/task/skills/xiaohongshu/search-products.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/search-products.js +3 -0
- package/dist/task/skills/xiaohongshu/search-users.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/search-users.js +3 -0
- package/dist/task/skills/xiaohongshu/topic-feed.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/topic-feed.js +3 -0
- package/dist/task/skills/xiaohongshu/topic-info.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/topic-info.js +3 -0
- package/dist/task/skills/xiaohongshu/user-faved-notes.d.ts +1 -0
- package/dist/task/skills/xiaohongshu/user-faved-notes.js +3 -0
- package/dist/task/skills/youtube/_bnbot.d.ts +15 -0
- package/dist/task/skills/youtube/_bnbot.js +84 -0
- package/dist/task/skills/youtube/_helpers.d.ts +4 -0
- package/dist/task/skills/youtube/_helpers.js +10 -0
- package/dist/task/skills/youtube/_ytdlp.d.ts +77 -0
- package/dist/task/skills/youtube/_ytdlp.js +207 -0
- package/dist/task/skills/youtube/channel-details.d.ts +2 -0
- package/dist/task/skills/youtube/channel-details.js +20 -0
- package/dist/task/skills/youtube/channel-search.d.ts +2 -0
- package/dist/task/skills/youtube/channel-search.js +26 -0
- package/dist/task/skills/youtube/channel-videos.d.ts +2 -0
- package/dist/task/skills/youtube/channel-videos.js +27 -0
- package/dist/task/skills/youtube/trending.d.ts +2 -0
- package/dist/task/skills/youtube/trending.js +17 -0
- package/dist/task/skills/youtube/video-comments.d.ts +2 -0
- package/dist/task/skills/youtube/video-comments.js +20 -0
- package/dist/task/skills/youtube/video-details.d.ts +2 -0
- package/dist/task/skills/youtube/video-details.js +20 -0
- package/dist/task/skills/youtube/video-related.d.ts +2 -0
- package/dist/task/skills/youtube/video-related.js +20 -0
- package/dist/task/skills/youtube/video-streaming.d.ts +16 -0
- package/dist/task/skills/youtube/video-streaming.js +49 -0
- package/dist/task/skills/youtube/video-transcript.d.ts +14 -0
- package/dist/task/skills/youtube/video-transcript.js +46 -0
- package/dist/task/types.d.ts +104 -0
- package/dist/task/types.js +12 -0
- package/dist/task/ws-client.d.ts +29 -0
- package/dist/task/ws-client.js +147 -0
- package/dist/utils/config.d.ts +6 -0
- package/package.json +2 -2
- package/scripts/install-ytdlp.cjs +94 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClawMoney "API" provider setup.
|
|
3
|
+
*
|
|
4
|
+
* Enables this agent to serve SpareAPI marketplace requests via bnbot
|
|
5
|
+
* browser delegation. End-to-end flow when a customer hits SpareAPI:
|
|
6
|
+
*
|
|
7
|
+
* customer → spareapi.io/v1/<platform>/scrape/...
|
|
8
|
+
* → ClawMoney router picks an online "api" operator
|
|
9
|
+
* → this operator's bnbot daemon (local WS @ port 18900)
|
|
10
|
+
* → real logged-in Chrome on the operator's machine
|
|
11
|
+
* → target platform (X / XHS / IG / ...)
|
|
12
|
+
* ← JSON results back through the chain
|
|
13
|
+
*
|
|
14
|
+
* This wizard only collects the operator's preferences (which platforms
|
|
15
|
+
* to serve, soft RPM cap) and persists them to ~/.clawmoney/config.yaml.
|
|
16
|
+
* The runtime piece — bnbot listening for ClawMoney router messages and
|
|
17
|
+
* dispatching to the right scrape command — is provided separately by
|
|
18
|
+
* the bnbot CLI (`bnbot serve`).
|
|
19
|
+
*/
|
|
20
|
+
export declare function apiSetupCommand(opts?: {
|
|
21
|
+
nested?: boolean;
|
|
22
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClawMoney "API" provider setup.
|
|
3
|
+
*
|
|
4
|
+
* Enables this agent to serve SpareAPI marketplace requests via bnbot
|
|
5
|
+
* browser delegation. End-to-end flow when a customer hits SpareAPI:
|
|
6
|
+
*
|
|
7
|
+
* customer → spareapi.io/v1/<platform>/scrape/...
|
|
8
|
+
* → ClawMoney router picks an online "api" operator
|
|
9
|
+
* → this operator's bnbot daemon (local WS @ port 18900)
|
|
10
|
+
* → real logged-in Chrome on the operator's machine
|
|
11
|
+
* → target platform (X / XHS / IG / ...)
|
|
12
|
+
* ← JSON results back through the chain
|
|
13
|
+
*
|
|
14
|
+
* This wizard only collects the operator's preferences (which platforms
|
|
15
|
+
* to serve, soft RPM cap) and persists them to ~/.clawmoney/config.yaml.
|
|
16
|
+
* The runtime piece — bnbot listening for ClawMoney router messages and
|
|
17
|
+
* dispatching to the right scrape command — is provided separately by
|
|
18
|
+
* the bnbot CLI (`bnbot serve`).
|
|
19
|
+
*/
|
|
20
|
+
import { spawn } from "node:child_process";
|
|
21
|
+
import { intro, outro, multiselect, text, confirm, spinner, isCancel, log, note, } from "@clack/prompts";
|
|
22
|
+
import chalk from "chalk";
|
|
23
|
+
import { loadConfig, saveConfig } from "../utils/config.js";
|
|
24
|
+
// Platform catalog kept in sync with SpareAPI's services.ts. `price` is what
|
|
25
|
+
// the customer pays per call; operator keeps OPERATOR_SHARE of it.
|
|
26
|
+
const OPERATOR_SHARE = 0.7;
|
|
27
|
+
const PLATFORMS = [
|
|
28
|
+
{ value: "x", label: "X (Twitter)", hint: "search · timeline · threads · DMs", pricePerCall: 0.002, defaultDailyVolume: 800 },
|
|
29
|
+
{ value: "xiaohongshu", label: "Xiaohongshu", hint: "小红书 · search · note details", pricePerCall: 0.010, defaultDailyVolume: 200 },
|
|
30
|
+
{ value: "instagram", label: "Instagram", hint: "posts · reels · stories · profiles", pricePerCall: 0.012, defaultDailyVolume: 80 },
|
|
31
|
+
{ value: "linkedin", label: "LinkedIn", hint: "profiles · search · companies", pricePerCall: 0.020, defaultDailyVolume: 30 },
|
|
32
|
+
{ value: "tiktok", label: "TikTok", hint: "search · user videos · trending", pricePerCall: 0.005, defaultDailyVolume: 200 },
|
|
33
|
+
{ value: "reddit", label: "Reddit", hint: "threads · subreddit search", pricePerCall: 0.005, defaultDailyVolume: 120 },
|
|
34
|
+
{ value: "google", label: "Google Search", hint: "web · news · images", pricePerCall: 0.003, defaultDailyVolume: 400 },
|
|
35
|
+
{ value: "weibo", label: "Weibo", hint: "微博 · search · user timelines", pricePerCall: 0.005, defaultDailyVolume: 60 },
|
|
36
|
+
{ value: "douyin", label: "Douyin", hint: "抖音 · trending · search", pricePerCall: 0.005, defaultDailyVolume: 60 },
|
|
37
|
+
{ value: "youtube", label: "YouTube", hint: "search · channel data · transcripts", pricePerCall: 0.005, defaultDailyVolume: 200 },
|
|
38
|
+
{ value: "bilibili", label: "Bilibili", hint: "B 站 · search · UP 主 · 评论", pricePerCall: 0.005, defaultDailyVolume: 50 },
|
|
39
|
+
{ value: "zhihu", label: "Zhihu", hint: "知乎 · Q&A · 用户资料 · 热榜", pricePerCall: 0.005, defaultDailyVolume: 50 },
|
|
40
|
+
];
|
|
41
|
+
function formatProjectedEarnings(selected) {
|
|
42
|
+
let monthly = 0;
|
|
43
|
+
const lines = [];
|
|
44
|
+
for (const slug of selected) {
|
|
45
|
+
const p = PLATFORMS.find((x) => x.value === slug);
|
|
46
|
+
if (!p)
|
|
47
|
+
continue;
|
|
48
|
+
const monthlyPlatform = p.pricePerCall * OPERATOR_SHARE * p.defaultDailyVolume * 30;
|
|
49
|
+
monthly += monthlyPlatform;
|
|
50
|
+
lines.push(` ${p.label.padEnd(16)} $${p.pricePerCall.toFixed(4)}/call × ${p.defaultDailyVolume}/day → $${monthlyPlatform.toFixed(2)}/mo`);
|
|
51
|
+
}
|
|
52
|
+
lines.push("");
|
|
53
|
+
lines.push(` ${chalk.bold("Projected total")}: ${chalk.green(`~$${monthly.toFixed(2)}/mo`)} ${chalk.dim(`(${Math.round(OPERATOR_SHARE * 100)}% operator share)`)}`);
|
|
54
|
+
return lines.join("\n");
|
|
55
|
+
}
|
|
56
|
+
export async function apiSetupCommand(opts = {}) {
|
|
57
|
+
const cfg = loadConfig();
|
|
58
|
+
if (!cfg) {
|
|
59
|
+
console.log(chalk.red("\n No config found. Run `clawmoney setup` first to register your agent.\n"));
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
if (!opts.nested) {
|
|
63
|
+
intro(chalk.cyan(" ClawMoney API Data Provider Setup "));
|
|
64
|
+
}
|
|
65
|
+
log.message([
|
|
66
|
+
"Serve SpareAPI marketplace requests via bnbot browser delegation.",
|
|
67
|
+
"",
|
|
68
|
+
chalk.dim("Customer hits SpareAPI → ClawMoney routes to your agent → bnbot opens"),
|
|
69
|
+
chalk.dim("the target site in real Chrome → JSON returns. You keep 70% per call."),
|
|
70
|
+
].join("\n"));
|
|
71
|
+
// Preselect whatever the operator already opted into.
|
|
72
|
+
const previously = cfg.api_provider?.platforms ?? [];
|
|
73
|
+
const picked = await multiselect({
|
|
74
|
+
message: "Pick the platforms you want to serve — SPACE to toggle, ENTER to confirm:",
|
|
75
|
+
options: PLATFORMS.map((p) => ({
|
|
76
|
+
value: p.value,
|
|
77
|
+
label: p.label,
|
|
78
|
+
hint: p.hint,
|
|
79
|
+
})),
|
|
80
|
+
initialValues: previously,
|
|
81
|
+
required: false,
|
|
82
|
+
});
|
|
83
|
+
if (isCancel(picked)) {
|
|
84
|
+
log.message(chalk.dim("Cancelled. Re-run `clawmoney setup` later to enable the API role."));
|
|
85
|
+
if (!opts.nested)
|
|
86
|
+
outro("");
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const platforms = picked;
|
|
90
|
+
if (platforms.length === 0) {
|
|
91
|
+
note([
|
|
92
|
+
chalk.dim("No platforms selected. The API role stays disabled."),
|
|
93
|
+
"",
|
|
94
|
+
chalk.dim("You can come back any time:"),
|
|
95
|
+
` ${chalk.cyan("clawmoney setup")} re-open the role wizard`,
|
|
96
|
+
].join("\n"), "Skipped");
|
|
97
|
+
if (!opts.nested)
|
|
98
|
+
outro("");
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
// Show earnings projection so the operator can decide if it's worth it.
|
|
102
|
+
note(formatProjectedEarnings(platforms), "Projected earnings");
|
|
103
|
+
// Optional: let operator tweak RPM cap. Default 60 is conservative —
|
|
104
|
+
// matches "human browsing" rate so platforms don't flag the account.
|
|
105
|
+
const rpmRaw = await text({
|
|
106
|
+
message: "Max requests / minute per platform (60 = human-rate, safe):",
|
|
107
|
+
initialValue: String(cfg.api_provider?.max_rpm ?? 60),
|
|
108
|
+
validate: (v) => {
|
|
109
|
+
const n = Number(v);
|
|
110
|
+
if (!Number.isFinite(n) || n < 1 || n > 600)
|
|
111
|
+
return "Enter a number between 1 and 600.";
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
if (isCancel(rpmRaw)) {
|
|
115
|
+
log.message(chalk.dim("Cancelled."));
|
|
116
|
+
if (!opts.nested)
|
|
117
|
+
outro("");
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const maxRpm = Number(rpmRaw);
|
|
121
|
+
// Save to config.
|
|
122
|
+
saveConfig({
|
|
123
|
+
...cfg,
|
|
124
|
+
api_provider: {
|
|
125
|
+
platforms,
|
|
126
|
+
enabled_at: new Date().toISOString(),
|
|
127
|
+
bnbot_port: cfg.api_provider?.bnbot_port ?? 18900,
|
|
128
|
+
max_rpm: maxRpm,
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
log.success(`Saved ${platforms.length} platform${platforms.length === 1 ? "" : "s"} to ~/.clawmoney/config.yaml`);
|
|
132
|
+
// Try to verify bnbot is installed + status check. We don't hard-fail
|
|
133
|
+
// here — operator may run the bnbot daemon on a separate machine.
|
|
134
|
+
const checkBnbot = await confirm({
|
|
135
|
+
message: "Check that bnbot is installed and the agent is online?",
|
|
136
|
+
initialValue: true,
|
|
137
|
+
});
|
|
138
|
+
if (!isCancel(checkBnbot) && checkBnbot) {
|
|
139
|
+
const s = spinner();
|
|
140
|
+
s.start("Running `bnbot status`…");
|
|
141
|
+
try {
|
|
142
|
+
await runOnce("bnbot", ["status"], 8000);
|
|
143
|
+
s.stop(`${chalk.green("✓")} bnbot is installed and responsive`);
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
s.stop(chalk.yellow(`bnbot status check failed: ${err.message}`));
|
|
147
|
+
log.message([
|
|
148
|
+
chalk.dim("To install bnbot:"),
|
|
149
|
+
` ${chalk.cyan("npm i -g @bnbot/cli")}`,
|
|
150
|
+
chalk.dim("Then start serving:"),
|
|
151
|
+
` ${chalk.cyan("bnbot serve")}`,
|
|
152
|
+
].join("\n"));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
note([
|
|
156
|
+
chalk.bold("Next steps:"),
|
|
157
|
+
"",
|
|
158
|
+
` 1. ${chalk.cyan("bnbot serve")} start the local browser daemon`,
|
|
159
|
+
` 2. Log in to selected platforms in the bnbot Chrome (one-time per account)`,
|
|
160
|
+
` 3. ${chalk.cyan("clawmoney wallet balance")} confirm USDC wallet is set`,
|
|
161
|
+
"",
|
|
162
|
+
chalk.dim("Earnings settle in USDC every successful served request."),
|
|
163
|
+
chalk.dim("Pause any platform: re-run `clawmoney setup` and uncheck it."),
|
|
164
|
+
].join("\n"), "Ready");
|
|
165
|
+
if (!opts.nested) {
|
|
166
|
+
outro(chalk.green("API provider role enabled."));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Helper: run a child process once and resolve when it exits 0.
|
|
170
|
+
function runOnce(cmd, args, timeoutMs) {
|
|
171
|
+
return new Promise((resolve, reject) => {
|
|
172
|
+
const child = spawn(cmd, args, { stdio: "ignore", shell: false });
|
|
173
|
+
const t = setTimeout(() => {
|
|
174
|
+
child.kill("SIGKILL");
|
|
175
|
+
reject(new Error(`timeout after ${timeoutMs}ms`));
|
|
176
|
+
}, timeoutMs);
|
|
177
|
+
child.on("error", (err) => {
|
|
178
|
+
clearTimeout(t);
|
|
179
|
+
reject(err);
|
|
180
|
+
});
|
|
181
|
+
child.on("exit", (code) => {
|
|
182
|
+
clearTimeout(t);
|
|
183
|
+
if (code === 0)
|
|
184
|
+
resolve();
|
|
185
|
+
else
|
|
186
|
+
reject(new Error(`exit code ${code}`));
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
}
|
|
@@ -8,9 +8,9 @@ const ROLES = [
|
|
|
8
8
|
hint: "image gen / code / translate / tts / ... — agents pay you per call",
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
|
-
value: "
|
|
12
|
-
label: "
|
|
13
|
-
hint: "
|
|
11
|
+
value: "api",
|
|
12
|
+
label: "API data provider",
|
|
13
|
+
hint: "serve SpareAPI requests via bnbot — X / XHS / IG / LinkedIn / ... 70% per call",
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
value: "verifier",
|
|
@@ -54,7 +54,7 @@ export async function providerSetupWizard() {
|
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
56
|
// Sort picked roles in canonical ROLES order so the wizard always runs
|
|
57
|
-
// the same sequence (market →
|
|
57
|
+
// the same sequence (market → api → verifier) regardless of click order.
|
|
58
58
|
const ordered = ROLES.filter((r) => roles.includes(r.value)).map((r) => r.value);
|
|
59
59
|
for (let i = 0; i < ordered.length; i++) {
|
|
60
60
|
const role = ordered[i];
|
|
@@ -64,9 +64,9 @@ export async function providerSetupWizard() {
|
|
|
64
64
|
const { marketSetupCommand } = await import("./market-setup.js");
|
|
65
65
|
await marketSetupCommand({ nested: true });
|
|
66
66
|
}
|
|
67
|
-
else if (role === "
|
|
68
|
-
const {
|
|
69
|
-
await
|
|
67
|
+
else if (role === "api") {
|
|
68
|
+
const { apiSetupCommand } = await import("./api-setup.js");
|
|
69
|
+
await apiSetupCommand({ nested: true });
|
|
70
70
|
}
|
|
71
71
|
else if (role === "verifier") {
|
|
72
72
|
const { verifierSetupCommand } = await import("./verifier-setup.js");
|
|
@@ -86,7 +86,6 @@ export async function providerSetupWizard() {
|
|
|
86
86
|
chalk.dim("Useful next commands:"),
|
|
87
87
|
` ${chalk.cyan("clawmoney market skills")} list your registered skills`,
|
|
88
88
|
` ${chalk.cyan("clawmoney market start")} start the market provider daemon`,
|
|
89
|
-
` ${chalk.cyan("clawmoney relay start")} start the relay daemon`,
|
|
90
89
|
` ${chalk.cyan("tail -f ~/.clawmoney/*.log")} watch all daemons`,
|
|
91
90
|
].join("\n"), "All done");
|
|
92
91
|
}
|
package/dist/hub/executor.d.ts
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
import type { ProviderConfig, ServiceCallEvent, TestCallEvent, EscrowTaskEvent, DeliverEvent, TestResponseEvent } from "./types.js";
|
|
2
|
-
type SendFn = (event: DeliverEvent | TestResponseEvent) => boolean;
|
|
1
|
+
import type { ProviderConfig, ServiceCallEvent, TestCallEvent, EscrowTaskEvent, DeliverEvent, TestResponseEvent, ProgressEvent } from "./types.js";
|
|
2
|
+
type SendFn = (event: DeliverEvent | TestResponseEvent | ProgressEvent) => boolean;
|
|
3
3
|
export declare class Executor {
|
|
4
4
|
private config;
|
|
5
5
|
private send;
|
|
6
6
|
private activeTasks;
|
|
7
7
|
constructor(config: ProviderConfig, send: SendFn);
|
|
8
8
|
get activeCount(): number;
|
|
9
|
+
/**
|
|
10
|
+
* Fire a progress update for an in-flight order. The buyer-facing UI
|
|
11
|
+
* (clawmoney-web playground) polls /market/orders/{id} and reads the
|
|
12
|
+
* `progress` field that backend Redis-caches from these events.
|
|
13
|
+
* Best-effort: failed sends are non-fatal (the UI just sees a slightly
|
|
14
|
+
* stale stage label until the next progress fires).
|
|
15
|
+
*/
|
|
16
|
+
private sendProgress;
|
|
9
17
|
handleServiceCall(call: ServiceCallEvent): void;
|
|
10
18
|
handleEscrowTask(task: EscrowTaskEvent): void;
|
|
11
|
-
private executeEscrowTask;
|
|
12
19
|
handleTestCall(call: TestCallEvent): void;
|
|
13
20
|
private executeTask;
|
|
21
|
+
private executeRegisteredSkill;
|
|
14
22
|
}
|
|
15
23
|
export {};
|