Skip to main content
Glama

YouTube MCP

by tsubouchi

YouTube MCP

一个自动从 YouTube 视频中截取屏幕截图的工具。支持 YouTube Shorts 和 YouTube 视频。

功能

YouTube Shorts

  • 每 n 秒截取一次屏幕截图
  • 最多 60 张照片(如果视频长度为 60 秒或更长)
  • 精确剪切视频区域并保存到tmp/
  • 实时查看屏幕截图
  • 将所有或选定的图像以 ZIP 文件形式下载到本地(可在 Mac 和 Windows 上打开)

YouTube 视频

  • 每 n 秒截取一次屏幕截图
  • 最多 60 张照片(如果视频长度为 60 秒或更长)
  • 精确剪切视频区域并保存到tmp/
  • 实时查看屏幕截图
  • 将所有或选定的图像以 ZIP 文件形式下载到本地(可在 Mac 和 Windows 上打开)

TikTok

  • 目前正在筹备中
  • 请使用 YouTube 或 YouTube Shorts 网址

技术堆栈

  • Node.js 18
  • 表达
  • 剧作家
  • Firebase 函数(第二代)
  • Firebase 托管
  • Firebase 存储
  • TypeScript
  • 引导 CSS

项目配置

Playwrigh-MCP-Server/ ├── functions/ # Cloud Functions │ ├── src/ # ソースコード │ │ ├── index.ts # メインエントリーポイント │ │ ├── screenshot.ts # スクリーンショット機能 │ │ ├── screenshots.ts # スクリーンショット一覧取得 │ │ ├── download-zip.ts # ZIPダウンロード機能 │ │ └── types.ts # 型定義 │ ├── package.json # 依存関係 │ └── tsconfig.json # TypeScript設定 ├── public/ # 静的ファイル │ └── index.html # メインページ ├── firebase.json # Firebase設定 └── storage.rules # Storageセキュリティルール

API列表

