Как да вземеш транскрипт от YouTube през API (curl, Python, JavaScript)
Вземи транскрипта на всяко публично видео в YouTube с една HTTP заявка. Работещи примери на curl, Python и JavaScript, изходни формати, кодове за грешки и цени.

За да вземеш транскрипт от YouTube през API, изпрати една HTTP заявка с URL адреса или идентификатора на видеото и API ключ, а транскрипта прочети от отговора. Това ръководство показва заявката в curl, Python и JavaScript с API за транскрипти на sum.video, а после разглежда форматите, грешките и цените.
Какво връща API
Крайната точка връща съществуващите субтитри на публично видео в YouTube, написани от автора или генерирани автоматично от YouTube. Тя не разпознава аудио. Ако видеото няма субтитри, получаваш грешка вместо предположение (повече по-долу).
Основите:
- Крайна точка:
POST https://sum.video/api/v1/transcript(GETсъщо работи) - Удостоверяване: ключът ти в заглавката
X-API-KeyилиAuthorization: Bearer <key> - Вход:
urlилиvideo_id - По избор
lang(по подразбиранеen) - По избор
format:json,textилиsrt
Отговорът казва и реалния език на субтитровата писта и дали е генерирана автоматично, така че знаеш какво качество да очакваш.
Стъпка 1: Създай API ключ
Влез и създай ключ в таблото за API (/dashboard/api на sum.video). Можеш да имаш до 5 активни ключа, което е удобно за разделяне на тестов от работен ключ. Първият ти ключ идва с 10 безплатни кредита, достатъчни за 5 транскрипта, така че можеш да изпробваш всичко по-долу без разход.
Стъпка 2: Направи първата си заявка
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"}'
Тъй като GET също работи, можеш да тестваш и от скрипт, който само изгражда URL адреси. По-добре подавай ключа в заглавката, за да не попадне в логовете.
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+ или браузър)
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());
}
Пази ключа на сървър. Ключ в код за браузър може да бъде копиран от всеки, който отвори инструментите за разработчици.
Стъпка 3: Избери подходящия формат
| Формат | Какво получаваш | Най-подходящ за |
|---|---|---|
json |
Сегменти, всеки с offset и duration в секунди |
Времеви отметки, връзки към момент от видеото, разделяне по време |
text |
Обикновен транскрипт | Подканващи текстове, търсещи индекси, резюмета |
srt |
Съдържание на файл със субтитри | Видеоредактори, инструменти за субтитри |
Ако смяташ да правиш връзки към момент във видеото, използвай json и изгради връзката от offset на сегмента. За подаване към езиков модел text е по-малък и по-прост. Ако по-късно искаш да търсиш ръчно в транскрипт, виж как да търсиш в транскрипта на видео в YouTube.
Стъпка 4: Избери език
lang е по подразбиране en. Задай желания език, например de или es. Отговорът съобщава езика на реално върнатата писта, затова го провери, вместо да предполагаш. Видеото често има само една субтитрова писта, а API връща реални субтитри, така че не ги превежда вместо теб.
Стъпка 5: Обработи грешките
Предвиди тези случаи от първия ден:
404 no_transcript: видеото няма субтитри или е стрийм на живо, частно или изтрито видео. Няма какво да се повтаря. Пропусни го или поискай от потребителя друго видео.402 budget_exceeded: достигнал си зададения месечен лимит на кредитите. Виж следващия раздел.- Ограничение на честотата: всеки ключ позволява 60 заявки в минута. Разпредели пакетните задачи и намали темпото, когато те ограничат.
- Неуспехи от наша страна: опитай отново след кратко забавяне. Те не струват нищо.
Един прост цикъл, който повтаря при грешки на сървъра и пропуска при 404, покрива повечето нужди в производство.
Колко струва
Всеки транскрипт струва 2 кредита. Заявките, които не връщат транскрипт или се провалят от страна на sum.video, не струват нищо, така че 404 никога не изчерпва баланса ти. Можеш да провериш баланса с GET /api/v1/credits.
Кредитите се продават в еднократни пакети, които никога не изтичат:
| Пакет | Цена | На транскрипт |
|---|---|---|
| 100 кредита | $4.49 | $0.090 |
| 500 кредита | $13.99 | $0.056 |
| 2,000 кредита | $37.99 | $0.038 |
| 5,000 кредита | $74.99 | $0.030 |
Абонатите на Pro получават и 100 бонус кредита всеки месец. За по-тежки натоварвания, като зареждането на цял канал, прочети сценария транскрипти от YouTube за RAG приложение в голям мащаб, който разглежда автоматичното зареждане и бюджетите. Виж и цените.
Ограничения, които да знаеш, преди да строиш
- Работят само видеа със субтитри. Това е основната причина за
404 no_transcript. - Автоматично генерираните субтитри могат да съдържат грешки, особено при имена, акценти и технически термини.
- API връща само транскрипта. Не прави резюмета. Ако искаш резюмета, времеви отметки и чат върху транскрипт, това прави обобщителят за YouTube, а инструментът за транскрипти е версията без код за едно видео.
- Официалният YouTube Data API тук не е заместител. Методът му за изтегляне на субтитри изисква право за редактиране на видеото, така че е предназначен за твоите собствени видеа (документация на Google).
Източници
Често задавани въпроси
Мога ли да взема транскрипт от YouTube без официалния YouTube Data API?
Да. API за транскрипти на sum.video приема URL или идентификатор на видео и връща съществуващите субтитри, без да е нужен проект в Google Cloud. Методът на Google за изтегляне на субтитри изисква право за редактиране на видеото, така че върши работа само за твои собствени видеа.
Разпознава ли API видеа без субтитри?
Не. Връща съществуващите субтитри на YouTube, ръчни или автоматично генерирани. Видеа без субтитри, стриймове на живо, частни и изтрити видеа връщат 404 no_transcript, а тази заявка не струва нищо.
Колко струва един транскрипт?
2 кредита на транскрипт. Пакетите вървят от 100 кредита за $4.49 ($0.090 на транскрипт) до 5,000 кредита за $74.99 ($0.030 на транскрипт), а кредитите никога не изтичат.
Какви изходни формати има?
json (сегменти с offset и duration в секунди), text и srt. Задай полето format в заявката.
Как да го изпробвам безплатно?
Първият ти API ключ идва с 10 безплатни кредита, тоест 5 транскрипта. Абонатите на Pro получават допълнително 100 бонус кредита всеки месец.
Свързани статии
Транскрипти от YouTube за RAG приложение в голям мащаб: кредити, автоматично зареждане и бюджетиРазработчичка зарежда 10 000 видеа от YouTube в RAG приложение. Вижте цената, изчислението за ограничението на честотата и как автоматичното зареждане и бюджетите правят разходите предвидими.
Най-добрите API за транскрипти от YouTube в сравнение: sum.video, Supadata, Transcribr и библиотеката за PythonЧетири начина да вземеш транскрипти от YouTube с код, сравнени по цена, ограничения и надеждност: sum.video, Supadata, Transcribr и youtube-transcript-api.
Последни публикации
Транскрипти от YouTube за RAG приложение в голям мащаб: кредити, автоматично зареждане и бюджетиРазработчичка зарежда 10 000 видеа от YouTube в RAG приложение. Вижте цената, изчислението за ограничението на честотата и как автоматичното зареждане и бюджетите правят разходите предвидими.
Най-добрите API за транскрипти от YouTube в сравнение: sum.video, Supadata, Transcribr и библиотеката за PythonЧетири начина да вземеш транскрипти от YouTube с код, сравнени по цена, ограничения и надеждност: sum.video, Supadata, Transcribr и youtube-transcript-api.