PoradnikiAutor: Péter Nagy

Jak pobrać transkrypcję z YouTube przez API (curl, Python, JavaScript)

Pobierz transkrypcję dowolnego publicznego filmu z YouTube jednym zapytaniem HTTP. Działające przykłady w curl, Pythonie i JavaScripcie, formaty, kody błędów i koszty.

Podsumuj film z YouTube teraz

Wklej link i otrzymaj najważniejsze punkty z klikalnymi znacznikami czasu.

Aby pobrać transkrypcję z YouTube przez API, wyślij jedno zapytanie HTTP z adresem URL lub identyfikatorem filmu i kluczem API, a transkrypcję odczytaj z odpowiedzi. Ten poradnik pokazuje zapytanie w curl, Pythonie i JavaScripcie z użyciem API transkrypcji sum.video, a potem omawia formaty, błędy i koszty.

Co zwraca API

Endpoint zwraca istniejące napisy publicznego filmu z YouTube, napisane przez autora albo wygenerowane automatycznie przez YouTube. Nie zamienia dźwięku na tekst. Jeśli film nie ma napisów, dostajesz błąd zamiast zgadywania (więcej niżej).

Podstawy:

  • Endpoint: POST https://sum.video/api/v1/transcript (GET też działa)
  • Uwierzytelnianie: twój klucz w nagłówku X-API-Key albo Authorization: Bearer <key>
  • Dane wejściowe: url lub video_id
  • Opcjonalnie lang (domyślnie en)
  • Opcjonalnie format: json, text lub srt

Odpowiedź podaje też prawdziwy język ścieżki napisów i informację, czy została wygenerowana automatycznie, więc wiesz, jakiej jakości się spodziewać.

Krok 1: Utwórz klucz API

Zaloguj się i utwórz klucz w panelu API (/dashboard/api w sum.video). Możesz mieć do 5 aktywnych kluczy, co przydaje się do oddzielenia klucza testowego od produkcyjnego. Pierwszy klucz dostaje 10 darmowych kredytów, czyli tyle, ile na 5 transkrypcji, więc wszystko poniżej możesz przetestować bez kosztów.

Podsumuj film z YouTube teraz

Wklej link i otrzymaj najważniejsze punkty z klikalnymi znacznikami czasu.

Krok 2: Wyślij pierwsze zapytanie

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"}'

Ponieważ GET też działa, możesz testować ze skryptu, który tylko buduje adresy URL. Klucz lepiej podawać w nagłówku, żeby nie trafił do logów.

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+ lub przeglądarka)

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());
}

Trzymaj klucz na serwerze. Klucz umieszczony w kodzie przeglądarki może skopiować każdy, kto otworzy narzędzia deweloperskie.

Krok 3: Wybierz odpowiedni format

Format Co dostajesz Do czego
json Segmenty, każdy z offset i duration w sekundach Znaczniki czasu, linki do konkretnego momentu, dzielenie według czasu
text Zwykła transkrypcja Prompty, indeksy wyszukiwania, streszczenia
srt Zawartość pliku napisów Edytory wideo, narzędzia do napisów

Jeśli chcesz linkować do momentu w filmie, użyj json i zbuduj link z offset segmentu. Do karmienia modelu językowego text jest mniejszy i prostszy. Jeśli później chcesz ręcznie przeszukiwać transkrypcję, zobacz jak szukać w transkrypcji filmu z YouTube.

Krok 4: Wybierz język

lang domyślnie ma wartość en. Ustaw język, który chcesz, na przykład de lub es. Odpowiedź podaje język ścieżki, która faktycznie została zwrócona, więc sprawdzaj go zamiast zakładać. Film często ma tylko jedną ścieżkę napisów, a API zwraca prawdziwe napisy, więc nie tłumaczy ich za ciebie.

Krok 5: Obsłuż błędy

