Install
openclaw skills install tldwExtracts YouTube video transcripts and provides concise summaries highlighting main points, arguments, and conclusions without watching the full video.
openclaw skills install tldwtoo long; didn't watch
Extract and summarize YouTube video transcripts quickly and efficiently.
The tldw skill takes a YouTube URL, extracts the video transcript, and provides a comprehensive summary of the content. This allows you to quickly understand video content without watching the entire video.
This skill solves the problem of information overload from video content. Instead of spending 10-60 minutes watching a video, you can get the key points, main arguments, and conclusions in a concise summary within seconds.
Use this skill when:
This skill is based on the tldw project by stong. Full attribution and licensing details are available in ATTRIBUTION.md.
The skill uses a Python virtual environment with the following dependencies:
All dependencies are installed in the local virtual environment at venv/.
--cookies flagtldw/
├── SKILL.md # This documentation
├── ATTRIBUTION.md # Credit to original project
├── LICENSE # AGPL-3.0 license
├── scripts/
│ └── extract_transcript.py # Main extraction script
├── cache/ # Cached transcripts (auto-created)
└── venv/ # Python virtual environment
├── bin/
│ └── yt-dlp # Video transcript downloader
└── lib/ # Python packages
Follow these steps to set up the tldw skill:
Navigate to the skill directory:
cd tldw/
Create a Python virtual environment:
python3 -m venv venv
Install dependencies:
venv/bin/pip install yt-dlp webvtt-py
Verify installation:
venv/bin/yt-dlp --version
The cache directory will be created automatically on first use
The skill is now ready to use!
When a user provides a YouTube URL and requests a summary, use the following workflow:
cd tldw/ && \
venv/bin/python scripts/extract_transcript.py \
--json --cache-dir cache "YOUTUBE_URL"
The script returns JSON with the following structure:
{
"transcript": "Full cleaned transcript text...",
"video_id": "video_id_here",
"title": "Video Title",
"description": "Video description...",
"duration": 1234,
"uploader": "Channel Name",
"upload_date": "20260101",
"view_count": 12345,
"webpage_url": "https://www.youtube.com/watch?v=..."
}
Extract the transcript field and process it directly to create a comprehensive summary.
--json: Output in JSON format (recommended for parsing)--cache-dir <path>: Specify cache directory (default: cache/)--cookies <file>: Path to Netscape-format cookie file for age-restricted content# 1. Extract transcript
cd tldw/ && \
venv/bin/python scripts/extract_transcript.py \
--json --cache-dir cache "https://www.youtube.com/watch?v=VIDEO_ID"
# 2. Parse the JSON output and extract the transcript field
# 3. Summarize the transcript directly (include main points, key arguments, conclusions)
# 4. Return formatted summary to user
For age-restricted or members-only videos, export cookies from your browser:
youtube_cookies.txt)--cookies youtube_cookies.txtError message: "No subtitles/captions found"
What it means: The video has no auto-generated or manual captions available.
Solution: Inform the user that the video cannot be transcribed because it lacks captions.
Error message: "ERROR: unable to download video data"
What it means: The URL is malformed, the video doesn't exist, or it's private/deleted.
Solution: Verify the URL is correct and check if the video is publicly accessible.
Error message: "Sign in to confirm your age" or similar authentication errors
What it means: The video requires age verification or YouTube login.
Solution: Use the --cookies flag with exported browser cookies (see "Accessing Age-Restricted Content" above).
Error messages: "Unable to download", "Connection timeout", extraction failures
What it means: Network issues, YouTube blocking the request, or outdated yt-dlp that's incompatible with current YouTube.
Solution:
cd tldw/ && \
venv/bin/pip install --upgrade yt-dlp
YouTube frequently changes their API, so keeping yt-dlp updated is essential.
Symptoms: Permission errors, disk full errors
What it means: The cache directory has permission problems or insufficient disk space.
Solution: Check available disk space with df -h and verify write permissions on the cache/ directory.
Note: Transcripts over 50,000 characters may take longer to process.
Best practice: Process large transcripts directly in the main agent session. Do not delegate to sub-agents, as they have been found unreliable with large payloads.
To see full error output (not just the last 100 lines):
cd tldw/ && \
venv/bin/python scripts/extract_transcript.py \
--json --cache-dir cache "YOUTUBE_URL"
To inspect cached transcripts:
ls -lh tldw/cache/