# Plan: Automatización Flujo Zoom a YouTube > **Grupo de Trabajo:** DIGIs (Digitalización y Contenidos) **Código:** P2603.01 **Fecha:** 31 de marzo de 2026 **Autor:** Sistema ADN **Versión:** 1.0 **Estado:** 📝 PLANIFICADO ## 📋 Resumen Ejecutivo El objetivo es automatizar un proceso repetitivo que actualmente requiere un alto esfuerzo manual y tiempo de espera ("toil"): descargar grabaciones de aulas y posgrados de Zoom a partir de enlaces en una Google Sheet, procesarlas localmente, subirlas en modo oculto al canal interno de YouTube, y finalmente notificar o retornar los enlaces a la planilla para los destinatarios. Al automatizar este flujo utilizando el ecosistema ADN (CLI de herramientas Ruby), la intervención manual se reducirá idealmente a la ejecución de un solo comando (`zoom:sync` o similar). ## 🎯 Objetivo Desarrollar una herramienta nativa ADN que englobe estas etapas clave: 1. Conectarse a Google Sheets para leer nuevas filas pendientes (sin `ID-YTB`). 2. Gestionar la descarga robusta (`wget`/`curl` con sanitización estricta de espacios y nombres) al entorno delimitado `temp/`. 3. Interconectar con la **YouTube Data API v3** para subir los videos directamente, dejándolos No Listados ("Unlisted"). 4. Devolver las URLs post-subida a la planilla y despachar las notificaciones necesarias. ## 📅 Fases de Implementación Orientativas ### ⏳ FASE 1: Integración Source (Google Sheets & Descarga) - **1.1:** Habilitar Google Sheets API. Guardar la credencial de Service Account cifrada usando `candados`. - **1.2:** Crear módulo Ruby (`adn/tools/cli/digis.rb`) para extraer columnas *IDReu*, *urlDOWN*, y *TIT*. - **1.3:** Descargar archivos de manera concurrente al directorio de trabajo optimizando transferencia y sanitizando las salidas de los nombres de archivos. ### ⏳ FASE 2: Extracción local (si aplica según webhook) - **2.1:** Detectar dinámicamente si Zoom retorna un `mp4` o requiere un unpack/descompresión (en el caso de recursos vinculados a chat txt y grabaciones juntas). ### ⏳ FASE 3: Upload a YouTube - **3.1:** Habilitar y configurar YouTube Data API v3 usando OAuth2 en la cuenta destino. - **3.2:** Mecanismo de subida asíncrona mediante Ruby, empujando chunks grandes de video con protección contra cortes, nombrando el archivo según `TIT` y ajustando la privacidad. ### ⏳ FASE 4: Notificación final y actualización - **4.1:** Almacenar de retorno el enlace definitivo en la columna `ID-YTB` de la planilla. - **4.2:** Desarrollar rutina para generar correos preformateados o alertas para los organizadores, confirmándoles los enlaces limpios. ## 🛠 Requisitos para Ecosistema ADN - Integración en `./adn/tools/run digis zoom:sync` - Todo el manejo temporal de GBs debe apuntar a la carpeta limpia `temp/` pero preferiblemente limpiar al concluir (`cleanup ensure`). - Los tokens API irán guardados de forma imperativa dentro de la bóveda de **Candados**.