NanoSkill
提交你的 Skill

YouTube 轉錄代理技能

作者JimLiu1KGitHub 星標GitHub

透過網址或影片 ID 下載 YouTube 影片的轉錄稿、字幕和封面圖片。支援多語言、翻譯、章節分段和說話者識別,提升內容可及性。數秒內即可免費開始使用。

youtube安全掃描通過
結果預覽

完整 Demo

探索由此技能所驅動的專業影片分析報告。

開始使用

完成第一個任務

  1. A screenshot showing the installation process of the 'baoyu-youtube-transcript' AI agent skill from a GitHub repository using an NPX command. At the top, a blue command banner displays the installation command for adding the skill from the GitHub repository. Below, a conversational interface explains the installation workflow, including handling an interactive installation prompt, detecting that the process did not complete automatically, rerunning the command with a '-y' flag to bypass prompts, and explicitly targeting the Hermes Agent environment. The log then describes creating a symbolic link from the agent skills directory to the Hermes skills directory so the skill can be recognized by the Hermes Agent. A final confirmation states that the 'baoyu-youtube-transcript' skill was successfully installed, linked, and is available for use through a skill invocation command. The interface uses a clean chat-style layout with gray response panels, dark blue command highlighting, and monospaced code snippets for file paths and terminal commands.
    01

    安裝

    將 YouTube 轉錄代理技能加入到您的 AI 代理中。

  2. A screenshot showing a prompt and response workflow for a YouTube transcript analysis skill. The top section contains a dark blue prompt panel describing an AI-powered content research and knowledge extraction system designed to analyze YouTube videos and transform them into structured knowledge assets. The prompt outlines requirements such as extracting complete transcripts, metadata, chapter structures, timestamps, speaker distinctions, key topics, major insights, statistics, examples, and actionable takeaways. It also lists supported output formats including executive summaries, study notes, blog articles, social media content, newsletter drafts, and research reports. Additional instructions emphasize transcript quality evaluation, improved readability, information hierarchy, redundancy removal, and generating a polished final deliverable. The requested output is a visually engaging PDF report with chapter navigation, highlighted takeaways, and presentation-ready layouts. Beneath the prompt, a gray response panel shows the AI acknowledging that the skill has been loaded successfully but explaining that a YouTube URL is still required before transcript extraction and report generation can begin. The interface uses a clean chat-style layout with large rounded panels, white text on a dark blue background, and structured instructional formatting.
    02

    提供內容

    分享一個 YouTube 連結並指定您想要的輸出格式。

  3. A presentation cover slide for a TED Talk analysis and knowledge report. The slide features a bold red background with a teal accent bar running along the bottom edge. Centered at the top is the large white title 'This Is How Kids Should Be Learning with AI.' Below the title, the speaker attribution reads 'Priya Lakhani | TEDNext 2025,' followed by the subtitle 'TED Talk Analysis & Knowledge Report' in italicized white text. In the center of the slide is a thumbnail image from the TED Talk showing Priya Lakhani on stage. The thumbnail includes the prominent message 'AI Isn't a Shortcut to Learning' alongside the TED logo. The overall design resembles a professional research report cover, using strong typography, high contrast colors, and a clean layout to introduce an educational analysis focused on artificial intelligence, learning science, and the future of education.
    03

    擷取洞察

    生成結構化的轉錄稿、摘要、重點精華和可重複使用的內容。

安裝指令

$ npx skills add https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-youtube-transcript

關於

YouTube 轉錄稿下載技能提供了一個強大的解決方案,用於從 YouTube 影片中提取全面的資訊。此技能讓使用者只需提供影片網址或 ID,就能輕鬆下載完整的 YouTube 轉錄稿、字幕,甚至是封面圖片。它專為內容創作者、研究人員以及任何需要將口語內容轉換為文字的人所設計,提供多語言支援、翻譯功能及進階的結構化選項。

