ForHosting KIT · Audio y voz

Formatear capítulos de audio para apps

Tres capítulos que empiezan en 0, 120 y 1800 segundos se convierten en un solo archivo que las apps de podcast leen para mostrar un índice y saltar por el episodio. Los tiempos deben avanzar siempre, o no se exporta nada. Gratis en su navegador.

  • Gratis
  • Funciona en su navegador
  • Sin registro
  • Sus datos no salen de su equipo
Úselo desde WebAPIEmailTelegramApp pronto

Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.

Quien produce el episodio ya conoce los títulos de sección y el instante de inicio de cada una; lo que necesita es una exportación correcta y legible por la app, con campos startTime en camelCase, portada y enlaces opcionales, y la garantía de que las marcas de tiempo nunca retroceden.

Qué aporta un archivo de capítulos a quien escucha

Las apps de podcast que admiten capítulos no los leen del propio archivo de audio. Descargan un pequeño archivo aparte, enlazado desde el episodio en su feed, y lo usan para mostrar un índice, saltar a cada sección y cambiar la imagen mientras suena el episodio. Cada capítulo necesita un tiempo de inicio en segundos desde el principio del audio; el título es muy recomendable para que se vean nombres legibles. También puede añadir una imagen y un enlace a cualquier capítulo, marcar uno como silencioso para que no aparezca en la lista y fijar un tiempo de fin si lo desea. Como las apps descargan el archivo al reproducir, puede corregir un título o añadir una imagen después de publicar sin volver a codificar el episodio.

Cómo preparar los capítulos y evitar errores

Escriba las secciones en orden, cada una con su título y el segundo en que empieza, por ejemplo una introducción en 0, el tema principal en 120 y el cierre en 1800. La herramienta las convierte al formato estándar y devuelve el texto listo para alojar en una dirección web estable. El error más común es un tiempo de inicio que se repite o retrocede. La herramienta nunca reordena los capítulos por usted, porque un reordenamiento silencioso podría ocultar un fallo y poner la imagen equivocada en el segmento equivocado; en su lugar se detiene e indica qué fila está fuera de orden.

Cómo es un archivo de capítulos de podcast

El espacio de nombres Podcasting 2.0 apunta cada episodio a un archivo externo de capítulos con el tipo MIME application/json+chapters. Cada capítulo necesita al menos startTime como número decimal en segundos desde el inicio del audio; title es muy recomendable para que la audiencia vea un índice legible. Los campos opcionales de capítulo incluyen img para la portada por sección, url para una página o notas del episodio, toc en false para marcadores silenciosos solo de metadatos, y endTime cuando desee un final explícito.

El orden de los capítulos se valida, no se adivina: la capacidad nunca reordena tiempos desordenados, porque un reorden silencioso podría ocultar errores de producción y poner la portada equivocada en el segmento incorrecto. En su lugar exige tiempos de inicio estrictamente crecientes y falla con claridad cuando una fila posterior es igual o anterior a la previa. Las apps descargan el archivo al reproducir, de modo que puede corregir títulos o añadir imágenes tras publicar sin re-codificar el episodio.

¿Qué ocurre si los tiempos de inicio no son estrictamente crecientes?

Se rechazan tiempos iguales o decrecientes para que las apps de podcast no reciban marcadores desordenados.

¿Puedo incluir imágenes y enlaces por capítulo?

Sí. Las cadenas opcionales img y url de cada capítulo se convierten en los campos img y url de Podcasting 2.0. Las cadenas vacías se omiten de la exportación.

¿Cómo añado los capítulos al feed de mi podcast?

Aloje el archivo que le devuelve la herramienta en una dirección web estable y enlácelo desde el episodio de su feed como archivo de capítulos. Las apps compatibles lo descargan cuando se reproduce el episodio.

¿Puedo cambiar un título después de publicar el episodio?

Sí. Las apps descargan el archivo de capítulos al reproducir, así que puede corregir títulos o añadir imágenes más tarde y alojar el archivo nuevo en la misma dirección, sin volver a codificar el audio.

¿Puede un capítulo quedar fuera del índice?

Sí. Márquelo como silencioso y funcionará como una marca que las apps conservan sin mostrarla a quien escucha. Por defecto todos los capítulos aparecen en la lista, así que solo cambie los que quiera ocultar.

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.

POSThttps://api.kit.forhosting.com/audio/audio-chapter-export-format

¿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, por email y desde Telegram — y pronto también desde nuestra app.

