ab-test-setup
Design, plan, and analyze A/B tests with statistical rigor. Use when the user asks about A/B testing, split testing, experiment…
Edit podcast audio or video — trim pre/post-show chat, remove filler words, cut silences, enhance audio quality, and cut a video version of the same edit. Use when the user asks to edit a podcast, clean up audio, remove fillers, trim a recording, or improve voice quality.
Claude Code
$ npx -y skills add openclaudia/openclaudia-skills --skill podcast-edit --agent claude-code
Codex
$ npx skills add openclaudia/openclaudia-skills --skill podcast-edit -a codex -y
Cursor
$ npx skills add openclaudia/openclaudia-skills --skill podcast-edit -a cursor -y
Gemini CLI
$ npx skills add openclaudia/openclaudia-skills --skill podcast-edit -a gemini-cli -y
GitHub Copilot
$ npx skills add openclaudia/openclaudia-skills --skill podcast-edit -a github-copilot -y
OpenCode
$ npx skills add openclaudia/openclaudia-skills --skill podcast-edit -a opencode -y
Windsurf
$ npx skills add openclaudia/openclaudia-skills --skill podcast-edit -a windsurf -y
name: podcast-edit description: Edit podcast audio or video — trim pre/post-show chat, remove filler words, cut silences, enhance audio quality, and cut a video version of the same edit. Use when the user asks to edit a podcast, clean up audio, remove fillers, trim a recording, or improve voice quality. user_invocable: true
Process raw podcast/meeting recordings into polished podcast episodes.
1. **Smart trimming** — Find where the actual podcast starts/ends by transcribing and detecting intros/outros 2. **Filler word removal** — Remove verbal tics: 嗯, 呃, 啊, 哦, 对对对, um, uh, etc. 3. **Silence trimming** — Cut long dead air (>2s) down to natural pauses (~0.6s) 4. **Audio enhancement** — Noise reduction, EQ, multi-speaker volume balancing, loudness normalization to podcast standard (−16 LUFS) 5. **Re-cutting a finished episode** — Surgically remove flagged sections from an already-rendered episode without re-running the whole pipeline 6. **Highlight clips & reel** — Cut shareable soundbites and stitch a ~1-minute reel with music 7. **Video cut** — Apply the same edit to a Zoom/Riverside video recording (see "Video episodes")
ffprobe -v quiet -print_format json -show_format -show_streams "INPUT_FILE"
Note: duration, sample rate, channels, codec, bitrate.
Split into 5-minute chunks and transcribe via OpenAI Whisper API with segment-level timestamps:
# Extract chunk ffmpeg -y -i "INPUT_FILE" -ss OFFSET -t 300 -ar 16000 -ac 1 /tmp/chunk_OFFSET.mp3 # Transcribe curl -s https://api.openai.com/v1/audio/transcriptions \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -F file="@/tmp/chunk_OFFSET.mp3" \ -F model="whisper-1" \ -F response_format="verbose_json" \ -F language="LANG" \ -F 'timestamp_granularities[]=segment' > /tmp/transcript_OFFSET.json
Scan transcriptions for:
Do an initial trim with `-ss START -to END` and `-c copy` (no re-encode) to create a working file.
Split the trimmed file into 5-minute chunks and transcribe each with **word-level timestamps**:
# Extract chunks
for i in $(seq 0 300 DURATION); do
ffmpeg -y -i "TRIMMED_FILE" -ss $i -t 300 -ar 16000 -ac 1 /tmp/wchunk_${i}.mp3
done
# Transcribe each chunk (can run in parallel)
for i in $(seq 0 300 DURATION); do
curl -s https://api.openai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F file="@/tmp/wchunk_${i}.mp3" \
-F model="whisper-1" \
-F response_format="verbose_json" \
-F language="LANG" \
-F 'timestamp_granularities[]=word' \
-F 'timestamp_granularities[]=segment' > /tmp/wtranscript_${i}.json &
done
waitThen run the filler removal script that ships with this skill:
python3 ./filler_removal.py \ --total-duration DURATION \ --end-at END_TIMESTAMP \ --cut START1:END1 --cut START2:END2 \ --chunk-offsets 0,300,600,900,...
**Arguments:**
The script outputs `/tmp/ffmpeg_filter.txt` with an `atrim+concat` filter.
Apply the filter in two passes:
# Step A: Cut fillers → intermediate WAV (avoids re-encoding artifacts) ffmpeg -y -i "TRIMMED_FILE" \ -filter_complex_script /tmp/ffmpeg_filter.txt \ -map '[out]' -c:a pcm_s16le -ar 44100 /tmp/podcast_cut.wav # Step B: Enhance audio → final MP3 ffmpeg -y -i /tmp/podcast_cut.wav \ -af "ENHANCEMENT_CHAIN" \ -c:a libmp3lame -b:a 192k "OUTPUT_FILE"
**Limitations:** Whisper word-level timestamps for Chinese can miss fillers that are blended into adjacent speech. The script catches standalone fillers reliably but may miss ~10–20% of embedded ones.
**Default chain (guest-friendly — handles multi-speaker volume imbalance).** The biggest mistake in past runs is using a noise gate (`agate`) that silences the quieter guest entirely. Never add `agate` back to the default chain.
highpass=f=80, # Remove room rumble lowpass=f=12000, # Remove hiss (use 7500 for 16kHz sources) afftdn=nf=-25:nr=8:nt=w, # Gentle FFT noise reduction equalizer=f=180:t=q:w=1.5:g=-2, # Cut mud equalizer=f=2500:t=q:w=1.2:g=3, # Boost presence equalizer=f=4500:t=q:w=1.5:g=1.5, # Boost clarity dynaudnorm=f=200:g=5:p=0.95:m=5:s=0, # Rolling-window normalization — lifts the quieter speaker independently acompressor=threshold=-20dB:ratio=2:attack=5:release=200:makeup=1, # Gentle glue loudnorm=I=-16:TP=-1.5:LRA=13 # Podcast standard loudness
**Why `dynaudnorm` is the star:** it normalizes in 200 ms rolling windows, so when the guest is speaking, that window gets lifted independently of the host's louder windows. Order matters — run `dynaudnorm` BEFORE `acompressor` so the compressor sees a balanced signal.
**Never add these to the default chain:**
77 open-source marketing skills for Claude Code, Codex, and other AI coding agents. SEO, content, email, ads, analytics, and growth.
Design, plan, and analyze A/B tests with statistical rigor. Use when the user asks about A/B testing, split testing, experiment…
Build and manage an affiliate marketing program. Use when the user says "affiliate program", "affiliate marketing", "affiliate…
Manages Ahrefs API usage in Python using `ahrefs-python` library. Use when working with SEO / marketing related tasks or with…
Generate an AI Citations Report (GEO) for a domain — which AI-search prompts cite the site across Google AI Overview and ChatGPT,…
Generate images using AI (OpenAI GPT Image or Stability AI). Use when the user asks to generate an image, create an AI image,…
Research and enrich B2B leads using the Apollo.io API. Use when the user says "find leads", "prospect research", "company…
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use…
Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…
Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…
Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…