Communitygithub.com

utillayer/youtube-agent-skill

>- Turn a raw recording's transcript into an edit decision list - dead air, filler cues and retakes, with timecodes. Use for "edit this", "cut the dead space", "tighten this video", "I rambled", or any request to shorten footage from a transcript.

What is youtube-agent-skill?

youtube-agent-skill is a Claude Code agent skill that >- Turn a raw recording's transcript into an edit decision list - dead air, filler cues and retakes, with timecodes. Use for "edit this", "cut the dead space", "tighten this video", "I rambled", or any request to shorten footage from a transcript.

Works with✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/utillayer/youtube-agent-skill/tree/HEAD/skills/yt-edit

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

yt-edit

An edit decision list from a timestamped transcript. It prints the cuts. You apply them.

python3 ${CLAUDE_SKILL_DIR}/deadair.py transcript.srt              # srt, vtt or whisper json
python3 ${CLAUDE_SKILL_DIR}/deadair.py transcript.srt --floor 0.35 --json

The tools live in this skill's folder. ${CLAUDE_SKILL_DIR} is that folder in Claude Code; anywhere it does not expand (claude.ai, Codex), use the folder this SKILL.md was loaded from.

No transcript yet? Ask for one, or produce one first - whisper, faster-whisper, or the caption track YouTube generates on an unlisted upload all work. YouTube's auto-caption .vtt can go in as it is: the inline word timings, the rolling repeated lines and [Music]-style annotations are stripped on load. Do not guess at timings.

Have a link but no transcript? YouTube's own captions, in one line:

yt-dlp --skip-download --write-auto-subs --sub-langs en --sub-format vtt -o transcript "<video url>"

That writes transcript.en.vtt. Swap en for the video's language. Auto-captions have no punctuation; a whisper transcript does, and gives cleaner sentence boundaries.

What it finds

  • DEAD - gaps longer than the floor, trimmed from the MIDDLE so both sides keep a breath. Cutting flush against speech is what makes a tightened take sound gasping.
  • FILLER - cues that are nothing but "um", "so yeah", "basically" plus Spanish ("bueno", "o sea"), Hindi ("matlab", "accha", "मतलब") and Nepali ("ani", "khai", "अनि"). Other languages get DEAD and REPEAT but no filler list - say so.
  • REPEAT - a sentence restarted. Compared against the last cue that was actually speech, not the literal previous cue, because most retakes have an "um" between the two attempts. The abandoned take is the one cut, and it is usually the shorter of the two.

What it will not do

It does not touch media. It has no opinion about your B-roll. A 40% cut on the report is a 40% cut of SPEECH, and if the video has a long silent demo in it that number is wrong - check the report against the footage before you trust the runtime at the bottom.

The gate

Nothing here publishes. This skill writes and you publish. Every output ends in a block the user copies, and the last line of every run is the question: ship it, or change it?

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

Related Skills