curl -X POST https://api.kit.forhosting.com/audio/audio-chapter-export-format \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"chapters":[{"title":"Intro","start_time":0},{"title":"Main topic","start_time":120,"img":"https://example.com/art/main.jpg","url":"https://example.com/notes/main"},{"title":"Outro","start_time":1800}]}'
{
  "chapters": [
    {
      "title": "Intro",
      "start_time": 0
    },
    {
      "title": "Main topic",
      "start_time": 120,
      "img": "https://example.com/art/main.jpg",
      "url": "https://example.com/notes/main"
    },
    {
      "title": "Outro",
      "start_time": 1800
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "audio.audio_chapter_export_format",
  "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.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

max_mb200
max_minutes180
HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

Las aplicaciones de podcast compatibles con capítulos Podcasting 2.0 esperan un pequeño archivo JSON enlazado desde el ítem RSS del episodio, no marcadores embebidos en el MP3. Esta capacidad recibe sus filas de capítulos ordenadas—título más tiempo de inicio en segundos, con imagen y URL opcionales por capítulo—y emite el objeto chapters versionado estándar más una cadena json_text con formato legible que puede hospedar y referenciar con la etiqueta podcast:chapters. Si los tiempos de inicio no son estrictamente crecientes, la tarea falla con invalid_input para que marcadores incorrectos no lleguen al feed.

Cómo es el JSON de capítulos Podcasting 2.0

Ese archivo es un objeto JSON cuyas claves obligatorias son version (habitualmente 1.2.0) y chapters, un array de marcadores ordenados por startTime ascendente. Campos opcionales a nivel de archivo como author, title, podcastName y description ayudan a reproductores web y archivos sin cambiar cómo las apps saltan por el audio. Este exportador mapea su entrada por filas—start_time y title en cada capítulo, img y url opcionales—a esa forma camelCase para que no edite llaves a mano ni olvide la cadena de versión. Hospede el json_text resultante en una URL HTTPS estable y añada podcast:chapters con type application/json+chapters en el ítem.

Contrato de entrada, forma de respuesta y reglas de validación

Las claves de salida opcionales se omiten por completo en lugar de ponerse a null. Envíe por POST un cuerpo JSON con un array chapters obligatorio de al menos un objeto. Cada objeto debe incluir title como cadena no vacía y start_time como número finito no negativo en segundos (se aceptan alias como startTime en cada fila). Los campos opcionales por capítulo son img y url como cadenas no vacías, toc como booleano (false marca un capítulo silencioso; true es el valor por defecto y se omite en la exportación), y end_time como número no negativo no inferior al inicio de ese capítulo. Las cadenas opcionales a nivel de archivo—version (predeterminado 1.2.0), episode_title, author, podcast_name y description—se copian al objeto chapters cuando están presentes. En caso de éxito el cuerpo devuelve version, chapter_count, chapters como el array Podcasting 2.0 con claves startTime, json_text como el archivo con formato listo para subir, mime_type en application/json+chapters, y los metadatos de episodio aportados bajo author, title, podcast_name y description. Los fallos de validación lanzan invalid_input y no se facturan: chapters ausente, title vacío, tiempos negativos o no finitos, fin anterior al inicio, más de quinientas filas, o tiempos de inicio que no son estrictamente crecientes. Ejemplo: tres filas en cero, ciento veinte y mil ochocientos segundos con imagen y enlace en el capítulo del medio producen un array chapters de tres entradas y una cadena json_text que coincide en estructura con los ejemplos públicos de Podcasting 2.0.

Dónde un exportador determinista de capítulos aporta valor

Las herramientas de transcripción o de sugerencia de capítulos que emiten pares de título y segundos pueden canalizar su resultado aquí para obtener el formato orientado a la app sin incrustar el conocimiento de Podcasting 2.0 en cada cliente. La validación fallida no consume saldo. Combine este exportador con productos aparte de generación de capítulos por ASR cuando necesite inventar marcas a partir del audio; use esta ruta cuando ya conozca los marcadores y solo precise una exportación conforme al estándar. Los productores independientes que terminan un episodio en un DAW ya tienen marcas de tiempo en una hoja de cálculo o en las notas del programa; necesitan un archivo JSON correcto sin aprender el espacio de nombres a prueba y error en cada app. Como la implementación es pure parse de nivel A, cada llamada exitosa cuesta el precio base publicado $0.002 sin tokens de modelo y sin red saliente. Mantenga los títulos de capítulo lo bastante cortos para las interfaces de índice en móvil, prefiera URL HTTPS absolutas para img y url, y vuelva a ejecutar el formateador tras cada edición para que el orden estrictamente creciente siga aplicándose.

Capítulos listos para publicar desde la tabla de notas

Pegue filas de título y tiempo de inicio desde el esquema del episodio, añada enlaces de portada opcionales y descargue el json_text Podcasting 2.0 para hospedarlo junto al MP3.

Comprobaciones en la tubería de CMS y hosting

Llame a la API desde su trabajo de publicación para validar que la lista de capítulos de cada episodio tiene tiempos estrictamente crecientes antes de escribir la etiqueta RSS podcast:chapters.

Puente de marcadores simples al JSON de la app

Convierta la salida de título más segundos de editores o herramientas de transcripción en capítulos startTime camelCase sin editar a mano las llaves del JSON.

¿Qué formato produce la exportación de capítulos de audio?

Capítulos JSON Podcasting 2.0: una cadena version (predeterminado 1.2.0), un array chapters con startTime y title (más img, url, toc y endTime opcionales), y un archivo json_text con formato legible y tipo MIME application/json+chapters.

¿Cómo adjunta el archivo a su feed RSS?

Hospede json_text en una URL HTTPS pública y añada <podcast:chapters url="…" type="application/json+chapters" /> en el ítem del episodio. Las apps obtienen el archivo al reproducir.

¿Cuánto cuesta formatear capítulos de audio?

La herramienta del navegador es gratuita. Las peticiones API usan saldo prepago de KIT a $0.002 por llamada exitosa; la entrada no válida no se factura.

Ver la documentación completa del KIT →