透過直接存取 YouTube 的 InnerTube API,並智慧備援至 `yt-dlp`,此技能確保了可靠且高效的資料擷取,無需個人 API 金鑰。它提供靈活的輸出格式,包括用於詳細分析且附有時間戳記和章節標記的 Markdown,以及用於標準字幕整合的 SRT。此外,它還支援從影片描述中進行章節分段,並提供用於 AI 強化的說話者識別工作流程,產出高度組織化且標示明確的文字。

憑藉智慧快取機制,此技能可將不必要的網路請求降至最低,使得對同一影片的後續操作速度極快。無論您需要分析影片內容、建立可及的字幕、為全球觀眾翻譯素材,或是單純擷取影片中繼資料和縮圖,此技能都能簡化流程,提供 YouTube 內容管理的強大工具。

核心功能

它的強大之處

  • 直接 YouTube 存取

    直接存取 YouTube 的 InnerTube API 以快速擷取轉錄稿,若直接 API 被封鎖則自動備援至 `yt-dlp`,確保無需 API 金鑰即可可靠存取。

  • 多語言支援與翻譯

    指定轉錄稿的偏好語言,並將其翻譯成目標語言,讓全球觀眾都能取用內容。

  • 章節分段與說話者識別

    自動依影片章節將轉錄稿分段,並支援 AI 後處理以進行說話者識別,提供結構化且標示明確的文字。

  • 靈活的輸出格式

    產生附時間戳記的 Markdown 轉錄稿或 SRT 字幕檔,適用於從內容分析到影片播放器等各種用途。

  • 智慧快取提升效率

    快取原始影片資料、中繼資料和分段轉錄稿,實現快速重新格式化,並減少對同一影片後續請求的網路呼叫。

使用場景

什麼時候適合使用

  • 為內容分析產生 YouTube 轉錄稿

    內容創作者和研究人員可以快速取得完整的 YouTube 轉錄稿,包括時間戳記和章節標記,以分析影片內容、提取關鍵資訊,或將口語內容重新用於文字文章。

  • 為無障礙建立字幕檔

    影片編輯和無障礙專家可以從 YouTube 影片產生 SRT 字幕檔,確保內容可供聽障觀眾或偏好無聲觀看的用戶取用。

  • 翻譯影片內容以拓展全球觸及

    行銷人員和教育工作者可以將 YouTube 轉錄稿翻譯成多種語言,將影片內容的觸及範圍擴展到非母語人士,並提升全球參與度。

  • 擷取中繼資料和封面圖片

    使用者可以輕鬆擷取影片中繼資料和高品質封面圖片,用於分類編目、社群媒體推廣,或建立與影片內容相關的視覺資產。

SKILL.md

YouTube 轉錄稿

從 YouTube 影片下載轉錄稿(字幕/隱藏式字幕)。適用於手動建立和自動產生的轉錄稿。無需 API 金鑰或瀏覽器 — 直接使用 YouTube 的 InnerTube API,並在 YouTube 封鎖直接 API 路徑時自動備援至 yt-dlp

首次執行時會擷取影片中繼資料和封面圖片,並快取原始資料以便快速重新格式化。

腳本目錄

腳本存放在 scripts/ 子目錄中。{baseDir} = 此 SKILL.md 的目錄路徑。解析 ${BUN_X} 執行環境:如果已安裝 bunbun;如果有 npxnpx -y bun;否則建議安裝 bun。請將 {baseDir}${BUN_X} 替換為實際值。

腳本用途
scripts/main.ts轉錄稿下載 CLI

用法

# 預設:附時間戳記的 Markdown(英文)
${BUN_X} {baseDir}/scripts/main.ts <youtube-url-or-id>

# 指定語言(優先順序)
${BUN_X} {baseDir}/scripts/main.ts <url> --languages zh,en,ja

# 不含時間戳記
${BUN_X} {baseDir}/scripts/main.ts <url> --no-timestamps

# 含章節分段
${BUN_X} {baseDir}/scripts/main.ts <url> --chapters

