Skip to content
cccskills
FreePublished on GitHub

cut-silences

Agent 1 of the video editing pipeline. Removes silences and dead air from a talking-head recording. Use when asked to cut silences, trim pauses, remove dead air / gaps, or tighten the pacing of a raw video, given a word-level transcript. Produces an edit list (EDL), a re-timed transcript for downstream agents, and optionally the cut video via ffmpeg. Does NOT cut mistakes, repeats, or false starts — that is the cut-mistakes agent.

The English summary is being prepared. Showing the original description.

Works withElevenLabs
See how to install

Files included (2)

  • SKILL.md4.7 KB
  • scripts/cut-silences.mjs11.5 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Cut Silences (Pipeline Agent 1)

First step of the automated edit. Takes a raw recording + its word-level transcript and removes only silence: dead air before the first word and after the last word, plus inter-word pauses longer than a threshold (trimmed down to a natural breath, never a hard zero-gap). It leaves the speaker's words untouched — false starts, retakes, and stutters are the cut-mistakes agent's job (Agent 2).

This agent is deterministic and transcript-driven, so its output (*.silence-transcript.json) feeds cleanly into the next agents and the beat-sync validator.

When to use

  • "cut the silences", "trim the pauses", "remove dead air", "tighten the pacing"
  • As the first stage of the master edit workflow, right after transcription.

Prerequisites

A word-level transcript JSON. Either the ElevenLabs Scribe shape ({ words: [{ text, start, end, type }], audio_duration_secs }) or a generic { words: [{ text, start, end }] }. Generate one with the workspace transcriber:

node scripts/transcribe-elevenlabs.mjs path/to/raw.mp4    # -> path/to/raw.json

Usage

# 1) Plan only — compute the cut, write EDL + re-timed transcript (no video touched)
node .claude/skills/cut-silences/scripts/cut-silences.mjs <transcript.json> \
  --out-dir video-projects/<slug>/assets

# 2) With a video — also write the ffmpeg command (still does not render yet)
node .claude/skills/cut-silences/scripts/cut-silences.mjs <transcript.json> \
  --video video-projects/<slug>/assets/raw.mp4 --out-dir video-projects/<slug>/assets

# 3) Render the cut video (local ffmpeg, re-encode, A/V kept in sync)
#    add --apply to actually run ffmpeg
node .claude/skills/cut-silences/scripts/cut-silences.mjs <transcript.json> \
  --video video-projects/<slug>/assets/raw.mp4 --apply \
  --output video-projects/<slug>/assets/edited-silenced.mp4

Options

FlagDefaultMeaning
--video <path>—Source video; enables the ffmpeg command / render
--out-dir <dir>next to transcriptWhere outputs are written
--output <path><video-stem>.silenced.mp4Cut-video path
--gap <s>0.55Minimum pause treated as trimmable silence
--head-pad <s>0.22Silence kept before the first word
--tail-pad <s>0.34Silence kept after the last word
--applyoffActually run ffmpeg to render the cut

How it decides (the silence rules)

  • Pauses below --gap (0.55s) are left alone — natural speech rhythm.
  • For a trimmed pause, a natural breath is kept, scaled by context: 0.24s for long pauses (≥2s), 0.20s after a sentence ender (. ! ?), 0.14s otherwise. The kept breath is biased slightly toward the end of the previous phrase.
  • Head/tail dead air is trimmed to --head-pad / --tail-pad.
  • Delete ranges are merged; keep ranges are the complement. The cut is rendered with an ffmpeg trim/atrim + concat filtergraph (written to a *.silence-filter.txt script and passed via -/filter_complex), so video and audio stay in sync.

Outputs (written to --out-dir)

FilePurpose
<stem>.silence-edl.jsonKeep/delete ranges, durations, params — the edit list
<stem>.silence-transcript.jsonWords re-timed onto the edited timeline (feeds Agent 2 + beats)
<stem>.silence-decisions.mdHuman-readable summary + largest pauses trimmed
<stem>.silence-filter.txtThe ffmpeg filtergraph (only with --video)
<video-stem>.silenced.mp4The cut video (only with --apply)

