Kako dobiti transkript s YouTubea pomoću API-ja (curl, Python, JavaScript)
Dohvati transkript bilo kojeg javnog videa na YouTubeu jednim HTTP zahtjevom. Radni primjeri u curlu, Pythonu i JavaScriptu, formati izlaza, kodovi pogrešaka i troškovi.

Da bi dobio transkript s YouTubea pomoću API-ja, pošalji jedan HTTP zahtjev s URL-om ili ID-jem videa i API ključem te pročitaj transkript iz odgovora. Ovaj vodič prikazuje zahtjev u curlu, Pythonu i JavaScriptu s pomoću API-ja za transkripte sum.videa, a zatim obrađuje formate, pogreške i troškove.
Što API vraća
Krajnja točka vraća postojeće titlove javnog videa na YouTubeu, bilo da ih je napisao autor ili ih je automatski generirao YouTube. Ne transkribira zvuk. Ako video nema titlove, umjesto nagađanja dobivaš pogrešku (više u nastavku).
Osnove:
- Krajnja točka:
POST https://sum.video/api/v1/transcript(radi iGET) - Autentikacija: tvoj ključ u zaglavlju
X-API-KeyiliAuthorization: Bearer <key> - Ulaz:
urlilivideo_id - Neobavezni
lang(zadanoen) - Neobavezni
format:json,textilisrt
Odgovor također navodi pravi jezik zapisa titlova i je li automatski generiran, pa znaš kakvu kvalitetu očekivati.
Korak 1: Izradi API ključ
Prijavi se i izradi ključ na API nadzornoj ploči (/dashboard/api na sum.videu). Možeš imati do 5 aktivnih ključeva, što je zgodno za odvajanje testnog od produkcijskog ključa. Tvoj prvi ključ dolazi s 10 besplatnih kredita, dovoljno za 5 transkripata, pa sve u nastavku možeš isprobati bez troška.
Korak 2: Pošalji prvi zahtjev
curl
curl -X POST https://sum.video/api/v1/transcript \
-H "X-API-Key: $SUMVIDEO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "lang": "en", "format": "text"}'
Budući da radi i GET, možeš testirati iz skripte koja samo gradi URL-ove. Ključ je bolje poslati u zaglavlju kako ne bi završio u zapisnicima.
Python
import os
import requests
resp = requests.post(
"https://sum.video/api/v1/transcript",
headers={"X-API-Key": os.environ["SUMVIDEO_API_KEY"]},
json={"video_id": "dQw4w9WgXcQ", "lang": "en", "format": "text"},
timeout=30,
)
if resp.status_code == 404:
print("No captions for this video")
else:
resp.raise_for_status()
print(resp.text)
JavaScript (Node 18+ ili preglednik)
const resp = await fetch("https://sum.video/api/v1/transcript", {
method: "POST",
headers: {
"X-API-Key": process.env.SUMVIDEO_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
video_id: "dQw4w9WgXcQ",
lang: "en",
format: "text",
}),
});
if (resp.status === 404) {
console.log("No captions for this video");
} else if (!resp.ok) {
throw new Error(`Request failed: ${resp.status}`);
} else {
console.log(await resp.text());
}
Čuvaj ključ na poslužitelju. Ključ u kodu preglednika može kopirati svatko tko otvori alate za razvojne programere.
Korak 3: Odaberi pravi format
| Format | Što dobivaš | Najbolje za |
|---|---|---|
json |
Segmenti, svaki s offset i duration u sekundama |
Vremenske oznake, poveznice na određeni trenutak, podjelu po vremenu |
text |
Običan transkript | Upite, indekse pretraživanja, sažetke |
srt |
Sadržaj datoteke s titlovima | Uređivače videa, alate za titlove |
Ako planiraš povezivati na trenutak u videu, koristi json i poveznicu izgradi iz offset segmenta. Za hranjenje LLM-a text je manji i jednostavniji. Ako kasnije želiš ručno pretraživati unutar transkripta, pogledaj kako pretraživati unutar transkripta videa na YouTubeu.
Korak 4: Odaberi jezik
lang je zadano en. Postavi ga na jezik koji želiš, na primjer de ili es. Odgovor navodi jezik zapisa koji je stvarno vraćen, pa ga provjeri umjesto da pretpostavljaš. Video često ima samo jedan zapis titlova, a API vraća prave titlove, pa ih ne prevodi umjesto tebe.
Korak 5: Obradi pogreške
Računaj na ove slučajeve od prvog dana:
404 no_transcript: video nema titlove ili je prijenos uživo, privatni video ili uklonjeni video. Nema što ponovno pokušavati. Preskoči ga ili traži od korisnika drugi video.402 budget_exceeded: dosegnuo si mjesečno ograničenje kredita koje si postavio. Vidi sljedeći odjeljak.- Ograničenje brzine: svaki ključ dopušta 60 zahtjeva u minuti. Rasporedi skupne zadatke i uspori kad te ograniče.
- Greške s naše strane: pokušaj ponovno nakon kratke stanke. Ne koštaju ništa.
Jednostavna petlja koja ponavlja kod pogrešaka poslužitelja i preskače kod 404 pokriva većinu produkcijskih potreba.
Koliko košta
Svaki transkript košta 2 kredita. Zahtjevi koji ne vrate transkript ili ne uspiju sa strane sum.videa ne koštaju ništa, pa 404 nikad ne prazni tvoj saldo. Saldo možeš provjeriti s GET /api/v1/credits.
Krediti se prodaju u jednokratnim paketima koji nikad ne istječu:
| Paket | Cijena | Po transkriptu |
|---|---|---|
| 100 kredita | $4.49 | $0.090 |
| 500 kredita | $13.99 | $0.056 |
| 2,000 kredita | $37.99 | $0.038 |
| 5,000 kredita | $74.99 | $0.030 |
Pretplatnici na Pro svakog mjeseca dobivaju i 100 bonus kredita. Za teža opterećenja, poput učitavanja cijelog kanala, pročitaj scenarij transkripti s YouTubea za RAG aplikaciju u velikom opsegu, koji obrađuje automatsko nadopunjavanje i proračune. Pogledaj i cijene.
Ograničenja koja treba znati prije gradnje
- Rade samo videi s titlovima. To je glavni razlog za
404 no_transcript. - Automatski generirani titlovi mogu sadržavati pogreške, osobito kod imena, naglasaka i stručnih pojmova.
- API vraća samo transkript. Ne sažima. Ako želiš sažetke, vremenske oznake i razgovor povrh transkripta, to radi YouTube sažimač, a alat za transkripte je verzija bez koda za jedan video.
- Službeni YouTube Data API ovdje nije zamjena. Njegova metoda preuzimanja titlova zahtijeva dopuštenje za uređivanje videa, pa je namijenjena tvojim vlastitim videima (Googleova dokumentacija).
Izvori
Često postavljana pitanja
Mogu li dobiti transkript s YouTubea bez službenog YouTube Data API-ja?
Da. API za transkripte sum.videa prima URL ili ID videa i vraća postojeće titlove, bez potrebe za Google Cloud projektom. Googleova vlastita metoda preuzimanja titlova zahtijeva dopuštenje za uređivanje videa, pa odgovara samo tvojim vlastitim videima.
Transkribira li API videe koji nemaju titlove?
Ne. Vraća postojeće YouTube titlove, ručno napisane ili automatski generirane. Videi bez titlova, prijenosi uživo, privatni i uklonjeni videi vraćaju 404 no_transcript, a taj zahtjev ne košta ništa.
Koliko košta jedan transkript?
2 kredita po transkriptu. Paketi idu od 100 kredita za $4.49 ($0.090 po transkriptu) do 5,000 kredita za $74.99 ($0.030 po transkriptu), a krediti nikad ne istječu.
Koji su formati izlaza dostupni?
json (segmenti s offset i duration u sekundama), text i srt. Postavi polje format u zahtjevu.
Kako to mogu isprobati besplatno?
Tvoj prvi API ključ dolazi s 10 besplatnih kredita, to jest 5 transkripata. Pretplatnici na Pro dodatno dobivaju 100 bonus kredita svakog mjeseca.
Povezano štivo
Najbolji API-ji za YouTube transkripte u usporedbi: sum.video, Supadata, Transcribr i Python bibliotekaČetiri načina za dohvaćanje YouTube transkripata u kodu, uspoređena po cijeni, ograničenjima i pouzdanosti: sum.video, Supadata, Transcribr i youtube-transcript-api.
Transkripti s YouTubea za RAG aplikaciju u velikom opsegu: krediti, automatsko nadopunjavanje i proračuniProgramerka učitava 10 000 videa s YouTubea u RAG aplikaciju. Pogledaj trošak, izračun ograničenja brzine i kako automatsko nadopunjavanje i proračuni održavaju izdatke predvidljivima.
Najnovije objave
Najbolji API-ji za YouTube transkripte u usporedbi: sum.video, Supadata, Transcribr i Python bibliotekaČetiri načina za dohvaćanje YouTube transkripata u kodu, uspoređena po cijeni, ograničenjima i pouzdanosti: sum.video, Supadata, Transcribr i youtube-transcript-api.
Transkripti s YouTubea za RAG aplikaciju u velikom opsegu: krediti, automatsko nadopunjavanje i proračuniProgramerka učitava 10 000 videa s YouTubea u RAG aplikaciju. Pogledaj trošak, izračun ograničenja brzine i kako automatsko nadopunjavanje i proračuni održavaju izdatke predvidljivima.