NPM-пакет для транскриптов YouTube: SDK для JavaScript и TypeScript
Извлекайте транскрипты YouTube программно в своих Node.js-приложениях. Установите пакет из NPM, пройдите аутентификацию с API-ключом и начните расшифровывать видео за считаные минуты.
УСТАНОВКА
npm install youtube-transcript-api pnpm add youtube-transcript-api yarn add youtube-transcript-api
БЫСТРЫЙ СТАРТ
import { YouTubeTranscript } from "youtube-transcript-api";
const yt = new YouTubeTranscript({ apiKey: "your_api_key" });
const result = await yt.getTranscript("dQw4w9WgXcQ");
console.log(result.data?.transcript.text);ВОЗМОЖНОСТИ
Полное покрытие V2 API
Транскрибация, пакеты, задачи, опрос статуса: обёртки для каждого эндпоинта.
TypeScript в приоритете
Полные определения типов с поддержкой IntelliSense.
Без зависимостей
Использует нативный fetch. Только Node 18+, ничего лишнего.
Типизированные ошибки
Отдельные классы ошибок для каждого кода ошибки API.
Встроенный опрос статуса
Хелпер waitForJob для асинхронной ASR-транскрибации.
ESM и CommonJS
Работает в обеих модульных системах из коробки.
ТРАНСКРИБАЦИЯ С ПАРАМЕТРАМИ
const result = await yt.transcribe({
video: "dQw4w9WgXcQ",
language: "fr",
source: "manual",
format: {
timestamp: true,
paragraphs: true,
words: false,
},
});
console.log(result.status); // "completed"
console.log(result.data?.transcript.text); // Full transcript text
console.log(result.data?.transcript.language); // "fr"
console.log(result.data?.transcript.segments); // Timestamped segments
console.log(result.credits_used); // Credits consumedПАКЕТНАЯ ОБРАБОТКА (ДО 100 ВИДЕО)
const result = await yt.batch({
video_ids: ["dQw4w9WgXcQ", "jNQXAC9IVRw", "9bZkp7q19f0"],
format: { timestamp: true },
});
console.log(result.summary);
// { total: 3, succeeded: 3, failed: 0, processing: 0 }
for (const item of result.results) {
console.log(`${item.data?.video_id}: ${item.data?.transcript.text.slice(0, 100)}...`);
}ASR-ТРАНСКРИБАЦИЯ АУДИО
Для видео без субтитров используйте ASR, чтобы расшифровать речь прямо из аудио. Поддерживаются обратные вызовы через вебхуки и встроенный опрос статуса.
const result = await yt.transcribe({
video: "VIDEO_ID",
source: "asr",
allow_asr: true,
webhook_url: "https://yoursite.com/webhook",
});const result = await yt.transcribe({
video: "VIDEO_ID",
source: "asr",
allow_asr: true,
});
if (result.job_id) {
const final = await yt.waitForJob(result.job_id, {
interval: 5000,
maxAttempts: 60,
});
console.log(final.data?.transcript.text);
}const result = await yt.transcribe({
video: "VIDEO_WITHOUT_CAPTIONS",
source: "asr",
// allow_asr not set: V2 requires explicit confirmation
});
if (result.status === "requires_asr_confirmation") {
console.log(result.estimated_credits); // e.g. 5
console.log(result.duration_minutes); // e.g. 7.5
// User confirms → retry with allow_asr
const confirmed = await yt.transcribe({
video: "VIDEO_WITHOUT_CAPTIONS",
source: "asr",
allow_asr: true,
});
}ОБРАБОТКА ОШИБОК
import {
YouTubeTranscript,
InvalidRequestError,
AuthenticationError,
InsufficientCreditsError,
NoCaptionsError,
RateLimitError,
} from "youtube-transcript-api";
try {
await yt.getTranscript("invalid");
} catch (error) {
if (error instanceof AuthenticationError) {
console.log("Bad API key");
} else if (error instanceof InsufficientCreditsError) {
console.log("Top up at https://youtubetranscript.dev/pricing");
} else if (error instanceof NoCaptionsError) {
console.log("No captions: try source: 'asr' with allow_asr: true");
} else if (error instanceof RateLimitError) {
console.log(`Rate limited. Retry after ${error.retryAfter}s`);
}
}КОНФИГУРАЦИЯ
const yt = new YouTubeTranscript({
apiKey: "your_api_key",
baseUrl: "https://...", // Override API base URL
timeout: 60_000, // Request timeout in ms (default: 30s)
});Требуется Node.js 18+ (используется нативный fetch). Получите API-ключ на странице youtubetranscript.dev/dashboard/account.
ДРУГИЕ SDK И ИНСТРУМЕНТЫ
ЧТО И КОГДА ИСПОЛЬЗОВАТЬ
NPM-пакет
Лучший выбор для Node.js-приложений, серверного рендеринга, CLI-инструментов и скриптов автоматизации, где нужен программный доступ.
REST API
Лучший выбор для сред без JavaScript, разовых запросов и случаев, когда нужен HTTP-доступ, не зависящий от языка.
MCP-сервер
Лучший выбор для ИИ-ассистентов для программирования вроде Claude, Cursor и VS Code Copilot, когда хочется взаимодействовать на естественном языке.
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
NPM-пакет бесплатный?+
Установка самого пакета бесплатна. Для запросов нужен API-ключ YouTubeTranscript.dev. API-ключи доступны на всех платных тарифах.
Работает ли пакет в браузере?+
Пакет предназначен для серверного использования в Node.js. Для извлечения в браузере используйте наш REST API напрямую через fetch или axios.
Какие версии Node.js поддерживаются?+
Node.js 18 и выше. Пакет использует нативный fetch и современные возможности JavaScript.
Можно ли использовать пакет с Deno или Bun?+
Да, пакет совместим со средами выполнения Deno и Bun, поддерживающими NPM-пакеты.
Начните разработку с NPM-пакетом
Установка за секунды. Полная поддержка TypeScript. Подробная документация.
ОТКРЫТЬ НА NPM →