Capítulos de podcast
Una conversación de noventa minutos solo es tan útil como su mapa. Este endpoint escucha el episodio, detecta dónde cambia realmente el tema y devuelve una lista limpia de capítulos con título y marca de tiempo, la misma estructura que los oyentes esperan en cualquier reproductor de podcasts moderno.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
Por qué los capítulos importan más que la transcripción completa
Casi ningún oyente lee una transcripción entera, pero casi todos miran los marcadores de capítulo para decidir si adelantan o retroceden. Los editores llevan años sabiéndolo y solían escribir los capítulos a mano, recorriendo la forma de onda para adivinar dónde termina un segmento y empieza el siguiente. Ese trabajo manual es lento, subjetivo y lo primero que se recorta cuando el calendario de publicación aprieta, justo el hueco que cierra esta API.
Qué ocurre después de enviar el archivo
Envía un enlace al audio (o el archivo mismo) a /audio/chapters y la tarea corre de forma asíncrona: el audio se transcribe internamente, se detectan los cambios de tema por variaciones de vocabulario y ritmo, y cada segmento recibe un título breve y legible junto con su marca de inicio en segundos. No hay que hacer sondeo manual: entrega una URL de webhook para recibir la lista de capítulos terminada, o la recoge desde un enlace firmado válido por 24 horas.
De dónde vienen los marcadores de capítulo
Los capítulos con marca de tiempo vienen de las listas de pistas de CD y la selección de escenas de DVD, mucho antes de que existiera el podcasting; los feeds RSS adoptaron después la misma idea con la etiqueta de capítulos del Podcast Namespace, que permite a apps como Apple Podcasts u Overcast mostrar segmentos clicables. Este endpoint entrega los datos en un formato que encaja directamente con esa convención, así que no está inventando un formato nuevo, sino automatizando uno en el que los podcasters ya confían.
Quién usa este endpoint
Podcasters independientes que publican cada semana sin equipo editorial, redes que producen decenas de programas donde capitular a mano no escala, y plataformas que dejan a los creadores subir audio en bruto y esperan una salida estructurada, todos usan esta tarea de la misma manera: como una llamada más dentro de un flujo de publicación mayor.
Cómo encaja en su flujo de trabajo
Como la respuesta es un dato estructurado y sencillo, títulos y marcas de tiempo en segundos, se inserta directamente en una etiqueta de capítulos RSS, en la descripción de un vídeo o en una columna de base de datos sin reformatear nada. Encádenela después de la subida en bruto y antes de la API Notas de Episodio para un lanzamiento totalmente automatizado: entra audio, salen capítulos y notas.
Qué puede hacer con ella
Automatización de podcast semanal
Conecte cada episodio nuevo directamente desde su herramienta de grabación a este endpoint apenas se exporta, para que los capítulos estén listos antes de que el editor abra el archivo.
Limpieza del catálogo histórico
Procese cientos de episodios antiguos por lote para añadir marcadores de capítulo que su programa nunca tuvo, mejorando la navegación para oyentes de siempre.
Plataformas de hosting de podcasts
Ofrezca la generación de capítulos como función integrada para creadores que suben audio en bruto, sin mantener su propia infraestructura de análisis de audio.
Reaprovechar vídeo como podcast
Genere capítulos a partir de la pista de audio de un livestream o webinar grabado antes de publicar la versión en vídeo, manteniendo ambos formatos coherentes.
Preguntas frecuentes
¿La API para generar capítulos de podcast funciona con cualquier duración de audio?
Sí, los episodios largos se procesan sin un paso de carga aparte; el precio escala según los minutos de audio, así que el costo es predecible sin importar la duración.
¿En qué formato se devuelven los capítulos?
Recibe una lista estructurada de títulos con marcas de inicio en segundos, que encaja directamente con la convención de capítulos del Podcast Namespace usada por la mayoría de apps de podcast.
¿Hay un plan gratuito para probarla?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cómo se cobra la solicitud?
Una tarifa base pequeña por solicitud más una tarifa por minuto de audio, ambas publicadas en esta página. Una tarea que falla tras los reintentos nunca se cobra.
¿Cómo recibo el resultado?
Por una llamada de webhook firmada cuando la tarea termina, o por un enlace firmado válido durante 24 horas si prefiere consultarlo usted mismo. Elija lo que mejor encaje con su infraestructura.
¿Puedo editar los títulos de los capítulos después?
La respuesta es JSON plano, así que títulos y marcas de tiempo se pueden ajustar antes de publicar: la API le da un borrador sólido, no un resultado final cerrado.
¿Funciona con entrevistas de varios participantes?
Sí, los límites de capítulo se basan en cambios de tema y ritmo, no en la identidad del hablante, así que los formatos con varios invitados funcionan sin configuración extra.
¿Se conserva mi audio después de procesarlo?
No. Los archivos se eliminan tras el período de retención y nunca se usan para entrenar modelos: el audio solo existe el tiempo necesario para producir sus capítulos.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/audio/chapters \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"audio":"https://ejemplo.com/audio.mp3"}'const res = await fetch("https://api.kit.forhosting.com/audio/chapters", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"audio": "https://ejemplo.com/audio.mp3"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/chapters",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"audio": "https://ejemplo.com/audio.mp3"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/chapters", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"audio":"https://ejemplo.com/audio.mp3"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"audio":"https://ejemplo.com/audio.mp3"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/chapters", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"audio": "https://ejemplo.com/audio.mp3"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.chapters",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 200 |
max_minutes | 180 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |