72 lines
2.5 KiB
Markdown
72 lines
2.5 KiB
Markdown
---
|
|
name: youtube-content
|
|
description: Fetch YouTube video transcripts and transform them into structured content (chapters, summaries, threads, blog posts).
|
|
---
|
|
|
|
# YouTube Content Tool
|
|
|
|
Extract transcripts from YouTube videos and convert them into useful formats.
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
pip install youtube-transcript-api
|
|
```
|
|
|
|
## Helper script
|
|
|
|
This skill includes `fetch_transcript.py` — use it to fetch transcripts quickly:
|
|
|
|
```bash
|
|
# JSON output with metadata
|
|
python3 SKILL_DIR/scripts/fetch_transcript.py "https://youtube.com/watch?v=VIDEO_ID"
|
|
|
|
# With timestamps
|
|
python3 SKILL_DIR/scripts/fetch_transcript.py "https://youtube.com/watch?v=VIDEO_ID" --timestamps
|
|
|
|
# Plain text output (good for piping into further processing)
|
|
python3 SKILL_DIR/scripts/fetch_transcript.py "https://youtube.com/watch?v=VIDEO_ID" --text-only
|
|
|
|
# Specific language with fallback
|
|
python3 SKILL_DIR/scripts/fetch_transcript.py "https://youtube.com/watch?v=VIDEO_ID" --language tr,en
|
|
|
|
# Timestamped plain text
|
|
python3 SKILL_DIR/scripts/fetch_transcript.py "https://youtube.com/watch?v=VIDEO_ID" --text-only --timestamps
|
|
```
|
|
|
|
`SKILL_DIR` is the directory containing this SKILL.md file.
|
|
|
|
## URL formats supported
|
|
|
|
The script accepts any of these formats (or a raw 11-character video ID):
|
|
|
|
- `https://www.youtube.com/watch?v=VIDEO_ID`
|
|
- `https://youtu.be/VIDEO_ID`
|
|
- `https://youtube.com/shorts/VIDEO_ID`
|
|
- `https://youtube.com/embed/VIDEO_ID`
|
|
- `https://youtube.com/live/VIDEO_ID`
|
|
|
|
## Output formats
|
|
|
|
After fetching the transcript, format it based on what the user asks for:
|
|
|
|
- **Chapters**: Group by topic shifts, output timestamped chapter list (`00:00 Introduction`, `03:45 Main Topic`, etc.)
|
|
- **Summary**: Concise 5-10 sentence overview of the entire video
|
|
- **Chapter summaries**: Chapters with a short paragraph summary for each
|
|
- **Thread**: Twitter/X thread format — numbered posts, each under 280 chars
|
|
- **Blog post**: Full article with title, sections, and key takeaways
|
|
- **Quotes**: Notable quotes with timestamps
|
|
|
|
## Workflow
|
|
|
|
1. Fetch the transcript using the helper script
|
|
2. If the transcript is very long (>50K chars), summarize in chunks
|
|
3. Transform into the requested output format using your own reasoning
|
|
|
|
## Error handling
|
|
|
|
- **Transcript disabled**: Some videos have transcripts turned off — tell the user
|
|
- **Private/unavailable**: The API will raise an error — relay it clearly
|
|
- **No matching language**: Try without specifying a language to get whatever's available
|
|
- **Dependency missing**: Run `pip install youtube-transcript-api` first
|