Caso de éxito · Institución de educación superior norteamericana confidencial

Captura automatizada de clases de extremo a extremo: Canvas + Panopto + orquestación con Python

Cómo UnlockLive construyó una plataforma de captura de clases totalmente automatizada que integra Canvas LMS y Panopto con Python y FastAPI — publicando automáticamente unas 3,000 clases por período, reduciendo la carga administrativa en un 80% y dotando a cada grabación de un rastro de auditoría verificable.

  • SectorEducación
  • Año2024
  • PaísEE. UU.
  • Duración6 meses
End-to-End Automated Lecture Capture: Canvas + Panopto + Python Orchestration hero screenshot

Resultados de un vistazo

  • 80%Reducción de la carga administrativa del soporte docente
  • ~3,000Clases por trimestre publicadas automáticamente, de extremo a extremo
  • 100%Grabaciones con registro de auditoría desde la captura hasta la publicación en Canvas
  • 4xPublicación posterior a la clase más rápida: minutos, no al día siguiente

El reto

Una institución de educación superior norteamericana tenía Panopto para la captura de clases y Canvas LMS para la impartición de cursos, pero nada que los conectara a escala. Cada período, un equipo de diseño instruccional dedicaba unas 600 horas al mismo ciclo manual: confirmar que una grabación había terminado, encontrar la carpeta correcta de Panopto, nombrar bien la grabación, configurar subtítulos y acceso, publicar un enlace en el módulo correcto de Canvas y luego perseguir las clases que no se habían grabado en absoluto.

Los modos de fallo eran frustrantes y predecibles. Grabaciones publicadas en la sección equivocada. Subtítulos retrasados días. Aulas a final de semestre con dispositivos de captura averiados que nadie notaba hasta que los estudiantes se quejaban. Y sin rastro de auditoría: cuando un estudiante preguntaba "¿por qué faltaba la clase del jueves pasado?", nadie podía dar una respuesta segura. La institución quería recuperar las 600 horas del equipo, detectar los fallos en el momento en que ocurrían y contar con un sistema capaz de escalar al doble del número actual de aulas sin aumentar la plantilla.

Nuestra solución

Construimos una capa de orquestación integral en Python y FastAPI que escucha los eventos de cursos de Canvas y los eventos de grabación de Panopto, los une mediante un modelo de catálogo local que conoce cursos, secciones, aulas e instructores, y ejecuta automáticamente todo el flujo de publicación.

El catálogo local es la idea clave. En lugar de hacerle a Canvas y a Panopto las mismas preguntas una y otra vez, mantenemos un pequeño catálogo autorizado en PostgreSQL con cursos, secciones, asignaciones de aula a sección, titularidad de instructor por sección y las reglas de publicación que ha elegido cada departamento. Los Canvas Live Events y los webhooks de Panopto actualizan el catálogo casi en tiempo real; un servicio de orquestación FastAPI ejecuta luego cada acción posterior: archivar la grabación en la carpeta correcta de Panopto, solicitar subtítulos, establecer el acceso según la lista de cada sección, publicar la clase en el módulo correcto de Canvas y escribir un evento de auditoría estructurado en cada paso.

El filtrado inteligente detecta los fallos que antes eran invisibles. Si una clase programada no tiene grabación 15 minutos después de terminar, el sistema avisa al equipo de soporte instruccional y abre un incidente con seguimiento. Si los subtítulos siguen sin estar tras la ventana del SLA, escala. Cada acción de publicación — con éxito o no — se registra con quién, qué, cuándo, por qué y los eventos de origen que la desencadenaron, de modo que la pregunta "¿por qué faltaba el jueves pasado?" ahora tiene respuesta en 30 segundos.

  • Catálogo local de cursos, secciones, aulas, instructores y reglas de publicación por departamento
  • Ingesta de Canvas Live Events + webhooks de Panopto mediante un receptor con patrón inbox
  • Máquina de estados idempotente por grabación: detectada → archivada → subtitulada → publicada → auditada
  • Detección inteligente de grabaciones faltantes con SLA de 15 minutos y creación de incidentes con seguimiento
  • Monitoreo del SLA de subtítulos con escalado automático cuando se incumple la ventana
  • Control de acceso por sección según la lista de alumnos, aplicado a carpetas de Panopto y publicaciones de Canvas
  • Herramienta de reproducción para volver a ejecutar de extremo a extremo el flujo de publicación de cualquier grabación histórica
  • Registro de auditoría estructurado que responde '¿por qué falta esta clase?' en 30 segundos
  • Interfaz de administración para que el equipo de diseño instruccional edite las reglas de publicación sin un ingeniero

