🎁 Get the FREE AI Skills Starter GuideSubscribe →
BytesAgainBytesAgain
🦀 ClawHub

Youtube Transcriber

by @edisonchenai

One-command YouTube video transcription. Automatically downloads audio and transcribes using OpenAI Whisper API — works even when YouTube subtitles are disab...

Versionv1.0.0
Downloads686
Installs2
TERMINAL
clawhub install youtube-transcriber

📖 About This Skill


name: youtube-transcriber description: One-command YouTube video transcription. Automatically downloads audio and transcribes using OpenAI Whisper API — works even when YouTube subtitles are disabled. Use when asked to "transcribe this video", "get transcript", "what does this video say", or when YouTube captions are unavailable.

YouTube Transcriber

One-command transcription for any YouTube video — even when subtitles are disabled.

How it works: 1. Tries to fetch existing YouTube subtitles first (free, instant) 2. If subtitles are disabled/unavailable → downloads audio → transcribes via OpenAI Whisper API

Prerequisites

  • yt-dlpbrew install yt-dlp or pip install yt-dlp
  • ffmpegbrew install ffmpeg
  • OPENAI_API_KEY environment variable set
  • Usage

    # Basic — auto-detect best method
    {baseDir}/scripts/transcribe.sh "https://www.youtube.com/watch?v=VIDEO_ID"

    Specify language (improves accuracy for non-English)

    {baseDir}/scripts/transcribe.sh "https://www.youtube.com/watch?v=VIDEO_ID" --lang zh

    Custom output path

    {baseDir}/scripts/transcribe.sh "https://www.youtube.com/watch?v=VIDEO_ID" --out /tmp/transcript.txt

    Force Whisper (skip subtitle check)

    {baseDir}/scripts/transcribe.sh "https://www.youtube.com/watch?v=VIDEO_ID" --force-whisper

    Keep downloaded audio file

    {baseDir}/scripts/transcribe.sh "https://www.youtube.com/watch?v=VIDEO_ID" --keep-audio

    Options

    | Option | Description | Default | |--------|-------------|---------| | --lang | Language hint (ISO 639-1: en, zh, ja, ko, etc.) | auto-detect | | --out | Output transcript file path | /tmp/yt_transcript_.txt | | --force-whisper | Skip subtitle check, always use Whisper API | off | | --keep-audio | Keep the downloaded audio file after transcription | off (deletes audio) | | --audio-bitrate | Audio compression bitrate | 64 |

    How It Works

    YouTube URL
        │
        ├─► Try yt-dlp subtitles (free, instant)
        │       │
        │       ├─ Found → Clean & output transcript ✓
        │       │
        │       └─ Not found / disabled
        │               │
        │               ▼
        └─► Download audio (yt-dlp + ffmpeg)
                │
                ├─ Compress to mono, low bitrate (fit 25MB API limit)
                │
                ▼
            OpenAI Whisper API → transcript ✓
    

    Cost

  • With subtitles available: Free (uses existing captions)
  • Whisper API: ~$0.006/minute of audio → 23-min video ≈ $0.14
  • Supported

  • Any YouTube video URL (full URL, youtu.be short link, or video ID)
  • All languages supported by Whisper (99+ languages)
  • Videos up to ~4 hours (audio compressed to fit 25MB API limit)
  • Troubleshooting

  • 403 from YouTube: Update yt-dlp (pip install -U yt-dlp)
  • File too large for Whisper: Lower bitrate with --audio-bitrate 32
  • Missing API key: Set OPENAI_API_KEY environment variable
  • 💡 Examples

    # Basic — auto-detect best method
    {baseDir}/scripts/transcribe.sh "https://www.youtube.com/watch?v=VIDEO_ID"

    Specify language (improves accuracy for non-English)

    {baseDir}/scripts/transcribe.sh "https://www.youtube.com/watch?v=VIDEO_ID" --lang zh

    Custom output path

    {baseDir}/scripts/transcribe.sh "https://www.youtube.com/watch?v=VIDEO_ID" --out /tmp/transcript.txt

    Force Whisper (skip subtitle check)

    {baseDir}/scripts/transcribe.sh "https://www.youtube.com/watch?v=VIDEO_ID" --force-whisper

    Keep downloaded audio file

    {baseDir}/scripts/transcribe.sh "https://www.youtube.com/watch?v=VIDEO_ID" --keep-audio

    ⚙️ Configuration

    | Option | Description | Default | |--------|-------------|---------| | --lang | Language hint (ISO 639-1: en, zh, ja, ko, etc.) | auto-detect | | --out | Output transcript file path | /tmp/yt_transcript_.txt | | --force-whisper | Skip subtitle check, always use Whisper API | off | | --keep-audio | Keep the downloaded audio file after transcription | off (deletes audio) | | --audio-bitrate | Audio compression bitrate | 64 |

    📋 Tips & Best Practices

  • 403 from YouTube: Update yt-dlp (pip install -U yt-dlp)
  • File too large for Whisper: Lower bitrate with --audio-bitrate 32
  • Missing API key: Set OPENAI_API_KEY environment variable