截取屏幕截图

  • 端点/screenshot
  • 方法:POST
  • 参数
    { "url": "YouTube URL", "interval": 1 // 間隔(秒) }
  • 回复
    { "success": true, "screenshots": [ { "imageUrl": "署名付きURL", "time": "タイムスタンプ", "filename": "ファイル名" } ], "interval": 1 }

获取截图列表

  • 端点/screenshots
  • 方法:GET
  • 回复
    [ { "filename": "ファイル名", "imageUrl": "署名付きURL", "time": "タイムスタンプ" } ]

ZIP 下载

  • 端点/download-zip
  • 方法:POST
  • 参数
    { "filenames": ["ファイル名1", "ファイル名2"] }
  • 响应:ZIP 文件

GCP 架构

使用的服务

  1. Firebase 函数(第二代)
  2. Firebase 存储
    • 存储桶:mcp-5e4b5.firebasestorage.app
    • 安全规则:仅限经过身份验证的用户访问
  3. Firebase 托管

IAM 权限设置

用户权限
  • t@bonginkan.ai
    • roles/owner (项目所有者)
    • roles/run.admin (Cloud Run 管理员)
服务帐户权限
  1. 云函数
    • 33501462786-compute@developer.gserviceaccount.com
      • roles/run.admin
      • roles/run.developer
      • roles/run.invoker
      • roles/cloudfunctions.developer
      • roles/storage.admin
  2. Firebase 管理员
    • firebase-adminsdk-fbsvc@mcp-5e4b5.iam.gserviceaccount.com
      • roles/firebase.sdkAdminServiceAgent
      • roles/firebaseauth.admin
      • roles/iam.serviceAccountTokenCreator
      • roles/storage.admin
  3. 云构建
    • 33501462786@cloudbuild.gserviceaccount.com
      • roles/run.admin
      • roles/cloudfunctions.developer
      • roles/storage.admin
      • roles/artifactregistry.admin
      • roles/eventarc.admin

实现细节

截图功能

  • 使用 Playwright 控制无头浏览器
  • 视口尺寸:1280x720
  • 使用临时目录存储屏幕截图
  • 上传到 Firebase 存储后,删除临时文件。
  • 签名 URL 有效期为 15 分钟

错误处理

  • 捕获每个 API 端点的错误
  • 以 JSON 格式返回错误消息。
  • 处理 404 端点
  • 500 错误的适当错误响应

CORS 设置

安全功能

  • Firebase 存储安全规则
  • 设置签名 URL 的过期时间(15 分钟)
  • 正确删除临时文件

最新修订(2024-03-28)

错误修复

  1. 改进的 CORS 配置
    • 明确指定允许的来源
    • 启用凭证
  2. 改进的错误处理
    • 404 错误的 JSON 响应
    • 500 错误的详细错误消息
  3. Firebase 存储支持
    • 明确指定存储桶名称
    • 将签名 URL 的过期时间设置为 15 分钟
  4. Cloud Functions Gen 2 优化
    • 优化内存设置(1GiB)
    • 调整超时设置(540秒)
    • 设置并发执行数(80)

改进的功能

  1. 截图功能
    • 优化 Playwright 设置
    • 无头浏览器视口设置
    • 改进的临时文件管理
    • 改进了对 YouTube Shorts 的支持
    • 实时显示功能实现
  2. 改进的 API 响应
    • 日语错误信息
    • 标准化响应格式
    • 时间戳格式的标准化
    • 实现流式响应
  3. 增强安全性
    • Firebase 存储安全规则更新
    • 确保临时文件被删除
    • 适当限制错误信息
  4. 前端改进
    • 优化实时显示
    • 图片URL修正
    • 改进的错误处理
    • 用户界面改进

设置

  1. 克隆存储库
git clone https://github.com/tsubouchi/youtube_mcp.git cd youtube_mcp
  1. 安装依赖项
# プロジェクトルート npm install # Cloud Functions cd functions npm install
  1. 安装 Firebase CLI
npm install -g firebase-tools
  1. 登录 Firebase
firebase login
  1. 初始化项目
firebase init
  1. 部署
# Cloud Functions cd functions npm run deploy # Firebase Hosting cd .. firebase deploy --only hosting

设置本地开发环境

  1. 安装依赖项
# プロジェクトルート npm install # Cloud Functions cd functions npm install
  1. 设置服务帐户密钥
  • 从 Firebase 控制台下载您的服务帐号密钥
  • 保存为functions/service-account.json
  1. 设置环境变量
# functions/.env GOOGLE_APPLICATION_CREDENTIALS=./service-account.json
  1. 启动模拟器
cd functions npm run serve

仿真器端口设置

模拟器使用以下端口:

API 测试

  1. 健康检查
curl http://localhost:5001/mcp-5e4b5/us-central1/api
  1. 截取屏幕截图
curl -X POST http://localhost:5001/mcp-5e4b5/us-central1/api/screenshot \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"url": "YouTube URL", "interval": 5}'
  1. 获取截图列表
curl http://localhost:5001/mcp-5e4b5/us-central1/api/screenshots
  1. ZIP 下载
curl -X POST http://localhost:5001/mcp-5e4b5/us-central1/api/download-zip \ -H "Content-Type: application/json" \ -d '{"filenames": ["ファイル名1", "ファイル名2"]}'

笔记

  • 使用模拟器时,您将访问实际的 Firebase 存储。
  • 服务帐户密钥包含在.gitignore中,并且未提交到存储库
  • 您可以在模拟器 UI 中检查函数的执行状态和日志。

笔记

  • Node.js 18 将于 2025 年 4 月 30 日弃用
  • 屏幕截图保存到临时目录并在处理后删除。
  • 如果视频长度超过 60 秒,则只会保存前 60 张图像。
  • Firebase Storage 的安全规则设置为仅允许经过身份验证的用户访问。
  • 签名 URL 的有效期仅为 15 分钟

重要的

保存屏幕截图和压缩文件的规范

  1. 保存屏幕截图
    • 所有屏幕截图都临时保存在/tmp/screenshots/目录中。
    • 文件名的格式为screenshot_[タイムスタンプ]_[連番].png
    • 处理完成后,临时文件将被保留,并在您截取新屏幕截图时被覆盖。
  2. 创建 ZIP 文件
    • 选定的屏幕截图将直接从/tmp/screenshots/加载
    • 下载后,将在/tmp/screenshots/中创建一个临时 ZIP 文件,然后删除该文件。
    • ZIP 文件名的格式为screenshots_[タイムスタンプ].zip
  3. 管理临时文件
    • 应定期清理临时文件
    • 我们建议在拍摄新截图之前删除旧截图。

执照

MIT 许可证

-
security - not tested
F
license - not found
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

按照指定的时间间隔自动捕获和处理来自 YouTube 视频和 Shorts 的屏幕截图,支持可自定义的屏幕截图时间并提供用于图像管理的 API 端点。

  1. 功能
    1. YouTube Shorts
    2. YouTube 视频
    3. TikTok
  2. 技术堆栈
    1. 项目配置
      1. API列表
        1. 截取屏幕截图
        2. 获取截图列表
        3. ZIP 下载
      2. GCP 架构
        1. 使用的服务
        2. IAM 权限设置
      3. 实现细节
        1. 截图功能
        2. 错误处理
        3. CORS 设置
        4. 安全功能
      4. 最新修订(2024-03-28)
        1. 错误修复
        2. 改进的功能
      5. 设置
        1. 设置本地开发环境
          1. 仿真器端口设置
          2. API 测试
          3. 笔记
        2. 笔记
          1. 重要的
            1. 保存屏幕截图和压缩文件的规范
          2. 执照

            Related MCP Servers

            • -
              security
              A
              license
              -
              quality
              Provides functionality to search YouTube videos and automatically save the results to Google Sheets.
              Last updated -
              1
              9
              JavaScript
              MIT License
            • A
              security
              A
              license
              A
              quality
              Enables capturing high-quality native macOS screenshots using Safari through a Node.js server, supporting various sizes, zoom levels, and load wait times.
              Last updated -
              1
              7
              TypeScript
              MIT License
            • -
              security
              F
              license
              -
              quality
              Enables extraction of transcript text from YouTube videos by providing the video URL, supporting standard, shortened, and embed URL formats.
              Last updated -
              1
              JavaScript
            • A
              security
              A
              license
              A
              quality
              An official MCP server implementation that allows AI assistants to capture website screenshots through the ScreenshotOne API, enabling visual context from web pages during conversations.
              Last updated -
              1
              6
              TypeScript
              MIT License
              • Apple

            View all related MCP servers

            MCP directory API

            We provide all the information about MCP servers via our MCP API.

            curl -X GET 'https://glama.ai/api/mcp/v1/servers/tsubouchi/youtube_mcp'

            If you have feedback or need assistance with the MCP directory API, please join our Discord server