The JSON summary printed to stdout includes removed, removedPct, range counts, and output paths — useful for the master workflow to log and chain.

Tuning notes

  • Talking-head YouTube default (--gap 0.55) removes roughly 15-20% of a typical raw take as pure silence. Lower --gap for a punchier, faster cut; raise it to preserve more natural breathing room.
  • If a cut feels too aggressive at sentence boundaries, raise the sentence-break breath, or raise --gap.

Hand-off to the next agent

Pass <stem>.silence-transcript.json (and the silenced.mp4 if rendered) to the cut-mistakes agent. Because timestamps are already on the edited timeline, downstream beat timing and scripts/validate-beat-sync.mjs work without further adjustment.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Agent 2 of the video editing pipeline. Finds and removes spoken mistakes — stutters, repeated words, false starts, and retakes (re-recorded lines) — from a talking-head recording. Use after cut-silences, when asked to cut mistakes, remove stutters / repeats / filler restarts, clean up flubs, or keep the best take. Works review-gated: it proposes every cut with context and a reason for approval, then renders only the approved cuts via ffmpeg. Requires a word-level transcript.

The English summary is being prepared. Showing the original description.

nateherkai/hyperframes-student-kit1.5KUpdated Oct 13, 2026

Edit a raw talking-head video through transcription, silence trimming, mistake review, visual storytelling, motion graphics, and verified HyperFrames rendering. Use for a complete edit; route a single requested operation directly to its specialist skill.

The English summary is being prepared. Showing the original description.

nateherkai/hyperframes-student-kit1.5KUpdated Oct 13, 2026

gsap

Free

GSAP animation reference for HyperFrames. Covers gsap.to(), from(), fromTo(), easing, stagger, defaults, timelines (gsap.timeline(), position parameter, labels, nesting, playback), and performance (transforms, will-change, quickTo). Use when writing GSAP animations in HyperFrames compositions.

The English summary is being prepared. Showing the original description.

nateherkai/hyperframes-student-kit1.5KUpdated Oct 13, 2026

Create video compositions, animations, title cards, overlays, captions, voiceovers, audio-reactive visuals, and scene transitions in HyperFrames HTML. Use when asked to build any HTML-based video content, add captions or subtitles synced to audio, generate text-to-speech narration, create audio-reactive animation (beat sync, glow, pulse driven by music), add animated text highlighting (marker sweeps, hand-drawn circles, burst lines, scribble, sketchout), or add transitions between scenes (crossfades, wipes, reveals, shader transitions). Covers composition authoring, timing, media, and the full video production workflow. For CLI commands (init, lint, preview, render, transcribe, tts) see the hyperframes-cli skill.

The English summary is being prepared. Showing the original description.

nateherkai/hyperframes-student-kit1.5KUpdated Oct 13, 2026

HyperFrames CLI tool — hyperframes init, lint, preview, render, transcribe, tts, doctor, browser, info, upgrade, compositions, docs, benchmark. Use when scaffolding a project, linting or validating compositions, previewing in the studio, rendering to video, transcribing audio, generating TTS, or troubleshooting the HyperFrames environment.

The English summary is being prepared. Showing the original description.

nateherkai/hyperframes-student-kit1.5KUpdated Oct 13, 2026

Install and wire registry blocks and components into HyperFrames compositions. Use when running hyperframes add, installing a block or component, wiring an installed item into index.html, or working with hyperframes.json. Covers the add command, install locations, block sub-composition wiring, component snippet merging, and registry discovery.

The English summary is being prepared. Showing the original description.

nateherkai/hyperframes-student-kit1.5KUpdated Oct 13, 2026

See all skills by nateherkai

Report a problem with this skill