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
Una herramienta para tomar capturas de pantalla automáticamente de videos de YouTube. Admite YouTube Shorts y vídeos de YouTube.
función
Cortos de YouTube
- Tomar una captura de pantalla cada n segundos
- Hasta 60 tomas (si el vídeo dura 60 segundos o más)
- Recorta con precisión solo el área de video y guárdala en
tmp/
- Ver capturas de pantalla en tiempo real
- Descargue todas las imágenes o las seleccionadas localmente como un archivo ZIP (se abre tanto en Mac como en Windows)
Vídeos de YouTube
- Tomar una captura de pantalla cada n segundos
- Hasta 60 tomas (si el vídeo dura 60 segundos o más)
- Recorta con precisión solo el área de video y guárdala en
tmp/
- Ver capturas de pantalla en tiempo real
- Descargue todas las imágenes o las seleccionadas localmente como un archivo ZIP (se abre tanto en Mac como en Windows)
TikTok
- Actualmente en preparación
- Utilice una URL de YouTube o YouTube Shorts
Pila de tecnología
- Node.js 18
- Expresar
- Dramaturgo
- Funciones de Firebase (Gen 2)
- Alojamiento de Firebase
- Almacenamiento de Firebase
- Mecanografiado
- CSS de Bootstrap
Configuración del proyecto
Lista de API
Tomar captura de pantalla
- Punto final :
/screenshot
- Método : POST
- Parámetros :Copy
- respuesta :Copy
Obtener lista de capturas de pantalla
- Punto final :
/screenshots
- Método : OBTENER
- respuesta :Copy
Descarga ZIP
- Punto final :
/download-zip
- Método : POST
- Parámetros :Copy
- Respuesta : Archivo ZIP
Arquitectura de GCP
Servicios utilizados
- Funciones de Firebase (Gen 2)
- Tiempo de ejecución: Node.js 18
- Región: us-central1
- Memoria: 1 GiB
- Procesador: 1
- Tiempo de espera: 540 segundos
- Número máximo de instancias: 100
- Concurrencia: 80
- Punto final: https://api-ub7zp5pjra-uc.a.run.app
- Almacenamiento de Firebase
- Cubo: mcp-5e4b5.firebasestorage.app
- Reglas de seguridad: Acceso sólo a usuarios autenticados
- Alojamiento de Firebase
- Dominio: https://mcp-5e4b5.web.app
Configuración de permisos de IAM
Permisos de usuario
t@bonginkan.ai
roles/owner
(propietario del proyecto)roles/run.admin
(administrador de Cloud Run)
Permisos de la cuenta de servicio
- Funciones en la nube
33501462786-compute@developer.gserviceaccount.com
roles/run.admin
roles/run.developer
roles/run.invoker
roles/cloudfunctions.developer
roles/storage.admin
- Administrador de Firebase
firebase-adminsdk-fbsvc@mcp-5e4b5.iam.gserviceaccount.com
roles/firebase.sdkAdminServiceAgent
roles/firebaseauth.admin
roles/iam.serviceAccountTokenCreator
roles/storage.admin
- Construcción en la nube
33501462786@cloudbuild.gserviceaccount.com
roles/run.admin
roles/cloudfunctions.developer
roles/storage.admin
roles/artifactregistry.admin
roles/eventarc.admin
Detalles de implementación
Función de captura de pantalla
- Controlar navegadores sin cabeza con Playwright
- Tamaño de la ventana gráfica: 1280x720
- Utilice un directorio temporal para almacenar capturas de pantalla
- Después de cargar en Firebase Storage, elimine el archivo temporal.
- Las URL firmadas son válidas durante 15 minutos.
Manejo de errores
- Detectar errores en cada punto final de la API
- Devuelve un mensaje de error en formato JSON.
- Manejo de puntos finales 404
- Respuesta de error apropiada para errores 500
Configuración de CORS
- Orígenes permitidos:
- Métodos permitidos: GET, POST
- Credenciales: Válidas
Características de seguridad
- Reglas de seguridad de almacenamiento de Firebase
- Establecer tiempo de expiración para URL firmadas (15 minutos)
- Eliminar correctamente los archivos temporales
Últimas revisiones (28/03/2024)
Corrección de errores
- Configuración CORS mejorada
- Especificar explícitamente los orígenes permitidos
- Habilitación de credenciales
- Manejo de errores mejorado
- Respuesta JSON para errores 404
- Mensaje de error detallado para errores 500
- Compatibilidad con almacenamiento de Firebase
- Especificar un nombre de depósito explícitamente
- Establezca el tiempo de expiración de las URL firmadas en 15 minutos
- Optimizaciones de Cloud Functions Gen 2
- Optimizar la configuración de memoria (1 GiB)
- Ajustar la configuración del tiempo de espera (540 segundos)
- Establecer el número de ejecuciones simultáneas (80)
Funciones mejoradas
- Función de captura de pantalla
- Optimización de la configuración de Playwright
- Configuración de la ventana gráfica del navegador sin cabeza
- Gestión mejorada de archivos temporales
- Soporte mejorado para YouTube Shorts
- Implementación de la función de visualización en tiempo real
- Respuesta de API mejorada
- Mensajes de error en japonés
- Formato de respuesta estandarizado
- Estandarización de formatos de marcas de tiempo
- Implementación de una respuesta de streaming
- Seguridad mejorada
- Actualización de las reglas de seguridad de Firebase Storage
- Asegúrese de que se eliminen los archivos temporales
- Restricción adecuada de la información de error
- Mejoras en la interfaz
- Optimización de la visualización en tiempo real
- Corrección de URL de la imagen
- Manejo de errores mejorado
- Mejoras en la interfaz de usuario
configuración
- Clonar el repositorio
- Instalación de dependencias
- Instalar Firebase CLI
- Iniciar sesión en Firebase
- Inicializando el proyecto
- Desplegar
Creación de un entorno de desarrollo local
- Instalación de dependencias
- Configuración de la clave de la cuenta de servicio
- Descargue la clave de su cuenta de servicio desde la consola de Firebase
- Guardar como
functions/service-account.json
- Configuración de variables de entorno
- Iniciando el emulador
Configuración del puerto del emulador
El emulador utiliza los siguientes puertos:
- Funciones: http://127.0.0.1:5001
- Interfaz de usuario del emulador: http://127.0.0.1:4001
Pruebas de API
- Chequeo de salud
- Tomar captura de pantalla
- Obtener lista de capturas de pantalla
- Descarga ZIP
Notas
- Al usar el emulador, accederá al almacenamiento real de Firebase.
- La clave de la cuenta de servicio está incluida en
.gitignore
y no está comprometida con el repositorio - Puede comprobar el estado de ejecución y los registros de las funciones en la interfaz de usuario del emulador.
Notas
- Node.js 18 quedará obsoleto el 30 de abril de 2025
- Las capturas de pantalla se guardan en un directorio temporal y se eliminan después del procesamiento.
- Si el vídeo dura más de 60 segundos, solo se guardarán las primeras 60 imágenes.
- Las reglas de seguridad de Firebase Storage están configuradas para permitir el acceso solo a usuarios autenticados.
- Las URL firmadas solo son válidas durante 15 minutos
IMPORTANTE
Especificaciones para guardar capturas de pantalla y comprimirlas
- Guardar una captura de pantalla
- Todas las capturas de pantalla se guardan temporalmente en
/tmp/screenshots/
. - El nombre del archivo tiene el formato
screenshot_[タイムスタンプ]_[連番].png
- El archivo temporal se conservará una vez finalizado el procesamiento y se sobrescribirá cuando tome una nueva captura de pantalla.
- Todas las capturas de pantalla se guardan temporalmente en
- Creando un archivo ZIP
- La captura de pantalla seleccionada se cargará directamente desde
/tmp/screenshots/
- Se creará un archivo ZIP temporal en
/tmp/screenshots/
y luego se eliminará después de la descarga. - El nombre del archivo ZIP tiene el formato
screenshots_[タイムスタンプ].zip
- La captura de pantalla seleccionada se cargará directamente desde
- Administrar archivos temporales
- Los archivos temporales deben limpiarse periódicamente
- Recomendamos eliminar las capturas de pantalla antiguas antes de tomar otras nuevas.
licencia
Licencia MIT
This server cannot be installed
Captura y procesa automáticamente capturas de pantalla de videos y cortos de YouTube en intervalos específicos, admite tiempos de captura de pantalla personalizables y proporciona puntos finales de API para la gestión de imágenes.