sum.video logosum.video/
НаръчнициОт Péter Nagy

Как да вземеш транскрипт от YouTube през API (curl, Python, JavaScript)

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

Резюмирай YouTube видео сега

Постави линк и вземи ключовите моменти с кликаеми времеви отметки.

За да вземеш транскрипт от 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 транскрипта, така че можеш да изпробваш всичко по-долу без разход.

Резюмирай YouTube видео сега

Постави линк и вземи ключовите моменти с кликаеми времеви отметки.

Стъпка 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 видео сега

Постави линк и вземи ключовите моменти с кликаеми времеви отметки.

api за транскрипти от youtubeръководство за apipythonjavascriptcurl

Свързани статии

Последни публикации

Резюмирай всяко YouTube видео за секунди

Изпробвай sum.video