📦 NPM-ПАКЕТ

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

БЫСТРЫЙ СТАРТ

TypeScript
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

Работает в обеих модульных системах из коробки.

ТРАНСКРИБАЦИЯ С ПАРАМЕТРАМИ

TypeScript
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 ВИДЕО)

TypeScript
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);
}
Процесс подтверждения ASR
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,
  });
}

ОБРАБОТКА ОШИБОК

TypeScript
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`);
  }
}
Класс ошибкиHTTP
InvalidRequestError400
AuthenticationError401
InsufficientCreditsError402
NoCaptionsError404
RateLimitError429
YouTubeTranscriptErrorДругие

КОНФИГУРАЦИЯ

TypeScript
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 →

Извлекайте транскрипты бесплатно

Превращайте любое видео YouTube в текст за секунды. Банковская карта не нужна.

ПОПРОБОВАТЬ YOUTUBETRANSCRIPT.DEV →
NPM-пакет для транскриптов YouTube | YouTubeTranscript.dev