Cómo leer un archivo .live_chat.json de YouTube

Imagina que estás siguiendo un stream en vivo y decides descargar el chat usando la herramienta yt-dlp. Al terminar, te encuentras con un archivo llamado .live_chat.json. Es totalmente normal sentirse confundido al principio: ¿cómo visualizo esto? ¿Es legible directamente?

Vista de código mostrando líneas de JSON apiladas en un editor de texto plano.
Estructura inicial del archivo .live_chat.json descargado por yt-dlp.

La respuesta honesta es que no. Este archivo no está pensado para ser leído por humanos de forma nativa. Contiene una secuencia de eventos JSON, a menudo pareciendo algo así:

{"timestamp":12345,"author":"Juan","message":"Hola"}
{"timestamp":12350,"author":"Pedro","message":"¿Cómo están?"}

Tienes varias opciones para abordar esto. Puedes intentar verlo como texto simple usando comandos de terminal o editores básicos, pero suele ser bastante incómodo y difícil de interpretar.

Descubriendo la estructura JSONL

Luego de analizar el archivo, se vuelve claro que no es un solo objeto JSON gigante, sino un formato conocido como JSON Lines (JSONL). Cada línea en ese archivo es un objeto JSON independiente. Dentro de este flujo de datos aparecen distintos tipos de eventos:

  • liveChatTextMessageRenderer: Mensajes normales del chat.
  • liveChatPaidMessageRenderer: Super Chats o donaciones.
  • liveChatTickerPaidMessageItemRenderer: Avisos flotantes de esas donaciones.

Pero, mirando más de cerca los datos, se nota que este chat particular parece ser el estreno del piloto de la serie animada The Amazing Digital Circus. Hay una cuenta regresiva visible en los mensajes y un Super Chat de 50 dólares justo antes de comenzar.

Convertir el caos a texto legible

Llegamos aquí: lo más cómodo es convertirlo a texto plano. Si prefieres hacerlo tú mismo, puedes usar unas pocas líneas de Python para procesar el archivo y extraer los mensajes:

import json

with open("video.live_chat.json", encoding="utf-8") as f:
    for line in f:
        try:
            obj = json.loads(line)
            # ... lógica para extraer autor y mensaje ...
            print(f"{author}: {text}")
        except:
            pass

Este script imprime un texto limpio donde cada línea muestra la hora exacta, el usuario y su mensaje correspondiente.

Si prefieres no escribir código desde cero, existe una herramienta llamada chat-downloader. Puedes instalarla con pip y te permitirá exportar los chats de YouTube a formatos mucho más legibles sin complicaciones. Al final, tienes un archivo fácil de leer que mantiene el chat sincronizado con el video.

Bloque de código mostrando un script de Python que procesa archivos JSON.
Script de Python usado para convertir el JSONL a texto legible.
Texto plano limpio con timestamps y usuarios, junto al logo de una serie animada.
Salida final del script mostrando los mensajes del chat ordenados por tiempo.