youtube-knowledge-mcp 1.1.1 → 2.0.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 +221 -177
- package/dist/http.d.ts +64 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +283 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +19 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +342 -164
- package/dist/index.js.map +1 -1
- package/dist/prompts.d.ts +3 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +167 -0
- package/dist/prompts.js.map +1 -0
- package/dist/resources.d.ts +10 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +72 -0
- package/dist/resources.js.map +1 -0
- package/dist/schemas.d.ts +326 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +128 -0
- package/dist/schemas.js.map +1 -0
- package/dist/tools/batch.d.ts +111 -0
- package/dist/tools/batch.d.ts.map +1 -0
- package/dist/tools/batch.js +187 -0
- package/dist/tools/batch.js.map +1 -0
- package/dist/tools/check-health.d.ts +59 -0
- package/dist/tools/check-health.d.ts.map +1 -0
- package/dist/tools/check-health.js +38 -0
- package/dist/tools/check-health.js.map +1 -0
- package/dist/tools/clips.d.ts +158 -0
- package/dist/tools/clips.d.ts.map +1 -0
- package/dist/tools/clips.js +279 -0
- package/dist/tools/clips.js.map +1 -0
- package/dist/tools/download-video.d.ts +43 -12
- package/dist/tools/download-video.d.ts.map +1 -1
- package/dist/tools/download-video.js +32 -3
- package/dist/tools/download-video.js.map +1 -1
- package/dist/tools/fetch-videos.d.ts +39 -7
- package/dist/tools/fetch-videos.d.ts.map +1 -1
- package/dist/tools/fetch-videos.js +20 -3
- package/dist/tools/fetch-videos.js.map +1 -1
- package/dist/tools/get-channel-info.d.ts +11 -7
- package/dist/tools/get-channel-info.d.ts.map +1 -1
- package/dist/tools/get-channel-info.js +5 -3
- package/dist/tools/get-channel-info.js.map +1 -1
- package/dist/tools/get-chapters.d.ts +28 -6
- package/dist/tools/get-chapters.d.ts.map +1 -1
- package/dist/tools/get-chapters.js +24 -4
- package/dist/tools/get-chapters.js.map +1 -1
- package/dist/tools/get-comments.d.ts +26 -7
- package/dist/tools/get-comments.d.ts.map +1 -1
- package/dist/tools/get-comments.js +10 -4
- package/dist/tools/get-comments.js.map +1 -1
- package/dist/tools/get-playlist-info.d.ts +13 -6
- package/dist/tools/get-playlist-info.d.ts.map +1 -1
- package/dist/tools/get-playlist-info.js +4 -2
- package/dist/tools/get-playlist-info.js.map +1 -1
- package/dist/tools/get-transcript.d.ts +42 -7
- package/dist/tools/get-transcript.d.ts.map +1 -1
- package/dist/tools/get-transcript.js +139 -10
- package/dist/tools/get-transcript.js.map +1 -1
- package/dist/tools/get-video-info.d.ts +17 -6
- package/dist/tools/get-video-info.d.ts.map +1 -1
- package/dist/tools/get-video-info.js +5 -2
- package/dist/tools/get-video-info.js.map +1 -1
- package/dist/tools/library.d.ts +127 -0
- package/dist/tools/library.d.ts.map +1 -0
- package/dist/tools/library.js +118 -0
- package/dist/tools/library.js.map +1 -0
- package/dist/tools/list-library.d.ts +40 -6
- package/dist/tools/list-library.d.ts.map +1 -1
- package/dist/tools/list-library.js +8 -2
- package/dist/tools/list-library.js.map +1 -1
- package/dist/tools/save-to-library.d.ts +9 -6
- package/dist/tools/save-to-library.d.ts.map +1 -1
- package/dist/tools/save-to-library.js +9 -2
- package/dist/tools/save-to-library.js.map +1 -1
- package/dist/tools/search-channels.d.ts +33 -7
- package/dist/tools/search-channels.d.ts.map +1 -1
- package/dist/tools/search-channels.js +11 -4
- package/dist/tools/search-channels.js.map +1 -1
- package/dist/tools/search-transcript.d.ts +52 -0
- package/dist/tools/search-transcript.d.ts.map +1 -0
- package/dist/tools/search-transcript.js +103 -0
- package/dist/tools/search-transcript.js.map +1 -0
- package/dist/tools/search-videos.d.ts +39 -7
- package/dist/tools/search-videos.d.ts.map +1 -1
- package/dist/tools/search-videos.js +21 -3
- package/dist/tools/search-videos.js.map +1 -1
- package/dist/utils/clips.d.ts +69 -0
- package/dist/utils/clips.d.ts.map +1 -0
- package/dist/utils/clips.js +202 -0
- package/dist/utils/clips.js.map +1 -0
- package/dist/utils/context.d.ts +24 -0
- package/dist/utils/context.d.ts.map +1 -0
- package/dist/utils/context.js +19 -0
- package/dist/utils/context.js.map +1 -0
- package/dist/utils/errors.d.ts +58 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +152 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/format.d.ts +34 -5
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +45 -0
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/preflight.d.ts +30 -0
- package/dist/utils/preflight.d.ts.map +1 -0
- package/dist/utils/preflight.js +79 -0
- package/dist/utils/preflight.js.map +1 -0
- package/dist/utils/search-index.d.ts +58 -0
- package/dist/utils/search-index.d.ts.map +1 -0
- package/dist/utils/search-index.js +192 -0
- package/dist/utils/search-index.js.map +1 -0
- package/dist/utils/storage.d.ts +83 -6
- package/dist/utils/storage.d.ts.map +1 -1
- package/dist/utils/storage.js +204 -21
- package/dist/utils/storage.js.map +1 -1
- package/dist/utils/transcript.d.ts +142 -0
- package/dist/utils/transcript.d.ts.map +1 -0
- package/dist/utils/transcript.js +216 -0
- package/dist/utils/transcript.js.map +1 -0
- package/dist/utils/validate.d.ts +16 -0
- package/dist/utils/validate.d.ts.map +1 -0
- package/dist/utils/validate.js +64 -0
- package/dist/utils/validate.js.map +1 -0
- package/dist/utils/youtube.d.ts +15 -1
- package/dist/utils/youtube.d.ts.map +1 -1
- package/dist/utils/youtube.js +231 -174
- package/dist/utils/youtube.js.map +1 -1
- package/dist/utils/ytdlp.d.ts +51 -0
- package/dist/utils/ytdlp.d.ts.map +1 -0
- package/dist/utils/ytdlp.js +191 -0
- package/dist/utils/ytdlp.js.map +1 -0
- package/package.json +20 -15
|
@@ -1,15 +1,47 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
3
|
export declare const fetchVideosSchema: {
|
|
3
4
|
url: z.ZodString;
|
|
4
5
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
5
6
|
};
|
|
6
|
-
export declare
|
|
7
|
+
export declare const fetchVideosOutputSchema: {
|
|
8
|
+
total: z.ZodNumber;
|
|
9
|
+
count: z.ZodNumber;
|
|
10
|
+
offset: z.ZodNumber;
|
|
11
|
+
hasMore: z.ZodBoolean;
|
|
12
|
+
nextOffset: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
source: z.ZodString;
|
|
14
|
+
videos: z.ZodArray<z.ZodObject<{
|
|
15
|
+
id: z.ZodString;
|
|
16
|
+
title: z.ZodString;
|
|
17
|
+
durationSeconds: z.ZodNumber;
|
|
18
|
+
durationFormatted: z.ZodString;
|
|
19
|
+
url: z.ZodString;
|
|
20
|
+
channel: z.ZodOptional<z.ZodString>;
|
|
21
|
+
viewCount: z.ZodOptional<z.ZodNumber>;
|
|
22
|
+
uploadDate: z.ZodOptional<z.ZodString>;
|
|
23
|
+
}, "strip", z.ZodTypeAny, {
|
|
24
|
+
url: string;
|
|
25
|
+
title: string;
|
|
26
|
+
id: string;
|
|
27
|
+
durationFormatted: string;
|
|
28
|
+
durationSeconds: number;
|
|
29
|
+
channel?: string | undefined;
|
|
30
|
+
uploadDate?: string | undefined;
|
|
31
|
+
viewCount?: number | undefined;
|
|
32
|
+
}, {
|
|
33
|
+
url: string;
|
|
34
|
+
title: string;
|
|
35
|
+
id: string;
|
|
36
|
+
durationFormatted: string;
|
|
37
|
+
durationSeconds: number;
|
|
38
|
+
channel?: string | undefined;
|
|
39
|
+
uploadDate?: string | undefined;
|
|
40
|
+
viewCount?: number | undefined;
|
|
41
|
+
}>, "many">;
|
|
42
|
+
};
|
|
43
|
+
export declare function fetchVideosHandler({ url, limit, }: {
|
|
7
44
|
url: string;
|
|
8
45
|
limit: number;
|
|
9
|
-
}): Promise<
|
|
10
|
-
content: [{
|
|
11
|
-
type: "text";
|
|
12
|
-
text: string;
|
|
13
|
-
}];
|
|
14
|
-
}>;
|
|
46
|
+
}): Promise<CallToolResult>;
|
|
15
47
|
//# sourceMappingURL=fetch-videos.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-videos.d.ts","sourceRoot":"","sources":["../../src/tools/fetch-videos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;CAY7B,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"fetch-videos.d.ts","sourceRoot":"","sources":["../../src/tools/fetch-videos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,eAAO,MAAM,iBAAiB;;;CAY7B,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAInC,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,EACvC,GAAG,EACH,KAAK,GACN,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,cAAc,CAAC,CAwB1B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { listVideos } from '../utils/youtube.js';
|
|
3
|
-
import {
|
|
3
|
+
import { pageInfo, toolResult } from '../utils/format.js';
|
|
4
|
+
import { paginationShape, videoSummarySchema } from '../schemas.js';
|
|
4
5
|
export const fetchVideosSchema = {
|
|
5
6
|
url: z
|
|
6
7
|
.string()
|
|
@@ -12,7 +13,12 @@ export const fetchVideosSchema = {
|
|
|
12
13
|
.default(20)
|
|
13
14
|
.describe('Maximum number of videos to return (1-100, default: 20)'),
|
|
14
15
|
};
|
|
15
|
-
export
|
|
16
|
+
export const fetchVideosOutputSchema = {
|
|
17
|
+
source: z.string(),
|
|
18
|
+
videos: z.array(videoSummarySchema),
|
|
19
|
+
...paginationShape,
|
|
20
|
+
};
|
|
21
|
+
export async function fetchVideosHandler({ url, limit, }) {
|
|
16
22
|
const videos = await listVideos(url, limit);
|
|
17
23
|
const lines = [`✓ Found ${videos.length} video${videos.length !== 1 ? 's' : ''}`, ''];
|
|
18
24
|
videos.forEach((v, i) => {
|
|
@@ -21,6 +27,17 @@ export async function fetchVideosHandler({ url, limit }) {
|
|
|
21
27
|
lines.push(` ${v.url}`);
|
|
22
28
|
lines.push('');
|
|
23
29
|
});
|
|
24
|
-
return
|
|
30
|
+
return toolResult(lines.join('\n'), {
|
|
31
|
+
source: url,
|
|
32
|
+
videos: videos.map((v) => ({
|
|
33
|
+
id: v.id,
|
|
34
|
+
title: v.title,
|
|
35
|
+
durationSeconds: v.duration,
|
|
36
|
+
durationFormatted: v.durationFormatted,
|
|
37
|
+
url: v.url,
|
|
38
|
+
uploadDate: v.uploadDate,
|
|
39
|
+
})),
|
|
40
|
+
...pageInfo(videos.length, videos.length),
|
|
41
|
+
});
|
|
25
42
|
}
|
|
26
43
|
//# sourceMappingURL=fetch-videos.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-videos.js","sourceRoot":"","sources":["../../src/tools/fetch-videos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"fetch-videos.js","sourceRoot":"","sources":["../../src/tools/fetch-videos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGpE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,CACP,+FAA+F,CAChG;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,yDAAyD,CAAC;CACvE,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IACnC,GAAG,eAAe;CACnB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,GAAG,EACH,KAAK,GAIN;IACC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAa,CAAC,WAAW,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAEhG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACtB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,iBAAiB,MAAM,CAAC,CAAC,UAAU,IAAI,cAAc,EAAE,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAClC,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,eAAe,EAAE,CAAC,CAAC,QAAQ;YAC3B,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;YACtC,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC;QACH,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;KAC1C,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
3
|
export declare const getChannelInfoSchema: {
|
|
3
4
|
channel: z.ZodString;
|
|
4
5
|
};
|
|
5
|
-
export declare
|
|
6
|
+
export declare const getChannelInfoOutputSchema: {
|
|
7
|
+
name: z.ZodString;
|
|
8
|
+
channelId: z.ZodString;
|
|
9
|
+
handle: z.ZodString;
|
|
10
|
+
subscriberCount: z.ZodNumber;
|
|
11
|
+
channelUrl: z.ZodString;
|
|
12
|
+
description: z.ZodString;
|
|
13
|
+
};
|
|
14
|
+
export declare function getChannelInfoHandler({ channel, }: {
|
|
6
15
|
channel: string;
|
|
7
|
-
}): Promise<
|
|
8
|
-
content: [{
|
|
9
|
-
type: "text";
|
|
10
|
-
text: string;
|
|
11
|
-
}];
|
|
12
|
-
}>;
|
|
16
|
+
}): Promise<CallToolResult>;
|
|
13
17
|
//# sourceMappingURL=get-channel-info.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-channel-info.d.ts","sourceRoot":"","sources":["../../src/tools/get-channel-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,oBAAoB;;CAEhC,CAAC;AAEF,wBAAsB,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"get-channel-info.d.ts","sourceRoot":"","sources":["../../src/tools/get-channel-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,eAAO,MAAM,oBAAoB;;CAEhC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;CAA0B,CAAC;AAElE,wBAAsB,qBAAqB,CAAC,EAC1C,OAAO,GACR,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,cAAc,CAAC,CAgB1B"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { getChannelInfo } from '../utils/youtube.js';
|
|
3
|
-
import { formatCount,
|
|
3
|
+
import { formatCount, toolResult } from '../utils/format.js';
|
|
4
|
+
import { channelInfoSchema } from '../schemas.js';
|
|
4
5
|
export const getChannelInfoSchema = {
|
|
5
6
|
channel: z.string().describe('YouTube channel URL, handle (e.g., @Fireship), or channel name'),
|
|
6
7
|
};
|
|
7
|
-
export
|
|
8
|
+
export const getChannelInfoOutputSchema = channelInfoSchema.shape;
|
|
9
|
+
export async function getChannelInfoHandler({ channel, }) {
|
|
8
10
|
const info = await getChannelInfo(channel);
|
|
9
11
|
const lines = [
|
|
10
12
|
info.name,
|
|
@@ -16,6 +18,6 @@ export async function getChannelInfoHandler({ channel }) {
|
|
|
16
18
|
lines.push('');
|
|
17
19
|
lines.push(info.description);
|
|
18
20
|
}
|
|
19
|
-
return
|
|
21
|
+
return toolResult(lines.join('\n'), { ...info });
|
|
20
22
|
}
|
|
21
23
|
//# sourceMappingURL=get-channel-info.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-channel-info.js","sourceRoot":"","sources":["../../src/tools/get-channel-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"get-channel-info.js","sourceRoot":"","sources":["../../src/tools/get-channel-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGlD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;CAC/F,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,KAAK,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,EAC1C,OAAO,GAGR;IACC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAE3C,MAAM,KAAK,GAAa;QACtB,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QAC9B,GAAG,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc;QAClD,IAAI,CAAC,UAAU;KAChB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAElB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1,13 +1,35 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
3
|
export declare const getChaptersSchema: {
|
|
3
4
|
video: z.ZodString;
|
|
4
5
|
};
|
|
6
|
+
export declare const getChaptersOutputSchema: {
|
|
7
|
+
videoId: z.ZodString;
|
|
8
|
+
chapters: z.ZodArray<z.ZodObject<{
|
|
9
|
+
title: z.ZodString;
|
|
10
|
+
startSeconds: z.ZodNumber;
|
|
11
|
+
startFormatted: z.ZodString;
|
|
12
|
+
endSeconds: z.ZodNumber;
|
|
13
|
+
endFormatted: z.ZodString;
|
|
14
|
+
url: z.ZodString;
|
|
15
|
+
}, "strip", z.ZodTypeAny, {
|
|
16
|
+
url: string;
|
|
17
|
+
title: string;
|
|
18
|
+
startSeconds: number;
|
|
19
|
+
startFormatted: string;
|
|
20
|
+
endSeconds: number;
|
|
21
|
+
endFormatted: string;
|
|
22
|
+
}, {
|
|
23
|
+
url: string;
|
|
24
|
+
title: string;
|
|
25
|
+
startSeconds: number;
|
|
26
|
+
startFormatted: string;
|
|
27
|
+
endSeconds: number;
|
|
28
|
+
endFormatted: string;
|
|
29
|
+
}>, "many">;
|
|
30
|
+
count: z.ZodNumber;
|
|
31
|
+
};
|
|
5
32
|
export declare function getChaptersHandler({ video }: {
|
|
6
33
|
video: string;
|
|
7
|
-
}): Promise<
|
|
8
|
-
content: [{
|
|
9
|
-
type: "text";
|
|
10
|
-
text: string;
|
|
11
|
-
}];
|
|
12
|
-
}>;
|
|
34
|
+
}): Promise<CallToolResult>;
|
|
13
35
|
//# sourceMappingURL=get-chapters.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-chapters.d.ts","sourceRoot":"","sources":["../../src/tools/get-chapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"get-chapters.d.ts","sourceRoot":"","sources":["../../src/tools/get-chapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,eAAO,MAAM,iBAAiB;;CAE7B,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;CAInC,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CA4B9F"}
|
|
@@ -1,18 +1,38 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { toolResult } from '../utils/format.js';
|
|
3
|
+
import { chapterSchema } from '../schemas.js';
|
|
4
|
+
import { deepLink } from '../utils/transcript.js';
|
|
5
|
+
import { extractVideoId, getChapters } from '../utils/youtube.js';
|
|
4
6
|
export const getChaptersSchema = {
|
|
5
7
|
video: z.string().describe('YouTube video ID (e.g., dQw4w9WgXcQ) or full URL'),
|
|
6
8
|
};
|
|
9
|
+
export const getChaptersOutputSchema = {
|
|
10
|
+
videoId: z.string(),
|
|
11
|
+
chapters: z.array(chapterSchema),
|
|
12
|
+
count: z.number().int(),
|
|
13
|
+
};
|
|
7
14
|
export async function getChaptersHandler({ video }) {
|
|
8
15
|
const chapters = await getChapters(video);
|
|
16
|
+
const videoId = extractVideoId(video);
|
|
17
|
+
const structured = {
|
|
18
|
+
videoId,
|
|
19
|
+
chapters: chapters.map((ch) => ({
|
|
20
|
+
title: ch.title,
|
|
21
|
+
startSeconds: ch.startTime,
|
|
22
|
+
startFormatted: ch.startTimeFormatted,
|
|
23
|
+
endSeconds: ch.endTime,
|
|
24
|
+
endFormatted: ch.endTimeFormatted,
|
|
25
|
+
url: deepLink(videoId, ch.startTime),
|
|
26
|
+
})),
|
|
27
|
+
count: chapters.length,
|
|
28
|
+
};
|
|
9
29
|
if (chapters.length === 0) {
|
|
10
|
-
return
|
|
30
|
+
return toolResult('No chapters found for this video.', structured);
|
|
11
31
|
}
|
|
12
32
|
const lines = [`${chapters.length} chapters`, ''];
|
|
13
33
|
chapters.forEach((ch, i) => {
|
|
14
34
|
lines.push(`${i + 1}. [${ch.startTimeFormatted} - ${ch.endTimeFormatted}] ${ch.title}`);
|
|
15
35
|
});
|
|
16
|
-
return
|
|
36
|
+
return toolResult(lines.join('\n'), structured);
|
|
17
37
|
}
|
|
18
38
|
//# sourceMappingURL=get-chapters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-chapters.js","sourceRoot":"","sources":["../../src/tools/get-chapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"get-chapters.js","sourceRoot":"","sources":["../../src/tools/get-chapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;CAC/E,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;CACxB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAE,KAAK,EAAqB;IACnE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAEtC,MAAM,UAAU,GAAG;QACjB,OAAO;QACP,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,YAAY,EAAE,EAAE,CAAC,SAAS;YAC1B,cAAc,EAAE,EAAE,CAAC,kBAAkB;YACrC,UAAU,EAAE,EAAE,CAAC,OAAO;YACtB,YAAY,EAAE,EAAE,CAAC,gBAAgB;YACjC,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC;SACrC,CAAC,CAAC;QACH,KAAK,EAAE,QAAQ,CAAC,MAAM;KACvB,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,UAAU,CAAC,mCAAmC,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,KAAK,GAAa,CAAC,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,EAAE,CAAC,CAAC;IAE5D,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACzB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,kBAAkB,MAAM,EAAE,CAAC,gBAAgB,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -1,15 +1,34 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
3
|
export declare const getCommentsSchema: {
|
|
3
4
|
video: z.ZodString;
|
|
4
5
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
5
6
|
};
|
|
6
|
-
export declare
|
|
7
|
+
export declare const getCommentsOutputSchema: {
|
|
8
|
+
total: z.ZodNumber;
|
|
9
|
+
count: z.ZodNumber;
|
|
10
|
+
offset: z.ZodNumber;
|
|
11
|
+
hasMore: z.ZodBoolean;
|
|
12
|
+
nextOffset: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
comments: z.ZodArray<z.ZodObject<{
|
|
14
|
+
author: z.ZodString;
|
|
15
|
+
text: z.ZodString;
|
|
16
|
+
likeCount: z.ZodNumber;
|
|
17
|
+
isPinned: z.ZodBoolean;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
text: string;
|
|
20
|
+
likeCount: number;
|
|
21
|
+
author: string;
|
|
22
|
+
isPinned: boolean;
|
|
23
|
+
}, {
|
|
24
|
+
text: string;
|
|
25
|
+
likeCount: number;
|
|
26
|
+
author: string;
|
|
27
|
+
isPinned: boolean;
|
|
28
|
+
}>, "many">;
|
|
29
|
+
};
|
|
30
|
+
export declare function getCommentsHandler({ video, limit, }: {
|
|
7
31
|
video: string;
|
|
8
32
|
limit: number;
|
|
9
|
-
}): Promise<
|
|
10
|
-
content: [{
|
|
11
|
-
type: "text";
|
|
12
|
-
text: string;
|
|
13
|
-
}];
|
|
14
|
-
}>;
|
|
33
|
+
}): Promise<CallToolResult>;
|
|
15
34
|
//# sourceMappingURL=get-comments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-comments.d.ts","sourceRoot":"","sources":["../../src/tools/get-comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;CAQ7B,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"get-comments.d.ts","sourceRoot":"","sources":["../../src/tools/get-comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,eAAO,MAAM,iBAAiB;;;CAQ7B,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;CAGnC,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,EACvC,KAAK,EACL,KAAK,GACN,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,cAAc,CAAC,CAmB1B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { getComments } from '../utils/youtube.js';
|
|
3
|
-
import {
|
|
3
|
+
import { pageInfo, toolResult } from '../utils/format.js';
|
|
4
|
+
import { commentSchema, paginationShape } from '../schemas.js';
|
|
4
5
|
export const getCommentsSchema = {
|
|
5
6
|
video: z.string().describe('YouTube video ID (e.g., dQw4w9WgXcQ) or full URL'),
|
|
6
7
|
limit: z
|
|
@@ -10,10 +11,15 @@ export const getCommentsSchema = {
|
|
|
10
11
|
.default(20)
|
|
11
12
|
.describe('Maximum number of top-level comments to return (1-50, default: 20)'),
|
|
12
13
|
};
|
|
13
|
-
export
|
|
14
|
+
export const getCommentsOutputSchema = {
|
|
15
|
+
comments: z.array(commentSchema),
|
|
16
|
+
...paginationShape,
|
|
17
|
+
};
|
|
18
|
+
export async function getCommentsHandler({ video, limit, }) {
|
|
14
19
|
const comments = await getComments(video, limit);
|
|
20
|
+
const structured = { comments, ...pageInfo(comments.length, comments.length) };
|
|
15
21
|
if (comments.length === 0) {
|
|
16
|
-
return
|
|
22
|
+
return toolResult('No comments found for this video.', structured);
|
|
17
23
|
}
|
|
18
24
|
const lines = [`${comments.length} top comments`, ''];
|
|
19
25
|
comments.forEach((c, i) => {
|
|
@@ -23,6 +29,6 @@ export async function getCommentsHandler({ video, limit }) {
|
|
|
23
29
|
lines.push(` ${c.text}`);
|
|
24
30
|
lines.push('');
|
|
25
31
|
});
|
|
26
|
-
return
|
|
32
|
+
return toolResult(lines.join('\n'), structured);
|
|
27
33
|
}
|
|
28
34
|
//# sourceMappingURL=get-comments.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-comments.js","sourceRoot":"","sources":["../../src/tools/get-comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"get-comments.js","sourceRoot":"","sources":["../../src/tools/get-comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAG/D,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IAC9E,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,oEAAoE,CAAC;CAClF,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;IAChC,GAAG,eAAe;CACnB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,KAAK,EACL,KAAK,GAIN;IACC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;IAE/E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,UAAU,CAAC,mCAAmC,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,KAAK,GAAa,CAAC,GAAG,QAAQ,CAAC,MAAM,eAAe,EAAE,EAAE,CAAC,CAAC;IAEhE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
3
|
export declare const getPlaylistInfoSchema: {
|
|
3
4
|
url: z.ZodString;
|
|
4
5
|
};
|
|
6
|
+
export declare const getPlaylistInfoOutputSchema: {
|
|
7
|
+
id: z.ZodString;
|
|
8
|
+
title: z.ZodString;
|
|
9
|
+
channel: z.ZodString;
|
|
10
|
+
handle: z.ZodString;
|
|
11
|
+
channelUrl: z.ZodString;
|
|
12
|
+
videoCount: z.ZodNumber;
|
|
13
|
+
lastModified: z.ZodString;
|
|
14
|
+
url: z.ZodString;
|
|
15
|
+
description: z.ZodString;
|
|
16
|
+
};
|
|
5
17
|
export declare function getPlaylistInfoHandler({ url }: {
|
|
6
18
|
url: string;
|
|
7
|
-
}): Promise<
|
|
8
|
-
content: [{
|
|
9
|
-
type: "text";
|
|
10
|
-
text: string;
|
|
11
|
-
}];
|
|
12
|
-
}>;
|
|
19
|
+
}): Promise<CallToolResult>;
|
|
13
20
|
//# sourceMappingURL=get-playlist-info.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-playlist-info.d.ts","sourceRoot":"","sources":["../../src/tools/get-playlist-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,qBAAqB;;CAMjC,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE
|
|
1
|
+
{"version":3,"file":"get-playlist-info.d.ts","sourceRoot":"","sources":["../../src/tools/get-playlist-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,eAAO,MAAM,qBAAqB;;CAMjC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;CAA2B,CAAC;AAEpE,wBAAsB,sBAAsB,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAkB9F"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { getPlaylistInfo } from '../utils/youtube.js';
|
|
3
|
-
import { formatCount,
|
|
3
|
+
import { formatCount, toolResult } from '../utils/format.js';
|
|
4
|
+
import { playlistInfoSchema } from '../schemas.js';
|
|
4
5
|
export const getPlaylistInfoSchema = {
|
|
5
6
|
url: z
|
|
6
7
|
.string()
|
|
7
8
|
.describe('YouTube playlist URL (e.g., https://www.youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb)'),
|
|
8
9
|
};
|
|
10
|
+
export const getPlaylistInfoOutputSchema = playlistInfoSchema.shape;
|
|
9
11
|
export async function getPlaylistInfoHandler({ url }) {
|
|
10
12
|
const info = await getPlaylistInfo(url);
|
|
11
13
|
const lines = [
|
|
@@ -20,6 +22,6 @@ export async function getPlaylistInfoHandler({ url }) {
|
|
|
20
22
|
lines.push('');
|
|
21
23
|
lines.push(info.description);
|
|
22
24
|
}
|
|
23
|
-
return
|
|
25
|
+
return toolResult(lines.join('\n'), { ...info });
|
|
24
26
|
}
|
|
25
27
|
//# sourceMappingURL=get-playlist-info.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-playlist-info.js","sourceRoot":"","sources":["../../src/tools/get-playlist-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"get-playlist-info.js","sourceRoot":"","sources":["../../src/tools/get-playlist-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,CACP,uGAAuG,CACxG;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,kBAAkB,CAAC,KAAK,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAAE,GAAG,EAAmB;IACnE,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;IAExC,MAAM,KAAK,GAAa;QACtB,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;QACjF,EAAE;QACF,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS;QACxC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;QAC7D,IAAI,CAAC,GAAG;KACT,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAElB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1,15 +1,50 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
3
|
export declare const getTranscriptSchema: {
|
|
3
4
|
video: z.ZodString;
|
|
4
5
|
language: z.ZodDefault<z.ZodString>;
|
|
6
|
+
format: z.ZodDefault<z.ZodEnum<["text", "timestamped", "segments"]>>;
|
|
7
|
+
startTime: z.ZodOptional<z.ZodString>;
|
|
8
|
+
endTime: z.ZodOptional<z.ZodString>;
|
|
9
|
+
chapter: z.ZodOptional<z.ZodString>;
|
|
10
|
+
maxChars: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
offset: z.ZodDefault<z.ZodNumber>;
|
|
12
|
+
refresh: z.ZodDefault<z.ZodBoolean>;
|
|
5
13
|
};
|
|
6
|
-
export declare
|
|
14
|
+
export declare const getTranscriptOutputSchema: {
|
|
15
|
+
videoId: z.ZodString;
|
|
16
|
+
language: z.ZodString;
|
|
17
|
+
text: z.ZodString;
|
|
18
|
+
segments: z.ZodArray<z.ZodObject<{
|
|
19
|
+
startSeconds: z.ZodNumber;
|
|
20
|
+
endSeconds: z.ZodNumber;
|
|
21
|
+
text: z.ZodString;
|
|
22
|
+
}, "strip", z.ZodTypeAny, {
|
|
23
|
+
text: string;
|
|
24
|
+
startSeconds: number;
|
|
25
|
+
endSeconds: number;
|
|
26
|
+
}, {
|
|
27
|
+
text: string;
|
|
28
|
+
startSeconds: number;
|
|
29
|
+
endSeconds: number;
|
|
30
|
+
}>, "many">;
|
|
31
|
+
wordCount: z.ZodNumber;
|
|
32
|
+
chapter: z.ZodOptional<z.ZodString>;
|
|
33
|
+
truncated: z.ZodBoolean;
|
|
34
|
+
nextOffset: z.ZodOptional<z.ZodNumber>;
|
|
35
|
+
totalChars: z.ZodNumber;
|
|
36
|
+
cached: z.ZodBoolean;
|
|
37
|
+
};
|
|
38
|
+
export interface GetTranscriptArgs {
|
|
7
39
|
video: string;
|
|
8
40
|
language: string;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
41
|
+
format: 'text' | 'timestamped' | 'segments';
|
|
42
|
+
startTime?: string;
|
|
43
|
+
endTime?: string;
|
|
44
|
+
chapter?: string;
|
|
45
|
+
maxChars?: number;
|
|
46
|
+
offset: number;
|
|
47
|
+
refresh: boolean;
|
|
48
|
+
}
|
|
49
|
+
export declare function getTranscriptHandler(args: GetTranscriptArgs): Promise<CallToolResult>;
|
|
15
50
|
//# sourceMappingURL=get-transcript.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-transcript.d.ts","sourceRoot":"","sources":["../../src/tools/get-transcript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"get-transcript.d.ts","sourceRoot":"","sources":["../../src/tools/get-transcript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,eAAO,MAAM,mBAAmB;;;;;;;;;;CA+C/B,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;CAWrC,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,UAAU,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAuCD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAwF3F"}
|