Cómo lo construimos

  1. 01

    Mapeo honesto del flujo de trabajo manual

    Acompañamos al equipo de diseño instruccional durante dos semanas para documentar cada clic del proceso manual existente, incluidas las partes que no pensaron en mencionar por ser tan habituales. La auditoría produjo un flujo de 47 pasos por grabación, de los cuales 41 se basaban en reglas y podían automatizarse con seguridad, y 6 requerían criterio humano (y seguirían siendo manuales).

  2. 02

    Diseño del catálogo local y del modelo de eventos

    Diseñamos un catálogo en PostgreSQL que contiene cursos, secciones, mapeos aula-sección, propiedad de instructores y reglas de publicación por departamento. El esquema fue deliberadamente pequeño y muy normalizado para que la lógica de publicación se mantuviera legible. Canvas Live Events y los webhooks de Panopto pasaron a ser las únicas entradas que cambian el estado del catálogo.

  3. 03

    Construcción del servicio de orquestación con FastAPI

    El servicio de orquestación es una aplicación Python/FastAPI con workers de Celery y una máquina de estados idempotente por grabación: detectada, archivada, subtitulado solicitado, subtitulada, acceso aplicado, publicada en Canvas, auditoría completa. Cada transición es un paso independiente y reintentable, con registros estructurados y manejo de dead-letter. Todo el pipeline puede reproducir de principio a fin cualquier grabación pasada bajo demanda.

  4. 04

    Piloto, escalado y mejora continua

    Hicimos un piloto con un departamento académico durante un período completo, comparando semanalmente los resultados automatizados con la referencia manual. Tras cero divergencias durante 12 semanas, desplegamos la plataforma departamento por departamento durante el período siguiente. El equipo de diseño instruccional conservó la propiedad de las reglas de publicación: puede editar el catálogo y las definiciones de reglas mediante una pequeña interfaz de administración sin necesidad de un ingeniero.

Stack tecnológico

  • Python
  • FastAPI
  • Canvas LMS API
  • Panopto REST API
  • PostgreSQL
  • Celery
  • Redis
  • AWS S3
  • AWS EventBridge
  • Datadog
  • Integración de API y sistemas
  • Python y FastAPI
  • Automatización de flujos de trabajo
  • Soluciones en la nube
“Nuestro equipo recuperó 600 horas por trimestre, nuestros estudiantes reciben sus clases el mismo día y, cuando algo sale mal, lo sabemos antes de que llegue el primer correo. Cambió lo que podemos ofrecer a los instructores de esta institución.”
Directora de Diseño Instruccional · Institución de educación superior (nombre confidencial)

Preguntas frecuentes

¿Cómo se automatiza de forma fiable el flujo de captura de clases de Canvas + Panopto?

No intente manejar Canvas y Panopto directamente con reglas: eso se vuelve frágil rápidamente. En su lugar, mantenga un pequeño catálogo local de cursos, secciones, aulas e instructores que se actualice mediante Canvas Live Events y webhooks de Panopto. Luego ejecute una máquina de estados idempotente por grabación que dirija cada acción posterior contra el catálogo. El catálogo se convierte en la única fuente de verdad y el resto del sistema es un orquestador delgado y reproducible.

¿Cómo se detectan las clases que debieron grabarse pero no se grabaron?

Compare los eventos de clase programados de su mapeo aula-sección con los eventos de grabación de Panopto recibidos, con un SLA de 15 minutos. Si una sesión programada no tiene una grabación asociada, avise al equipo de soporte docente y abra un incidente rastreado con el aula, la sección, el instructor y los eventos upstream que se vieron (y los que no). Esta es la automatización de mayor valor de la plataforma.

¿Puede la API de Panopto manejar una orquestación a escala de producción?

Sí: la API REST de Panopto está bien documentada y es estable para las operaciones que importan (creación de carpetas, metadatos de carga de grabaciones, control de acceso, flujo de subtitulado). La cuestión de la fiabilidad está de su lado: llamadas idempotentes, reintentos exponenciales y una máquina de estados por grabación para poder reproducir cualquier paso fallido sin coordinación. Tratamos a Panopto exactamente igual que a cualquier API de terceros en una integración de producción.

¿Cómo mantienen los equipos de diseño instruccional el control de las reglas de publicación sin involucrar a ingeniería?

Saque las reglas del código y llévelas al catálogo. Damos al equipo una pequeña interfaz de administración sobre las tablas de reglas de PostgreSQL: qué se publica en qué módulo de Canvas, qué política de acceso quiere cada departamento, cuál es el SLA de subtítulos. Ingeniería es dueña del orquestador; el equipo es dueño de las reglas. Los cambios de reglas nunca requieren un despliegue.

¿Cuánto cuesta y cuánto tarda normalmente un proyecto de automatización de extremo a extremo con Canvas + Panopto?

De 16 a 26 semanas para un despliegue de nivel producción en una institución mediana o grande. Las primeras 4 a 6 semanas son de descubrimiento del flujo de trabajo y diseño del catálogo: hacerlo bien es lo que abarata todo lo demás. Una vez que un departamento está en la plataforma, sumar los siguientes toma días, no semanas.

¿Quiere un resultado como este?

Hable con el mismo equipo que construyó Captura automatizada de clases de extremo a extremo: Canvas + Panopto + orquestación con Python. Definiremos el alcance de su proyecto, le daremos una propuesta a precio fijo y le mostraremos el caso más parecido de nuestro portafolio.

Reservar una llamada estratégica