NanoSkill
提交你的 Skill

油管逐字稿代理技能

作者JimLiu1KGitHub 星標GitHub

透過網址或影片 ID 下載 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 的內部管線 API,並在 YouTube 阻擋直接 API 路徑時自動退回使用 yt-dlp

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

指令碼目錄

指令碼位於 scripts/ 子目錄中。{baseDir} = 此 SKILL.md 的目錄路徑。解析 ${BUN_X} 執行階段:若已安裝 bunbun;若 npx 可用 → npx -y bun;否則建議安裝 bun。將 {baseDir}${BUN_X} 替換為實際值。

指令碼用途
scripts/main.ts文字記錄下載命令列介面

使用方式

# 預設:附時間戳記的 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.md含有前置資料(包含 description)的 Markdown、標題、摘要、選擇性目錄/封面/時間戳記/章節/說話者
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 針對直接內部管線路徑傳回反機器人/封鎖回應時,指令碼會以替代客戶端身分重試,然後在可用時退回到 yt-dlp。若需要退回但 yt-dlp 不可用,代理程式應自行決定如何讓 yt-dlp 變為可用並繼續,而非將安裝決策推給使用者。

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

工作流程

當使用者提供 YouTube 網址並需要文字記錄時:

  1. 首先以 --list 執行(若使用者未指定語言),以顯示可用選項
  2. 執行指令碼時,務必對網址加上單引號 — zsh 會將 ? 視為 glob 萬用字元,因此未加引號的 YouTube 網址會導致「找不到相符項目」:使用 '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 前置資料(標題、頻道、日期、封面、說明、語言)
  • 影片說明(用於擷取說話者名稱)
  • 來自說明的章節列表(若有)
  • 原始文字記錄,SRT 格式(預先計算的開始/結束時間戳記,省 Token)

在指令碼儲存原始檔案後,產生一個子代理程式(使用較便宜的模型,例如 Sonnet,以節省成本)來處理說話者辨識:

  1. 讀取儲存的 .md 檔案
  2. 讀取位於 {baseDir}/prompts/speaker-transcript.md 的提示範本
  3. 按照提示處理原始文字記錄:
    • 使用影片中繼資料辨識說話者(標題 → 來賓,頻道 → 主持人,說明 → 名稱)
    • 從對話流程、問答模式及上下文線索中偵測說話者轉換
    • 分段為章節(若有說明中的章節則使用,否則根據主題轉換建立)
    • **說話者名稱:** 標籤、段落分組(2-4 句)和 [HH:MM:SS → HH:MM:SS] 時間戳記格式化
  4. 以處理後的文字記錄覆寫 .md 檔案(保留 YAML 前置資料)

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

錯誤情況

錯誤意義
文字記錄已停用影片完全沒有字幕
找不到文字記錄要求的語言不可用
影片無法提供影片已刪除、私人或區域鎖定
IP 被封鎖請求過多,請稍後再試
年齡限制影片需要登入以進行年齡驗證
偵測到機器人指令碼會重試替代客戶端,然後嘗試 yt-dlp;若退回工具遺失,代理程式應自行解決;若仍失敗,可嘗試 YOUTUBE_TRANSCRIPT_COOKIES_FROM_BROWSER=safari(或您的瀏覽器)

常見問題