A TypeScript CLI tool that extracts transcripts from YouTube videos using AssemblyAI's speech-to-text API.
- Extract transcripts from any YouTube video
- Automatically creates folders named after the video title
- Uses AssemblyAI for high-quality transcription
- Supports verbose logging
- Automatic cleanup of temporary files
-
Clone this repository
-
Install dependencies:
pnpm install
-
Get your AssemblyAI API key from AssemblyAI Dashboard
-
Set up environment variables:
cp .env.example .env # Edit .env and add your AssemblyAI API key
# Set your API key
export ASSEMBLYAI_API_KEY="your_api_key_here"
# Run the CLI
pnpm dev "https://www.youtube.com/watch?v=VIDEO_ID"
# Build the project
pnpm build
# Run the built version
pnpm start "https://www.youtube.com/watch?v=VIDEO_ID"
youtube-transcripts <url> [options]
Arguments:
url YouTube video URL
Options:
-o, --output-dir <dir> Output directory (default: ".")
-v, --verbose Enable verbose logging
-h, --help Display help for command
# Basic usage
youtube-transcripts "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
# With custom output directory
youtube-transcripts "https://www.youtube.com/watch?v=dQw4w9WgXcQ" --output-dir ./transcripts
# Verbose mode
youtube-transcripts "https://www.youtube.com/watch?v=dQw4w9WgXcQ" --verbose
The tool creates a folder named after the YouTube video title (sanitized and hyphenated) containing a transcript.txt
file.
Example output structure:
how-to-build-a-cli-tool/
└── transcript.txt
- Node.js 18+
- AssemblyAI API key
- Internet connection for YouTube and AssemblyAI API access
-
ASSEMBLYAI_API_KEY
- Your AssemblyAI API key (required)
The tool handles various error scenarios:
- Invalid YouTube URLs
- Network connectivity issues
- AssemblyAI API errors
- File system permissions
- Missing API keys
# Install dependencies
pnpm install
# Run in development mode
pnpm dev <youtube-url>
# Build for production
pnpm build
# Run built version
pnpm start <youtube-url>
youtube-transcripts/
├── src/
│ ├── cli.ts # Main CLI entry point
│ ├── youtube.ts # YouTube audio extraction
│ ├── transcription.ts # AssemblyAI integration
│ └── utils.ts # Utility functions
├── spec/
│ └── project-spec.md # Project specification
├── package.json
├── tsconfig.json
├── .env.example
└── README.md
ISC