
Extract Transcript
- 71 installs
- 112 repo stars
- Updated July 8, 2026
- pamelafox/presentation-skills
Helps with ai & agent building tasks.
About
extract-transcript is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- extract-transcript
- AI & Agent Building
- AI-coding skill
Extract Transcript by the numbers
- 71 all-time installs (skills.sh)
- +2 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #5,673 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/pamelafox/presentation-skills --skill extract-transcriptAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 71 |
|---|---|
| repo stars | ★ 112 |
| Last updated | July 8, 2026 |
| Repository | pamelafox/presentation-skills ↗ |
What it does
Helps with ai & agent building tasks.
Files
Extract transcript from YouTube video
Run the extract_transcript.py script to fetch a timestamped transcript:
uv run .agents/skills/extract-transcript/extract_transcript.py <youtube_url> [output_file]Arguments
youtube_url(required): YouTube video URL. Supported formats:https://www.youtube.com/watch?v=VIDEO_IDhttps://youtu.be/VIDEO_IDhttps://www.youtube.com/embed/VIDEO_IDoutput_file(optional): Path to save the transcript. If omitted, prints to stdout.
Output format
Each line has a timestamp followed by the transcript text:
[00:00] Welcome to this talk about...
[00:15] Today we'll be covering...
[01:30] Let's start with the first topic...Timestamps use [MM:SS] format for videos under an hour, [HH:MM:SS] for longer videos.
# /// script
# requires-python = ">=3.11"
# dependencies = [
# "youtube-transcript-api",
# ]
# ///
"""Extract a timestamped transcript from a YouTube video."""
import re
import sys
from youtube_transcript_api import YouTubeTranscriptApi
def transcribe(url: str) -> str:
"""Get transcript from YouTube URL with timestamps."""
video_id = None
patterns = [
r"(?:v=|/v/|youtu\.be/)([^&?/]+)",
r"(?:embed/)([^&?/]+)",
]
for pattern in patterns:
match = re.search(pattern, url)
if match:
video_id = match.group(1)
break
if not video_id:
raise ValueError(f"Could not extract video ID from URL: {url}")
ytt_api = YouTubeTranscriptApi()
transcript = ytt_api.fetch(video_id)
lines = []
for snippet in transcript:
start = int(snippet.start)
hours, remainder = divmod(start, 3600)
minutes, seconds = divmod(remainder, 60)
if hours > 0:
timestamp = f"[{hours:02d}:{minutes:02d}:{seconds:02d}]"
else:
timestamp = f"[{minutes:02d}:{seconds:02d}]"
lines.append(f"{timestamp} {snippet.text}")
return "\n".join(lines)
def main():
if len(sys.argv) < 2:
print("Usage: uv run extract_transcript.py <youtube_url> [output_file]")
sys.exit(1)
url = sys.argv[1]
result = transcribe(url)
if len(sys.argv) >= 3:
from pathlib import Path
output_path = Path(sys.argv[2])
output_path.parent.mkdir(parents=True, exist_ok=True)
output_path.write_text(result)
print(f"Transcript saved to: {output_path}")
else:
print(result)
if __name__ == "__main__":
main()
Related skills
AI & Agent Buildingagents