Formatti i capitoli podcast con indicatori HH:MM:SS
Trasformi un elenco di titoli e tempi iniziali dei capitoli podcast in indicatori uniformi e pronti da copiare.
Esegui gratis nel browser
Inserisca ogni inizio come numero intero di secondi: il formattatore lo converte in HH:MM:SS seguito dal titolo. Controlla inoltre che ogni capitolo cominci dopo il precedente, individuando tempi duplicati o fuori ordine prima che finiscano nelle note della puntata, nel pannello di hosting, in una consegna di produzione o nel flusso editoriale.
Prepari titoli e tempi iniziali
Crei una riga per ogni capitolo, nello stesso ordine in cui verrà ascoltato dal pubblico. Ogni riga richiede un titolo descrittivo e un tempo iniziale intero e non negativo, misurato in secondi dall'inizio della puntata. Per esempio, l'apertura può partire da 0, una conversazione da 95 e un segmento successivo da 3725. Non deve convertire personalmente questi valori in ore, minuti e secondi. Mantenga ogni titolo su una sola riga, così ciascun indicatore prodotto resterà una riga autonoma e facilmente trasferibile. Gli spazi iniziali e finali vengono rimossi, mentre le parole e le maiuscole interne restano inalterate. Il formattatore accetta fino a 500 righe: sono sufficienti anche per programmi lunghi e molto dettagliati, ma garantiscono comunque un limite chiaro all'input. Verifichi i tempi sull'audio esportato definitivo, non su un montaggio precedente, perché una pubblicità inserita, un'introduzione accorciata o una musica sostituita possono spostare tutti i capitoli successivi. Secondi di partenza accurati sono indispensabili per offrire una navigazione davvero utile.
Comprenda la formattazione e il controllo dell'ordine
Ogni tempo accettato viene suddiviso in modo deterministico in ore, minuti e secondi. Ciascun componente contiene almeno due cifre e genera righe come 00:00:00 - Benvenuto e 01:02:05 - Domande del pubblico. Le ore non ripartono da zero dopo 24, quindi le registrazioni eccezionalmente lunghe mantengono la posizione corretta invece di sembrare iniziate in un nuovo giorno. Il formattatore unisce poi le righe esattamente nell'ordine ricevuto. Prima di restituire qualsiasi risultato verifica che ogni inizio sia strettamente maggiore del valore precedente. Rifiuta tempi uguali, perché due capitoli non possono stabilire un confine sequenziale chiaro nello stesso secondo, e rifiuta un valore inferiore, perché collocherebbe una riga successiva prima nella riproduzione. Il messaggio di errore indica la riga e i secondi in conflitto, facilitando la correzione dell'elenco sorgente. I tempi devono inoltre essere numeri interi, finiti e sicuri entro l'intervallo pubblicato. Queste regole impediscono arrotondamenti nascosti, sequenze ambigue e timestamp non validi in una descrizione apparentemente rifinita.
Pubblichi e automatizzi gli indicatori
Copi gli indicatori restituiti in qualsiasi destinazione che accetti il formato convenzionale HH:MM:SS - Titolo, comprese note di produzione, descrizioni delle puntate, campi di un sistema di gestione dei contenuti e documenti di consegna. Alcuni servizi di hosting o ascolto possono imporre requisiti propri, come l'obbligo di iniziare il primo capitolo da zero o l'uso di un separatore differente. Questo formattatore non inventa regole specifiche di un servizio: produce una base pulita e prevedibile e convalida l'ordine necessario a ogni elenco di capitoli. Prima della pubblicazione consulti le istruzioni aggiornate della destinazione, soprattutto se sono importanti i capitoli cliccabili automatici. In un flusso automatizzato, invii l'elenco dopo che la redazione o la trascrizione ha approvato i tempi finali, quindi archivi o pubblichi la stringa restituita senza un altro passaggio di formattazione. La versione nel browser usa lo stesso risolutore deterministico dell'API, perciò un elenco controllato manualmente produrrà testo identico nell'automazione. L'uso nel browser è gratuito; ogni richiesta API applica il prezzo base visualizzato di $0.002.
Casi d'uso
Preparare la descrizione di una puntata
Converta una scheda capitoli approvata dalla redazione in indicatori coerenti da incollare nelle note o nel modulo di pubblicazione.
Controllare una consegna di produzione
Individui tempi duplicati o fuori ordine prima che la produzione invii l'elenco definitivo a un host o a un cliente.
Uniformare un flusso automatizzato
Applichi la stessa larghezza temporale e lo stesso separatore a ogni puntata senza convertire manualmente i secondi.
Domande frequenti
Quanto costa?
Può eseguirlo gratuitamente nel browser su questa pagina. Ogni richiesta API costa $0.002.
Quale formato viene generato?
Ogni riga usa HH:MM:SS - Titolo, con ore, minuti e secondi composti da almeno due cifre.
Due capitoli possono avere lo stesso tempo iniziale?
No. I tempi devono essere strettamente crescenti, quindi ogni capitolo deve iniziare dopo il precedente.
Il primo capitolo deve iniziare da zero?
No. È accettato qualsiasi inizio non negativo, anche se uno specifico servizio può imporre una regola diversa.
Posso inserire secondi decimali?
No. I tempi iniziali devono essere secondi interi, così non avvengono arrotondamenti nascosti e l'output resta univoco.
I titoli dei capitoli vengono modificati?
Vengono rimossi gli spazi esterni, ma parole e maiuscole restano inalterate. I titoli con interruzioni di riga sono rifiutati.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/audio/podcast-chapter-timestamps \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"chapters":[{"title":"Welcome","start_time":0},{"title":"The main interview","start_time":95},{"title":"Listener questions","start_time":3725}]}'const res = await fetch("https://api.kit.forhosting.com/audio/podcast-chapter-timestamps", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"chapters": [
{
"title": "Welcome",
"start_time": 0
},
{
"title": "The main interview",
"start_time": 95
},
{
"title": "Listener questions",
"start_time": 3725
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/podcast-chapter-timestamps",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"chapters": [
{
"title": "Welcome",
"start_time": 0
},
{
"title": "The main interview",
"start_time": 95
},
{
"title": "Listener questions",
"start_time": 3725
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/podcast-chapter-timestamps", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"chapters":[{"title":"Welcome","start_time":0},{"title":"The main interview","start_time":95},{"title":"Listener questions","start_time":3725}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"chapters":[{"title":"Welcome","start_time":0},{"title":"The main interview","start_time":95},{"title":"Listener questions","start_time":3725}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/podcast-chapter-timestamps", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"chapters": [
{
"title": "Welcome",
"start_time": 0
},
{
"title": "The main interview",
"start_time": 95
},
{
"title": "Listener questions",
"start_time": 3725
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.podcast_chapter_timestamps",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_chapters | 500 |
max_start_time | 359999999 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |