Video To Notes
KIRVO-REPORTING/video-to-notes
Use immediately for any bare YouTube or YouTube Shorts URL, youtu.be link, Bilibili or b23.tv link, or other video URL; do not ask what the user wants.
Downloads YouTube video transcripts/subtitles and cover images by URL or video ID.
$ npx skills add JimLiu/baoyu-skills --skill baoyu-youtube-transcript -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install JimLiu/baoyu-skills baoyu-youtube-transcript --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/JimLiu/baoyu-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/baoyu-youtube-transcript .claude/skills/baoyu-youtube-transcript && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "baoyu-youtube-transcript" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-youtube-transcript into .claude/skills/baoyu-youtube-transcript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-youtube-transcript", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-youtube-transcriptType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add JimLiu/baoyu-skills --skill baoyu-youtube-transcript -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install JimLiu/baoyu-skills baoyu-youtube-transcript --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JimLiu/baoyu-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/baoyu-youtube-transcript .agents/skills/baoyu-youtube-transcript && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "baoyu-youtube-transcript" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-youtube-transcript into .agents/skills/baoyu-youtube-transcript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-youtube-transcript", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add JimLiu/baoyu-skills --skill baoyu-youtube-transcript -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install JimLiu/baoyu-skills baoyu-youtube-transcript --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JimLiu/baoyu-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/baoyu-youtube-transcript .cursor/skills/baoyu-youtube-transcript && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "baoyu-youtube-transcript" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-youtube-transcript into .cursor/skills/baoyu-youtube-transcript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-youtube-transcript", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/JimLiu/baoyu-skills.git --path skills/baoyu-youtube-transcript--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add JimLiu/baoyu-skills --skill baoyu-youtube-transcript -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install JimLiu/baoyu-skills baoyu-youtube-transcript --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JimLiu/baoyu-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/baoyu-youtube-transcript .gemini/skills/baoyu-youtube-transcript && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "baoyu-youtube-transcript" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-youtube-transcript into .gemini/skills/baoyu-youtube-transcript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-youtube-transcript", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install JimLiu/baoyu-skills baoyu-youtube-transcriptInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add JimLiu/baoyu-skills --skill baoyu-youtube-transcript -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/JimLiu/baoyu-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/baoyu-youtube-transcript .github/skills/baoyu-youtube-transcript && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "baoyu-youtube-transcript" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-youtube-transcript into .github/skills/baoyu-youtube-transcript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-youtube-transcript", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add JimLiu/baoyu-skills --skill baoyu-youtube-transcript -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install JimLiu/baoyu-skills baoyu-youtube-transcript --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JimLiu/baoyu-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/baoyu-youtube-transcript .opencode/skills/baoyu-youtube-transcript && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "baoyu-youtube-transcript" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-youtube-transcript into .opencode/skills/baoyu-youtube-transcript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-youtube-transcript", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
baoyu-youtube-transcriptDownloads YouTube video transcripts/subtitles and cover images by URL or video ID.
Baoyu Youtube Transcript is an agent skill from JimLiu/baoyu-skills. Downloads YouTube video transcripts/subtitles and cover images by URL or video ID. Supports multiple languages, translation, chapters, and speaker identification. Caches raw data for fast re-formatting. Use when user asks to "get YouTube transcript", "download subtitles", "get captions", "YouTube字幕", "YouTube封面", "视频封面", "video thumbnail", "video cover image", or provides a YouTube URL and wants the transcript/subtitle text or cover image extracted.
Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including scripts (for example `prompts/speaker-transcript.md`, `scripts/main.test.ts` and `scripts/main.ts`).
It sits in Media & Creative, covering Transcription, Video and podcast notes and Social media graphics. It works with YouTube. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 1567581. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 7 files in scripts/ (TypeScript), which the agent can run.
Shell commands in SKILL.md call:
npxyt-dlpFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
youtube.comyoutu.beFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Baoyu Youtube Transcript loads about 2.4k tokens when it runs. Until then it costs about 120 tokens; SKILL.md has 874 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from JimLiu/baoyu-skills at commit 1567581, republished under its MIT licence (© JimLiu). 874 words, ~2,398 tokens.
.claude/skills/baoyu-youtube-transcript/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.Downloads transcripts (subtitles/captions) from YouTube videos. Works with both manually created and auto-generated transcripts. No API key or browser required — uses YouTube's InnerTube API directly and automatically falls back to yt-dlp when YouTube blocks the direct API path.
Fetches video metadata and cover image on first run, caches raw data for fast re-formatting.
Scripts in scripts/ subdirectory. {baseDir} = this SKILL.md's directory path. Resolve ${BUN_X} runtime: if bun installed → bun; if npx available → npx -y bun; else suggest installing bun. Replace {baseDir} and ${BUN_X} with actual values.
| Script | Purpose |
|---|---|
scripts/main.ts | Transcript download CLI |
# Default: markdown with timestamps (English)
${BUN_X} {baseDir}/scripts/main.ts <youtube-url-or-id>
# Specify languages (priority order)
${BUN_X} {baseDir}/scripts/main.ts <url> --languages zh,en,ja
# Without timestamps
${BUN_X} {baseDir}/scripts/main.ts <url> --no-timestamps
# With chapter segmentation
${BUN_X} {baseDir}/scripts/main.ts <url> --chapters
# With speaker identification (requires AI post-processing)
${BUN_X} {baseDir}/scripts/main.ts <url> --speakers
# SRT subtitle file
${BUN_X} {baseDir}/scripts/main.ts <url> --format srt
# Translate transcript
${BUN_X} {baseDir}/scripts/main.ts <url> --translate zh-Hans
# List available transcripts
${BUN_X} {baseDir}/scripts/main.ts <url> --list
# Force re-fetch (ignore cache)
${BUN_X} {baseDir}/scripts/main.ts <url> --refresh| Option | Description | Default |
|---|---|---|
<url-or-id> | YouTube URL or video ID (multiple allowed) | Required |
--languages <codes> | Language codes, comma-separated, in priority order | en |
--format <fmt> | Output format: text, srt | text |
--translate <code> | Translate to specified language code | |
--list | List available transcripts instead of fetching | |
--timestamps | Include [HH:MM:SS → HH:MM:SS] timestamps per paragraph | on |
--no-timestamps | Disable timestamps | |
--chapters | Chapter segmentation from video description | |
--speakers | Raw transcript with metadata for speaker identification | |
--exclude-generated | Skip auto-generated transcripts | |
--exclude-manually-created | Skip manually created transcripts | |
--refresh | Force re-fetch, ignore cached data | |
-o, --output <path> | Save to specific file path | auto-generated |
--output-dir <dir> | Base output directory | youtube-transcript |
| Variable | Description |
|---|---|
YOUTUBE_TRANSCRIPT_COOKIES_FROM_BROWSER | Passed to yt-dlp --cookies-from-browser during fallback, e.g. chrome, safari, firefox, or chrome:Profile 1 |
Accepts any of these as video input:
https://www.youtube.com/watch?v=dQw4w9WgXcQhttps://youtu.be/dQw4w9WgXcQhttps://www.youtube.com/embed/dQw4w9WgXcQhttps://www.youtube.com/shorts/dQw4w9WgXcQdQw4w9WgXcQ| Format | Extension | Description |
|---|---|---|
text | .md | Markdown with frontmatter (incl. description), title heading, summary, optional TOC/cover/timestamps/chapters/speakers |
srt | .srt | SubRip subtitle format for video players |
youtube-transcript/
├── .index.json # Video ID → directory path mapping (for cache lookup)
└── {channel-slug}/{title-full-slug}/
├── meta.json # Video metadata (title, channel, description, duration, chapters, etc.)
├── transcript-raw.json # Raw transcript snippets from YouTube API (cached)
├── transcript-sentences.json # Sentence-segmented transcript (split by punctuation, merged across snippets)
├── imgs/
│ └── cover.jpg # Video thumbnail
├── transcript.md # Markdown transcript (generated from sentences)
└── transcript.srt # SRT subtitle (generated from raw snippets, if --format srt){channel-slug}: Channel name in kebab-case{title-full-slug}: Full video title in kebab-caseThe --list mode outputs to stdout only (no file saved).
On first fetch, the script saves:
meta.json — video metadata, chapters, cover image path, language infotranscript-raw.json — raw transcript snippets from YouTube API ({ text, start, duration }[])transcript-sentences.json — sentence-segmented transcript ({ text, start: "HH:mm:ss", end: "HH:mm:ss" }[]), split by sentence-ending punctuation (.?!…。?! etc.), timestamps proportionally allocated by character length, CJK-aware text mergingimgs/cover.jpg — video thumbnailSubsequent runs for the same video use cached data (no network calls). Use --refresh to force re-fetch. If a different language is requested, the cache is automatically refreshed.
When YouTube returns anti-bot / blocked responses on the direct InnerTube path, the script retries with alternate client identities and then falls back to yt-dlp if available. If fallback is needed but yt-dlp is unavailable, the agent should decide how to make yt-dlp available and continue rather than pushing the installation decision to the user.
SRT output (--format srt) is generated from transcript-raw.json. Text/markdown output uses transcript-sentences.json for natural sentence boundaries.
When user provides a YouTube URL and wants the transcript:
--list first if the user hasn't specified a language, to show available options? as a glob wildcard, so an unquoted YouTube URL causes "no matches found": use 'https://www.youtube.com/watch?v=ID'--chapters --speakers for the richest output (chapters + speaker identification)--speakers mode: after the script saves the raw file, follow the speaker identification workflow below to post-process with speaker labelsWhen user only wants a cover image or metadata, running the script with any option will also cache meta.json and imgs/cover.jpg.
When re-formatting the same video (e.g., first text then SRT), the cached data is reused — no re-fetch needed.
--chapters)The script parses chapter timestamps from the video description (e.g., 0:00 Introduction), segments the transcript by chapter boundaries, groups snippets into readable paragraphs, and saves as .md with a Table of Contents. No further processing needed.
If no chapter timestamps exist in the description, the transcript is output as grouped paragraphs without chapter headings.
--speakers)Speaker identification requires AI processing. The script outputs a raw .md file containing:
After the script saves the raw file, spawn a sub-agent (use a cheaper model like Sonnet for cost efficiency) to process speaker identification:
.md file{baseDir}/prompts/speaker-transcript.md**Speaker Name:** labels, paragraph grouping (2-4 sentences), and [HH:MM:SS → HH:MM:SS] timestamps.md file with the processed transcript (keep the YAML frontmatter)When --speakers is used, --chapters is implied — the processed output always includes chapter segmentation.
| Error | Meaning |
|---|---|
| Transcripts disabled | Video has no captions at all |
| No transcript found | Requested language not available |
| Video unavailable | Video deleted, private, or region-locked |
| IP blocked | Too many requests, try again later |
| Age restricted | Video requires login for age verification |
| bot detected | The script retries alternate clients and then yt-dlp; if fallback tooling is missing, the agent should resolve that itself, otherwise if it still fails try YOUTUBE_TRANSCRIPT_COOKIES_FROM_BROWSER=safari (or your browser) |
© JimLiu, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 8 other files (scripts) in skills/baoyu-youtube-transcript of JimLiu/baoyu-skills.
Open the folder on GitHubat commit 1567581
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in JimLiu/baoyu-skills, which our catalogue first saw on October 7, 2026.
Baoyu Youtube Transcript next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Baoyu Youtube Transcript this skillJimLiu/baoyu-skills | 26k | 1 repos | ~2.4k | Automated safety check: Pass | MIT | |
| Video To NotesKIRVO-REPORTING/video-to-notes | 105 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Video Link Transcript ExtractorSpaceZephyr/creator-buddy | 1.6k | — | ~498 | Automated safety check: Pass | None | |
| Watch Videocoreyhaines31/makerskills | 850 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Video Transcript Downloadersundial-org/awesome-openclaw-skills | 663 | 2 repos | ~574 | Automated safety check: Pass | None | |
| Video SummaryLeoYeAI/openclaw-master-skills | 2.2k | — | ~4.2k | Automated safety check: Pass | MIT |
KIRVO-REPORTING/video-to-notes
Use immediately for any bare YouTube or YouTube Shorts URL, youtu.be link, Bilibili or b23.tv link, or other video URL; do not ask what the user wants.
SpaceZephyr/creator-buddy
Extracts subtitles or a full transcript from YouTube, Xiaoyuzhou, Bilibili, Douyin and Xiaohongshu links, using speech recognition when a video has no subtitles.
coreyhaines31/makerskills
When you want to extract content from a video — YouTube, Loom, Vimeo, Riverside, Zoom recording, local MP4, X/IG video, anything yt-dlp supports.
sundial-org/awesome-openclaw-skills
Download videos, audio, subtitles, and clean paragraph-style transcripts from YouTube and any other yt-dlp supported site.
LeoYeAI/openclaw-master-skills
Video summarization for Bilibili, Xiaohongshu, Douyin, and YouTube.
sundial-org/awesome-openclaw-skills
Create a verbatim transcript for a YouTube URL using Google Gemini (speaker labels, paragraph breaks; no time codes).
JimLiu/baoyu-skills
Reformats plain text or Markdown articles with frontmatter, a title, a summary, headings, bold, lists and code blocks, and saves a separate formatted copy.
JimLiu/baoyu-skills
Saves tweets, threads and X Articles as Markdown files with YAML front matter, using an unofficial API that asks for your consent first.
JimLiu/baoyu-skills
Creates standalone dark-themed SVG diagrams, including architecture, flowchart, sequence, structural, mind map, timeline and state machine types.
JimLiu/baoyu-skills
Publishes articles and image-text posts to a WeChat Official Account through the API or Chrome CDP, converting markdown to WeChat-ready HTML with link citations.
JimLiu/baoyu-skills
Compresses images to WebP by default, or to PNG or JPEG, picking the best available tool on the machine and optionally processing whole folders.
JimLiu/baoyu-skills
Generates text and images through an unofficial, reverse-engineered Gemini Web API, supporting reference images and multi-turn conversations.
Works with
Categories
Downloads YouTube video transcripts/subtitles and cover images by URL or video ID. Baoyu Youtube Transcript is an agent skill from JimLiu/baoyu-skills. Downloads YouTube video transcripts/subtitles and cover images by URL or video ID.
Baoyu Youtube Transcript fits situations like: user asks to get YouTube transcript; download subtitles; video thumbnail; video cover image.
Run `npx skills add JimLiu/baoyu-skills --skill baoyu-youtube-transcript -a claude-code`. Or copy the skill folder (skills/baoyu-youtube-transcript in JimLiu/baoyu-skills) into .claude/skills/baoyu-youtube-transcript in your project. Claude Code loads it when a task matches its description.
Run `npx skills add JimLiu/baoyu-skills --skill baoyu-youtube-transcript -a codex`. Or copy the skill folder (skills/baoyu-youtube-transcript in JimLiu/baoyu-skills) into .agents/skills/baoyu-youtube-transcript in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add JimLiu/baoyu-skills --skill baoyu-youtube-transcript -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/baoyu-youtube-transcript, .gemini/skills/baoyu-youtube-transcript, .github/skills/baoyu-youtube-transcript and .opencode/skills/baoyu-youtube-transcript in your project.
Going by SKILL.md and its folder, Baoyu Youtube Transcript needs TypeScript for the scripts in its folder and the command-line tools its instructions call (npx and yt-dlp). Our summary lists: Node.js.
SKILL.md names 2 domains. In commands or code: youtube.com and youtu.be; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Baoyu Youtube Transcript is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.4k tokens (SKILL.md is roughly 9.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Baoyu Youtube Transcript: Video To Notes (KIRVO-REPORTING/video-to-notes, 105 stars), Video Link Transcript Extractor (SpaceZephyr/creator-buddy, 1.6k stars), Watch Video (coreyhaines31/makerskills, 850 stars) and Video Transcript Downloader (sundial-org/awesome-openclaw-skills, 663 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
JimLiu (a GitHub user) maintains it in JimLiu/baoyu-skills, which has 26,455 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on September 10, 2026.
Source: JimLiu/baoyu-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.