youtube-transcript-enhanced
v1.2.5
Published
Fetch transcript from a youtube video with video metadata
Readme
youtube-transcript-enhanced
About This Enhanced Version
This is an enhanced version of the youtube-transcript package that adds video metadata extraction and maintains a fallback system for improved reliability. The original package used only HTML scraping, which sometimes fails or returns empty results. This version automatically falls back to YouTube's InnerTube API when needed.
⚠️ Note: The InnerTube API fallback works best in client-side and local server environments.
What's New
- Video metadata extraction: Get title, description, thumbnail, duration, and view count
- Dual extraction methods: HTML scraping + InnerTube API fallback
- YouTube Shorts support: Enhanced URL regex for
/shorts/URLs - Better error handling: New
YoutubeTranscriptEmptyErrorclass - Improved reliability: Automatic fallback increases success rate
- Enhanced return format: Returns both transcript and video metadata
Installation
$ npm i youtube-transcript-enhancedor
$ yarn add youtube-transcript-enhancedUsage
import { YoutubeTranscript } from 'youtube-transcript-enhanced';
// Basic usage - returns transcript and video metadata
const result = await YoutubeTranscript.fetchTranscript('videoId or URL');
console.log('Transcript:', result.transcript);
console.log('Video Title:', result.videoMetadata?.title);
console.log('Video Description:', result.videoMetadata?.description);
console.log('Video Duration:', result.videoMetadata?.lengthSeconds);
console.log('View Count:', result.videoMetadata?.viewCount);
console.log('Thumbnail:', result.videoMetadata?.thumbnail);Return Format
The fetchTranscript method now returns a VideoTranscriptResponse object:
interface VideoTranscriptResponse {
transcript: TranscriptResponse[];
videoMetadata?: VideoMetadata;
}
interface TranscriptResponse {
text: string;
duration: number;
offset: number;
lang?: string;
}
interface VideoMetadata {
title?: string;
description?: string;
thumbnail?: any;
lengthSeconds?: string;
viewCount?: string;
}Language Support
// Get transcript in specific language
const result = await YoutubeTranscript.fetchTranscript('videoId', { lang: 'en' });Supported URL Formats
- Standard videos:
https://www.youtube.com/watch?v=VIDEO_ID - Short URLs:
https://youtu.be/VIDEO_ID - YouTube Shorts:
https://www.youtube.com/shorts/VIDEO_ID - Embedded videos:
https://www.youtube.com/embed/VIDEO_ID - Direct video IDs:
VIDEO_ID
Methods
fetchTranscript(videoId: string [,options: TranscriptConfig]): Promise<VideoTranscriptResponse>
Environment Compatibility
| Method | Client-Side | Local Server | Production Server | | ------------- | ----------- | ------------ | ---------------------- | | HTML Scraping | ✅ | ✅ | ✅ | | InnerTube API | ✅ | ✅ | ⚠️ May have limitations |
The package automatically uses the best available method for your environment.
Error Handling
YoutubeTranscriptTooManyRequestError: Rate limiting detectedYoutubeTranscriptVideoUnavailableError: Video not accessibleYoutubeTranscriptDisabledError: Transcripts disabled for videoYoutubeTranscriptNotAvailableError: No transcripts availableYoutubeTranscriptNotAvailableLanguageError: Requested language not availableYoutubeTranscriptEmptyError: Empty response (triggers fallback method)
License
MIT Licensed