# 含說話者識別(需要 AI 後處理)
${BUN_X} {baseDir}/scripts/main.ts <url> --speakers

# SRT 字幕檔
${BUN_X} {baseDir}/scripts/main.ts <url> --format srt

# 翻譯轉錄稿
${BUN_X} {baseDir}/scripts/main.ts <url> --translate zh-Hans

# 列出可用的轉錄稿
${BUN_X} {baseDir}/scripts/main.ts <url> --list

# 強制重新擷取(忽略快取)
${BUN_X} {baseDir}/scripts/main.ts <url> --refresh

選項

選項說明預設值
<url-or-id>YouTube 網址或影片 ID(允許多個)必要
--languages <codes>語言代碼,以逗號分隔,依優先順序排列en
--format <fmt>輸出格式:textsrttext
--translate <code>翻譯為指定的語言代碼
--list列出可用的轉錄稿,而不進行擷取
--timestamps每個段落包含 [HH:MM:SS → HH:MM:SS] 時間戳記開啟
--no-timestamps停用時間戳記
--chapters從影片描述進行章節分段
--speakers包含中繼資料的原始轉錄稿,用於說話者識別
--exclude-generated跳過自動產生的轉錄稿
--exclude-manually-created跳過手動建立的轉錄稿
--refresh強制重新擷取,忽略快取資料
-o, --output <path>儲存到指定的檔案路徑自動產生
--output-dir <dir>基礎輸出目錄youtube-transcript

可選的環境變數

變數說明
YOUTUBE_TRANSCRIPT_COOKIES_FROM_BROWSER在備援時傳遞給 yt-dlp --cookies-from-browser,例如 chromesafarifirefoxchrome:Profile 1

輸入格式

接受以下任何一種影片輸入:

  • 完整網址:https://www.youtube.com/watch?v=dQw4w9WgXcQ
  • 短網址:https://youtu.be/dQw4w9WgXcQ
  • 嵌入網址:https://www.youtube.com/embed/dQw4w9WgXcQ
  • Shorts 網址:https://www.youtube.com/shorts/dQw4w9WgXcQ
  • 影片 ID:dQw4w9WgXcQ

輸出格式

格式副檔名說明
text.mdMarkdown 格式,包含 frontmatter(含 description)、標題、摘要,以及可選的目錄/封面/時間戳記/章節/說話者
srt.srt用於影片播放器的 SubRip 字幕格式

輸出目錄

youtube-transcript/
├── .index.json                          # 影片 ID → 目錄路徑對應(用於快取查找)
└── {channel-slug}/{title-full-slug}/
    ├── meta.json                        # 影片中繼資料(標題、頻道、描述、長度、章節等)
    ├── transcript-raw.json              # 來自 YouTube API 的原始轉錄稿片段(已快取)
    ├── transcript-sentences.json        # 句子分段的轉錄稿(依標點符號分割,跨片段合併)
    ├── imgs/
    │   └── cover.jpg                    # 影片縮圖
    ├── transcript.md                    # Markdown 轉錄稿(從句子產生)
    └── transcript.srt                   # SRT 字幕(從原始片段產生,若指定 --format srt)
  • {channel-slug}:頻道名稱,使用 kebab-case
  • {title-full-slug}:完整影片標題,使用 kebab-case

--list 模式僅輸出至 stdout(不儲存檔案)。

快取

