BookinglyTech News
Software

Scripta 3.4.7 añade grabación programada de reuniones sin salir del Mac

La app de transcripción local para macOS incorpora un planificador que arranca y para la captura a la hora indicada, sin enviar audio ni metadatos a ningún servidor.

3 min de lecturaDev.to0 vistas

Scripta, la aplicación de transcripción de reuniones para macOS que funciona enteramente en local, ha publicado la versión 3.4.7. La novedad es la grabación programada: se define una reunión con título, ventana horaria e idioma, y la app arranca y detiene la captura sola, sin pasar por ningún servidor. El proyecto lleva tiempo grabando audio en dos canales y resumiendo con un LLM local; lo que faltaba era acordarse de pulsar Record.

El desarrollador lo plantea como una respuesta a un problema propio: las reuniones recurrentes, las entrevistas y los "quick sync" tienen hora en el calendario, pero la memoria muscular no. La solución habitual en la nube pasa por ejecutar un bot en el centro de datos de otro, algo que choca con la premisa del proyecto, así que el planificador se quedó dentro del Mac.

Cómo funciona

La persistencia es un único JSON en ~/Library/Application Support/Scripta/schedules.json. Un componente llamado ScheduleCoordinator hace tick aproximadamente una vez por segundo mientras la app está viva: arma notificaciones locales cinco minutos antes de cada entrada, configura el grabador en el inicio (título, idioma, sin popup de resumen) y llama a stopRecording() al terminar. También reconcilia estados huérfanos tras cerrar y reabrir la aplicación, por ejemplo cuando el JSON dice "recording" pero la captura nunca llegó a empezar.

Antes de arrancar comprueba permisos de micrófono, reconocimiento de voz y ScreenCaptureKit, y evita así que el diálogo del sistema aparezca cada segundo si falta alguno. La grabación usa el mismo pipeline que el modo manual: whisper.cpp para el micro y SFSpeechRecognizer sobre el audio del sistema capturado con ScreenCaptureKit.

Hay reglas de producto deliberadas, según el autor, y no huecos pendientes: no se admiten horarios solapados (el guardado falla la validación), una sesión programada no lanza el resumen automático aunque Ollama esté listo, y si ya se está grabando al llegar la hora, la app pregunta antes de cortar la sesión en curso. La captura automática solo funciona con la aplicación abierta: no hay daemon de launchd grabando por detrás. Si está cerrada, cae una notificación local que pide abrirla, sin fingir que la reunión se registró. La importación de calendario y la sincronización entre dispositivos quedan para fases posteriores.

El detalle menos vistoso es el de los permisos. El planificador no crea categorías TCC nuevas, pero expone las mismas que la grabación manual, y si el autoarranque falla la entrada se queda en "Waiting to start" con un botón para reintentar. Quien compile desde el código fuente tiene que instalar en /Applications/Scripta.app para que TCC coincida con lo que ve un usuario normal; un binario lanzado con swift run es otra historia.

El autor también deja tres notas de lo aprendido: no tocar @Published desde un hilo de fondo al autoarrancar, porque SwiftUI responde con desbordamiento de pila en compilaciones Release; no marcar una programación como "recording" hasta que MeetingRecorder entre de verdad en ese estado; y dividir los modificadores de ciclo de vida de ContentView para sortear los límites del type-checker y la CI de macOS 15. Hay además un Awake opcional, activado por defecto, que mantiene una actividad de NSProcessInfo durante la grabación y la transcripción para evitar el sueño del sistema, sin prometer nada si se cierra la tapa.

El proyecto es MIT, requiere macOS 14 o superior y funciona en Apple Silicon e Intel. Se instala con un curl desde el repositorio en GitHub, y la versión concreta está etiquetada en v3.4.7. Después hay que completar el asistente de permisos, abrir Scheduled Recordings y añadir una reunión unos minutos por delante.

La propuesta encaja en un nicho concreto: quien no quiere que el audio de sus reuniones salga del portátil, pero tampoco quiere acordarse de nada. El precio es que la app tiene que estar corriendo y que los permisos de grabación de pantalla siguen siendo obligatorios para capturar el audio del sistema, aunque solo se guarden pistas de sonido. El autor pide ayuda precisamente en las dos piezas que faltan, importación de calendario y comportamiento al despertar del sueño.