social-mcp 1.5.0 → 1.6.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.
Files changed (30) hide show
  1. package/dist/index.js +17 -0
  2. package/dist/index.js.map +1 -1
  3. package/dist/lib/config.d.ts +4 -0
  4. package/dist/lib/config.js +4 -0
  5. package/dist/lib/config.js.map +1 -1
  6. package/dist/services/youtube-service.d.ts +124 -0
  7. package/dist/services/youtube-service.js +230 -0
  8. package/dist/services/youtube-service.js.map +1 -0
  9. package/dist/tools/youtube-tools/get-channel-info.d.ts +14 -0
  10. package/dist/tools/youtube-tools/get-channel-info.js +41 -0
  11. package/dist/tools/youtube-tools/get-channel-info.js.map +1 -0
  12. package/dist/tools/youtube-tools/get-comments.d.ts +16 -0
  13. package/dist/tools/youtube-tools/get-comments.js +36 -0
  14. package/dist/tools/youtube-tools/get-comments.js.map +1 -0
  15. package/dist/tools/youtube-tools/get-video-info.d.ts +14 -0
  16. package/dist/tools/youtube-tools/get-video-info.js +42 -0
  17. package/dist/tools/youtube-tools/get-video-info.js.map +1 -0
  18. package/dist/tools/youtube-tools/list-channel-videos.d.ts +18 -0
  19. package/dist/tools/youtube-tools/list-channel-videos.js +36 -0
  20. package/dist/tools/youtube-tools/list-channel-videos.js.map +1 -0
  21. package/dist/tools/youtube-tools/post-comment.d.ts +16 -0
  22. package/dist/tools/youtube-tools/post-comment.js +25 -0
  23. package/dist/tools/youtube-tools/post-comment.js.map +1 -0
  24. package/dist/tools/youtube-tools/search-videos.d.ts +18 -0
  25. package/dist/tools/youtube-tools/search-videos.js +39 -0
  26. package/dist/tools/youtube-tools/search-videos.js.map +1 -0
  27. package/dist/tools/youtube-tools/update-video.d.ts +22 -0
  28. package/dist/tools/youtube-tools/update-video.js +32 -0
  29. package/dist/tools/youtube-tools/update-video.js.map +1 -0
  30. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -13,6 +13,7 @@ import { getThreadsService } from "./services/threads-service.js";
13
13
  import { getTikTokService } from "./services/tiktok-service.js";
14
14
  import { getTwitterService } from "./services/twitter-service.js";
15
15
  import { getWhatsappService } from "./services/whatsapp-service.js";
16
+ import { getYouTubeService } from "./services/youtube-service.js";
16
17
  import { getMessagesTool as discordGetMessagesTool } from "./tools/discord-tools/get-messages.js";
17
18
  import { sendMessageTool as discordSendMessageTool } from "./tools/discord-tools/send-message.js";
18
19
  import { createPostTool as facebookCreatePostTool } from "./tools/facebook-tools/create-post.js";
@@ -59,6 +60,13 @@ import { replyTweetTool } from "./tools/twitter-tools/reply-tweet.js";
59
60
  import { searchTweetsTool } from "./tools/twitter-tools/search-tweets.js";
60
61
  import { sendTweetTool } from "./tools/twitter-tools/send-tweet.js";
61
62
  import { sendMessageTool as whatsappSendMessageTool } from "./tools/whatsapp-tools/send-message.js";
63
+ import { getChannelInfoTool as youtubeGetChannelInfoTool } from "./tools/youtube-tools/get-channel-info.js";
64
+ import { getCommentsTool as youtubeGetCommentsTool } from "./tools/youtube-tools/get-comments.js";
65
+ import { getVideoInfoTool as youtubeGetVideoInfoTool } from "./tools/youtube-tools/get-video-info.js";
66
+ import { listChannelVideosTool as youtubeListChannelVideosTool } from "./tools/youtube-tools/list-channel-videos.js";
67
+ import { postCommentTool as youtubePostCommentTool } from "./tools/youtube-tools/post-comment.js";
68
+ import { searchVideosTool as youtubeSearchVideosTool } from "./tools/youtube-tools/search-videos.js";
69
+ import { updateVideoTool as youtubeUpdateVideoTool } from "./tools/youtube-tools/update-video.js";
62
70
  const require = createRequire(import.meta.url);
63
71
  const { version } = require("../package.json");
