Communitygithub.com

JoeyRedfield/videobook

將 YouTube / Bilibili 影片(尤其是課程錄影)轉換成圖文並茂的 Markdown + HTML 技術電子書。

videobook 是什麼?

此技能提供一個完整自動化流程,將線上教學影片(支援 YouTube 與 Bilibili)轉化為結構清晰的技術電子書。它會自動提取字幕(若平台無字幕,則使用本地 faster-whisper ASR 作為備援),透過大型語言模型改寫為圖文並茂的 Markdown 文件,並插入截圖佔位符。接著,它會利用已登入的瀏覽器直接從播放器捕捉高畫質影格,渲染出暗色主題的 HTML 頁面,並啟動本地預覽伺服器。此外,它還可選抓取課程官方講義與 4K 幻燈片來增強內容,生成字幕校訂對照稿,最後將成品發佈到 GitHub Pages。適用於 Claude Code、Cursor 及 Codex 等 AI Agent 平台,所有指令與規則皆包含在技能目錄中,外部依賴僅為 `src/*.py` 腳本。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/JoeyRedfield/videobook/tree/HEAD/skills/videobook

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

VideoBook:把一個影片做成一本圖文電子書

使用者給一個 YouTube / Bilibili 連結,產出一本可線上閱讀的技術電子書: output/<video_id>/book.md + book.html(內嵌播放器卡片、截圖點擊放大、Mermaid 圖), 可選 transcript.corrected.txt 字幕校訂對照稿,並可發佈到 GitHub Pages 供他人閱讀。

