🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Gettr Transcribe

by @kevin37li

Download audio from a GETTR post or streaming page and transcribe it locally with MLX Whisper on Apple Silicon (with timestamps via VTT). Use when given a GE...

Versionv1.0.1
Downloads847
TERMINAL
clawhub install gettr-transcribe

πŸ“– About This Skill


name: gettr-transcribe description: Download audio from a GETTR post or streaming page and transcribe it locally with MLX Whisper on Apple Silicon (with timestamps via VTT). Use when given a GETTR URL and asked to produce a transcript. Summarization is handled by the caller. homepage: https://gettr.com metadata: { "clawdbot": { "emoji": "πŸ“Ί", "requires": { "bins": ["mlx_whisper", "ffmpeg"] }, "install": [ { "id": "mlx-whisper", "kind": "pip", "package": "mlx-whisper", "bins": ["mlx_whisper"], "label": "Install mlx-whisper (pip)", }, { "id": "ffmpeg", "kind": "brew", "formula": "ffmpeg", "bins": ["ffmpeg"], "label": "Install ffmpeg (brew)", }, ], }, }

Gettr Transcribe (MLX Whisper)

Quick start

# 1. Parse the slug from the URL (just read it β€” no script needed)

https://gettr.com/post/p1abc2def β†’ slug = p1abc2def

https://gettr.com/streaming/p3xyz β†’ slug = p3xyz

2. Get the audio/video URL via browser automation (see Step 1 below)

For /streaming/ URLs: extract the .m4a audio URL

For /post/ URLs: extract the og:video .m3u8 URL

3. Run download + transcription pipeline

bash scripts/run_pipeline.sh "" ""

To explicitly set the transcription language (recommended for non-English content):

bash scripts/run_pipeline.sh --language zh "" ""

Common language codes: zh (Chinese), en (English), ja (Japanese), ko (Korean), es (Spanish), fr (French), de (German), ru (Russian).