Zaplanuj te przypadki od pierwszego dnia:

  • 404 no_transcript: film nie ma napisów albo jest transmisją na żywo, filmem prywatnym lub usuniętym. Nie ma czego ponawiać. Pomiń go albo poproś użytkownika o inny film.
  • 402 budget_exceeded: osiągnięto skonfigurowany miesięczny limit kredytów. Zobacz następną sekcję.
  • Limit zapytań: każdy klucz pozwala na 60 zapytań na minutę. Rozłóż zadania wsadowe w czasie i zwalniaj, gdy zostaniesz ograniczony.
  • Błędy po naszej stronie: ponów z krótkim opóźnieniem. Nic nie kosztują.

Prosta pętla z ponawianiem przy błędach serwera i pomijaniem przy 404 pokrywa większość potrzeb produkcyjnych.

Ile to kosztuje

Każda transkrypcja kosztuje 2 kredyty. Zapytania, które nie zwracają transkrypcji albo kończą się błędem po stronie sum.video, nic nie kosztują, więc 404 nigdy nie uszczupla salda. Saldo sprawdzisz przez GET /api/v1/credits.

Kredyty sprzedajemy w jednorazowych pakietach, które nigdy nie wygasają:

Pakiet Cena Za transkrypcję
100 kredytów $4.49 $0.090
500 kredytów $13.99 $0.056
2,000 kredytów $37.99 $0.038
5,000 kredytów $74.99 $0.030

Subskrybenci Pro dostają też 100 bonusowych kredytów miesięcznie. Przy większym obciążeniu, na przykład wczytywaniu całego kanału, przeczytaj scenariusz transkrypcje z YouTube dla aplikacji RAG na dużą skalę, który omawia automatyczne doładowanie i budżety. Zobacz też cennik.

Ograniczenia, które warto znać przed budową

  • Działają tylko filmy z napisami. To główny powód 404 no_transcript.
  • Napisy generowane automatycznie mogą zawierać błędy, szczególnie w nazwach, akcentach i terminach technicznych.
  • API zwraca tylko transkrypcję. Nie streszcza. Jeśli chcesz streszczeń, znaczników czasu i czatu na wierzchu transkrypcji, robi to streszczanie YouTube, a narzędzie do transkrypcji to wersja bez kodowania dla jednego filmu.
  • Oficjalne YouTube Data API nie jest tu zamiennikiem. Jego metoda pobierania napisów wymaga uprawnień do edycji filmu, więc jest przeznaczona dla twoich własnych filmów (dokumentacja Google).

Źródła

Często zadawane pytania

Czy mogę pobrać transkrypcję z YouTube bez oficjalnego YouTube Data API?

Tak. API transkrypcji sum.video przyjmuje adres URL lub identyfikator filmu i zwraca istniejące napisy, bez projektu w Google Cloud. Metoda pobierania napisów od Google wymaga uprawnień do edycji filmu, więc nadaje się tylko do twoich własnych filmów.

Czy API transkrybuje filmy bez napisów?

Nie. Zwraca istniejące napisy z YouTube, ręczne lub automatyczne. Filmy bez napisów, transmisje na żywo, filmy prywatne i usunięte zwracają 404 no_transcript, a takie zapytanie nic nie kosztuje.

Ile kosztuje jedna transkrypcja?

2 kredyty za transkrypcję. Pakiety zaczynają się od 100 kredytów za $4.49 ($0.090 za transkrypcję) i sięgają 5,000 kredytów za $74.99 ($0.030 za transkrypcję), a kredyty nigdy nie wygasają.

Jakie formaty wyjściowe są dostępne?

json (segmenty z offset i duration w sekundach), text i srt. Ustaw pole format w zapytaniu.

Jak przetestować to za darmo?

Pierwszy klucz API dostaje 10 darmowych kredytów, czyli 5 transkrypcji. Subskrybenci Pro dostają dodatkowo 100 bonusowych kredytów miesięcznie.

Podsumuj film z YouTube teraz

Wklej link i otrzymaj najważniejsze punkty z klikalnymi znacznikami czasu.

api transkrypcji youtubeporadnik apipythonjavascriptcurl

Powiązane teksty

Najnowsze wpisy

Podsumuj dowolny film z YouTube w kilka sekund

Wypróbuj sum.video