本 skill 是編排層,並且自包含:agent 需要的指令全部在本目錄內(SKILL.md + references/), 不依賴倉庫裡的 instructions.md / README.md(那兩份面向人類讀者,保持原樣、不由本 skill 維護)。 唯一的外部依賴是流水線的可執行代碼 src/*.py:命令與參數一律以腳本 --help 為準,不要重寫腳本邏輯。 易變數據(例如 src/make_corrected.py 裡的錯詞 MAP)不要複製進 skill,只寫規則並指向源檔案; 唯一例外是第二步的排版指令,本目錄自帶同源副本 references/stitcher-prompt.md(倉庫版本優先)。

前置條件(首次執行必讀)

  1. 工作目錄 = videobook 倉庫根目錄(判據:存在 src/dump_transcript.py 與 prompts/), 所有相對路徑(output/<video_id>/...)都相對它解析。倉庫不在本地時先 git clone https://github.com/Luke-Evan/videobook.git 到使用者存放程式碼專案的目錄 (不要放臨時目錄,也不要另建 projects 目錄),再 cd 進去。
  2. Python >= 3.10(推薦 3.12)。裝依賴:uv sync(用 uv 時)或 pip install -r requirements.txt。 執行統一走倉庫環境的直譯器:uv run python src/xxx.py 或 .venv/Scripts/python.exe src/xxx.py。
  3. 一次性登入:python src/capture_frames.py --setup-profile 彈出專用 Chrome(資料目錄 .capture-profile/), 掃碼登入 B 站 / YouTube 後關窗即可,登入態長期復用。登入帳號的會員檔位 = 截圖清晰度上限。
  4. 海外影片:終端要代理(抓字幕),瀏覽器也要全域代理(否則生成頁面裡的 YouTube iframe 是一片黑塊)。
  5. 需要沙箱外/提權的命令見總覽表最後一列;純本地步驟沙箱內即可。

流水線總覽

步做什麼命令細節提權
1提取字幕python src/dump_transcript.py "<URL>"references/transcript.mdB 站需
1b平台無字幕時本地 ASR 兜底python src/asr_transcript.py <video_id>references/transcript.md否(耗時長)
1.5課程官方講義 + 4K 幻燈片(預設執行,課程無主頁才跳過)python src/course_assets.py <video_id> --course-url <課程主頁>references/course-assets.md渲染需
2大模型把字幕改寫成 book.md按排版指令生成(references/stitcher-prompt.md,倉庫 prompts/stitcher_system.md 存在時以它為準)references/writing.md否
2b字幕校訂對照稿(可選)python src/make_corrected.py <video_id>references/correction.md否
3截幀並把佔位符物化為圖片python src/capture_frames.py <video_id> "<URL>"references/capture.md是
4渲染 HTML + 起本地預覽python src/post_process.py "<URL>" output/<id>/book.md 然後 python -m http.server 8080 --directory output/<id>—否
5告知使用者結果、詢問大檔案清理—見下方「交付」—
6發佈成品到 pages 分支(可選)python src/publish.py <video_id> 然後 git push origin pagesreferences/publish.md否(push 需網路)

報錯、畫質不對、字幕抓不到、ASR 中斷等問題先查 references/troubleshooting.md。

鐵律(不可協商)

  1. 字幕覆蓋率 < 50%(退出碼 3)不得進入第二步:先修登入態/代理,或轉 ASR 兜底。
  2. 截圖畫面必須來自已登入瀏覽器裡的平台播放器,第三步任何方式都不得下載影片/音訊檔案(ffmpeg 抽幀只是最後兜底)。禁用方式清單見 references/capture.md。
  3. cookies 只寫系統臨時目錄、用完即刪,絕不落倉庫,也不要在工作區手放 cookies.txt。
  4. output/ 不受任何 git 操作影響;成品只發佈到 orphan 分支 pages,main 只放程式碼。
  5. 校訂稿保真:逐段保留講師原詞與順序,只做 ASR 錯詞替換 + 口癖清理;禁刪段、禁多行、禁大幅改寫(校驗層會直接拒絕)。
  6. 寫書保真底線:書面化不等於摘要化;保留類比、案例、推導鏈;編者補充必須標註「編者說明」。
  7. 課程資料版權:講義與幻燈片歸講師(常見 CC BY-NC),書首資訊塊與文末必須保留出處連結、作者署名與許可名。
  8. 幻燈片覆蓋鐵律:slides_text.md 裡每一頁在書中恰好出現一次,交稿前 --audit 必須 PASS。
  9. 刪除大檔案(audio.m4a、video_source.mp4 等)前必須問使用者,得到確認再刪。
  10. 生成或修改 HTML 時,文字與背景對比度不低於 WCAG AA 的 4.5:1。
  11. 各步冪等可重跑:佔位符物化前腳本自動備份 book.tagged.md,只要它還在,重跑第三步即可恢復截圖。

交付(第五步要一次性說清)

  1. output/<video_id>/book.md 的位置;
  2. 預覽地址 http://localhost:8080/book.html,關閉服務在終端按 Ctrl+C;
  3. YouTube 影片需瀏覽器能存取 YouTube(代理),B 站影片可直接看;
  4. 截圖清晰度取決於 .capture-profile/ 裡登入帳號的檔位;要更清晰就換帳號登入後重跑第三步;
  5. 用了課程官方資料時,說明書中幻燈片插圖是官方 4K 渲染圖(書首已註明來源與 CC 許可),演示幀仍是影片幀,course/ 目錄可整體刪除不影響閱讀;
  6. 詢問是否刪除流程中產生的大媒體檔案(鐵律 9)。

本目錄內容(按需讀取,不要一次性全讀)

檔案什麼時候讀
references/transcript.md第一步抓字幕;平台無字幕要轉本地 ASR
references/writing.md第二步把字幕改寫成 book.md
references/stitcher-prompt.md第二步的排版指令原文(倉庫 prompts/stitcher_system.md 存在時以倉庫版本為準)
references/course-assets.md課程有官方主頁時的第 1.5 步、覆蓋鐵律、幻燈片升級
references/correction.md生成字幕校訂對照稿與 AI 行級訂正提案
references/capture.md第三步截幀:優先級、明確禁用的方式、QA 習慣
references/publish.md第六步發佈到 pages 分支
references/troubleshooting.md任何報錯、畫質異常、字幕抓不到、提權被拒

維護約定

  • 本 skill 與流水線程式碼同倉庫版本化:改了 src/*.py 的參數、步驟順序或鐵律,必須同步改本目錄。
  • 倉庫的 instructions.md 與 README.md 面向人類讀者,保持原樣、不由本 skill 維護, 不要為了讓 skill 生效去改它們;內容與本目錄重疊時,agent 以本目錄為準。
  • 同步 references/stitcher-prompt.md 時,在檔案頭的來源註記裡更新提交號。
  • 他人安裝:skill-installer 用 --repo Luke-Evan/videobook --path skills/videobook; 或 clone 後把本目錄複製/軟鏈到 ~/.codex/skills/(僅 Codex)或 ~/.agents/skills/(跨 agent)。
  • 本目錄不含 cookies、登入態、output/ 產物或任何媒體檔案,可安全公開散佈。

相關技能