Install
openclaw skills install gettr-transcribeDownload 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...
openclaw skills install gettr-transcribe# 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 "<AUDIO_OR_VIDEO_URL>" "<SLUG>"
To explicitly set the transcription language (recommended for non-English content):
bash scripts/run_pipeline.sh --language zh "<AUDIO_OR_VIDEO_URL>" "<SLUG>"
Common language codes: zh (Chinese), en (English), ja (Japanese), ko (Korean), es (Spanish), fr (French), de (German), ru (Russian).
This outputs:
./out/gettr-transcribe/<slug>/audio.wav./out/gettr-transcribe/<slug>/audio.vttSummarization is handled separately by the caller (see your prompt for summarization instructions).
Ask for:
zh for Chinese)Notes:
--language flag.mlx_whisper installed and on PATHffmpeg installed (recommended: brew install ffmpeg)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/<slug>/
Directory structure:
./out/gettr-transcribe/<slug>/audio.wav./out/gettr-transcribe/<slug>/audio.vttUse browser automation to navigate to the GETTR URL and extract the media URL from the rendered DOM.
/streaming/ URLs (primary path)Streaming pages provide a direct .m4a audio download. Extract it by deriving from the og:video meta tag:
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");
.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.
/post/ URLs (fallback path)Post pages do not have a "Download Audio" button. Extract the og:video URL from the rendered DOM:
document.querySelector('meta[property="og:video"]')?.getAttribute("content");
.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.
Feed the extracted URL and slug into the pipeline:
bash scripts/run_pipeline.sh "<AUDIO_OR_VIDEO_URL>" "<SLUG>"
To explicitly set the language (recommended when auto-detection fails):
bash scripts/run_pipeline.sh --language zh "<AUDIO_OR_VIDEO_URL>" "<SLUG>"
The pipeline does two things:
.m4a and .m3u8 inputs)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.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/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.See references/troubleshooting.md for detailed solutions to common issues including:
brew install ffmpeg