social-mcp 1.5.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/README.md +19 -1
  2. package/dist/index.js +17 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/config.d.ts +4 -0
  5. package/dist/lib/config.js +4 -0
  6. package/dist/lib/config.js.map +1 -1
  7. package/dist/services/youtube-service.d.ts +124 -0
  8. package/dist/services/youtube-service.js +230 -0
  9. package/dist/services/youtube-service.js.map +1 -0
  10. package/dist/tools/youtube-tools/get-channel-info.d.ts +14 -0
  11. package/dist/tools/youtube-tools/get-channel-info.js +41 -0
  12. package/dist/tools/youtube-tools/get-channel-info.js.map +1 -0
  13. package/dist/tools/youtube-tools/get-comments.d.ts +16 -0
  14. package/dist/tools/youtube-tools/get-comments.js +36 -0
  15. package/dist/tools/youtube-tools/get-comments.js.map +1 -0
  16. package/dist/tools/youtube-tools/get-video-info.d.ts +14 -0
  17. package/dist/tools/youtube-tools/get-video-info.js +42 -0
  18. package/dist/tools/youtube-tools/get-video-info.js.map +1 -0
  19. package/dist/tools/youtube-tools/list-channel-videos.d.ts +18 -0
  20. package/dist/tools/youtube-tools/list-channel-videos.js +36 -0
  21. package/dist/tools/youtube-tools/list-channel-videos.js.map +1 -0
  22. package/dist/tools/youtube-tools/post-comment.d.ts +16 -0
  23. package/dist/tools/youtube-tools/post-comment.js +25 -0
  24. package/dist/tools/youtube-tools/post-comment.js.map +1 -0
  25. package/dist/tools/youtube-tools/search-videos.d.ts +18 -0
  26. package/dist/tools/youtube-tools/search-videos.js +39 -0
  27. package/dist/tools/youtube-tools/search-videos.js.map +1 -0
  28. package/dist/tools/youtube-tools/update-video.d.ts +22 -0
  29. package/dist/tools/youtube-tools/update-video.js +32 -0
  30. package/dist/tools/youtube-tools/update-video.js.map +1 -0
  31. package/package.json +1 -1
package/README.md CHANGED
@@ -17,6 +17,7 @@ An MCP (Model Context Protocol) server that lets AI assistants post and interact
17
17
  | Reddit | Submit post, get posts, comment, vote, search, get user info |
18
18
  | Threads | Get profile, create post, reply, get posts, delete post |
19
19
  | TikTok | Query creator info, get user info, post video, photo post, get post status |
20
+ | YouTube | Get channel info, search videos, get video info, list channel videos, get comments, post comment, update video |
20
21
 
21
22
  ## Quick Start
22
23
 
@@ -64,7 +65,8 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
64
65
  "REDDIT_PASSWORD": "your_password",
65
66
  "THREADS_ACCESS_TOKEN": "your_token",
66
67
  "THREADS_USER_ID": "your_user_id",
67
- "TIKTOK_ACCESS_TOKEN": "your_token"
68
+ "TIKTOK_ACCESS_TOKEN": "your_token",
69
+ "YOUTUBE_ACCESS_TOKEN": "your_token"
68
70
  }
69
71
  }
70
72
  }
@@ -156,6 +158,11 @@ Copy `example.env` to `.env` and fill in the credentials for the platforms you w
156
158
  |----------|-------------|
157
159
  | `TIKTOK_ACCESS_TOKEN` | OAuth 2.0 access token from the [TikTok for Developers](https://developers.tiktok.com) — requires `user.info.basic`, `video.publish`, `video.upload` scopes |
158
160
 
161
+ ### YouTube
162
+ | Variable | Description |
163
+ |----------|-------------|
164
+ | `YOUTUBE_ACCESS_TOKEN` | OAuth 2.0 access token from the [Google Cloud Console](https://console.cloud.google.com) — requires `https://www.googleapis.com/auth/youtube` scope |
165
+
159
166
  ## Available Tools
160
167
 
161
168
  ### Telegram
@@ -234,6 +241,17 @@ Copy `example.env` to `.env` and fill in the credentials for the platforms you w
234
241
 
235
242
  > **Note:** TikTok's Content Posting API requires app approval from [TikTok for Developers](https://developers.tiktok.com). Videos are pulled from a public URL by TikTok's servers rather than uploaded directly.
236
243
 
244
+ ### YouTube
245
+ - **YOUTUBE_GET_CHANNEL_INFO** — Get channel info and stats (`channelId` optional — omit for your own channel)
246
+ - **YOUTUBE_SEARCH_VIDEOS** — Search YouTube for videos (`query`, `maxResults`, `pageToken`)
247
+ - **YOUTUBE_GET_VIDEO_INFO** — Get detailed info and stats for a video (`videoId`)
248
+ - **YOUTUBE_LIST_CHANNEL_VIDEOS** — List recent uploads from a channel (`channelId`, `maxResults`, `pageToken`)
249
+ - **YOUTUBE_GET_COMMENTS** — Get top-level comments on a video (`videoId`, `maxResults`)
250
+ - **YOUTUBE_POST_COMMENT** — Post a comment on a video (`videoId`, `text`)
251
+ - **YOUTUBE_UPDATE_VIDEO** — Update a video's title, description, and tags (`videoId`, `title`, `description`, `tags`, `categoryId`)
252
+
253
+ > **Note:** YouTube requires an OAuth 2.0 access token with the `https://www.googleapis.com/auth/youtube` scope. Enable the **YouTube Data API v3** in your [Google Cloud Console](https://console.cloud.google.com) project. Video uploads are not supported via this API — use the YouTube Studio or resumable upload flow directly.
254
+
237
255
  ## Development
238
256
 
239
257
  ```bash
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":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,cAAc,IAAI,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACnG,OAAO,EAAE,YAAY,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7F,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,gBAAgB,IAAI,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACvG,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC7F,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,eAAe,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC9F,OAAO,EAAE,gBAAgB,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AACjG,OAAO,EAAE,eAAe,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC/F,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC/F,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC/F,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,IAAI,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAC7G,OAAO,EAAE,iBAAiB,IAAI,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AACvG,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC1F,OAAO,EAAE,oBAAoB,IAAI,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAChH,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,eAAe,IAAI,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAEpG,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAE5C,CAAC;AAEF,SAAS,aAAa,CAAC,IAAY,EAAE,IAAmB;IACvD,IAAI,CAAC;QACJ,IAAI,EAAE,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,GAAG,YAAY,gBAAgB,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,KAAK,CACZ,UAAU,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACrE,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC;AAED,KAAK,UAAU,IAAI;IAClB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC5D,aAAa,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC9C,aAAa,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IAC9C,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC5C,aAAa,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC9C,aAAa,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC9C,aAAa,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAChD,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACxC,aAAa,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC9C,aAAa,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC1C,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC5C,aAAa,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC1C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAElB,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,CAAC;IAEnE,WAAW;IACX,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAChC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEhC,UAAU;IACV,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9B,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAChC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9B,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEhC,UAAU;IACV,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEvC,WAAW;IACX,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAExC,WAAW;IACX,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAErC,YAAY;IACZ,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEtC,QAAQ;IACR,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEtC,WAAW;IACX,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAEzC,SAAS;IACT,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEtC,UAAU;IACV,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEtC,SAAS;IACT,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC3C,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC1C,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAExC,IAAI,CAAC;QACJ,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
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.1",
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",