Download YouTube videos, identify compelling clips from transcripts, cut clips with ffmpeg, and generate platform-optimized on-screen text and captions...
This skill downloads YouTube videos, analyzes transcripts for compelling clip moments, extracts clips using ffmpeg, and generates platform-ready on-screen text and captions. It integrates with the existing caption and social content skills to deliver complete, publishable assets.
Do NOT use for:
podcast-production skill instead)social-content-creation skill)brew install yt-dlp ffmpeg
All downloads go to: Content/YouTube Transcripts/
Structure:
Content/YouTube Transcripts/
āāā {video_id}.mp4 # Full video (H.264 encoded)
āāā {video_id}.en.vtt # Timestamped subtitles
āāā clips/
āāā {video_id}/
āāā clip_01_{name}.mp4 # Individual clips
āāā clip_02_{name}.mp4
āāā {video_id}_Clip_Assets.md # Captions & hooks
Goal: Get video and subtitles from YouTube URL
Use H.264 format for Descript compatibility (NOT AV1):
# Download video in H.264 format (Descript-compatible)
yt-dlp -f "bestvideo[vcodec^=avc]+bestaudio[ext=m4a]/best[vcodec^=avc]" \
--merge-output-format mp4 \
-o "Content/YouTube Transcripts/{video_id}.mp4" \
"YOUTUBE_URL"
# If H.264 unavailable, download best quality then re-encode:
yt-dlp -f "bestvideo+bestaudio" --merge-output-format mp4 \
-o "Content/YouTube Transcripts/{video_id}_temp.mp4" \
"YOUTUBE_URL"
# Re-encode to H.264 for Descript compatibility
ffmpeg -i "{video_id}_temp.mp4" -c:v libx264 -preset fast -crf 22 \
-c:a aac -b:a 128k "{video_id}.mp4"
yt-dlp --write-auto-sub --sub-lang en --skip-download \
-o "Content/YouTube Transcripts/{video_id}.%(ext)s" \
"YOUTUBE_URL"
{video_id}.mp4 ā Full video (H.264){video_id}.en.vtt ā Timestamped subtitlesGoal: Identify 5-8 compelling clip moments with strong hooks and codas
A good clip has:
Strong Hook (First 3 Seconds)
Complete Arc (30-90 seconds)
Stakes
Strong Coda/Ending
Inflection Points:
Vulnerability Moments:
Contradiction Moments:
Surprising Insights:
Character in Action:
Create analysis document with clip recommendations:
# {Video Title} - Clip Analysis
## Video Details
- **URL:** [YouTube URL]
- **Duration:** [Total length]
- **Speaker(s):** [Names]
- **Topic:** [Primary subject]
---
## Recommended Clips
### CLIP 1: "{Descriptive Name}"
**Timestamp:** `MM:SS - MM:SS` (XX seconds)
**Hook:** [First line or opening moment]
**Arc:** [Setup ā Middle ā Ending summary]
**Coda:** [How it ends / final line]
**Key Quotes:**
- "[Verbatim quote 1]"
- "[Verbatim quote 2]"
- "[Verbatim quote 3]"
**Quality Tests:** Stranger ā
| Itch ā
| Stakes ā
| Tease ā
| Emotion ā
**Why It Works:** [1-2 sentence rationale]
**Priority:** HIGH / MEDIUM / LOW
---
### CLIP 2: "{Descriptive Name}"
[Repeat structure...]
---
## Summary Table
| # | Clip Name | Timestamp | Length | Hook | Coda | Priority |
|---|-----------|-----------|--------|------|------|----------|
| 1 | [Name] | MM:SS-MM:SS | XXs | āāāāā | āāāāā | HIGH |
| 2 | [Name] | MM:SS-MM:SS | XXs | āāāā | āāāā | HIGH |
| 3 | [Name] | MM:SS-MM:SS | XXs | āāā | āāāā | MEDIUM |
Goal: Extract approved clips as separate video files
Basic clip extraction (fast, uses keyframes):
ffmpeg -i "{video_id}.mp4" -ss MM:SS -to MM:SS -c copy \
"clips/{video_id}/clip_01_{name}.mp4"
Precise cutting with re-encoding (slower but frame-accurate):
ffmpeg -ss MM:SS -i "{video_id}.mp4" -t DURATION \
-c:v libx264 -preset fast -crf 22 -c:a aac -b:a 128k \
"clips/{video_id}/clip_01_{name}.mp4"
Notes:
-ss before -i = faster seeking (recommended)-c copy = no re-encoding (fast but may have keyframe issues)-c:v libx264 = re-encode to H.264 (slower but precise)# Create clips directory
mkdir -p "Content/YouTube Transcripts/clips/{video_id}"
# Cut each clip
ffmpeg -i "{video_id}.mp4" -ss 06:59 -to 08:10 -c copy "clips/{video_id}/clip_01_covid_revelation.mp4"
ffmpeg -i "{video_id}.mp4" -ss 20:50 -to 21:54 -c copy "clips/{video_id}/clip_02_whiteboard_teen.mp4"
ffmpeg -i "{video_id}.mp4" -ss 25:00 -to 26:10 -c copy "clips/{video_id}/clip_03_college_loans.mp4"
clips/{video_id}/ directoryGoal: Create platform-optimized hooks and captions for each clip
This phase uses the video-caption-creation skill methodology.
1. On-Screen Text Hook (3-5 options)
The text that appears in the first 3 seconds of the video. Must be:
Hook Categories:
2. Platform-Specific Captions
| Platform | On-Screen Text | Caption Style | Hashtags |
|---|---|---|---|
| Same | Short, emoji OK, accessible | 5-10 | |
| TikTok | Same | Short, emoji OK, accessible | 3-5 |
| YouTube Shorts | Same | Short, minimal emoji | 3-5 + #Shorts |
| Same | Slightly longer, conversational, NO external links | 0-2 |
Facebook Difference: Caption can be longer and more conversational. NO hashtags or external links (kills reach).
3. Algorithm Optimization
Per the Triple Word Score system:
Create file: clips/{video_id}/{video_id}_CLIP_PACKAGE.md
# {Video Title} - Clip Package
## Source Video
- **URL:** [YouTube URL]
- **Title:** [Video title]
- **Duration:** [Total length]
- **Downloaded File:** `{video_id}.mp4`
---
## Context
[2-3 sentences explaining the backstory needed to understand the clip. Who is the speaker? What's their situation? What happened before/after the moments in the clip? This context ensures on-screen text and captions are coherent with the actual story.]
---
## Editing Instructions
**SEQUENCE (Rearranged from original - NOT linear):**
| Order | Timestamp | Speaker | Line |
|-------|-----------|---------|------|
| 1 | MM:SS-MM:SS | [Name] | "[Verbatim quote]" |
| 2 | MM:SS-MM:SS | [Name] | "[Verbatim quote]" |
| 3 | MM:SS-MM:SS | [Name] | "[Verbatim quote]" |
**OPTIONAL EXTENSION:**
| Order | Timestamp | Speaker | Line |
|-------|-----------|---------|------|
| 4 | MM:SS-MM:SS | [Name] | "[Verbatim quote]" |
---
## On-Screen Text Hook Options
1. **[Hook text]** - [Category]
2. **[Hook text]** - [Category]
3. **[Hook text]** - [Category]
4. **[Hook text]** - [Category]
5. **[Hook text]** - [Category]
6. **[Hook text]** - [Category]
7. **[Hook text]** - [Category]
8. **[Hook text]** - [Category]
9. **[Hook text]** - [Category]
10. **[Hook text]** - [Category]
---
## Platform Captions
### TikTok / Instagram Reels / YouTube Shorts
[Caption text]
[Hashtags: 3-5]
---
### Facebook
[Longer caption, conversational, NO hashtags]
---
### LinkedIn
[Professional tone caption]
[Hashtags: 3-5]
Critical: On-screen text and captions must be coherent with the actual story in the transcript. Before writing hooks:
Example: If the clip shows someone criticizing public school, but they were actually a homeschooler who tried public school once, hooks like "Homeschooler tries public school" or "She tried public school for one year" provide necessary context that makes the story coherent.
# PHASE 1: Download
yt-dlp -f "bestvideo[vcodec^=avc]+bestaudio" --merge-output-format mp4 \
-o "Content/YouTube Transcripts/cvGtVmI4jTQ.mp4" \
"https://www.youtube.com/watch?v=cvGtVmI4jTQ"
yt-dlp --write-auto-sub --sub-lang en --skip-download \
-o "Content/YouTube Transcripts/cvGtVmI4jTQ.%(ext)s" \
"https://www.youtube.com/watch?v=cvGtVmI4jTQ"
# PHASE 2: Analyze transcript (manual review)
# Read VTT file, identify clips using criteria above
# PHASE 3: Cut clips
mkdir -p "Content/YouTube Transcripts/clips/cvGtVmI4jTQ"
ffmpeg -i "cvGtVmI4jTQ.mp4" -ss 06:59 -to 08:10 \
-c:v libx264 -preset fast -crf 22 -c:a aac \
"clips/cvGtVmI4jTQ/clip_01_covid_revelation.mp4"
# PHASE 4: Generate assets (create markdown file with hooks/captions)
This skill integrates with:
| Skill | When to Use | What It Provides |
|---|---|---|
| video-caption-creation | Phase 4 | On-screen text hook categories, Triple Word Score system, platform caption guidelines |
| youtube-downloader | Phase 1 (alternative) | Detailed yt-dlp installation checks, error handling, transcript-only workflow |
| text-content | After clips ready | Framework fitting for text posts about clips |
| podcast-production | Full episode workflow | Complete 4-checkpoint production system |
From video-caption-creation:
From text-content:
Before delivering clips:
Video Files:
Clip Selection:
Captions & Hooks:
v1.1 (2025-12-20): Streamlined output format
v1.0 (2025-12-02): Initial skill creation