OpenClicky compatibility guardrails
- Follow
../_shared/OpenClickySkillCompatibilityPolicy.md before acting.
- Verify required local commands, tools, keys, or bridge endpoints before promising execution.
- Treat sends, publishes, deploys, deletes, moves, merges, playlist/library changes, cloud writes, and app-control clicks as external writes unless this skill narrows them further.
- Stop and report the exact missing setup step for unavailable tools, auth, or macOS permissions; do not loop or silently switch to browser automation.
YouTube Content Tool
When to use
Use when the user shares a YouTube URL or video link, asks to summarize a video, requests a transcript, or wants to extract and reformat content from any YouTube video. Transforms transcripts into structured content (chapters, summaries, threads, blog posts).
Extract transcripts from YouTube videos and convert them into useful formats.
Setup
pip install youtube-transcript-api
Helper Script
SKILL_DIR is the directory containing this SKILL.md file. The 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
python3 SKILL_DIR/scripts/fetch_transcript.py "https://youtube.com/watch?v=VIDEO_ID"
# Plain text (good for piping into further processing)
python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --text-only
# With timestamps
python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --timestamps
# Specific language with fallback chain
python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --language tr,en
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
- Fetch the transcript using the helper script with
--text-only --timestamps.
- 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.
- Chunk if needed: if the transcript exceeds
50K characters, split into overlapping chunks (40K with 2K overlap) and summarize each chunk before merging.
- Transform into the requested output format. If the user did not specify a format, default to a summary.
- 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
pip install youtube-transcript-api and retry.
1---2name: youtube-content3description: YouTube transcripts to summaries, threads, blogs.4---56## OpenClicky compatibility guardrails78- Follow `../_shared/OpenClickySkillCompatibilityPolicy.md` before acting.9- Verify required local commands, tools, keys, or bridge endpoints before promising execution.10- Treat sends, publishes, deploys, deletes, moves, merges, playlist/library changes, cloud writes, and app-control clicks as external writes unless this skill narrows them further.11- Stop and report the exact missing setup step for unavailable tools, auth, or macOS permissions; do not loop or silently switch to browser automation.1213# YouTube Content Tool1415## When to use1617Use when the user shares a YouTube URL or video link, asks to summarize a video, requests a transcript, or wants to extract and reformat content from any YouTube video. Transforms transcripts into structured content (chapters, summaries, threads, blog posts).1819Extract transcripts from YouTube videos and convert them into useful formats.2021## Setup2223```bash24pip install youtube-transcript-api25```2627## Helper Script2829`SKILL_DIR` is the directory containing this SKILL.md file. The script accepts any standard YouTube URL format, short links (youtu.be), shorts, embeds, live links, or a raw 11-character video ID.3031```bash32# JSON output with metadata33python3 SKILL_DIR/scripts/fetch_transcript.py "https://youtube.com/watch?v=VIDEO_ID"3435# Plain text (good for piping into further processing)36python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --text-only3738# With timestamps39python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --timestamps4041# Specific language with fallback chain42python3 SKILL_DIR/scripts/fetch_transcript.py "URL" --language tr,en43```4445## Output Formats4647After fetching the transcript, format it based on what the user asks for:4849- **Chapters**: Group by topic shifts, output timestamped chapter list50- **Summary**: Concise 5-10 sentence overview of the entire video51- **Chapter summaries**: Chapters with a short paragraph summary for each52- **Thread**: Twitter/X thread format — numbered posts, each under 280 chars53- **Blog post**: Full article with title, sections, and key takeaways54- **Quotes**: Notable quotes with timestamps5556### Example — Chapters Output5758```5900:00 Introduction — host opens with the problem statement6003:45 Background — prior work and why existing solutions fall short6112:20 Core method — walkthrough of the proposed approach6224:10 Results — benchmark comparisons and key takeaways6331:55 Q&A — audience questions on scalability and next steps64```6566## Workflow67681. **Fetch** the transcript using the helper script with `--text-only --timestamps`.692. **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.703. **Chunk if needed**: if the transcript exceeds ~50K characters, split into overlapping chunks (~40K with 2K overlap) and summarize each chunk before merging.714. **Transform** into the requested output format. If the user did not specify a format, default to a summary.725. **Verify**: re-read the transformed output to check for coherence, correct timestamps, and completeness before presenting.7374## Error Handling7576- **Transcript disabled**: tell the user; suggest they check if subtitles are available on the video page.77- **Private/unavailable video**: relay the error and ask the user to verify the URL.78- **No matching language**: retry without `--language` to fetch any available transcript, then note the actual language to the user.79- **Dependency missing**: run `pip install youtube-transcript-api` and retry.