首次擷取時,腳本會儲存:

  • meta.json — 影片中繼資料、章節、封面圖片路徑、語言資訊
  • transcript-raw.json — 來自 YouTube API 的原始轉錄稿片段({ text, start, duration }[]
  • transcript-sentences.json — 句子分段的轉錄稿({ text, start: "HH:mm:ss", end: "HH:mm:ss" }[]),依句子結尾標點符號(.?!…。?! 等)分割,時間戳記依字元長度按比例分配,並具備 CJK 文字合併感知能力
  • imgs/cover.jpg — 影片縮圖

同一影片的後續執行會使用快取資料(無網路呼叫)。使用 --refresh 可強制重新擷取。若要求不同語言,快取會自動重新整理。

當 YouTube 在直接 InnerTube 路徑上返回反機器人/封鎖回應時,腳本會以替代的客戶端身分重試,然後在有 yt-dlp 可用時備援至它。如果需要備援但 yt-dlp 不可用,代理應自行決定如何使 yt-dlp 可用並繼續執行,而不是將安裝決策推給使用者。

SRT 輸出(--format srt)是從 transcript-raw.json 產生的。文字/Markdown 輸出則使用 transcript-sentences.json 以獲得自然的句子邊界。

工作流程

當使用者提供 YouTube 網址並想要轉錄稿時:

  1. 如果使用者尚未指定語言,請先使用 --list 執行,以顯示可用選項
  2. 執行腳本時,請務必使用單引號括住網址 — zsh 會將 ? 視為 glob 萬用字元,因此未加引號的 YouTube 網址會導致「no matches found」:請使用 'https://www.youtube.com/watch?v=ID'
  3. 預設:使用 --chapters --speakers 執行以獲得最豐富的輸出(章節 + 說話者識別)
  4. 腳本會自動儲存快取資料 + 輸出檔,並印出檔案路徑
  5. 對於 --speakers 模式:腳本儲存原始檔案後,請依照下方的說話者識別工作流程,使用說話者標籤進行後處理

當使用者只想要封面圖片或中繼資料時,使用任何選項執行腳本也會快取 meta.jsonimgs/cover.jpg

當重新格式化同一影片(例如,先取得文字再取得 SRT)時,快取資料會被重複使用 — 無需重新擷取。

章節與說話者工作流程

章節(--chapters

腳本會從影片描述中解析章節時間戳記(例如 0:00 介紹),根據章節邊界將轉錄稿分段,將片段分組為易讀的段落,並儲存為附有目錄的 .md 檔案。無需進一步處理。

如果描述中不存在章節時間戳記,轉錄稿將以分組段落輸出,不含章節標題。

說話者識別(--speakers

說話者識別需要 AI 處理。腳本會輸出一個原始的 .md 檔案,包含:

  • 包含影片中繼資料的 YAML frontmatter(標題、頻道、日期、封面、描述、語言)
  • 影片描述(用於提取說話者名稱)
  • 來自描述的章節列表(如果有)
  • SRT 格式的原始轉錄稿(預先計算的開始/結束時間戳記,節省 token)

腳本儲存原始檔案後,生成一個子代理(為了成本效益,使用較便宜的模型,如 Sonnet)來處理說話者識別:

  1. 讀取已儲存的 .md 檔案
  2. 讀取位於 {baseDir}/prompts/speaker-transcript.md 的提示模板
  3. 依照提示處理原始轉錄稿:
    • 使用影片中繼資料識別說話者(標題 → 來賓,頻道 → 主持人,描述 → 名稱)
    • 從對話流程、問答模式和上下文線索中偵測說話者輪次
    • 分段為章節(若有描述中的章節則使用,否則從主題變化中建立)
    • 使用 **說話者名稱:** 標籤、段落分組(2-4 個句子)和 [HH:MM:SS → HH:MM:SS] 時間戳記進行格式化
  4. 用處理後的轉錄稿覆寫 .md 檔案(保留 YAML frontmatter)

使用 --speakers 時,會隱含 --chapters — 處理後的輸出始終包含章節分段。

錯誤情況

錯誤說明
轉錄稿已停用影片完全沒有字幕
找不到轉錄稿請求的語言不可用
影片無法使用影片已刪除、私人或受地區限制
IP 被封鎖請求過多,請稍後再試
年齡限制影片需要登入以進行年齡驗證
偵測到機器人腳本重試替代客戶端,然後使用 yt-dlp;如果備援工具缺失,代理應自行解決該問題;若仍然失敗,請嘗試 YOUTUBE_TRANSCRIPT_COOKIES_FROM_BROWSER=safari(或您的瀏覽器)

常見問題