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 design, statistical…
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.
$ npx -y skills add openclaudia/openclaudia-skills --skill podcast-edit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/podcast-editContext preview
The summary Claude sees to decide when to auto-load this skill.
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.
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.
Repo: openclaudia/openclaudia-skills
Design, plan, and analyze A/B tests with statistical rigor. Use when the user asks about A/B testing, split testing, experiment design, statistical…
Build and manage an affiliate marketing program. Use when the user says "affiliate program", "affiliate marketing", "affiliate partners", "referral…
Manages Ahrefs API usage in Python using `ahrefs-python` library. Use when working with SEO / marketing related tasks or with data including backlinks,…
Generate an AI Citations Report (GEO) for a domain — which AI-search prompts cite the site across Google AI Overview and ChatGPT, plus organic-traffic context…
Generate images using AI (OpenAI GPT Image or Stability AI). Use when the user asks to generate an image, create an AI image, make an illustration, or produce…
Research and enrich B2B leads using the Apollo.io API. Use when the user says "find leads", "prospect research", "company enrichment", "find decision makers",…