El problema que resuelve
Los periodistas locales y los vecinos quieren saber qué dijeron los cargos públicos sobre un cambio urbanístico, una partida presupuestaria o una política escolar. Encontrarlo supone recorrer horas de vídeo de muchas sesiones. Los órdenes del día y las actas rara vez recogen todo el debate, y muchas redacciones locales ya no tienen periodistas que asistan a cada sesión.
Qué incluir en tu primera versión
- Ingesta automática de cada sesión desde el canal del organismo
- Etiquetas de orador para poder buscar por cargo público
- Búsqueda por tema y palabra clave en años de sesiones
- Alertas cuando se trata un tema o una dirección
- Enlaces para compartir que llevan al momento exacto de la grabación
Cómo construirlo, paso a paso
- 01
Reúne los vídeos de las sesiones
Resuelve el canal del ayuntamiento o su lista de sesiones y sigue comprobando si hay vídeos nuevos.
- 02
Transcribe con oradores
Usa ASR con speakerLabels activado, y speakerId con nombres conocidos, para atribuir cada fragmento a un orador. Las sesiones son largas, así que usa el endpoint de estimación para prever el coste.
- 03
Indexa por sesión y orador
Guarda los párrafos con la fecha de la sesión, el orador y la marca de tiempo, y añade búsqueda de texto completo y semántica.
- 04
Añade alertas
Permite que los usuarios guarden búsquedas, como el nombre de una calle o un tema de política pública, y envíales un correo cuando aparezca en una nueva sesión.
Código de inicio
Esta idea se basa en el patrón "Receta 3: carga en bloque una lista de reproducción en una base de conocimiento". Usa tus propios canales, prompts y almacenamiento.
import requests
API = "https://www.youtubetranscript.dev/api/v2"
HEADERS = {"Authorization": "Bearer yt_sk_live_YOUR_KEY"}
playlist = requests.post(f"{API}/playlists/resolve", headers=HEADERS,
json={"playlist_url": "https://www.youtube.com/playlist?list=PLAYLIST_ID",
"limit": 100}).json()
ids = [v["video_id"] for v in playlist["items"]]
batch = requests.post(f"{API}/batch", headers=HEADERS, json={
"video_ids": ids,
"format": {"timestamp": True, "paragraphs": True},
}).json()
# Large batches run async: poll GET /batch/{batch_id} until status is "completed"
for r in batch.get("results", []):
if r["status"] == "completed":
for p in r["data"]["transcript"].get("paragraphs") or []:
store(video_id=r["video_id"], start=p["start"], text=p["text"]) # your vector DBPor qué vale la pena construirlo
Los medios locales, los grupos de incidencia y las empresas inmobiliarias o de asuntos públicos pagarán por alertas y herramientas de investigación. Los proyectos cívicos suelen financiarse con subvenciones u ofrecen un archivo público gratuito con alertas de pago.
Errores que debes evitar
- Depender de los subtítulos automáticos en sesiones largas con muchos oradores: las etiquetas de orador hacen que el archivo sea mucho más útil.
- Subestimar la duración: las sesiones duran horas, así que estima los créditos de ASR antes de transcribir el archivo acumulado.
- Publicar sin contexto: enlaza cada cita a la grabación para que los lectores puedan escucharla por sí mismos.
Preguntas sobre esta idea
¿Puedo transcribir plenos municipales desde YouTube?
Sí. Usa los subtítulos cuando existan, o el reconocimiento de voz por IA con etiquetas de orador para obtener transcripciones más legibles de las sesiones largas.
¿Cómo identifico quién está hablando?
Activa las etiquetas de orador para separar a los participantes, y la identificación de oradores con una lista de nombres o cargos conocidos para atribuirlos.
¿Cuánto cuesta transcribir una sesión de tres horas?
El reconocimiento de voz por IA cuesta unos 40 créditos por hora sin complementos. Usa el endpoint de estimación para ver el coste exacto antes de empezar.