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
npm install youtube-transcript-api pnpm add youtube-transcript-api yarn add youtube-transcript-api
GUIDA RAPIDA
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
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 consumedELABORAZIONE BATCH (FINO A 100 VIDEO)
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.
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,
});
}GESTIONE DEGLI ERRORI
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`);
}
}CONFIGURAZIONE
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 →