Communitygithub.com

VideoBook:動画を電子書籍に変換

YouTube / Bilibili の動画(特に講義録画)を、スクリーンショット付きの Markdown + HTML 技術電子書籍に変換します。字幕抽出、AI によるリライト、フレームキャプチャ、HTML レンダリング、GitHub Pages 公開までを自動化。

VideoBook:動画を電子書籍に変換 とは?

VideoBook は、与えられた YouTube または Bilibili の動画リンクから、技術書として読める Markdown と HTML の電子書籍を生成する AI エージェントスキルです。字幕の自動抽出(プラットフォームに字幕がない場合は、ローカルの faster-whisper ASR で補完)、大規模言語モデルによる講義内容のリライト(スクリーンショットやスライドのプレースホルダー挿入を含む)、ログイン済みブラウザを用いた高画質フレームキャプチャ、ダークテーマ対応 HTML のレンダリングとローカルプレビュー、さらにオプションで公式の講義資料や 4K スライドの取得、字幕の校訂対照稿の生成、GitHub Pages への公開までをワンパイプラインで実行します。このスキルはエージェントの動作定義を SKILL.md と references/ ディレクトリに自己完結して持ち、実際のコードは src/*.py として管理されます。ユーザーが「動画を電子書籍にして」「教科書風にまとめて」「字幕の誤りを訂正した稿が欲しい」「記事に動画スクリーンショットを挿入したい」「生成物を公開したい」といったリクエストをした際に呼び出されます。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/JoeyRedfield/videobook/tree/HEAD/skills/videobook

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

VideoBook:一つの動画を図入り電子書籍に変換

ユーザーが YouTube / Bilibili のリンクを渡すと、オンラインで読める技術電子書籍を生成します。 output/<video_id>/book.md + book.html(埋め込みプレイヤーカード、クリックで拡大するスクリーンショット、Mermaid 図)、 オプションで transcript.corrected.txt(字幕校訂対照稿)を生成し、GitHub Pages に公開することも可能です。

本スキルはオーケストレーション層であり、自己完結型です。エージェントに必要な指示はすべてこのディレクトリ(SKILL.md + references/)に格納されています。 リポジトリの instructions.md / README.md には依存しません(これらは人間の読者向けであり、本スキルでは更新しません)。 唯一の外部依存はパイプラインの実行可能コード src/*.py です。コマンドや引数はすべてスクリプトの --help 出力に従い、スクリプトのロジックを再実装しないでください。 可変データ(例:src/make_corrected.py 内の誤単語マップ)はスキル内にコピーせず、ルールだけを記述してソースファイルを参照します。 唯一の例外はステップ 2 の整形指示で、このディレクトリに同一ソースのコピー 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 に QR コードログイン後、ウィンドウを閉じます。ログイン状態は長期間再利用可能。ログインアカウントの会員ランクがスクリーンショット画質の上限を決めます。
  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必要
4HTML レンダリング + ローカルプレビュー起動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)の場合はステップ 2 に進まない:ログイン状態 / プロキシを修正するか、ASR 補完に切り替えてください。
  2. スクリーンショットは必ずログイン済みブラウザ上のプラットフォームプレイヤーから取得し、ステップ 3 ではいかなる方法でも動画/音声ファイルをダウンロードしてはいけません(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 の各ページは書籍内に正確に 1 回出現する必要があり、納品前の --audit は PASS しなければなりません。
  9. 大ファイル(audio.m4a、video_source.mp4 など)の削除前に必ずユーザーに確認をとり、承諾を得てから削除してください。
  10. HTML 生成または修正時、テキストと背景のコントラスト比は WCAG AA の 4.5:1 以上を維持してください。
  11. 各ステップは冪等で再実行可能:プレースホルダー実画像化の前にスクリプトが自動で book.tagged.md をバックアップするため、それがあればステップ 3 を再実行するだけでスクリーンショットを復元できます。

成果物の受け渡し(ステップ 5 で一度に説明)

  1. output/<video_id>/book.md の場所;
  2. プレビュー URL http://localhost:8080/book.html、サーバー停止はターミナルで Ctrl+C;
  3. YouTube 動画の場合ブラウザが YouTube にアクセスできる必要あり(プロキシ)、B 站動画は直接視聴可能;
  4. スクリーンショットの画質は .capture-profile/ にログインしたアカウントのランクに依存。より高画質にするにはアカウントを変更してログインし、ステップ 3 を再実行;
  5. 講義公式資料を使用した場合、説明書にスライドの挿絵は公式 4K レンダリング画像である旨を記載(書籍先頭にソースと CC ライセンスを記載済み)、デモフレームは動画フレームのまま、course/ ディレクトリは丸ごと削除しても閲覧に影響なし;
  6. パイプライン中に生成された大メディアファイルの削除についてユーザーに確認(絶対ルール 9)。

ディレクトリ内容(必要に応じて読み取り、一度に全部読まないでください)

ファイルいつ読むか
references/transcript.mdステップ 1 の字幕取得時;プラットフォームに字幕がなくローカル ASR に切り替える場合
references/writing.mdステップ 2 で字幕を book.md にリライトする時
references/stitcher-prompt.mdステップ 2 の整形指示原文(リポジトリ prompts/stitcher_system.md が存在する場合はリポジトリ版を優先)
references/course-assets.md講義に公式ホームページがある場合のステップ 1.5、カバレッジ絶対ルール、スライドアップグレード
references/correction.md字幕校訂対照稿の生成と AI 行レベルの訂正提案
references/capture.mdステップ 3 のフレームキャプチャ:優先順位、明示的に禁止された方法、QA の習慣
references/publish.mdステップ 6 の pages ブランチへの公開
references/troubleshooting.mdエラー、画質異常、字幕取得失敗、権限昇格拒否が発生した場合

メンテナンスの取り決め

  • 本スキルはパイプラインコードと同じリポジトリでバージョン管理:src/*.py のパラメータ、ステップ順序、絶対ルールを変更した場合は、このディレクトリも同期して変更する必要があります。
  • リポジトリの instructions.md と README.md は人間の読者向けであり、本スキルでは更新しません。スキルを有効にするためにこれらを変更しないでください。内容がこのディレクトリと重複する場合、エージェントはこのディレクトリを優先します。
  • references/stitcher-prompt.md の同期時には、ファイル先頭のソース注記にコミットハッシュを更新してください。
  • 他者のインストール:skill-installer で --repo Luke-Evan/videobook --path skills/videobook を使用するか、クローン後にこのディレクトリを ~/.codex/skills/(Codex のみ)または ~/.agents/skills/(クロスエージェント)にコピー/シンボリックリンクしてください。
  • このディレクトリには cookies、ログイン状態、output/ の生成物、メディアファイルは一切含まれず、安全に公開配布できます。

関連スキル