CLI tool to transcribe podcasts and YouTube videos into clean markdown with speaker diarization and timestamps
Project description
Podscript
Podcast → Transcript!
Transcribe any podcast episode or YouTube video from the command line. Generates clean markdown with speaker diarization and timestamps. Works with the ElevenLabs API or fully locally using Whisper - no API key required.
Installation
# Local transcription (free, no API key needed)
pip install podscript[local]
# Or use ElevenLabs API
pip install podscript
podscript --setup # paste your ElevenLabs API key
For local mode, just add --local to any command. For ElevenLabs, you'll need an API key.
For YouTube support, also install yt-dlp and ffmpeg.
Usage
# Transcribe a podcast from an Apple Podcasts link
podscript "https://podcasts.apple.com/us/podcast/huberman-lab/id1545953110?i=1000690"
# Transcribe a YouTube video
podscript "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
# Use an RSS feed directly
podscript https://feeds.simplecast.com/JGE3yC0V
# Browse episodes first
podscript https://feeds.simplecast.com/JGE3yC0V --list
# Search for a specific episode
podscript https://feeds.simplecast.com/JGE3yC0V --search "AI"
# Pick episode #3 from the list
podscript https://feeds.simplecast.com/JGE3yC0V --episode 3
# Custom output filename
podscript https://feeds.simplecast.com/JGE3yC0V --latest --output transcript.md
Without any flags, the default behavior is to transcribe the most recent episode.
Output
Generates a markdown file with speaker labels and timestamps:
# The Economics of Carbon Removal
**Podcast:** a16z Podcast
**Date:** 2/10/2026
**Duration:** 1:04:23
---
## Speaker 1
[0:00] Welcome back to the show. Today we're talking about...
## Speaker 2
[0:15] Thanks for having me. So the key challenge with carbon removal is...
## Speaker 1
[2:41] That's fascinating. How does the economics actually work at scale?
Local Transcription
You can transcribe entirely offline using a local Whisper model — no API key required:
pip install podscript[local]
This installs faster-whisper, pyannote.audio, and torch.
Usage
# Basic local transcription (uses "base" model, no speaker diarization)
podscript "https://www.youtube.com/watch?v=..." --local
# Use a larger model for better accuracy
podscript "https://www.youtube.com/watch?v=..." --local --model medium
# Enable speaker diarization with a HuggingFace token
podscript "https://feeds.example.com/rss" --local --hf-token hf_xxxxx
# Or set the token as an environment variable once
export HF_TOKEN=hf_xxxxx
podscript "https://feeds.example.com/rss" --local
Model Sizes
| Model | Speed | Quality | VRAM |
|---|---|---|---|
tiny |
Fastest | Lower | ~1 GB |
base |
Fast | Good (default) | ~1 GB |
small |
Moderate | Better | ~2 GB |
medium |
Slower | Great | ~5 GB |
large-v2 |
Slowest | Best | ~10 GB |
large-v3 |
Slowest | Best | ~10 GB |
CPU mode uses int8 quantization automatically. GPU (CUDA) uses float16.
Speaker Diarization
Speaker diarization (identifying who said what) requires a free HuggingFace token:
- Create an account at huggingface.co
- Accept the terms for pyannote/speaker-diarization-3.1
- Create a token at huggingface.co/settings/tokens
- Pass it via
--hf-tokenor setHF_TOKENin your environment
Without a token, all speech is attributed to "Speaker 1" — still useful for single-speaker content.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file podscript-0.2.0.tar.gz.
File metadata
- Download URL: podscript-0.2.0.tar.gz
- Upload date:
- Size: 13.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43202f41e9ce275a9817b12726fc9a4f071573a7ba61f4019e3fdd0e4ed88b04
|
|
| MD5 |
b97ee2d233a8aaa094b288a941f64733
|
|
| BLAKE2b-256 |
f6b940f9e28ffdf79cc0ffd8c787d46c1673c66752210d9722f3ed93533709e1
|
File details
Details for the file podscript-0.2.0-py3-none-any.whl.
File metadata
- Download URL: podscript-0.2.0-py3-none-any.whl
- Upload date:
- Size: 13.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4573e05d1b1d3b77aeac74af6909e9dd63280265a89cf8e82327bfa9c9492e2b
|
|
| MD5 |
3333690884ebb153e55c91bef9bd9ccb
|
|
| BLAKE2b-256 |
700a71cd788b50952561b238f2aec2f4dcb957b413e499195b264556957274ba
|