64
72
  function checkPlatform(name, init) {
@@ -88,6 +96,7 @@ async function main() {
88
96
  checkPlatform("Reddit", getRedditService);
89
97
  checkPlatform("Threads", getThreadsService);
90
98
  checkPlatform("TikTok", getTikTokService);
99
+ checkPlatform("YouTube", getYouTubeService);
91
100
  console.error("");
92
101
  const server = new FastMCP({ name: "Social MCP Server", version });
93
102
  // Telegram
@@ -147,6 +156,14 @@ async function main() {
147
156
  server.addTool(tiktokDirectPostVideoTool);
148
157
  server.addTool(tiktokPhotoPostTool);
149
158
  server.addTool(tiktokGetPostStatusTool);
159
+ // YouTube
160
+ server.addTool(youtubeGetChannelInfoTool);
161
+ server.addTool(youtubeSearchVideosTool);
162
+ server.addTool(youtubeGetVideoInfoTool);
163
+ server.addTool(youtubeListChannelVideosTool);
164
+ server.addTool(youtubeGetCommentsTool);
165
+ server.addTool(youtubePostCommentTool);
166
+ server.addTool(youtubeUpdateVideoTool);
150
167
  try {
151
168
  await server.start({ transportType: "stdio" });
152
169
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -38,4 +38,8 @@ export declare const config: {
38
38
  baseUrl: string;
39
39
  accessToken: string;
40
40
  };
41
+ youtube: {
42
+ baseUrl: string;
43
+ accessToken: string;
44
+ };
41
45
  };
@@ -39,5 +39,9 @@ export const config = {
39
39
  baseUrl: "https://open.tiktokapis.com/v2",
40
40
  accessToken: process.env.TIKTOK_ACCESS_TOKEN || "",
41
41
  },
42
+ youtube: {
43
+ baseUrl: "https://www.googleapis.com/youtube/v3",
44
+ accessToken: process.env.YOUTUBE_ACCESS_TOKEN || "",
45
+ },
42
46
  };
43
47
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACxC,MAAM,SAAS,GAAG,8BAA8B,gBAAgB,EAAE,CAAC;AAEnE,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,OAAO,EAAE;QACR,OAAO,EAAE,6BAA6B;QACtC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;KAC7C;IACD,QAAQ,EAAE;QACT,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE;QACpD,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE;KACzD;IACD,QAAQ,EAAE;QACT,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE;KACpD;IACD,SAAS,EAAE;QACV,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE;KACrD;IACD,QAAQ,EAAE;QACT,OAAO,EAAE,6BAA6B;QACtC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE;KACpD;IACD,MAAM,EAAE;QACP,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE;QAC5C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE;QACpD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;QAC3C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;QAC3C,SAAS,EAAE,uCAAuC;KAClD;IACD,OAAO,EAAE;QACR,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE;QACnD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;KACzC;IACD,MAAM,EAAE;QACP,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE;KAClD;CACD,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACxC,MAAM,SAAS,GAAG,8BAA8B,gBAAgB,EAAE,CAAC;AAEnE,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,OAAO,EAAE;QACR,OAAO,EAAE,6BAA6B;QACtC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;KAC7C;IACD,QAAQ,EAAE;QACT,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE;QACpD,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE;KACzD;IACD,QAAQ,EAAE;QACT,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE;KACpD;IACD,SAAS,EAAE;QACV,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE;KACrD;IACD,QAAQ,EAAE;QACT,OAAO,EAAE,6BAA6B;QACtC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE;KACpD;IACD,MAAM,EAAE;QACP,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE;QAC5C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE;QACpD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;QAC3C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;QAC3C,SAAS,EAAE,uCAAuC;KAClD;IACD,OAAO,EAAE;QACR,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE;QACnD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;KACzC;IACD,MAAM,EAAE;QACP,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE;KAClD;IACD,OAAO,EAAE;QACR,OAAO,EAAE,uCAAuC;QAChD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE;KACnD;CACD,CAAC"}
@@ -0,0 +1,124 @@
1
+ export declare class YouTubeService {
2
+ private baseUrl;
3
+ private headers;
4
+ constructor();
5
+ getChannelInfo(channelId?: string): Promise<{
6
+ items?: {
7
+ id?: string | undefined;
8
+ snippet?: {
9
+ title?: string | undefined;
10
+ description?: string | undefined;
11
+ customUrl?: string | undefined;
12
+ publishedAt?: string | undefined;
13
+ country?: string | undefined;
14
+ thumbnails?: {
15
+ default?: {
16
+ url: string;
17
+ } | undefined;
18
+ } | undefined;
19
+ } | undefined;
20
+ statistics?: {
21
+ viewCount?: string | undefined;
22
+ subscriberCount?: string | undefined;
23
+ videoCount?: string | undefined;
24
+ } | undefined;
25
+ }[] | undefined;
26
+ }>;
27
+ searchVideos(query: string, maxResults?: number, pageToken?: string): Promise<{
28
+ items?: {
29
+ id?: {
30
+ videoId?: string | undefined;
31
+ channelId?: string | undefined;
32
+ } | undefined;
33
+ snippet?: {
34
+ publishedAt?: string | undefined;
35
+ channelId?: string | undefined;
36
+ title?: string | undefined;
37
+ description?: string | undefined;
38
+ channelTitle?: string | undefined;
39
+ } | undefined;
40
+ }[] | undefined;
41
+ nextPageToken?: string | undefined;
42
+ pageInfo?: {
43
+ totalResults?: number | undefined;
44
+ } | undefined;
45
+ }>;
46
+ getVideoInfo(videoId: string): Promise<{
47
+ items?: {
48
+ id?: string | undefined;
49
+ snippet?: {
50
+ publishedAt?: string | undefined;
51
+ channelId?: string | undefined;
52
+ title?: string | undefined;
53
+ description?: string | undefined;
54
+ channelTitle?: string | undefined;
55
+ tags?: string[] | undefined;
56
+ categoryId?: string | undefined;
57
+ } | undefined;
58
+ statistics?: {
59
+ viewCount?: string | undefined;
60
+ likeCount?: string | undefined;
61
+ commentCount?: string | undefined;
62
+ } | undefined;
63
+ status?: {
64
+ privacyStatus?: string | undefined;
65
+ } | undefined;
66
+ }[] | undefined;
67
+ }>;
68
+ listChannelVideos(channelId: string, maxResults?: number, pageToken?: string): Promise<{
69
+ items?: {
70
+ id?: {
71
+ videoId?: string | undefined;
72
+ channelId?: string | undefined;
73
+ } | undefined;
74
+ snippet?: {
75
+ publishedAt?: string | undefined;
76
+ channelId?: string | undefined;
77
+ title?: string | undefined;
78
+ description?: string | undefined;
79
+ channelTitle?: string | undefined;
80
+ } | undefined;
81
+ }[] | undefined;
82
+ nextPageToken?: string | undefined;
83
+ pageInfo?: {
84
+ totalResults?: number | undefined;
85
+ } | undefined;
86
+ }>;
87
+ getComments(videoId: string, maxResults?: number): Promise<{
88
+ items?: {
89
+ id?: string | undefined;
90
+ snippet?: {
91
+ topLevelComment?: {
92
+ id?: string | undefined;
93
+ snippet?: {
94
+ textDisplay?: string | undefined;
95
+ authorDisplayName?: string | undefined;
96
+ likeCount?: number | undefined;
97
+ publishedAt?: string | undefined;
98
+ } | undefined;
99
+ } | undefined;
100
+ totalReplyCount?: number | undefined;
101
+ } | undefined;
102
+ }[] | undefined;
103
+ nextPageToken?: string | undefined;
104
+ }>;
105
+ postComment(videoId: string, text: string): Promise<{
106
+ id?: string | undefined;
107
+ snippet?: {
108
+ topLevelComment?: {
109
+ snippet?: {
110
+ textDisplay?: string | undefined;
111
+ } | undefined;
112
+ } | undefined;
113
+ } | undefined;
114
+ }>;
115
+ updateVideo(videoId: string, title: string, description: string, tags?: string[], categoryId?: string): Promise<{
116
+ id?: string | undefined;
117
+ snippet?: {
118
+ title?: string | undefined;
119
+ description?: string | undefined;
120
+ tags?: string[] | undefined;
121
+ } | undefined;
122
+ }>;
123
+ }
124
+ export declare function getYouTubeService(): YouTubeService;
@@ -0,0 +1,230 @@
1
+ import { z } from "zod";
2
+ import { config } from "../lib/config.js";
3
+ import { CredentialsError } from "../lib/errors.js";
4
+ import { fetchJson } from "../lib/http.js";
5
+ const channelSchema = z.object({
6
+ items: z
7
+ .array(z.object({
8
+ id: z.string().optional(),
9
+ snippet: z
10
+ .object({
11
+ title: z.string().optional(),
12
+ description: z.string().optional(),
13
+ customUrl: z.string().optional(),
14
+ publishedAt: z.string().optional(),
15
+ country: z.string().optional(),
16
+ thumbnails: z
17
+ .object({
18
+ default: z.object({ url: z.string() }).optional(),
19
+ })
20
+ .optional(),
21
+ })
22
+ .optional(),
23
+ statistics: z
24
+ .object({
25
+ viewCount: z.string().optional(),
26
+ subscriberCount: z.string().optional(),
27
+ videoCount: z.string().optional(),
28
+ })
29
+ .optional(),
30
+ }))
31
+ .optional(),
32
+ });
33
+ const searchSchema = z.object({
34
+ items: z
35
+ .array(z.object({
36
+ id: z
37
+ .object({
38
+ videoId: z.string().optional(),
39
+ channelId: z.string().optional(),
40
+ })
41
+ .optional(),
42
+ snippet: z
43
+ .object({
44
+ publishedAt: z.string().optional(),
45
+ channelId: z.string().optional(),
46
+ title: z.string().optional(),
47
+ description: z.string().optional(),
48
+ channelTitle: z.string().optional(),
49
+ })
50
+ .optional(),
51
+ }))
52
+ .optional(),
53
+ nextPageToken: z.string().optional(),
54
+ pageInfo: z
55
+ .object({
56
+ totalResults: z.number().optional(),
57
+ })
58
+ .optional(),
59
+ });
60
+ const videoSchema = z.object({
61
+ items: z
62
+ .array(z.object({
63
+ id: z.string().optional(),
64
+ snippet: z
65
+ .object({
66
+ publishedAt: z.string().optional(),
67
+ channelId: z.string().optional(),
68
+ title: z.string().optional(),
69
+ description: z.string().optional(),
70
+ channelTitle: z.string().optional(),
71
+ tags: z.array(z.string()).optional(),
72
+ categoryId: z.string().optional(),
73
+ })
74
+ .optional(),
75
+ statistics: z
76
+ .object({
77
+ viewCount: z.string().optional(),
78
+ likeCount: z.string().optional(),
79
+ commentCount: z.string().optional(),
80
+ })
81
+ .optional(),
82
+ status: z
83
+ .object({
84
+ privacyStatus: z.string().optional(),
85
+ })
86
+ .optional(),
87
+ }))
88
+ .optional(),
89
+ });
90
+ const commentThreadSchema = z.object({
91
+ items: z
92
+ .array(z.object({
93
+ id: z.string().optional(),
94
+ snippet: z
95
+ .object({
96
+ topLevelComment: z
97
+ .object({
98
+ id: z.string().optional(),
99
+ snippet: z
100
+ .object({
101
+ textDisplay: z.string().optional(),
102
+ authorDisplayName: z.string().optional(),
103
+ likeCount: z.number().optional(),
104
+ publishedAt: z.string().optional(),
105
+ })
106
+ .optional(),
107
+ })
108
+ .optional(),
109
+ totalReplyCount: z.number().optional(),
110
+ })
111
+ .optional(),
112
+ }))
113
+ .optional(),
114
+ nextPageToken: z.string().optional(),
115
+ });
116
+ const commentInsertSchema = z.object({
117
+ id: z.string().optional(),
118
+ snippet: z
119
+ .object({
120
+ topLevelComment: z
121
+ .object({
122
+ snippet: z
123
+ .object({
124
+ textDisplay: z.string().optional(),
125
+ })
126
+ .optional(),
127
+ })
128
+ .optional(),
129
+ })
130
+ .optional(),
131
+ });
132
+ const videoUpdateSchema = z.object({
133
+ id: z.string().optional(),
134
+ snippet: z
135
+ .object({
136
+ title: z.string().optional(),
137
+ description: z.string().optional(),
138
+ tags: z.array(z.string()).optional(),
139
+ })
140
+ .optional(),
141
+ });
142
+ export class YouTubeService {
143
+ baseUrl = config.youtube.baseUrl;
144
+ headers;
145
+ constructor() {
146
+ if (!config.youtube.accessToken) {
147
+ throw new CredentialsError("YouTube", ["YOUTUBE_ACCESS_TOKEN"]);
148
+ }
149
+ this.headers = {
150
+ "Content-Type": "application/json",
151
+ Authorization: `Bearer ${config.youtube.accessToken}`,
152
+ };
153
+ }
154
+ async getChannelInfo(channelId) {
155
+ const params = new URLSearchParams({
156
+ part: "snippet,statistics",
157
+ ...(channelId ? { id: channelId } : { mine: "true" }),
158
+ });
159
+ return fetchJson(`${this.baseUrl}/channels?${params}`, { method: "GET", headers: this.headers }, channelSchema);
160
+ }
161
+ async searchVideos(query, maxResults = 10, pageToken) {
162
+ const params = new URLSearchParams({
163
+ part: "snippet",
164
+ q: query,
165
+ type: "video",
166
+ maxResults: String(maxResults),
167
+ ...(pageToken ? { pageToken } : {}),
168
+ });
169
+ return fetchJson(`${this.baseUrl}/search?${params}`, { method: "GET", headers: this.headers }, searchSchema);
170
+ }
171
+ async getVideoInfo(videoId) {
172
+ const params = new URLSearchParams({
173
+ part: "snippet,statistics,status",
174
+ id: videoId,
175
+ });
176
+ return fetchJson(`${this.baseUrl}/videos?${params}`, { method: "GET", headers: this.headers }, videoSchema);
177
+ }
178
+ async listChannelVideos(channelId, maxResults = 10, pageToken) {
179
+ const params = new URLSearchParams({
180
+ part: "snippet",
181
+ channelId,
182
+ type: "video",
183
+ order: "date",
184
+ maxResults: String(maxResults),
185
+ ...(pageToken ? { pageToken } : {}),
186
+ });
187
+ return fetchJson(`${this.baseUrl}/search?${params}`, { method: "GET", headers: this.headers }, searchSchema);
188
+ }
189
+ async getComments(videoId, maxResults = 20) {
190
+ const params = new URLSearchParams({
191
+ part: "snippet",
192
+ videoId,
193
+ maxResults: String(maxResults),
194
+ order: "relevance",
195
+ });
196
+ return fetchJson(`${this.baseUrl}/commentThreads?${params}`, { method: "GET", headers: this.headers }, commentThreadSchema);
197
+ }
198
+ async postComment(videoId, text) {
199
+ const body = {
200
+ snippet: {
201
+ videoId,
202
+ topLevelComment: {
203
+ snippet: { textOriginal: text },
204
+ },
205
+ },
206
+ };
207
+ const params = new URLSearchParams({ part: "snippet" });
208
+ return fetchJson(`${this.baseUrl}/commentThreads?${params}`, { method: "POST", headers: this.headers, body: JSON.stringify(body) }, commentInsertSchema);
209
+ }
210
+ async updateVideo(videoId, title, description, tags, categoryId = "22") {
211
+ const body = {
212
+ id: videoId,
213
+ snippet: {
214
+ title,
215
+ description,
216
+ categoryId,
217
+ ...(tags ? { tags } : {}),
218
+ },
219
+ };
220
+ const params = new URLSearchParams({ part: "snippet" });
221
+ return fetchJson(`${this.baseUrl}/videos?${params}`, { method: "PUT", headers: this.headers, body: JSON.stringify(body) }, videoUpdateSchema);
222
+ }
223
+ }
224
+ let _instance;
225
+ export function getYouTubeService() {
226
+ if (!_instance)
227
+ _instance = new YouTubeService();
228
+ return _instance;
229
+ }
230
+ //# sourceMappingURL=youtube-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"youtube-service.js","sourceRoot":"","sources":["../../src/services/youtube-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { z } from "zod";
2
+ declare const params: z.ZodObject<{
3
+ channelId: z.ZodOptional<z.ZodString>;
4
+ }, z.core.$strip>;
5
+ type Params = z.infer<typeof params>;
6
+ export declare const getChannelInfoTool: {
7
+ readonly name: "YOUTUBE_GET_CHANNEL_INFO";
8
+ readonly description: "Get YouTube channel information including subscriber count, view count, and video count";
9
+ readonly parameters: z.ZodObject<{
10
+ channelId: z.ZodOptional<z.ZodString>;
11
+ }, z.core.$strip>;
12
+ readonly execute: (p: Params) => Promise<string>;
13
+ };
14
+ export {};
@@ -0,0 +1,41 @@
1
+ import { z } from "zod";
2
+ import { CredentialsError } from "../../lib/errors.js";
3
+ import { getYouTubeService } from "../../services/youtube-service.js";
4
+ const params = z.object({
5
+ channelId: z.string().optional().describe("Channel ID to look up. Omit to get the authenticated user's own channel."),
6
+ });
7
+ export const getChannelInfoTool = {
8
+ name: "YOUTUBE_GET_CHANNEL_INFO",
9
+ description: "Get YouTube channel information including subscriber count, view count, and video count",
10
+ parameters: params,
11
+ execute: async (p) => {
12
+ try {
13
+ const result = await getYouTubeService().getChannelInfo(p.channelId);
14
+ const channel = result.items?.[0];
15
+ if (!channel)
16
+ return "No channel found.";
17
+ const s = channel.snippet;
18
+ const st = channel.statistics;
19
+ return [
20
+ `YouTube Channel Info:`,
21
+ s?.title ? `Name: ${s.title}` : null,
22
+ s?.customUrl ? `Handle: ${s.customUrl}` : null,
23
+ s?.description ? `Description: ${s.description}` : null,
24
+ s?.country ? `Country: ${s.country}` : null,
25
+ s?.publishedAt ? `Created: ${s.publishedAt}` : null,
26
+ st?.subscriberCount ? `Subscribers: ${st.subscriberCount}` : null,
27
+ st?.viewCount ? `Total views: ${st.viewCount}` : null,
28
+ st?.videoCount ? `Videos: ${st.videoCount}` : null,
29
+ channel.id ? `Channel ID: ${channel.id}` : null,
30
+ ]
31
+ .filter(Boolean)
32
+ .join("\n");
33
+ }
34
+ catch (error) {
35
+ if (error instanceof CredentialsError)
36
+ return `Error: ${error.message}`;
37
+ return `Error fetching YouTube channel info: ${error instanceof Error ? error.message : "Unknown error"}`;
38
+ }
39
+ },
40
+ };
41
+ //# sourceMappingURL=get-channel-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-channel-info.js","sourceRoot":"","sources":["../../../src/tools/youtube-tools/get-channel-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;CACrH,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IACjC,IAAI,EAAE,0BAA0B;IAChC,WAAW,EAAE,yFAAyF;IACtG,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,KAAK,EAAE,CAAS,EAAE,EAAE;QAC5B,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,OAAO;gBAAE,OAAO,mBAAmB,CAAC;YACzC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;YAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAC9B,OAAO;gBACN,uBAAuB;gBACvB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;gBACpC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC9C,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;gBACvD,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC3C,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;gBACnD,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI;gBACjE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI;gBACrD,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI;gBAClD,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;aAC/C;iBACC,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QAC3G,CAAC;IACF,CAAC;CACQ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ declare const params: z.ZodObject<{
3
+ videoId: z.ZodString;
4
+ maxResults: z.ZodDefault<z.ZodNumber>;
5
+ }, z.core.$strip>;
6
+ type Params = z.infer<typeof params>;
7
+ export declare const getCommentsTool: {
8
+ readonly name: "YOUTUBE_GET_COMMENTS";
9
+ readonly description: "Get top-level comments on a YouTube video";
10
+ readonly parameters: z.ZodObject<{
11
+ videoId: z.ZodString;
12
+ maxResults: z.ZodDefault<z.ZodNumber>;
13
+ }, z.core.$strip>;
14
+ readonly execute: (p: Params) => Promise<string>;
15
+ };
16
+ export {};
@@ -0,0 +1,36 @@
1
+ import { z } from "zod";
2
+ import { CredentialsError } from "../../lib/errors.js";
3
+ import { getYouTubeService } from "../../services/youtube-service.js";
4
+ const params = z.object({
5
+ videoId: z.string().describe("YouTube video ID"),
6
+ maxResults: z.number().int().min(1).max(100).default(20).describe("Number of comments to return (1-100)"),
7
+ });
8
+ export const getCommentsTool = {
9
+ name: "YOUTUBE_GET_COMMENTS",
10
+ description: "Get top-level comments on a YouTube video",
11
+ parameters: params,
12
+ execute: async (p) => {
13
+ try {
14
+ const result = await getYouTubeService().getComments(p.videoId, p.maxResults);
15
+ const items = result.items;
16
+ if (!items?.length)
17
+ return "No comments found for this video.";
18
+ const lines = items.map((item, i) => {
19
+ const c = item.snippet?.topLevelComment?.snippet;
20
+ const author = c?.authorDisplayName ?? "Unknown";
21
+ const text = c?.textDisplay ?? "";
22
+ const likes = c?.likeCount ?? 0;
23
+ const replies = item.snippet?.totalReplyCount ?? 0;
24
+ const date = c?.publishedAt ?? "";
25
+ return `${i + 1}. ${author} (${date})\n ${text}\n Likes: ${likes} | Replies: ${replies}`;
26
+ });
27
+ return [`Comments on video ${p.videoId}:`, "", ...lines].join("\n");
28
+ }
29
+ catch (error) {
30
+ if (error instanceof CredentialsError)
31
+ return `Error: ${error.message}`;
32
+ return `Error fetching YouTube comments: ${error instanceof Error ? error.message : "Unknown error"}`;
33
+ }
34
+ },
35
+ };
36
+ //# sourceMappingURL=get-comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-comments.js","sourceRoot":"","sources":["../../../src/tools/youtube-tools/get-comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAChD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CACzG,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC9B,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,2CAA2C;IACxD,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,KAAK,EAAE,CAAS,EAAE,EAAE;QAC5B,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;YAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,KAAK,EAAE,MAAM;gBAAE,OAAO,mCAAmC,CAAC;YAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC;gBACjD,MAAM,MAAM,GAAG,CAAC,EAAE,iBAAiB,IAAI,SAAS,CAAC;gBACjD,MAAM,IAAI,GAAG,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,CAAC,EAAE,SAAS,IAAI,CAAC,CAAC;gBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,IAAI,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;gBAClC,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,KAAK,IAAI,SAAS,IAAI,eAAe,KAAK,eAAe,OAAO,EAAE,CAAC;YAC9F,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,qBAAqB,CAAC,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QACvG,CAAC;IACF,CAAC;CACQ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { z } from "zod";
2
+ declare const params: z.ZodObject<{
3
+ videoId: z.ZodString;
4
+ }, z.core.$strip>;
5
+ type Params = z.infer<typeof params>;
6
+ export declare const getVideoInfoTool: {
7
+ readonly name: "YOUTUBE_GET_VIDEO_INFO";
8
+ readonly description: "Get detailed information about a YouTube video including statistics and status";
9
+ readonly parameters: z.ZodObject<{
10
+ videoId: z.ZodString;
11
+ }, z.core.$strip>;
12
+ readonly execute: (p: Params) => Promise<string>;
13
+ };
14
+ export {};
@@ -0,0 +1,42 @@
1
+ import { z } from "zod";
2
+ import { CredentialsError } from "../../lib/errors.js";
3
+ import { getYouTubeService } from "../../services/youtube-service.js";
4
+ const params = z.object({
5
+ videoId: z.string().describe("YouTube video ID (the part after ?v= in the URL)"),
6
+ });
7
+ export const getVideoInfoTool = {
8
+ name: "YOUTUBE_GET_VIDEO_INFO",
9
+ description: "Get detailed information about a YouTube video including statistics and status",
10
+ parameters: params,
11
+ execute: async (p) => {
12
+ try {
13
+ const result = await getYouTubeService().getVideoInfo(p.videoId);
14
+ const video = result.items?.[0];
15
+ if (!video)
16
+ return `No video found with ID: ${p.videoId}`;
17
+ const s = video.snippet;
18
+ const st = video.statistics;
19
+ return [
20
+ `YouTube Video Info:`,
21
+ s?.title ? `Title: ${s.title}` : null,
22
+ s?.channelTitle ? `Channel: ${s.channelTitle}` : null,
23
+ s?.publishedAt ? `Published: ${s.publishedAt}` : null,
24
+ s?.description ? `Description: ${s.description.slice(0, 200)}${s.description.length > 200 ? "..." : ""}` : null,
25
+ s?.tags?.length ? `Tags: ${s.tags.join(", ")}` : null,
26
+ video.status?.privacyStatus ? `Privacy: ${video.status.privacyStatus}` : null,
27
+ st?.viewCount ? `Views: ${st.viewCount}` : null,
28
+ st?.likeCount ? `Likes: ${st.likeCount}` : null,
29
+ st?.commentCount ? `Comments: ${st.commentCount}` : null,
30
+ `URL: https://www.youtube.com/watch?v=${p.videoId}`,
31
+ ]
32
+ .filter(Boolean)
33
+ .join("\n");
34
+ }
35
+ catch (error) {
36
+ if (error instanceof CredentialsError)
37
+ return `Error: ${error.message}`;
38
+ return `Error fetching YouTube video info: ${error instanceof Error ? error.message : "Unknown error"}`;
39
+ }
40
+ },
41
+ };
42
+ //# sourceMappingURL=get-video-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-video-info.js","sourceRoot":"","sources":["../../../src/tools/youtube-tools/get-video-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;CAChF,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,gFAAgF;IAC7F,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,KAAK,EAAE,CAAS,EAAE,EAAE;QAC5B,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK;gBAAE,OAAO,2BAA2B,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1D,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YACxB,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;YAC5B,OAAO;gBACN,qBAAqB;gBACrB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;gBACrC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI;gBACrD,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;gBACrD,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC/G,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;gBACrD,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC7E,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC/C,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC/C,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI;gBACxD,wCAAwC,CAAC,CAAC,OAAO,EAAE;aACnD;iBACC,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,sCAAsC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QACzG,CAAC;IACF,CAAC;CACQ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ declare const params: z.ZodObject<{
3
+ channelId: z.ZodString;
4
+ maxResults: z.ZodDefault<z.ZodNumber>;
5
+ pageToken: z.ZodOptional<z.ZodString>;
6
+ }, z.core.$strip>;
7
+ type Params = z.infer<typeof params>;
8
+ export declare const listChannelVideosTool: {
9
+ readonly name: "YOUTUBE_LIST_CHANNEL_VIDEOS";
10
+ readonly description: "List the most recent videos uploaded to a YouTube channel";
11
+ readonly parameters: z.ZodObject<{
12
+ channelId: z.ZodString;
13
+ maxResults: z.ZodDefault<z.ZodNumber>;
14
+ pageToken: z.ZodOptional<z.ZodString>;
15
+ }, z.core.$strip>;
16
+ readonly execute: (p: Params) => Promise<string>;
17
+ };
18
+ export {};
@@ -0,0 +1,36 @@
1
+ import { z } from "zod";
2
+ import { CredentialsError } from "../../lib/errors.js";
3
+ import { getYouTubeService } from "../../services/youtube-service.js";
4
+ const params = z.object({
5
+ channelId: z.string().describe("YouTube channel ID"),
6
+ maxResults: z.number().int().min(1).max(50).default(10).describe("Number of videos to return (1-50)"),
7
+ pageToken: z.string().optional().describe("Page token for pagination"),
8
+ });
9
+ export const listChannelVideosTool = {
10
+ name: "YOUTUBE_LIST_CHANNEL_VIDEOS",
11
+ description: "List the most recent videos uploaded to a YouTube channel",
12
+ parameters: params,
13
+ execute: async (p) => {
14
+ try {
15
+ const result = await getYouTubeService().listChannelVideos(p.channelId, p.maxResults, p.pageToken);
16
+ const items = result.items;
17
+ if (!items?.length)
18
+ return "No videos found for this channel.";
19
+ const lines = items.map((item, i) => {
20
+ const title = item.snippet?.title ?? "Untitled";
21
+ const published = item.snippet?.publishedAt ?? "";
22
+ const videoId = item.id?.videoId;
23
+ const url = videoId ? `https://www.youtube.com/watch?v=${videoId}` : "N/A";
24
+ return `${i + 1}. ${title}\n Published: ${published}\n URL: ${url}`;
25
+ });
26
+ const next = result.nextPageToken ? `\nNext page token: ${result.nextPageToken}` : "";
27
+ return [`Recent videos for channel ${p.channelId}:`, "", ...lines, next].join("\n").trim();
28
+ }
29
+ catch (error) {
30
+ if (error instanceof CredentialsError)
31
+ return `Error: ${error.message}`;
32
+ return `Error listing YouTube channel videos: ${error instanceof Error ? error.message : "Unknown error"}`;
33
+ }
34
+ },
35
+ };
36
+ //# sourceMappingURL=list-channel-videos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-channel-videos.js","sourceRoot":"","sources":["../../../src/tools/youtube-tools/list-channel-videos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACpD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACrG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACtE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACpC,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,2DAA2D;IACxE,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,KAAK,EAAE,CAAS,EAAE,EAAE;QAC5B,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;YACnG,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,KAAK,EAAE,MAAM;gBAAE,OAAO,mCAAmC,CAAC;YAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,UAAU,CAAC;gBAChD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC;gBAClD,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC;gBACjC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC3E,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,mBAAmB,SAAS,aAAa,GAAG,EAAE,CAAC;YACzE,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,sBAAsB,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,OAAO,CAAC,6BAA6B,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QAC5G,CAAC;IACF,CAAC;CACQ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ declare const params: z.ZodObject<{
3
+ videoId: z.ZodString;
4
+ text: z.ZodString;
5
+ }, z.core.$strip>;
6
+ type Params = z.infer<typeof params>;
7
+ export declare const postCommentTool: {
8
+ readonly name: "YOUTUBE_POST_COMMENT";
9
+ readonly description: "Post a top-level comment on a YouTube video";
10
+ readonly parameters: z.ZodObject<{
11
+ videoId: z.ZodString;
12
+ text: z.ZodString;
13
+ }, z.core.$strip>;
14
+ readonly execute: (p: Params) => Promise<string>;
15
+ };
16
+ export {};
@@ -0,0 +1,25 @@
1
+ import { z } from "zod";
2
+ import { CredentialsError } from "../../lib/errors.js";
3
+ import { getYouTubeService } from "../../services/youtube-service.js";
4
+ const params = z.object({
5
+ videoId: z.string().describe("YouTube video ID to comment on"),
6
+ text: z.string().min(1).describe("Comment text"),
7
+ });
8
+ export const postCommentTool = {
9
+ name: "YOUTUBE_POST_COMMENT",
10
+ description: "Post a top-level comment on a YouTube video",
11
+ parameters: params,
12
+ execute: async (p) => {
13
+ try {
14
+ const result = await getYouTubeService().postComment(p.videoId, p.text);
15
+ const commentId = result.id;
16
+ return `Comment posted successfully!\nComment ID: ${commentId ?? "unknown"}\nURL: https://www.youtube.com/watch?v=${p.videoId}`;
17
+ }
18
+ catch (error) {
19
+ if (error instanceof CredentialsError)
20
+ return `Error: ${error.message}`;
21
+ return `Error posting YouTube comment: ${error instanceof Error ? error.message : "Unknown error"}`;
22
+ }
23
+ },
24
+ };
25
+ //# sourceMappingURL=post-comment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-comment.js","sourceRoot":"","sources":["../../../src/tools/youtube-tools/post-comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;CAChD,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC9B,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,6CAA6C;IAC1D,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,KAAK,EAAE,CAAS,EAAE,EAAE;QAC5B,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YACxE,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO,6CAA6C,SAAS,IAAI,SAAS,0CAA0C,CAAC,CAAC,OAAO,EAAE,CAAC;QACjI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QACrG,CAAC;IACF,CAAC;CACQ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ declare const params: z.ZodObject<{
3
+ query: z.ZodString;
4
+ maxResults: z.ZodDefault<z.ZodNumber>;
5
+ pageToken: z.ZodOptional<z.ZodString>;
6
+ }, z.core.$strip>;
7
+ type Params = z.infer<typeof params>;
8
+ export declare const searchVideosTool: {
9
+ readonly name: "YOUTUBE_SEARCH_VIDEOS";
10
+ readonly description: "Search YouTube for videos by keyword";
11
+ readonly parameters: z.ZodObject<{
12
+ query: z.ZodString;
13
+ maxResults: z.ZodDefault<z.ZodNumber>;
14
+ pageToken: z.ZodOptional<z.ZodString>;
15
+ }, z.core.$strip>;
16
+ readonly execute: (p: Params) => Promise<string>;
17
+ };
18
+ export {};
@@ -0,0 +1,39 @@
1
+ import { z } from "zod";
2
+ import { CredentialsError } from "../../lib/errors.js";
3
+ import { getYouTubeService } from "../../services/youtube-service.js";
4
+ const params = z.object({
5
+ query: z.string().min(1).describe("Search query"),
6
+ maxResults: z.number().int().min(1).max(50).default(10).describe("Number of results to return (1-50)"),
7
+ pageToken: z.string().optional().describe("Page token for pagination"),
8
+ });
9
+ export const searchVideosTool = {
10
+ name: "YOUTUBE_SEARCH_VIDEOS",
11
+ description: "Search YouTube for videos by keyword",
12
+ parameters: params,
13
+ execute: async (p) => {
14
+ try {
15
+ const result = await getYouTubeService().searchVideos(p.query, p.maxResults, p.pageToken);
16
+ const items = result.items;
17
+ if (!items?.length)
18
+ return "No videos found for that query.";
19
+ const lines = items.map((item, i) => {
20
+ const title = item.snippet?.title ?? "Untitled";
21
+ const channel = item.snippet?.channelTitle ?? "Unknown";
22
+ const videoId = item.id?.videoId;
23
+ const url = videoId ? `https://www.youtube.com/watch?v=${videoId}` : "N/A";
24
+ return `${i + 1}. ${title}\n Channel: ${channel}\n URL: ${url}`;
25
+ });
26
+ const total = result.pageInfo?.totalResults;
27
+ const next = result.nextPageToken ? `\nNext page token: ${result.nextPageToken}` : "";
28
+ return [`Search results for "${p.query}"${total ? ` (${total} total)` : ""}:`, "", ...lines, next]
29
+ .join("\n")
30
+ .trim();
31
+ }
32
+ catch (error) {
33
+ if (error instanceof CredentialsError)
34
+ return `Error: ${error.message}`;
35
+ return `Error searching YouTube: ${error instanceof Error ? error.message : "Unknown error"}`;
36
+ }
37
+ },
38
+ };
39
+ //# sourceMappingURL=search-videos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-videos.js","sourceRoot":"","sources":["../../../src/tools/youtube-tools/search-videos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;IACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IACtG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACtE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,sCAAsC;IACnD,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,KAAK,EAAE,CAAS,EAAE,EAAE;QAC5B,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;YAC1F,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,KAAK,EAAE,MAAM;gBAAE,OAAO,iCAAiC,CAAC;YAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,UAAU,CAAC;gBAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,SAAS,CAAC;gBACxD,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC;gBACjC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC3E,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,iBAAiB,OAAO,aAAa,GAAG,EAAE,CAAC;YACrE,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,sBAAsB,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,OAAO,CAAC,uBAAuB,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,IAAI,CAAC;iBAChG,IAAI,CAAC,IAAI,CAAC;iBACV,IAAI,EAAE,CAAC;QACV,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QAC/F,CAAC;IACF,CAAC;CACQ,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ declare const params: z.ZodObject<{
3
+ videoId: z.ZodString;
4
+ title: z.ZodString;
5
+ description: z.ZodString;
6
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
7
+ categoryId: z.ZodDefault<z.ZodString>;
8
+ }, z.core.$strip>;
9
+ type Params = z.infer<typeof params>;
10
+ export declare const updateVideoTool: {
11
+ readonly name: "YOUTUBE_UPDATE_VIDEO";
12
+ readonly description: "Update the title, description, and tags of a YouTube video you own";
13
+ readonly parameters: z.ZodObject<{
14
+ videoId: z.ZodString;
15
+ title: z.ZodString;
16
+ description: z.ZodString;
17
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
18
+ categoryId: z.ZodDefault<z.ZodString>;
19
+ }, z.core.$strip>;
20
+ readonly execute: (p: Params) => Promise<string>;
21
+ };
22
+ export {};
@@ -0,0 +1,32 @@
1
+ import { z } from "zod";
2
+ import { CredentialsError } from "../../lib/errors.js";
3
+ import { getYouTubeService } from "../../services/youtube-service.js";
4
+ const params = z.object({
5
+ videoId: z.string().describe("YouTube video ID to update"),
6
+ title: z.string().min(1).max(100).describe("New video title"),
7
+ description: z.string().max(5000).describe("New video description"),
8
+ tags: z.array(z.string()).optional().describe("List of tags for the video"),
9
+ categoryId: z.string().default("22").describe("YouTube category ID (default: 22 = People & Blogs)"),
10
+ });
11
+ export const updateVideoTool = {
12
+ name: "YOUTUBE_UPDATE_VIDEO",
13
+ description: "Update the title, description, and tags of a YouTube video you own",
14
+ parameters: params,
15
+ execute: async (p) => {
16
+ try {
17
+ const result = await getYouTubeService().updateVideo(p.videoId, p.title, p.description, p.tags, p.categoryId);
18
+ return [
19
+ `Video updated successfully!`,
20
+ `Video ID: ${result.id ?? p.videoId}`,
21
+ `Title: ${result.snippet?.title ?? p.title}`,
22
+ `URL: https://www.youtube.com/watch?v=${p.videoId}`,
23
+ ].join("\n");
24
+ }
25
+ catch (error) {
26
+ if (error instanceof CredentialsError)
27
+ return `Error: ${error.message}`;
28
+ return `Error updating YouTube video: ${error instanceof Error ? error.message : "Unknown error"}`;
29
+ }
30
+ },
31
+ };
32
+ //# sourceMappingURL=update-video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-video.js","sourceRoot":"","sources":["../../../src/tools/youtube-tools/update-video.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC1D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC7D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC3E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,oDAAoD,CAAC;CACnG,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC9B,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,oEAAoE;IACjF,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,KAAK,EAAE,CAAS,EAAE,EAAE;QAC5B,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,WAAW,CACnD,CAAC,CAAC,OAAO,EACT,CAAC,CAAC,KAAK,EACP,CAAC,CAAC,WAAW,EACb,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,UAAU,CACZ,CAAC;YACF,OAAO;gBACN,6BAA6B;gBAC7B,aAAa,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE;gBACrC,UAAU,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE;gBAC5C,wCAAwC,CAAC,CAAC,OAAO,EAAE;aACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpG,CAAC;IACF,CAAC;CACQ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "social-mcp",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "MCP server for posting and interacting across social media platforms: Twitter, Instagram, Facebook, WhatsApp, Discord, Telegram, Slack, LinkedIn, Reddit, Threads, and TikTok",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",