@bycrawl/mcp 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -0
- package/build/client.js +5 -1
- package/build/client.js.map +1 -1
- package/build/oauth/callback.d.ts +6 -0
- package/build/oauth/callback.js +75 -0
- package/build/oauth/callback.js.map +1 -0
- package/build/oauth/crypto.d.ts +6 -0
- package/build/oauth/crypto.js +29 -0
- package/build/oauth/crypto.js.map +1 -0
- package/build/oauth/provider.d.ts +14 -0
- package/build/oauth/provider.js +125 -0
- package/build/oauth/provider.js.map +1 -0
- package/build/oauth/store.d.ts +43 -0
- package/build/oauth/store.js +66 -0
- package/build/oauth/store.js.map +1 -0
- package/build/oauth/user-keys.d.ts +6 -0
- package/build/oauth/user-keys.js +89 -0
- package/build/oauth/user-keys.js.map +1 -0
- package/build/server.js +2 -0
- package/build/server.js.map +1 -1
- package/build/tools/dcard.js +6 -14
- package/build/tools/dcard.js.map +1 -1
- package/build/tools/facebook.js +12 -11
- package/build/tools/facebook.js.map +1 -1
- package/build/tools/gmaps.d.ts +2 -0
- package/build/tools/gmaps.js +13 -0
- package/build/tools/gmaps.js.map +1 -0
- package/build/tools/instagram.js +5 -5
- package/build/tools/instagram.js.map +1 -1
- package/build/tools/job104.js +3 -3
- package/build/tools/job104.js.map +1 -1
- package/build/tools/linkedin.js +9 -9
- package/build/tools/linkedin.js.map +1 -1
- package/build/tools/reddit.js +16 -5
- package/build/tools/reddit.js.map +1 -1
- package/build/tools/system.js +2 -1
- package/build/tools/system.js.map +1 -1
- package/build/tools/threads.js +8 -8
- package/build/tools/threads.js.map +1 -1
- package/build/tools/tiktok.js +8 -8
- package/build/tools/tiktok.js.map +1 -1
- package/build/tools/x.js +5 -5
- package/build/tools/x.js.map +1 -1
- package/build/tools/youtube.js +5 -7
- package/build/tools/youtube.js.map +1 -1
- package/build/transport-http.js +146 -66
- package/build/transport-http.js.map +1 -1
- package/package.json +4 -3
package/build/tools/facebook.js
CHANGED
|
@@ -1,29 +1,30 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { bycrawlGet } from "../client.js";
|
|
3
3
|
export function registerFacebookTools(server) {
|
|
4
|
-
server.tool("facebook_get_page", "Get Facebook page profile by username", { username: z.string().describe("Facebook page username") }, async ({ username }) => bycrawlGet(`/facebook/users/${username}`));
|
|
5
|
-
server.tool("facebook_get_page_posts", "Get Facebook page posts by username", {
|
|
6
|
-
|
|
4
|
+
server.tool("facebook_get_page", "Get Facebook page profile by username", { username: z.string().describe("Facebook page username") }, { readOnlyHint: true }, async ({ username }) => bycrawlGet(`/facebook/users/${username}`));
|
|
5
|
+
server.tool("facebook_get_page_posts", "Get Facebook page posts by username", {
|
|
6
|
+
username: z.string().describe("Facebook page username"),
|
|
7
|
+
count: z.number().optional().describe("Number of posts (1-10, default 3)"),
|
|
8
|
+
}, { readOnlyHint: true }, async ({ username, count }) => bycrawlGet(`/facebook/users/${username}/posts`, { count }));
|
|
9
|
+
server.tool("facebook_get_post", "Get a Facebook post by URL (supports posts, reels, videos, share links)", { url: z.string().describe("Facebook post URL") }, { readOnlyHint: true }, async ({ url }) => bycrawlGet("/facebook/posts", { url }));
|
|
7
10
|
server.tool("facebook_search_posts", "Search public Facebook posts by keyword", {
|
|
8
11
|
query: z.string().describe("Search keyword"),
|
|
9
|
-
count: z.number().optional().describe("Number of results (max 5)"),
|
|
10
|
-
|
|
11
|
-
}, async ({ query, count, cursor }) => bycrawlGet("/facebook/posts/search", { q: query, count, cursor }));
|
|
12
|
+
count: z.number().optional().describe("Number of results (max 10, default 5)"),
|
|
13
|
+
}, { readOnlyHint: true }, async ({ query, count }) => bycrawlGet("/facebook/posts/search", { q: query, count }));
|
|
12
14
|
server.tool("facebook_get_post_comments", "Get comments on a Facebook post by URL", {
|
|
13
15
|
url: z.string().describe("Facebook post URL"),
|
|
14
|
-
|
|
15
|
-
}, async ({ url, cursor }) => bycrawlGet("/facebook/posts/comments", { url, cursor }));
|
|
16
|
+
}, { readOnlyHint: true }, async ({ url }) => bycrawlGet("/facebook/posts/comments", { url }));
|
|
16
17
|
server.tool("facebook_marketplace_browse", "Browse Facebook Marketplace listings by location and category", {
|
|
17
18
|
location: z.string().optional().describe("Location slug (e.g. 'taipei', 'newyork')"),
|
|
18
19
|
category: z.string().optional().describe("Category slug (e.g. 'vehicles', 'electronics')"),
|
|
19
|
-
}, async ({ location, category }) => bycrawlGet("/facebook/marketplace/listings", { location, category }));
|
|
20
|
+
}, { readOnlyHint: true }, async ({ location, category }) => bycrawlGet("/facebook/marketplace/listings", { location, category }));
|
|
20
21
|
server.tool("facebook_marketplace_search", "Search Facebook Marketplace listings by keyword", {
|
|
21
22
|
query: z.string().describe("Search keyword"),
|
|
22
23
|
location: z.string().optional().describe("Location slug (e.g. 'taipei', 'newyork')"),
|
|
23
24
|
category: z.string().optional().describe("Category filter (e.g. 'vehicles')"),
|
|
24
|
-
}, async ({ query, location, category }) => bycrawlGet("/facebook/marketplace/search", { q: query, location, category }));
|
|
25
|
+
}, { readOnlyHint: true }, async ({ query, location, category }) => bycrawlGet("/facebook/marketplace/search", { q: query, location, category }));
|
|
25
26
|
server.tool("facebook_marketplace_item", "Get detailed Facebook Marketplace listing by ID", {
|
|
26
27
|
listing_id: z.string().describe("Marketplace listing ID"),
|
|
27
|
-
}, async ({ listing_id }) => bycrawlGet(`/facebook/marketplace/items/${listing_id}`));
|
|
28
|
+
}, { readOnlyHint: true }, async ({ listing_id }) => bycrawlGet(`/facebook/marketplace/items/${listing_id}`));
|
|
28
29
|
}
|
|
29
30
|
//# sourceMappingURL=facebook.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facebook.js","sourceRoot":"","sources":["../../src/tools/facebook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,uCAAuC,EACvC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,EAC3D,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAClE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,qCAAqC,EACrC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"facebook.js","sourceRoot":"","sources":["../../src/tools/facebook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { bycrawlGet } from "../client.js";
|
|
3
|
+
export function registerGmapsTools(server) {
|
|
4
|
+
server.tool("gmaps_search_places", "Search Google Maps for places matching a query", {
|
|
5
|
+
q: z.string().describe("Search query (e.g. 'coffee shops in Tokyo')"),
|
|
6
|
+
language: z.string().optional().describe("Language code (e.g. 'en', 'ja', 'zh-TW')"),
|
|
7
|
+
}, { readOnlyHint: true }, async ({ q, language }) => bycrawlGet("/gmaps/places/search", { q, language }));
|
|
8
|
+
server.tool("gmaps_get_place", "Get detailed information about a Google Maps place", {
|
|
9
|
+
query: z.string().describe("Place name or full Google Maps URL"),
|
|
10
|
+
language: z.string().optional().describe("Language code (e.g. 'en', 'ja', 'zh-TW')"),
|
|
11
|
+
}, { readOnlyHint: true }, async ({ query, language }) => bycrawlGet("/gmaps/places", { query, language }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=gmaps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gmaps.js","sourceRoot":"","sources":["../../src/tools/gmaps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,gDAAgD,EAChD;QACE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QACrE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACrF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,sBAAsB,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAC/E,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,oDAAoD,EACpD;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAChE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACrF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAChF,CAAC;AACJ,CAAC"}
|
package/build/tools/instagram.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { bycrawlGet } from "../client.js";
|
|
3
3
|
export function registerInstagramTools(server) {
|
|
4
|
-
server.tool("instagram_search_tags", "Search Instagram hashtags by keyword", { query: z.string().describe("Hashtag to search") }, async ({ query }) => bycrawlGet("/instagram/tags/search", { q: query }));
|
|
5
|
-
server.tool("instagram_get_user", "Get Instagram user profile with recent posts", { username: z.string().describe("Instagram username") }, async ({ username }) => bycrawlGet(`/instagram/users/${username}`));
|
|
6
|
-
server.tool("instagram_get_post", "Get Instagram post by shortcode", { shortcode: z.string().describe("Post shortcode (from URL, e.g. CxBcDeFgHiJ)") }, async ({ shortcode }) => bycrawlGet(`/instagram/posts/${shortcode}`));
|
|
4
|
+
server.tool("instagram_search_tags", "Search Instagram hashtags by keyword", { query: z.string().describe("Hashtag to search") }, { readOnlyHint: true }, async ({ query }) => bycrawlGet("/instagram/tags/search", { q: query }));
|
|
5
|
+
server.tool("instagram_get_user", "Get Instagram user profile with recent posts", { username: z.string().describe("Instagram username") }, { readOnlyHint: true }, async ({ username }) => bycrawlGet(`/instagram/users/${username}`));
|
|
6
|
+
server.tool("instagram_get_post", "Get Instagram post by shortcode", { shortcode: z.string().describe("Post shortcode (from URL, e.g. CxBcDeFgHiJ)") }, { readOnlyHint: true }, async ({ shortcode }) => bycrawlGet(`/instagram/posts/${shortcode}`));
|
|
7
7
|
server.tool("instagram_get_post_comments", "Get comments on an Instagram post with pagination", {
|
|
8
8
|
shortcode: z.string().describe("Post shortcode"),
|
|
9
9
|
cursor: z.string().optional().describe("Pagination cursor from previous response"),
|
|
10
|
-
}, async ({ shortcode, cursor }) => bycrawlGet(`/instagram/posts/${shortcode}/comments`, {
|
|
10
|
+
}, { readOnlyHint: true }, async ({ shortcode, cursor }) => bycrawlGet(`/instagram/posts/${shortcode}/comments`, {
|
|
11
11
|
...(cursor ? { cursor } : {}),
|
|
12
12
|
}));
|
|
13
13
|
server.tool("instagram_get_user_posts", "Get an Instagram user's posts with pagination", {
|
|
14
14
|
username: z.string().describe("Instagram username"),
|
|
15
15
|
cursor: z.string().optional().describe("Pagination cursor from previous response"),
|
|
16
|
-
}, async ({ username, cursor }) => bycrawlGet(`/instagram/users/${username}/posts`, {
|
|
16
|
+
}, { readOnlyHint: true }, async ({ username, cursor }) => bycrawlGet(`/instagram/users/${username}/posts`, {
|
|
17
17
|
...(cursor ? { cursor } : {}),
|
|
18
18
|
}));
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instagram.js","sourceRoot":"","sources":["../../src/tools/instagram.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,sCAAsC,EACtC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,EACnD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,wBAAwB,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CACxE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,8CAA8C,EAC9C,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,EACvD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CACnE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,iCAAiC,EACjC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC,EAAE,EACjF,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,oBAAoB,SAAS,EAAE,CAAC,CACrE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,6BAA6B,EAC7B,mDAAmD,EACnD;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAChD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACnF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAC9B,UAAU,CAAC,oBAAoB,SAAS,WAAW,EAAE;QACnD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,+CAA+C,EAC/C;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACnD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACnF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAC7B,UAAU,CAAC,oBAAoB,QAAQ,QAAQ,EAAE;QAC/C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CACL,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"instagram.js","sourceRoot":"","sources":["../../src/tools/instagram.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,sCAAsC,EACtC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,EACnD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,wBAAwB,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CACxE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,8CAA8C,EAC9C,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,EACvD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CACnE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,iCAAiC,EACjC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC,EAAE,EACjF,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,oBAAoB,SAAS,EAAE,CAAC,CACrE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,6BAA6B,EAC7B,mDAAmD,EACnD;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAChD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACnF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAC9B,UAAU,CAAC,oBAAoB,SAAS,WAAW,EAAE;QACnD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,+CAA+C,EAC/C;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACnD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACnF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAC7B,UAAU,CAAC,oBAAoB,QAAQ,QAAQ,EAAE;QAC/C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CACL,CAAC;AACJ,CAAC"}
|
package/build/tools/job104.js
CHANGED
|
@@ -7,8 +7,8 @@ export function registerJob104Tools(server) {
|
|
|
7
7
|
area: z.string().optional().describe("Area code filter (e.g. 6001001000)"),
|
|
8
8
|
page: z.number().optional().describe("Page number (default 1)"),
|
|
9
9
|
count: z.number().optional().describe("Results per page (max 100, default 20)"),
|
|
10
|
-
}, async ({ q, welfare, area, page, count }) => bycrawlGet("/job104/jobs/search", { q, welfare, area, page, count }));
|
|
11
|
-
server.tool("job104_get_company", "Get company details from 104.com.tw", { companyId: z.string().describe("104.com.tw company ID") }, async ({ companyId }) => bycrawlGet(`/job104/companies/${companyId}`));
|
|
12
|
-
server.tool("job104_get_job", "Get job details (with contact email) from 104.com.tw", { jobId: z.string().describe("104.com.tw job ID") }, async ({ jobId }) => bycrawlGet(`/job104/jobs/${jobId}`));
|
|
10
|
+
}, { readOnlyHint: true }, async ({ q, welfare, area, page, count }) => bycrawlGet("/job104/jobs/search", { q, welfare, area, page, count }));
|
|
11
|
+
server.tool("job104_get_company", "Get company details from 104.com.tw", { companyId: z.string().describe("104.com.tw company ID") }, { readOnlyHint: true }, async ({ companyId }) => bycrawlGet(`/job104/companies/${companyId}`));
|
|
12
|
+
server.tool("job104_get_job", "Get job details (with contact email) from 104.com.tw", { jobId: z.string().describe("104.com.tw job ID") }, { readOnlyHint: true }, async ({ jobId }) => bycrawlGet(`/job104/jobs/${jobId}`));
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=job104.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job104.js","sourceRoot":"","sources":["../../src/tools/job104.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,gCAAgC,EAChC;QACE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC9D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC1E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KAChF,EACD,KAAK,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAClH,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,qCAAqC,EACrC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,EAC3D,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,qBAAqB,SAAS,EAAE,CAAC,CACtE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,sDAAsD,EACtD,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,EACnD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,gBAAgB,KAAK,EAAE,CAAC,CACzD,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"job104.js","sourceRoot":"","sources":["../../src/tools/job104.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,gCAAgC,EAChC;QACE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC9D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC1E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KAChF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAClH,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,qCAAqC,EACrC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,EAC3D,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,qBAAqB,SAAS,EAAE,CAAC,CACtE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,sDAAsD,EACtD,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,EACnD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,gBAAgB,KAAK,EAAE,CAAC,CACzD,CAAC;AACJ,CAAC"}
|
package/build/tools/linkedin.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { bycrawlGet } from "../client.js";
|
|
3
3
|
export function registerLinkedinTools(server) {
|
|
4
|
-
server.tool("linkedin_get_company", "Get LinkedIn company profile", { companyId: z.string().describe("Company ID or vanity name (e.g. 'microsoft')") }, async ({ companyId }) => bycrawlGet(`/linkedin/companies/${companyId}`));
|
|
4
|
+
server.tool("linkedin_get_company", "Get LinkedIn company profile", { companyId: z.string().describe("Company ID or vanity name (e.g. 'microsoft')") }, { readOnlyHint: true }, async ({ companyId }) => bycrawlGet(`/linkedin/companies/${companyId}`));
|
|
5
5
|
server.tool("linkedin_get_company_jobs", "Get job listings for a LinkedIn company", {
|
|
6
6
|
companyId: z.string().describe("Company ID or vanity name"),
|
|
7
7
|
count: z.number().optional().describe("Number of jobs (max 100)"),
|
|
8
8
|
offset: z.number().optional().describe("Pagination offset"),
|
|
9
|
-
}, async ({ companyId, count, offset }) => bycrawlGet(`/linkedin/companies/${companyId}/jobs`, { count, offset }));
|
|
9
|
+
}, { readOnlyHint: true }, async ({ companyId, count, offset }) => bycrawlGet(`/linkedin/companies/${companyId}/jobs`, { count, offset }));
|
|
10
10
|
server.tool("linkedin_search_jobs", "Search LinkedIn job listings by keyword", {
|
|
11
|
-
|
|
11
|
+
q: z.string().describe("Search keywords (e.g. 'software engineer')"),
|
|
12
12
|
location: z.string().optional().describe("Location filter (e.g. 'San Francisco')"),
|
|
13
13
|
count: z.number().optional().describe("Number of results (max 100)"),
|
|
14
14
|
offset: z.number().optional().describe("Pagination offset"),
|
|
15
|
-
}, async ({
|
|
16
|
-
server.tool("linkedin_get_job", "Get a LinkedIn job posting by ID", { jobId: z.string().describe("LinkedIn job ID") }, async ({ jobId }) => bycrawlGet(`/linkedin/jobs/${jobId}`));
|
|
17
|
-
server.tool("linkedin_get_post", "Get a LinkedIn post by ID", { postId: z.string().describe("LinkedIn post or article ID") }, async ({ postId }) => bycrawlGet(`/linkedin/posts/${postId}`));
|
|
15
|
+
}, { readOnlyHint: true }, async ({ q, location, count, offset }) => bycrawlGet("/linkedin/jobs/search", { q, location, count, offset }));
|
|
16
|
+
server.tool("linkedin_get_job", "Get a LinkedIn job posting by ID", { jobId: z.string().describe("LinkedIn job ID") }, { readOnlyHint: true }, async ({ jobId }) => bycrawlGet(`/linkedin/jobs/${jobId}`));
|
|
17
|
+
server.tool("linkedin_get_post", "Get a LinkedIn post by ID", { postId: z.string().describe("LinkedIn post or article ID") }, { readOnlyHint: true }, async ({ postId }) => bycrawlGet(`/linkedin/posts/${postId}`));
|
|
18
18
|
server.tool("linkedin_search_users", "Search LinkedIn users/people by keyword", {
|
|
19
|
-
|
|
19
|
+
q: z.string().describe("Search keywords (e.g. 'software engineer')"),
|
|
20
20
|
count: z.number().optional().describe("Number of results (max 100)"),
|
|
21
21
|
offset: z.number().optional().describe("Pagination offset"),
|
|
22
|
-
}, async ({
|
|
23
|
-
server.tool("linkedin_get_user", "Get LinkedIn user profile by username", { username: z.string().describe("LinkedIn username or profile URL slug") }, async ({ username }) => bycrawlGet(`/linkedin/users/${username}`));
|
|
22
|
+
}, { readOnlyHint: true }, async ({ q, count, offset }) => bycrawlGet("/linkedin/users/search", { q, count, offset }));
|
|
23
|
+
server.tool("linkedin_get_user", "Get LinkedIn user profile by username", { username: z.string().describe("LinkedIn username or profile URL slug") }, { readOnlyHint: true }, async ({ username }) => bycrawlGet(`/linkedin/users/${username}`));
|
|
24
24
|
}
|
|
25
25
|
//# sourceMappingURL=linkedin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linkedin.js","sourceRoot":"","sources":["../../src/tools/linkedin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,8BAA8B,EAC9B,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC,EAAE,EAClF,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,uBAAuB,SAAS,EAAE,CAAC,CACxE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,yCAAyC,EACzC;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC3D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QACjE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KAC5D,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,uBAAuB,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAC/G,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,yCAAyC,EACzC;QACE,
|
|
1
|
+
{"version":3,"file":"linkedin.js","sourceRoot":"","sources":["../../src/tools/linkedin.ts"],"names":[],"mappings":"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"}
|
package/build/tools/reddit.js
CHANGED
|
@@ -1,18 +1,29 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { bycrawlGet } from "../client.js";
|
|
3
3
|
export function registerRedditTools(server) {
|
|
4
|
-
server.tool("reddit_get_subreddit", "Get subreddit info by name", { name: z.string().describe("Subreddit name (without r/)") }, async ({ name }) => bycrawlGet(`/reddit/subreddits/${name}`));
|
|
4
|
+
server.tool("reddit_get_subreddit", "Get subreddit info by name", { name: z.string().describe("Subreddit name (without r/)") }, { readOnlyHint: true }, async ({ name }) => bycrawlGet(`/reddit/subreddits/${name}`));
|
|
5
5
|
server.tool("reddit_get_subreddit_posts", "Get posts from a subreddit", {
|
|
6
6
|
name: z.string().describe("Subreddit name (without r/)"),
|
|
7
7
|
sort: z.enum(["hot", "new", "top", "rising"]).optional().describe("Sort order"),
|
|
8
|
+
t: z.enum(["hour", "day", "week", "month", "year", "all"]).optional().describe("Time filter for sort=top"),
|
|
8
9
|
count: z.number().optional().describe("Number of posts (max 100)"),
|
|
9
|
-
|
|
10
|
+
after: z.string().optional().describe("Pagination cursor from previous response"),
|
|
11
|
+
}, { readOnlyHint: true }, async ({ name, sort, t, count, after }) => bycrawlGet(`/reddit/subreddits/${name}/posts`, { sort, t, count, after }));
|
|
10
12
|
server.tool("reddit_search_posts", "Search Reddit posts by keyword", {
|
|
11
13
|
query: z.string().describe("Search query"),
|
|
12
14
|
sort: z.enum(["relevance", "hot", "top", "new", "comments"]).optional().describe("Sort order"),
|
|
15
|
+
t: z.enum(["hour", "day", "week", "month", "year", "all"]).optional().describe("Time filter for sort=top"),
|
|
13
16
|
count: z.number().optional().describe("Number of results (max 100)"),
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
server.tool("
|
|
17
|
+
after: z.string().optional().describe("Pagination cursor from previous response"),
|
|
18
|
+
}, { readOnlyHint: true }, async ({ query, sort, t, count, after }) => bycrawlGet("/reddit/posts/search", { q: query, sort, t, count, after }));
|
|
19
|
+
server.tool("reddit_get_post", "Get a Reddit post by ID", { postId: z.string().describe("Reddit post ID") }, { readOnlyHint: true }, async ({ postId }) => bycrawlGet(`/reddit/posts/${postId}`));
|
|
20
|
+
server.tool("reddit_get_user", "Get Reddit user profile by username", { username: z.string().describe("Reddit username") }, { readOnlyHint: true }, async ({ username }) => bycrawlGet(`/reddit/users/${username}`));
|
|
21
|
+
server.tool("reddit_get_user_posts", "Get posts submitted by a Reddit user", {
|
|
22
|
+
username: z.string().describe("Reddit username"),
|
|
23
|
+
sort: z.enum(["new", "hot", "top"]).optional().describe("Sort order"),
|
|
24
|
+
t: z.enum(["hour", "day", "week", "month", "year", "all"]).optional().describe("Time filter for sort=top"),
|
|
25
|
+
count: z.number().optional().describe("Number of posts (max 100)"),
|
|
26
|
+
after: z.string().optional().describe("Pagination cursor from previous response"),
|
|
27
|
+
}, { readOnlyHint: true }, async ({ username, sort, t, count, after }) => bycrawlGet(`/reddit/users/${username}/posts`, { sort, t, count, after }));
|
|
17
28
|
}
|
|
18
29
|
//# sourceMappingURL=reddit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reddit.js","sourceRoot":"","sources":["../../src/tools/reddit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,4BAA4B,EAC5B,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE,EAC5D,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAC7D,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,4BAA4B,EAC5B;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACxD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC/E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"reddit.js","sourceRoot":"","sources":["../../src/tools/reddit.ts"],"names":[],"mappings":"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"}
|
package/build/tools/system.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { bycrawlGet } from "../client.js";
|
|
2
2
|
export function registerSystemTools(server) {
|
|
3
|
-
server.tool("bycrawl_health", "Check ByCrawl API health status", {}, async () => bycrawlGet("/health"));
|
|
3
|
+
server.tool("bycrawl_health", "Check ByCrawl API health status", {}, { readOnlyHint: true }, async () => bycrawlGet("/health"));
|
|
4
|
+
server.tool("bycrawl_get_account", "Get current account info: plan, credits, subscription status, and API key details", {}, { readOnlyHint: true }, async () => bycrawlGet("/account"));
|
|
4
5
|
}
|
|
5
6
|
//# sourceMappingURL=system.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/tools/system.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,iCAAiC,EACjC,EAAE,EACF,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAClC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/tools/system.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,iCAAiC,EACjC,EAAE,EACF,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAClC,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,mFAAmF,EACnF,EAAE,EACF,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CACnC,CAAC;AACJ,CAAC"}
|
package/build/tools/threads.js
CHANGED
|
@@ -6,25 +6,25 @@ export function registerThreadsTools(server) {
|
|
|
6
6
|
count: z.number().optional().describe("Number of results (max 25)"),
|
|
7
7
|
search_type: z.string().optional().describe("Sort order: top (default) or recent"),
|
|
8
8
|
cursor: z.string().optional().describe("Pagination cursor from previous response"),
|
|
9
|
-
}, async ({ query, count, search_type, cursor }) => bycrawlGet("/threads/posts/search", { q: query, count, search_type, cursor }));
|
|
10
|
-
server.tool("threads_get_post", "Get a single Threads post by ID or shortcode", { postId: z.string().describe("Post ID or shortcode"), mode: z.enum(["full"]).optional().describe("Use 'full' for view counts") }, async ({ postId, mode }) => bycrawlGet(`/threads/posts/${postId}`, { mode }));
|
|
11
|
-
server.tool("threads_get_posts_batch", "Get multiple Threads posts by IDs (batch)", { ids: z.string().describe("Comma-separated post IDs or shortcodes"), mode: z.enum(["full"]).optional().describe("Use 'full' for view counts") }, async ({ ids, mode }) => bycrawlGet("/threads/posts", { ids, mode }));
|
|
12
|
-
server.tool("threads_search_users", "Search Threads users by username or name", { query: z.string().describe("Search query"), count: z.number().optional().describe("Number of results (max 25)") }, async ({ query, count }) => bycrawlGet("/threads/users/search", { q: query, count }));
|
|
13
|
-
server.tool("threads_get_user", "Get a Threads user profile by username", { username: z.string().describe("Username") }, async ({ username }) => bycrawlGet(`/threads/users/${username}`));
|
|
9
|
+
}, { readOnlyHint: true }, async ({ query, count, search_type, cursor }) => bycrawlGet("/threads/posts/search", { q: query, count, search_type, cursor }));
|
|
10
|
+
server.tool("threads_get_post", "Get a single Threads post by ID or shortcode", { postId: z.string().describe("Post ID or shortcode"), mode: z.enum(["full"]).optional().describe("Use 'full' for view counts") }, { readOnlyHint: true }, async ({ postId, mode }) => bycrawlGet(`/threads/posts/${postId}`, { mode }));
|
|
11
|
+
server.tool("threads_get_posts_batch", "Get multiple Threads posts by IDs (batch)", { ids: z.string().describe("Comma-separated post IDs or shortcodes"), mode: z.enum(["full"]).optional().describe("Use 'full' for view counts") }, { readOnlyHint: true }, async ({ ids, mode }) => bycrawlGet("/threads/posts", { ids, mode }));
|
|
12
|
+
server.tool("threads_search_users", "Search Threads users by username or name", { query: z.string().describe("Search query"), count: z.number().optional().describe("Number of results (max 25)") }, { readOnlyHint: true }, async ({ query, count }) => bycrawlGet("/threads/users/search", { q: query, count }));
|
|
13
|
+
server.tool("threads_get_user", "Get a Threads user profile by username", { username: z.string().describe("Username") }, { readOnlyHint: true }, async ({ username }) => bycrawlGet(`/threads/users/${username}`));
|
|
14
14
|
server.tool("threads_get_user_posts", "Get a Threads user's posts with pagination", {
|
|
15
15
|
userId: z.string().describe("Numeric user ID"),
|
|
16
16
|
cursor: z.string().optional().describe("Pagination cursor"),
|
|
17
17
|
count: z.number().optional().describe("Number of results"),
|
|
18
|
-
}, async ({ userId, cursor, count }) => bycrawlGet(`/threads/users/${userId}/posts`, { cursor, count }));
|
|
18
|
+
}, { readOnlyHint: true }, async ({ userId, cursor, count }) => bycrawlGet(`/threads/users/${userId}/posts`, { cursor, count }));
|
|
19
19
|
server.tool("threads_get_user_replies", "Get a Threads user's replies with pagination", {
|
|
20
20
|
userId: z.string().describe("Numeric user ID"),
|
|
21
21
|
cursor: z.string().optional().describe("Pagination cursor"),
|
|
22
22
|
count: z.number().optional().describe("Number of results"),
|
|
23
|
-
}, async ({ userId, cursor, count }) => bycrawlGet(`/threads/users/${userId}/replies`, { cursor, count }));
|
|
23
|
+
}, { readOnlyHint: true }, async ({ userId, cursor, count }) => bycrawlGet(`/threads/users/${userId}/replies`, { cursor, count }));
|
|
24
24
|
server.tool("threads_get_public_feed", "Get Threads public For You feed", {
|
|
25
25
|
cursor: z.string().optional().describe("Pagination cursor"),
|
|
26
26
|
count: z.number().optional().describe("Number of items"),
|
|
27
27
|
country: z.string().optional().describe("Country code (default: TW)"),
|
|
28
|
-
}, async ({ cursor, count, country }) => bycrawlGet("/threads/feed/public", { cursor, count, country }));
|
|
28
|
+
}, { readOnlyHint: true }, async ({ cursor, count, country }) => bycrawlGet("/threads/feed/public", { cursor, count, country }));
|
|
29
29
|
}
|
|
30
30
|
//# sourceMappingURL=threads.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/tools/threads.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/tools/threads.ts"],"names":[],"mappings":"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"}
|
package/build/tools/tiktok.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { bycrawlGet } from "../client.js";
|
|
3
3
|
export function registerTiktokTools(server) {
|
|
4
|
-
server.tool("tiktok_get_video", "Get TikTok video metadata by video ID", { videoId: z.string().describe("TikTok video ID") }, async ({ videoId }) => bycrawlGet(`/tiktok/videos/${videoId}`));
|
|
4
|
+
server.tool("tiktok_get_video", "Get TikTok video metadata by video ID", { videoId: z.string().describe("TikTok video ID") }, { readOnlyHint: true }, async ({ videoId }) => bycrawlGet(`/tiktok/videos/${videoId}`));
|
|
5
5
|
server.tool("tiktok_get_user", "Get TikTok user info and recent videos", {
|
|
6
6
|
username: z.string().describe("TikTok username"),
|
|
7
7
|
count: z.number().optional().describe("Number of recent videos (max 50)"),
|
|
8
|
-
}, async ({ username, count }) => bycrawlGet(`/tiktok/users/${username}`, { count }));
|
|
8
|
+
}, { readOnlyHint: true }, async ({ username, count }) => bycrawlGet(`/tiktok/users/${username}`, { count }));
|
|
9
9
|
server.tool("tiktok_get_user_videos", "Get TikTok user's video list", {
|
|
10
10
|
username: z.string().describe("TikTok username"),
|
|
11
11
|
count: z.number().optional().describe("Number of videos (max 50)"),
|
|
12
|
-
}, async ({ username, count }) => bycrawlGet(`/tiktok/users/${username}/videos`, { count }));
|
|
12
|
+
}, { readOnlyHint: true }, async ({ username, count }) => bycrawlGet(`/tiktok/users/${username}/videos`, { count }));
|
|
13
13
|
server.tool("tiktok_get_category_videos", "Browse TikTok videos by category", {
|
|
14
14
|
category: z.string().optional().describe("Category name (e.g. Food, Dance, Comedy). Omit for trending"),
|
|
15
15
|
count: z.number().optional().describe("Number of videos (max 50)"),
|
|
16
|
-
}, async ({ category, count }) => bycrawlGet("/tiktok/categories", { category, count }));
|
|
16
|
+
}, { readOnlyHint: true }, async ({ category, count }) => bycrawlGet("/tiktok/categories", { category, count }));
|
|
17
17
|
server.tool("tiktok_get_video_comments", "Get comments for a TikTok video", {
|
|
18
18
|
videoId: z.string().describe("TikTok video ID"),
|
|
19
19
|
cursor: z.string().optional().describe("Pagination cursor from previous response"),
|
|
20
|
-
}, async ({ videoId, cursor }) => bycrawlGet(`/tiktok/videos/${videoId}/comments`, { cursor }));
|
|
20
|
+
}, { readOnlyHint: true }, async ({ videoId, cursor }) => bycrawlGet(`/tiktok/videos/${videoId}/comments`, { cursor }));
|
|
21
21
|
server.tool("tiktok_search_videos", "Search TikTok videos by keyword", {
|
|
22
|
-
|
|
22
|
+
q: z.string().describe("Search query"),
|
|
23
23
|
count: z.number().optional().describe("Number of results (max 30)"),
|
|
24
|
-
}, async ({
|
|
24
|
+
}, { readOnlyHint: true }, async ({ q, count }) => bycrawlGet("/tiktok/videos/search", { q, count }));
|
|
25
25
|
server.tool("tiktok_get_video_subtitles", "Get subtitles/captions for a TikTok video", {
|
|
26
26
|
videoId: z.string().describe("TikTok video ID"),
|
|
27
27
|
language: z.string().optional().describe("Subtitle language code (e.g. en, ja, ko, zh-Hans)"),
|
|
28
|
-
}, async ({ videoId, language }) => bycrawlGet(`/tiktok/videos/${videoId}/subtitles`, { language }));
|
|
28
|
+
}, { readOnlyHint: true }, async ({ videoId, language }) => bycrawlGet(`/tiktok/videos/${videoId}/subtitles`, { language }));
|
|
29
29
|
}
|
|
30
30
|
//# sourceMappingURL=tiktok.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiktok.js","sourceRoot":"","sources":["../../src/tools/tiktok.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,uCAAuC,EACvC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,EACnD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAC/D,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,wCAAwC,EACxC;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAChD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KAC1E,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAClF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,8BAA8B,EAC9B;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAChD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KACnE,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,QAAQ,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CACzF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,kCAAkC,EAClC;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;QACvG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KACnE,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CACrF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,iCAAiC,EACjC;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC/C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACnF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,kBAAkB,OAAO,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAC5F,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,iCAAiC,EACjC;QACE,
|
|
1
|
+
{"version":3,"file":"tiktok.js","sourceRoot":"","sources":["../../src/tools/tiktok.ts"],"names":[],"mappings":"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"}
|
package/build/tools/x.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { bycrawlGet } from "../client.js";
|
|
3
3
|
export function registerXTools(server) {
|
|
4
|
-
server.tool("x_get_user", "Get X/Twitter user profile by username", { username: z.string().describe("X username") }, async ({ username }) => bycrawlGet(`/x/users/${username}`));
|
|
4
|
+
server.tool("x_get_user", "Get X/Twitter user profile by username", { username: z.string().describe("X username") }, { readOnlyHint: true }, async ({ username }) => bycrawlGet(`/x/users/${username}`));
|
|
5
5
|
server.tool("x_get_user_posts", "Get X/Twitter user's timeline tweets", {
|
|
6
6
|
username: z.string().describe("X username"),
|
|
7
7
|
count: z.number().optional().describe("Number of tweets (max 40)"),
|
|
8
8
|
cursor: z.string().optional().describe("Pagination cursor"),
|
|
9
|
-
}, async ({ username, count, cursor }) => bycrawlGet(`/x/users/${username}/posts`, { count, cursor }));
|
|
10
|
-
server.tool("x_get_post", "Get a single X/Twitter post (tweet) by ID", { postId: z.string().describe("Tweet ID") }, async ({ postId }) => bycrawlGet(`/x/posts/${postId}`));
|
|
9
|
+
}, { readOnlyHint: true }, async ({ username, count, cursor }) => bycrawlGet(`/x/users/${username}/posts`, { count, cursor }));
|
|
10
|
+
server.tool("x_get_post", "Get a single X/Twitter post (tweet) by ID", { postId: z.string().describe("Tweet ID") }, { readOnlyHint: true }, async ({ postId }) => bycrawlGet(`/x/posts/${postId}`));
|
|
11
11
|
server.tool("x_search_posts", "Search X/Twitter posts by keyword", {
|
|
12
12
|
query: z.string().describe("Search query"),
|
|
13
|
-
count: z.number().optional().describe("Number of tweets (
|
|
13
|
+
count: z.number().optional().describe("Number of tweets (1-15)"),
|
|
14
14
|
cursor: z.string().optional().describe("Pagination cursor"),
|
|
15
15
|
product: z.enum(["Top", "Latest"]).optional().describe("Search tab: Top or Latest"),
|
|
16
|
-
}, async ({ query, count, cursor, product }) => bycrawlGet("/x/posts/search", { q: query, count, cursor, product }));
|
|
16
|
+
}, { readOnlyHint: true }, async ({ query, count, cursor, product }) => bycrawlGet("/x/posts/search", { q: query, count, cursor, product }));
|
|
17
17
|
}
|
|
18
18
|
//# sourceMappingURL=x.js.map
|
package/build/tools/x.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x.js","sourceRoot":"","sources":["../../src/tools/x.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,cAAc,CAAC,MAAiB;IAC9C,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,wCAAwC,EACxC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAC/C,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,QAAQ,EAAE,CAAC,CAC3D,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,sCAAsC,EACtC;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAClE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KAC5D,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,QAAQ,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CACnG,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,2CAA2C,EAC3C,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,EAC3C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,MAAM,EAAE,CAAC,CACvD,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,mCAAmC,EACnC;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"x.js","sourceRoot":"","sources":["../../src/tools/x.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,cAAc,CAAC,MAAiB;IAC9C,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,wCAAwC,EACxC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAC/C,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,QAAQ,EAAE,CAAC,CAC3D,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,sCAAsC,EACtC;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAClE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KAC5D,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,QAAQ,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CACnG,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,2CAA2C,EAC3C,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,EAC3C,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,MAAM,EAAE,CAAC,CACvD,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,mCAAmC,EACnC;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAChE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC3D,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KACpF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CACjH,CAAC;AACJ,CAAC"}
|
package/build/tools/youtube.js
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { bycrawlGet } from "../client.js";
|
|
3
3
|
export function registerYoutubeTools(server) {
|
|
4
|
-
server.tool("youtube_get_video", "Get YouTube video details by ID", { videoId: z.string().describe("YouTube video ID") }, async ({ videoId }) => bycrawlGet(`/youtube/videos/${videoId}`));
|
|
5
|
-
server.tool("youtube_get_channel", "Get YouTube channel info by channel ID or @handle", { channelId: z.string().describe("YouTube channel ID or @handle") }, async ({ channelId }) => bycrawlGet(`/youtube/channels/${channelId}`));
|
|
4
|
+
server.tool("youtube_get_video", "Get YouTube video details by ID", { videoId: z.string().describe("YouTube video ID") }, { readOnlyHint: true }, async ({ videoId }) => bycrawlGet(`/youtube/videos/${videoId}`));
|
|
5
|
+
server.tool("youtube_get_channel", "Get YouTube channel info by channel ID or @handle", { channelId: z.string().describe("YouTube channel ID or @handle") }, { readOnlyHint: true }, async ({ channelId }) => bycrawlGet(`/youtube/channels/${channelId}`));
|
|
6
6
|
server.tool("youtube_search_videos", "Search YouTube videos by keyword", {
|
|
7
7
|
q: z.string().describe("Search query"),
|
|
8
8
|
count: z.number().optional().describe("Number of results (max 20)"),
|
|
9
|
-
|
|
10
|
-
}, async ({ q, count, cursor }) => bycrawlGet("/youtube/search", { q, count, cursor }));
|
|
9
|
+
}, { readOnlyHint: true }, async ({ q, count }) => bycrawlGet("/youtube/videos/search", { q, count }));
|
|
11
10
|
server.tool("youtube_get_video_comments", "Get YouTube video comments", {
|
|
12
11
|
videoId: z.string().describe("YouTube video ID"),
|
|
13
12
|
count: z.number().optional().describe("Number of comments (max 50)"),
|
|
14
|
-
|
|
15
|
-
}, async ({ videoId, count, cursor }) => bycrawlGet(`/youtube/videos/${videoId}/comments`, { count, cursor }));
|
|
13
|
+
}, { readOnlyHint: true }, async ({ videoId, count }) => bycrawlGet(`/youtube/videos/${videoId}/comments`, { count }));
|
|
16
14
|
server.tool("youtube_get_video_transcription", "Get YouTube video transcription/subtitles with timestamps", {
|
|
17
15
|
videoId: z.string().describe("YouTube video ID"),
|
|
18
16
|
language: z.string().optional().describe("Language code (e.g., en, zh-Hant, ja)"),
|
|
19
|
-
}, async ({ videoId, language }) => bycrawlGet(`/youtube/videos/${videoId}/transcription`, { language }));
|
|
17
|
+
}, { readOnlyHint: true }, async ({ videoId, language }) => bycrawlGet(`/youtube/videos/${videoId}/transcription`, { language }));
|
|
20
18
|
}
|
|
21
19
|
//# sourceMappingURL=youtube.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"youtube.js","sourceRoot":"","sources":["../../src/tools/youtube.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,iCAAiC,EACjC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,EACpD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAChE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,mDAAmD,EACnD,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,EACnE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,qBAAqB,SAAS,EAAE,CAAC,CACtE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,kCAAkC,EAClC;QACE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"youtube.js","sourceRoot":"","sources":["../../src/tools/youtube.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,iCAAiC,EACjC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,EACpD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAChE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,mDAAmD,EACnD,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,EACnE,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,qBAAqB,SAAS,EAAE,CAAC,CACtE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,kCAAkC,EAClC;QACE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;KACpE,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,wBAAwB,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAC3E,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,4BAA4B,EAC5B;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAChD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KACrE,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3B,UAAU,CAAC,mBAAmB,OAAO,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAC/D,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iCAAiC,EACjC,2DAA2D,EAC3D;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;KAClF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC9B,UAAU,CAAC,mBAAmB,OAAO,gBAAgB,EAAE,EAAE,QAAQ,EAAE,CAAC,CACvE,CAAC;AACJ,CAAC"}
|