YouTube Content -- Setup Guide¶
Source: nousresearch/hermes-agent (160 installs) Category: Media / Content Extraction Status: Native Hermes Agent skill (built-in)
Extract transcripts from any YouTube video and transform them into structured content: chapter breakdowns, summaries, X/Twitter threads, blog posts, and timestamped quotes. Essential for content repurposing, research synthesis, and competitive analysis.
Installation¶
This is a native Hermes Agent skill -- it ships with Hermes and is available by default. If you need the standalone skills.sh version:
npx skills add nousresearch/hermes-agent --skill youtube-content
Dependency Setup¶
The transcript fetcher uses youtube-transcript-api. Install once:
uv pip install youtube-transcript-api
Prerequisites¶
| Requirement | Details |
|---|---|
| Hermes Agent | Any version (skill is built-in) |
| uv | Python package manager (bundled with Hermes) |
| youtube-transcript-api | Install via uv pip install youtube-transcript-api |
| Network access | Fetching transcripts requires outbound HTTPS to YouTube |
Key Capabilities¶
Core Features¶
| Capability | How to Trigger | Notes |
|---|---|---|
| Transcript extraction | Share any YouTube URL -- full video ID, shorts, youtu.be, embeds, or live links | Returns JSON with metadata: title, channel, duration, language |
| Chapter breakdown | "Break this video into chapters" or "timestamped summary" | Auto-detects topic shifts, outputs HH:MM:SS -- description format |
| Video summary | "Summarize this video" | 5-10 sentence overview (default output if no format specified) |
| X/Twitter thread | "Turn this into a thread" | Numbered posts, each ≤280 characters |
| Blog post | "Write a blog post from this video" | Full article with title, sections, key takeaways |
| Quote extraction | "Pull out the best quotes" | Notable quotes with timestamps |
| Multi-language | Specify --language tr,en for fallback chain |
Retries without --language if specified language unavailable |
CLI Command Reference¶
# JSON output with metadata
uv run python3 SKILL_DIR/scripts/fetch_transcript.py "https://youtube.com/watch?v=VIDEO_ID"
# Plain text for piping
uv run python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --text-only
# Timestamped output
uv run python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --timestamps
# Language fallback chain
uv run python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --language tr,en
Processing Workflow¶
- Fetch: Run
fetch_transcript.pywith--text-only --timestampsviauv run python3 - Validate: Confirm non-empty output in expected language; retry without
--languageif empty - Chunk: Split >50K char transcripts into ~40K overlapping chunks, summarize each, then merge
- Transform: Convert to requested format (summary → chapters → thread → blog post → quotes)
- Verify: Re-read output for coherence, correct timestamps, and completeness
CorpusIQ Use Cases¶
| Use Case | How |
|---|---|
| Competitive video analysis | Extract transcripts from competitor product demos, founder interviews, and industry panels -- feed into research pipeline |
| Content repurposing | Turn YouTube interviews/podcasts into blog posts for the CorpusIQ content engine, X threads for social, or email newsletter content |
| Creator partnership research | Analyze potential creator partners' content -- extract key talking points, audience engagement patterns, and content quality before outreach |
| Market intelligence | Monitor AI agent ecosystem videos -- product launches, framework comparisons, architecture discussions -- extract insights for product roadmap |
| Lead qualification | When a prospect mentions a YouTube video, extract the transcript and find specific timestamps that match their pain points for personalized follow-up |
Troubleshooting¶
| Issue | Fix |
|---|---|
| "Transcript disabled" | Video owner disabled subtitles. Verify on the YouTube page directly -- if no CC button, no transcript exists |
| "Private/unavailable video" | Ask the user to verify the URL. Private, unlisted-without-link, or region-blocked videos return errors |
| Wrong language returned | Retry without --language flag to get any available transcript, then note the actual language to the user |
| Dependency missing | Run uv pip install youtube-transcript-api and retry |
| Empty transcript | Retry without --language to get any available transcript. If still empty, the video likely has transcripts disabled entirely |
| Large video times out | The script handles standard videos. For 3+ hour videos, the transcript may be large -- the chunking workflow handles this automatically |
Verification¶
# Verify skill is available
hermes skills list | grep youtube-content
# Quick functional test
uv run python3 ~/.hermes/skills/media/youtube-content/scripts/fetch_transcript.py "dQw4w9WgXcQ" --text-only | head -5
← Skills Catalog | Media Skills → Powered by CorpusIQ
*
This Hermes repo is one of the largest structured collections of public AI, automation, business, and technology documentation. Content remains attributed to original authors and repositories. Indexed and organized by www.CorpusIQ.io.