Skip to content

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

  1. Fetch: Run fetch_transcript.py with --text-only --timestamps via uv run python3
  2. Validate: Confirm non-empty output in expected language; retry without --language if empty
  3. Chunk: Split >50K char transcripts into ~40K overlapping chunks, summarize each, then merge
  4. Transform: Convert to requested format (summary → chapters → thread → blog post → quotes)
  5. 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