This outputs:

  • ./out/gettr-transcribe//audio.wav
  • ./out/gettr-transcribe//audio.vtt
  • Summarization is handled separately by the caller (see your prompt for summarization instructions).


    Workflow (GETTR URL β†’ transcript)

    Inputs to confirm

    Ask for:

  • GETTR post URL
  • Language (optional): if the video is non-English and auto-detection fails, ask for the language code (e.g., zh for Chinese)
  • Notes:

  • This skill does not handle authentication-gated GETTR posts.
  • This skill does not translate; outputs stay in the video's original language.
  • If transcription quality is poor or mixed with English, re-run with explicit --language flag.
  • Prereqs (local)

  • mlx_whisper installed and on PATH
  • ffmpeg installed (recommended: brew install ffmpeg)
  • Step 0 β€” Parse the slug and pick an output directory

    Parse the slug directly from the GETTR URL β€” just read the last path segment, no script needed:

  • https://gettr.com/post/p1abc2def β†’ slug = p1abc2def
  • https://gettr.com/streaming/p3xyz789 β†’ slug = p3xyz789
  • Output directory: ./out/gettr-transcribe//

    Directory structure:

  • ./out/gettr-transcribe//audio.wav
  • ./out/gettr-transcribe//audio.vtt
  • Step 1 β€” Get the audio/video URL via browser automation

    Use browser automation to navigate to the GETTR URL and extract the media URL from the rendered DOM.

    #### For /streaming/ URLs (primary path)

    Streaming pages provide a direct .m4a audio download. Extract it by deriving from the og:video meta tag:

    1. Navigate to the GETTR streaming URL and wait for the page to fully load (JavaScript must execute) 2. Extract the audio URL via JavaScript:

       const ogVideo = document.querySelector('meta[property="og:video"]')?.getAttribute("content");
       // Replace .m3u8 with /audio.m4a to get the direct audio download URL
       const audioUrl = ogVideo.replace(".m3u8", "/audio.m4a");
       
    3. Use the .m4a URL for the pipeline in Step 2

    The .m4a URL is a direct file download (no HLS), so it downloads faster and more reliably than the .m3u8 stream.

    #### For /post/ URLs (fallback path)

    Post pages do not have a "Download Audio" button. Extract the og:video URL from the rendered DOM:

    1. Navigate to the GETTR post URL and wait for the page to fully load 2. Extract the video URL via JavaScript:

       document.querySelector('meta[property="og:video"]')?.getAttribute("content");
       
    3. Use the .m3u8 URL directly for the pipeline in Step 2

    If browser automation is not available or fails, see references/troubleshooting.md for how to guide the user to manually extract the URL from their browser.

    Step 2 β€” Run the pipeline (download + transcribe)

    Feed the extracted URL and slug into the pipeline:

    bash scripts/run_pipeline.sh "" ""
    

    To explicitly set the language (recommended when auto-detection fails):

    bash scripts/run_pipeline.sh --language zh "" ""
    

    The pipeline does two things:

    1. Downloads audio as 16kHz mono WAV via ffmpeg (handles both .m4a and .m3u8 inputs) 2. Transcribes with MLX Whisper, outputting VTT with timestamps

    #### If the pipeline fails with HTTP 412 (stale signed URL)

    This error occurs with /streaming/ URLs when the signed URL has expired. Re-run browser automation to get a fresh URL, then retry the pipeline.

    If browser automation is not available or fails, see references/troubleshooting.md for how to guide the user to manually extract the fresh URL from their browser.

    Notes:

  • By default, language is auto-detected. For non-English content where detection fails, use --language.
  • If too slow or memory-heavy, try smaller models: mlx-community/whisper-medium or mlx-community/whisper-small.
  • If quality is poor, try the full model: mlx-community/whisper-large-v3 (slower but more accurate).
  • If --word-timestamps causes issues, the pipeline retries automatically without it.
  • Bundled scripts

  • scripts/run_pipeline.sh: download + transcription pipeline (takes an audio/video URL and slug)
  • scripts/download_audio.sh: download/extract audio from HLS (.m3u8) or direct (.m4a) URL to 16kHz mono WAV
  • Error handling

  • No audio track: The download script validates output and reports if the source has no audio.
  • HTTP 412 errors: Occurs with /streaming/ URLs when the signed URL has expired. Re-run browser automation to get a fresh URL (see Step 1); if that fails, see references/troubleshooting.md.
  • Troubleshooting

    See references/troubleshooting.md for detailed solutions to common issues including:

  • HTTP 412 errors (stale signed URLs)
  • Download errors
  • Transcription quality issues
  • πŸ’‘ Examples

    # 1. Parse the slug from the URL (just read it β€” no script needed)
    

    https://gettr.com/post/p1abc2def β†’ slug = p1abc2def

    https://gettr.com/streaming/p3xyz β†’ slug = p3xyz

    2. Get the audio/video URL via browser automation (see Step 1 below)

    For /streaming/ URLs: extract the .m4a audio URL

    For /post/ URLs: extract the og:video .m3u8 URL

    3. Run download + transcription pipeline

    bash scripts/run_pipeline.sh "" ""

    To explicitly set the transcription language (recommended for non-English content):

    bash scripts/run_pipeline.sh --language zh "" ""
    

    Common language codes: zh (Chinese), en (English), ja (Japanese), ko (Korean), es (Spanish), fr (French), de (German), ru (Russian).

    This outputs:

  • ./out/gettr-transcribe//audio.wav
  • ./out/gettr-transcribe//audio.vtt
  • Summarization is handled separately by the caller (see your prompt for summarization instructions).


    πŸ“‹ Tips & Best Practices

    See references/troubleshooting.md for detailed solutions to common issues including:

  • HTTP 412 errors (stale signed URLs)
  • Download errors
  • Transcription quality issues