video-production について
レッスン動画をコース全体の動画にまとめるためのワークフローガイドです。コース制作者や動画編集者向けに、Google Driveからの取得、タイトルカードの追加、結合、YouTube用タイムスタンプの作成を案内し、処理はローカルで行います。
主な機能
- 01Google Driveから動画をダウンロード
- 02タイトル解析と動画メタデータ取得
- 03レッスン用タイトルカードの生成
- 04FFmpegによるセグメント結合
- 05タイムスタンプとYouTube説明文の作成
活用シーン
- 01レッスン動画をコース全体の動画にまとめる
- 02コース動画にタイトルカードとチャプター時刻を追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ casper-studios/ casper-marketplace --skill video-productionインストール後、Claude Code で/video-productionを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/ffmpeg.mdtitle-slides.mdworkflow.mdyoutube-description.mdscripts/create_title_slides.pygdrive_video_download.pygenerate_youtube_description.pystitch_videos.py詳細
動画制作
概要
個別のレッスンファイルを、タイトルスライドと YouTube 用の自動生成タイムスタンプを付けて、コース動画にまとめます。
クイック判断ツリー
What do you need?
│
├── Full course assembly (end-to-end)
│ └── references/workflow.md
│ └── Combines all scripts below
│
├── Download videos from Drive
│ └── Script: scripts/gdrive_video_download.py
│
├── Create title slides
│ └── Script: scripts/create_title_slides.py
│
├── Stitch videos together
│ └── Script: scripts/stitch_videos.py
│
└── Generate YouTube description
└── Script: scripts/generate_youtube_description.py
環境のセットアップ
Google Drive の OAuth(google-workspace スキルと同じです)。
システム要件
- FFmpeg がインストールされ、PATH に設定されていること
- Python 3.9 以降
ワークフロー全体
# Full course assembly from Drive folder
python scripts/stitch_videos.py \
--folder "https://drive.google.com/drive/folders/xxx" \
--output "Complete Course.mp4" \
--slide-duration 3
パイプラインの手順
- ダウンロード - Drive フォルダーからすべての動画を取得します
- タイトルを解析 -
[e1] Intro形式から整った名前を抽出します - メタデータを取得 - FFprobe で長さと解像度を取得します
- スライドを生成 - 各レッスンのタイトルカードを作成します
- 連結リストを作成 - video1 → slide2 → video2 → ...
- FFmpeg で結合 - すべてのセグメントを連結します
- タイムスタンプを計算 - 累積時間を追跡します
- 説明文を生成 - YouTube 用の Markdown を作成します
出力
| ファイル | 説明 |
|---|---|
{output_name}.mp4 | 最終的に結合された動画 |
youtube_description.md | タイムスタンプ付きの説明文 |
metadata.json | 処理情報 |
パフォーマンス
| 入力 | 時間 | 出力サイズ |
|---|---|---|
| 5 本の動画(30 分) | 約 5 分 | 約 1.5 GB |
| 10 本の動画(1 時間) | 約 10 分 | 約 3 GB |
| 20 本の動画(2 時間) | 約 20 分 | 約 6 GB |
セキュリティに関する注意事項
認証情報の取り扱い
- Drive へのアクセスには Google OAuth 認証情報を使用します(google-workspace スキルを参照)
mycreds.txtとclient_secrets.jsonは git にコミットされません- ローカルでの動画処理に追加の API キーは必要ありません
データのプライバシー
- すべての動画処理は FFmpeg を使ってローカルで行われます
- 動画コンテンツが外部のクラウドサービスにアップロードされることはありません
- ソース動画は Google Drive からローカルの
.tmp/にダウンロードされます - 最終動画は手動でアップロードするまでローカルに保存されます
- メタデータ JSON にはファイル名とタイムスタンプのみが含まれます
アクセススコープ
- Google Drive:ダウンロードには
drive.readonlyで十分です - Google Drive:最終動画のアップロードには
driveが必要です - 外部の動画処理 API は使用しません
コンプライアンスに関する考慮事項
- ローカル処理:エンコードと結合はすべてローカルで行われます(プライバシーを保護)
- クラウドへのアップロードなし:処理中に動画が端末の外へ出ることはありません
- コンテンツの権利:ソース動画コンテンツを使用する権利があることを確認してください
- コースコンテンツ:教育コンテンツの配布に関するライセンスを確認してください
- YouTube の利用規約:生成される説明文は YouTube のガイドラインに準拠します
- ストレージ:大容量の動画ファイルを保存できる十分なローカルディスク容量が必要です
- クリーンアップ:処理後に
.tmp/内の一時ファイルを削除してください
トラブルシューティング
よくある問題
問題:FFmpeg が見つからない
症状:「FFmpeg not found」または「command not found: ffmpeg」 原因: FFmpeg がインストールされていないか、システムの PATH に設定されていません 解決策:
- FFmpeg をインストールします:
brew install ffmpeg(macOS)または ffmpeg.org からダウンロードします - インストールを確認します:
ffmpeg -version - 標準以外の場所にインストールした場合は、FFmpeg を PATH に追加します
- インストール後にターミナルを再起動します
問題:コーデックの不一致/互換性のない動画
**症状:**結合中に「Non-monotonous DTS」またはコーデックエラーが発生します **原因:**ソース動画のコーデック、解像度、またはフレームレートが異なります 解決策:
- 結合前に、すべてのソース動画を同じ形式に再エンコードします
- FFmpeg で形式を統一します:
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4 - 解像度を統一します(例:すべて 1920x1080)
- すべての動画でフレームレートを統一します(例:すべて 30fps)
問題:音声と映像が同期しない
**症状:**時間の経過とともに、音声が映像からずれていきます **原因:**フレームレートが一定でない、または可変フレームレートのソースが含まれています 解決策:
- すべてのソース動画で固定フレームレートを使用します
-vsync cfrフラグを付けて再エンコードします- 異なるソースやデバイスの動画を混在させないでください
- ファイル間で音声のサンプルレートが一致していることを確認します
問題:ディスク容量が不足しています
症状:「No space left on device」と表示される、または出力が不完全になる **原因:**動画の処理に必要な空き容量が足りません 解決策:
- 使用可能なディスク容量を確認します:
df -h .tmp/ディレクトリにある古いファイルを削除します- サイズの大きいソース動画を外部ドライブに移動します
- 一度に処理する動画の数を減らします
問題:Google Drive からのダウンロードに失敗します
**症状:**Drive フォルダーから動画をダウンロードできません **原因:**OAuth の問題、権限、またはネットワークのタイムアウトです 解決策:
- Google OAuth の認証情報を確認します(google-workspace スキルを参照)
- フォルダーの共有権限を確認します
- 最初に単一のファイルをダウンロードしてテストします
- ネットワーク接続に問題がないか確認します
問題:タイトルスライドが生成されません
**症状:**最終動画にタイトルカードがありません **原因:**フォントまたは画像生成の問題です 解決策:
- ImageMagick または Pillow がインストールされていることを確認します
- カスタムフォントを指定している場合は、フォントファイルが存在することを確認します
- タイトルテキストに特殊文字が含まれていないか確認します
- まずデフォルトのフォント設定で試します
リソース
- references/workflow.md - 動画コースのワークフロー全体
統合パターン
コース全体のパイプライン
スキル: google-workspace → video-production → google-workspace ユースケース: コース動画をエンドツーエンドで組み立てます フロー:
- Google Drive フォルダーからレッスン動画をダウンロードします
- タイトルスライドを生成し、すべての動画を結合します
- 最終動画を Drive にアップロードし、YouTube の説明文を生成します
トランスクリプトからタイムスタンプを生成
スキル: transcript-search → video-production ユースケース: 会議の録画から YouTube の説明文を生成します フロー:
- トランスクリプトを検索して関連する会議を見つけます
- トランスクリプトからトピックのタイムスタンプを抽出します
- チャプターマーカー付きの書式設定された YouTube の説明文を生成します
コンテンツからタイトルスライドを作成
スキル: content-generation → video-production ユースケース: 動画用のブランド付きタイトルカードを作成します フロー:
- content-generation でタイトルスライドの画像を生成します
- スライドを動画対応形式でエクスポートします
- 動画セグメントの間にタイトルスライドを挿入します