📦 PACCHETTO NPM

Pacchetto NPM per trascrizioni YouTube: SDK per JavaScript e TypeScript

Estrai trascrizioni YouTube in modo programmatico nelle tue applicazioni Node.js. Installa da NPM, autenticati con la tua chiave API e inizia a trascrivere video in pochi minuti.

INSTALLAZIONE

Terminale
npm install youtube-transcript-api
pnpm add youtube-transcript-api
yarn add youtube-transcript-api

GUIDA RAPIDA

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

FUNZIONALITÀ

Copertura completa della V2 API

Trascrizione, batch, job, polling: ogni endpoint è incluso.

TypeScript al primo posto

Definizioni di tipo complete con supporto IntelliSense.

Zero dipendenze

Usa fetch nativo. Solo Node 18+, niente zavorra.

Errori tipizzati

Classi di errore granulari per ogni codice di errore dell'API.

Polling integrato

Helper waitForJob per la trascrizione ASR asincrona.

ESM e CommonJS

Funziona con entrambi i sistemi di moduli, senza configurazione.

TRASCRIZIONE CON OPZIONI

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

ELABORAZIONE BATCH (FINO A 100 VIDEO)

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)}...`);
}

TRASCRIZIONE AUDIO ASR

Per i video senza sottotitoli, usa l'ASR per trascrivere direttamente dall'audio. Supporta callback webhook o polling integrato.

Webhook (consigliato in produzione)
const result = await yt.transcribe({
  video: "VIDEO_ID",
  source: "asr",
  allow_asr: true,
  webhook_url: "https://yoursite.com/webhook",
});
Polling fino al completamento
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);
}
Flusso di conferma 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,
  });
}

GESTIONE DEGLI ERRORI

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`);
  }
}
Classe di erroreHTTP
InvalidRequestError400
AuthenticationError401
InsufficientCreditsError402
NoCaptionsError404
RateLimitError429
YouTubeTranscriptErrorAltro

CONFIGURAZIONE

TypeScript
const yt = new YouTubeTranscript({
  apiKey: "your_api_key",
  baseUrl: "https://...",     // Override API base URL
  timeout: 60_000,            // Request timeout in ms (default: 30s)
});

Richiede Node.js 18+ (usa fetch nativo). Ottieni la tua chiave API su youtubetranscript.dev/dashboard/account.

ALTRI SDK E STRUMENTI

QUANDO USARE COSA

Pacchetto NPM

Ideale per applicazioni Node.js, server-side rendering, strumenti CLI e script automatizzati in cui serve un accesso programmatico.

REST API

Ideale per ambienti non JavaScript, richieste occasionali e quando ti serve un accesso HTTP indipendente dal linguaggio.

Server MCP

Ideale per assistenti di coding con IA come Claude, Cursor e VS Code Copilot, quando vuoi interagire in linguaggio naturale.

DOMANDE FREQUENTI

Il pacchetto NPM è gratuito?+

L'installazione del pacchetto è gratuita. Per effettuare le richieste ti serve una chiave API di YouTubeTranscript.dev, disponibile con tutti i piani a pagamento.

Funziona nel browser?+

Il pacchetto è pensato per l'uso lato server con Node.js. Per l'estrazione dal browser, usa direttamente la nostra REST API con fetch o axios.

Quali versioni di Node.js sono supportate?+

Node.js 18 e successive. Il pacchetto usa fetch nativo e funzionalità moderne di JavaScript.

Posso usarlo con Deno o Bun?+

Sì, il pacchetto è compatibile con i runtime Deno e Bun che supportano i pacchetti NPM.

Inizia a sviluppare con il pacchetto NPM

Si installa in pochi secondi. Supporto completo a TypeScript. Documentazione esaustiva.

VEDI SU NPM →

Inizia a estrarre trascrizioni gratis

Converti qualsiasi video YouTube in testo in pochi secondi. Nessuna carta di credito richiesta.

PROVA YOUTUBETRANSCRIPT.DEV →
Pacchetto NPM per trascrizioni YouTube | YouTubeTranscript.dev