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...
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:
zh for Chinese)Notes:
--language flag.Prereqs (local)
mlx_whisper installed and on PATHffmpeg 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 = p1abc2defhttps://gettr.com/streaming/p3xyz789 β slug = p3xyz789Output 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 2The .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 2If 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:
--language.mlx-community/whisper-medium or mlx-community/whisper-small.mlx-community/whisper-large-v3 (slower but more accurate).--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 WAVError handling
/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:
π‘ 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: