Granola.ai se ha convertido rápidamente en una herramienta fundamental para quienes necesitan transcribir reuniones y llamadas de forma eficiente. Su servicio ofrece una solución automática para obtener registros completos y detallados de conversaciones, ideal para profesionales, estudiantes y equipos de trabajo que dependen de una documentación clara. Sin embargo, uno de los retos frecuentes para muchos usuarios es cómo centralizar todas estas notas en una sola aplicación que ofrezca flexibilidad y capacidades avanzadas de gestión de información, y ahí es donde Obsidian destaca. Obsidian es una aplicación de notas basada en archivos de texto plano que utiliza markdown, ofrece una experiencia rápida y personalizable con soporte para vim-motion, además de contar con una comunidad activa que desarrolla múltiples plugins para mejorar su funcionalidad.
La combinación de Granola para la generación y transcripción de contenido, con Obsidian para la organización y consulta de notas, resulta ideal para optimizar flujos de trabajo y aumentar la productividad. Sin embargo, Granola no ofrece una API oficial para exportar las notas, lo que dificulta la sincronización directa. Este obstáculo llevó a algunos usuarios avanzados a explorar métodos de ingeniería inversa para obtener acceso a las notas almacenadas o transmitidas por la aplicación. Uno de los métodos más efectivos consiste en interceptar o proxyar las llamadas que hace la aplicación de escritorio de Granola al servidor, lo que permite capturar las respuestas con los datos necesarios. Esta técnica requiere conocimientos en redes y el uso de herramientas como proxies HTTP que permiten analizar y registrar el tráfico generado por otra aplicación.
Al configurar un proxy local en el sistema, y hacer que Granola dirija sus solicitudes a través de él, es posible observar el endpoint exacto que devuelve los documentos y notas. En el caso de Granola, se identifica que el endpoint llamado "get-documents" es el que suministra los textos y contenidos transcritos. Para acceder a estos datos, es necesario autenticarse correctamente. Granola protege su API con tokens Bearer, los cuales se encuentran en un archivo llamado supabase.json ubicada en la carpeta de soporte de la aplicación en el sistema operativo.
Con esta información se puede construir un cliente que haga peticiones autenticadas y extraiga el contenido deseado sin la necesidad de una interfaz gráfica. A partir de ahí, la siguiente etapa es convertir el contenido que Granola devuelve en formato ProseMirror JSON a markdown plano, que es el formato nativo que utiliza Obsidian para sus notas. El formato ProseMirror, utilizado comúnmente para la edición de documentos ricos en la web, representa la estructura del texto con tipos de nodos, encabezados, párrafos y listas en forma jerárquica. Transformar esta estructura a markdown requiere recorrer recursivamente el JSON, identificar cada tipo de elemento y crear su equivalente en markdown, lo que permite mantener la organización y formato original del texto. Este proceso se puede automatizar con scripts en Python, aprovechando librerías estándar para peticiones HTTP y manipulación de archivos.
El script resultante realiza la autenticación utilizando el token extraído del archivo de credenciales, hace la petición al endpoint para obtener los documentos, procesa cada nota convirtiendo su contenido enriquecido a markdown, genera encabezados YAML con metadatos de la nota como título, fecha de creación o actualización y finalmente guarda cada nota como un archivo independiente en la carpeta especificada dentro de la bóveda de Obsidian. De esta manera, el usuario consigue tener en un lugar centralizado todas sus notas transcritas, listas para ser consultadas, editadas, enlazadas y aprovechadas con toda la potencia que ofrece Obsidian. Además, guardando solo la versión resumida y no el texto completo de la transcripción, se optimiza el espacio de almacenamiento y se facilita la lectura y revisión posterior. Este método también abre la puerta para futuras mejoras, como desarrollar un plugin oficial para Obsidian que simplifique aún más esta integración, o investigar más a fondo las capacidades no documentadas de la API de Granola para extender las funcionalidades disponibles. Para quienes disfrutan explorando la intersección entre hacking, productividad y herramientas digitales, esta aventura representa un excelente ejemplo de cómo la ingeniería inversa y la automatización pueden desbloquear potencial oculto en aplicaciones populares.