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.
Integrations
Extracts screenshots from YouTube videos at specified intervals or timestamps, with special handling for regular videos and Shorts format.
Takes screenshots at 1-10 second intervals from YouTube Shorts, capturing up to 60 screenshots per video with precise cropping of the video area.
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
项目配置
Copy
API列表
截取屏幕截图
- 端点:
/screenshot
- 方法:POST
- 参数:Copy
- 回复:Copy
获取截图列表
- 端点:
/screenshots
- 方法:GET
- 回复:Copy
ZIP 下载
- 端点:
/download-zip
- 方法:POST
- 参数:Copy
- 响应:ZIP 文件
GCP 架构
使用的服务
- Firebase 函数(第二代)
- 运行时:Node.js 18
- 区域:us-central1
- 内存:1GiB
- CPU:1
- 超时:540秒
- 最大实例数:100
- 并发:80
- 端点: https://api-ub7zp5pjra-uc.a.run.app
- Firebase 存储
- 存储桶:mcp-5e4b5.firebasestorage.app
- 安全规则:仅限经过身份验证的用户访问
- Firebase 托管
IAM 权限设置
用户权限
t@bonginkan.ai
roles/owner
(项目所有者)roles/run.admin
(Cloud Run 管理员)
服务帐户权限
- 云函数
33501462786-compute@developer.gserviceaccount.com
roles/run.admin
roles/run.developer
roles/run.invoker
roles/cloudfunctions.developer
roles/storage.admin
- Firebase 管理员
firebase-adminsdk-fbsvc@mcp-5e4b5.iam.gserviceaccount.com
roles/firebase.sdkAdminServiceAgent
roles/firebaseauth.admin
roles/iam.serviceAccountTokenCreator
roles/storage.admin
- 云构建
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 设置
- 允许的来源:
- 允许的方法:GET、POST
- 凭证:有效
安全功能
- Firebase 存储安全规则
- 设置签名 URL 的过期时间(15 分钟)
- 正确删除临时文件
最新修订(2024-03-28)
错误修复
- 改进的 CORS 配置
- 明确指定允许的来源
- 启用凭证
- 改进的错误处理
- 404 错误的 JSON 响应
- 500 错误的详细错误消息
- Firebase 存储支持
- 明确指定存储桶名称
- 将签名 URL 的过期时间设置为 15 分钟
- Cloud Functions Gen 2 优化
- 优化内存设置(1GiB)
- 调整超时设置(540秒)
- 设置并发执行数(80)
改进的功能
- 截图功能
- 优化 Playwright 设置
- 无头浏览器视口设置
- 改进的临时文件管理
- 改进了对 YouTube Shorts 的支持
- 实时显示功能实现
- 改进的 API 响应
- 日语错误信息
- 标准化响应格式
- 时间戳格式的标准化
- 实现流式响应
- 增强安全性
- Firebase 存储安全规则更新
- 确保临时文件被删除
- 适当限制错误信息
- 前端改进
- 优化实时显示
- 图片URL修正
- 改进的错误处理
- 用户界面改进
设置
- 克隆存储库
Copy
- 安装依赖项
Copy
- 安装 Firebase CLI
Copy
- 登录 Firebase
Copy
- 初始化项目
Copy
- 部署
Copy
设置本地开发环境
- 安装依赖项
Copy
- 设置服务帐户密钥
- 从 Firebase 控制台下载您的服务帐号密钥
- 保存为
functions/service-account.json
- 设置环境变量
Copy
- 启动模拟器
Copy
仿真器端口设置
模拟器使用以下端口:
- 功能: http://127.0.0.1:5001
- 模拟器界面: http://127.0.0.1: 4001
API 测试
- 健康检查
Copy
- 截取屏幕截图
Copy
- 获取截图列表
Copy
- ZIP 下载
Copy
笔记
- 使用模拟器时,您将访问实际的 Firebase 存储。
- 服务帐户密钥包含在
.gitignore
中,并且未提交到存储库 - 您可以在模拟器 UI 中检查函数的执行状态和日志。
笔记
- Node.js 18 将于 2025 年 4 月 30 日弃用
- 屏幕截图保存到临时目录并在处理后删除。
- 如果视频长度超过 60 秒,则只会保存前 60 张图像。
- Firebase Storage 的安全规则设置为仅允许经过身份验证的用户访问。
- 签名 URL 的有效期仅为 15 分钟
重要的
保存屏幕截图和压缩文件的规范
- 保存屏幕截图
- 所有屏幕截图都临时保存在
/tmp/screenshots/
目录中。 - 文件名的格式为
screenshot_[タイムスタンプ]_[連番].png
- 处理完成后,临时文件将被保留,并在您截取新屏幕截图时被覆盖。
- 所有屏幕截图都临时保存在
- 创建 ZIP 文件
- 选定的屏幕截图将直接从
/tmp/screenshots/
加载 - 下载后,将在
/tmp/screenshots/
中创建一个临时 ZIP 文件,然后删除该文件。 - ZIP 文件名的格式为
screenshots_[タイムスタンプ].zip
- 选定的屏幕截图将直接从
- 管理临时文件
- 应定期清理临时文件
- 我们建议在拍摄新截图之前删除旧截图。
执照
MIT 许可证
This server cannot be installed
按照指定的时间间隔自动捕获和处理来自 YouTube 视频和 Shorts 的屏幕截图,支持可自定义的屏幕截图时间并提供用于图像管理的 API 端点。