BundledMedia

YouTube Transcript to Summary, Thread, Blog with Hermes Agent

YouTube transcripts to summaries, threads, blogs.

Written by Neura Market from the official Hermes Agent documentation for Youtube Content. Commands, paths, and version numbers are reproduced from the source unchanged.

Read the official documentation

This skill turns any YouTube video into structured written content. You give it a URL, it fetches the transcript, and you can format that transcript as a summary, a Twitter thread, a blog post, chapter outlines, or a list of notable quotes. It is bundled with Hermes Agent and ready to use on Linux, macOS, and Windows.

What it does

The skill extracts transcripts from YouTube videos and converts them into useful formats. It handles standard URLs, short links (youtu.be), shorts, embeds, live links, and raw 11-character video IDs. After fetching the transcript, you can ask for chapters, a concise summary, chapter summaries, a Twitter/X thread, a full blog post, or notable quotes with timestamps.

Before you start

You need uv installed and available in your Hermes-managed environment. The skill depends on the youtube-transcript-api Python package. Install it with:

uv pip install youtube-transcript-api

This installs the dependency into the same environment that runs the helper script. The skill directory (SKILL_DIR) contains the SKILL.md file and a scripts/fetch_transcript.py script.

Fetching a transcript

The helper script accepts any standard YouTube URL format, short links (youtu.be), shorts, embeds, live links, or a raw 11-character video ID.

# JSON output with metadata
uv run python3 SKILL_DIR/scripts/fetch_transcript.py "https://youtube.com/watch?v=VIDEO_ID"

# Plain text (good for piping into further processing)
uv run python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --text-only

# With timestamps
uv run python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --timestamps

# Specific language with fallback chain
uv run python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --language tr,en

The --language flag accepts a comma-separated list of language codes. The script tries each in order and falls back to the first available transcript if none match.

Output formats

After fetching the transcript, format it based on what the user asks for:

  • Chapters: Group by topic shifts, output timestamped chapter list
  • 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

Example, Chapters Output

00:00 Introduction — host opens with the problem statement
03:45 Background — prior work and why existing solutions fall short
12:20 Core method — walkthrough of the proposed approach
24:10 Results — benchmark comparisons and key takeaways
31:55 Q&A — audience questions on scalability and next steps

Workflow

  1. Fetch the transcript using the helper script with --text-only --timestamps via uv run python3.
  2. Validate: confirm the output is non-empty and in the expected language. If empty, retry without --language to get any available transcript. If still empty, tell the user the video likely has transcripts disabled.
  3. Chunk if needed: if the transcript exceeds ~50K characters, split into overlapping chunks (~40K with 2K overlap) and summarize each chunk before merging.
  4. Transform into the requested output format. If the user did not specify a format, default to a summary.
  5. Verify: re-read the transformed output to check for coherence, correct timestamps, and completeness before presenting.

Error handling

  • Transcript disabled: tell the user; suggest they check if subtitles are available on the video page.
  • Private/unavailable video: relay the error and ask the user to verify the URL.
  • No matching language: retry without --language to fetch any available transcript, then note the actual language to the user.
  • Dependency missing: run uv pip install youtube-transcript-api and retry.

When not to use it

The source does not list alternatives or exclusions. Use this skill whenever you need to extract and reformat YouTube video content. It is not designed for live streams that have not finished processing or for videos that have transcripts explicitly disabled by the uploader.

Limits and gotchas

  • The transcript must exist on YouTube. If the uploader disabled captions, the fetch will fail.
  • The --language flag is a fallback chain, not a filter. If you request tr,en and only English is available, you get English.
  • The chunking threshold (50K characters) is a practical limit for LLM context windows. If your transcript is longer, you must chunk it manually or the transformation step may produce incomplete results.
  • The script does not download video or audio; it only fetches the text transcript.

What pairs with this

The source does not list related skills or tools. In a Hermes Agent workflow, this skill pairs naturally with any skill that produces or consumes text, such as summarization, content generation, or social media posting skills.

More Media skills