screenkite/awesome-ai-video-editing · Archived

screenkite-clean-cut

Transcribe a ScreenKite recording's mic audio, then remove BOTH silence gaps AND filler words (um, uh, ah, er, hmm) from the timeline in a single merged editTimeline cut. Use when the user asks to "clean up audio", "remove filler words", "remove ums and uhs", "cut dead air and fillers", or "full auto-cut" on a .skbundle project. Combines screenkite-transcription-cut silence removal with filler-word detection into one dry-run → confirm → apply flow. Do NOT use for B-roll overlay work (see use-sc…

First seen Apr 24, 2026

Installation

$ npx skills add screenkite/awesome-ai-video-editing --skill screenkite-clean-cut

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Also in this package

Other skills from screenkite/awesome-ai-video-editing.

npx skills add screenkite/awesome-ai-video-editing

Browse all from screenkite/awesome-ai-video-editing

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 33
License LICENSE
Default branch main
Open issues 1
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,735 B
  • docs SUMMARY.md 595 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 59 installs

SKILL.md

screenkite-clean-cut

Remove silence gaps and filler words (um, uh, ah, er, hmm) from a ScreenKite recording in a single pass — one transcript, one dry-run, one cut.

Prerequisites

  • screenkite CLI at /usr/local/bin/screenkite-alpha (or screenkite).
  • ELEVENLABSAPI_KEY (underscored) in a .env anywhere up from the bundle,

or exported in the shell environment.

  • ffmpeg on PATH.
  • python3 + requests — use uv run --with requests to avoid install issues.

Phase 1 — Open project

'/usr/local/bin/screenkite-alpha' agent project open \
  --path '<absolute-path-to.skbundle>' --json

Confirm the project is current:

'/usr/local/bin/screenkite-alpha' agent project current --json

Phase 2 — Transcribe mic audio

Mic audio lives at <bundle>/media/microphone_*.m4a.

# Source .env first if key is not in the shell
set -a && source /path/to/workspace/.env && set +a

uv run --with requests \
  .agents/skills/screenkite-clean-cut/scripts/transcribe_mic.py \
  '<bundle>/media/microphone_<name>.m4a' \
  --edit-dir '<bundle-parent>/<slug>-edit' \
  --language en \
  --num-speakers 1
# Output: <edit-dir>/transcripts/<stem>.json  (word-level, cached)

Re-running is a no-op if the transcript JSON already exists.

Phase 3 — Dry-run (mandatory — show user before applying)

uv run --with requests \
  .agents/skills/screenkite-clean-cut/scripts/compute_all_cuts.py \
  '<edit-dir>/transcripts/<stem>.json' \
  --min-silence 0.8 \
  --silence-pad 0.15 \
  --filler-pad 0.03 \
  --dry-run

Output shows two sections: Silence gaps and Filler words, then a combined summary. Show the full table to the user. Do not apply cuts until the user confirms.

Tuning knobs:

Flag Default Notes
--min-silence 0.8 Gaps shorter than this are kept
--silence-pad 0.15 Kept at each edge of a silence gap
--filler-pad 0.03 Kept at each edge of a filler word
--fillers um,uh,ah,er,hmm,hm Comma-separated list to override

Phase 4 — Apply cuts

All silence + filler ranges are merged and sorted before the single editTimeline call, so there is no ordering issue with existing timeline edits.

'/usr/local/bin/screenkite-alpha' agent tool call \
  --name editTimeline \
  --input-json "$(uv run --with requests \
      .agents/skills/screenkite-clean-cut/scripts/compute_all_cuts.py \
      '<edit-dir>/transcripts/<stem>.json' \
      --min-silence 0.8 --silence-pad 0.15 --filler-pad 0.03 \
      --emit-tool-input)" \
  --json

Or save cuts first and apply separately:

# Save
uv run --with requests \
  .agents/skills/screenkite-clean-cut/scripts/compute_all_cuts.py \
  '<edit-dir>/transcripts/<stem>.json' \
  --min-silence 0.8 --silence-pad 0.15 --filler-pad 0.03 \
  --output '<edit-dir>/all_cuts.json'

# Apply
python3 .agents/skills/screenkite-clean-cut/scripts/apply_cuts.py \
  '<edit-dir>/all_cuts.json'

Phase 5 — Verify

'/usr/local/bin/screenkite-alpha' agent tool call \
  --name getProjectState --input-json '{"scope":"summary"}' --json

Check that duration shrank by roughly the total removed seconds.

To undo: editTimeline action=undo — one call per cut, last-in-first-out.

Key differences from screenkite-transcription-cut

screenkite-transcription-cut screenkite-clean-cut
Removes silences ✅ ✅
Removes filler words ❌ ✅
Scripts computesilencecuts.py computeallcuts.py
Cuts per pass silence only silence + fillers merged

Anti-patterns

  • Never skip the dry-run. Cuts are destructive; undo is one-step-at-a-time.
  • Don't set --min-silence below 0.3s. Feels choppy.
  • Don't set --filler-pad below 0.02s. Audio clicks at splice points.
  • Don't run without an open project. CLI calls silently fail.
  • Don't add words like "like", "right", "so" to --fillers without review.

Context-dependent words cause many false positives. Stick to hesitation sounds.