youtube-text-fetch

star 10

Fetch transcript/caption text from YouTube videos using youtube-transcript-api. Use when: (1) User wants text from a YouTube video, (2) User provides YouTube URLs and needs transcripts, (3) User says 'fetch youtube text', 'get captions', 'youtube transcript'. Outputs plain text saved to $HOME/cclogs/{slug}/.

Takazudo By Takazudo schedule Updated 5/7/2026

name: youtube-text-fetch description: "Fetch transcript/caption text from YouTube videos using youtube-transcript-api. Use when: (1) User wants text from a YouTube video, (2) User provides YouTube URLs and needs transcripts, (3) User says 'fetch youtube text', 'get captions', 'youtube transcript'. Outputs plain text saved to $HOME/cclogs/{slug}/." user_invocable: true argument_description: "YouTube URL(s) — space-separated if multiple. Optional flags: --timestamps (include timestamps in output)"

YouTube Text Fetch

Fetch transcript/caption text from YouTube videos.

Note: For full video processing (download, frame capture, transcript, and article writing), use the /youtube-guide-writer skill instead. This skill is for quick transcript-only extraction.

Prerequisites

Requires youtube-transcript-api Python package:

pip3 install youtube-transcript-api

If not installed, install it automatically before proceeding.

Workflow

1. Parse Video IDs

Extract video IDs from provided URLs. Supported formats:

  • https://youtu.be/<ID>
  • https://youtu.be/<ID>?si=...
  • https://www.youtube.com/watch?v=<ID>
  • https://youtube.com/watch?v=<ID>&...

Check if --timestamps flag is present (include timestamps in output).

2. Fetch Transcripts

For each video ID, run:

With timestamps (default when --timestamps flag is used, or when writing guide articles):

python3 -c "
from youtube_transcript_api import YouTubeTranscriptApi
snippets = YouTubeTranscriptApi().fetch('VIDEO_ID')
for s in snippets:
    minutes = int(s.start // 60)
    seconds = int(s.start % 60)
    print(f'[{minutes:02d}:{seconds:02d}] {s.text}')
"

Plain text (default):

python3 -c "
from youtube_transcript_api import YouTubeTranscriptApi
snippets = YouTubeTranscriptApi().fetch('VIDEO_ID')
for s in snippets:
    print(s.text)
"

If the default language fails, try fetching with specific language codes:

python3 -c "
from youtube_transcript_api import YouTubeTranscriptApi
snippets = YouTubeTranscriptApi().fetch('VIDEO_ID', languages=['en', 'ja'])
for s in snippets:
    print(s.text)
"

3. Save Output

Determine the log directory first:

LOGDIR=$(node $HOME/.claude/scripts/get-logdir.js)
mkdir -p "$LOGDIR"

Save each transcript to $LOGDIR/youtube-<VIDEO_ID>.txt.

If multiple videos are provided, also create a combined file $LOGDIR/youtube-combined.txt with clear separators between each video's transcript.

4. Report

Print a summary of what was fetched:

  • Video ID
  • Language detected
  • Approximate word/character count
  • Output file path

Alternative: yt-tools Sub-Package

If the project has the sub-packages/yt-tools/ sub-package, it provides a more comprehensive workflow including video download and frame capture:

cd sub-packages/yt-tools
pnpm download <youtube-url>        # Downloads video + metadata + transcript
pnpm capture:auto <video-id>       # Auto-captures frames at intervals

Use yt-tools when you need the full video processing pipeline (download, capture, transcript). Use this skill (/youtube-text-fetch) when you only need the transcript text.

Install via CLI
npx skills add https://github.com/Takazudo/claude-resources --skill youtube-text-fetch
Repository Details
star Stars 10
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator