mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-28 06:51:16 +08:00
Add youtube transcript collection skill:
Co-authored-by: UfukNode <ufuk@crivacy.io>
This commit is contained in:
71
skills/media/youtube-content/SKILL.md
Normal file
71
skills/media/youtube-content/SKILL.md
Normal file
@@ -0,0 +1,71 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user