Communitygithub.com

アプリトレーニングビデオ生成スキル

実際のWebアプリケーションをブラウザで操作しながら、ナレーション付き、キャプション付きのトレーニングビデオやウォークスルー動画を生成します。ストーリーボード、オフライン音声合成、画面キャプチャ、チャプターカード、字幕などを含む、公開可能な1080p MP4を作成します。

アプリトレーニングビデオ生成スキル とは?

このスキルは、AIエージェントが実際のWebアプリケーションを操作する様子をキャプチャし、プロフェッショナルなトレーニングビデオを自動生成するためのものです。ストーリーボードベースで、オフライン音声合成(Kokoro)、Playwrightによる画面キャプチャ、FFmpegによるレンダリングを組み合わせ、ナレーション、キャプション、チャプターカード、字幕(.srt)を含む1920×1080のH.264 MP4を出力します。UIが変更された場合でも、ストーリーボードとキャプチャスクリプトを再利用して再レンダリングできるため、メンテナンスが容易です。このスキルは、Claude CodeやCursorなどのAIエージェントがソフトウェア製品のデモやトレーニング資料を自動作成する際に活用でき、開発者やプロダクトマネージャーが手動でビデオ編集ツールを使うことなく、高品質なビデオコンテンツを生成できます。

対応~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/omerozgul11/app-training-video-skill/tree/HEAD/app-training-video

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

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

ドキュメント

アプリトレーニングビデオ

実際のアプリケーションのプロフェッショナルなトレーニングビデオを作成します。ビデオは1920×1080 H.264、AACナレーションです。各発話文にキャプションが付き、各チャプターはカードで始まり、長い待ち時間はカットされます。再現可能で、UIが変更されたときにキャプチャとレンダリングを再実行すれば、ビデオは最新の状態になります。

仕組み:

  1. ストーリーボードにナレーションテキスト、チャプター、ブランディングを保持します。
  2. narrate.pyが各セグメントをオフラインのKokoro音声で読み上げます。クラウドサービス、アカウント、費用は不要です。
  3. キャプチャスクリプトがPlaywrightで実際のアプリを操作し(実際のマウス移動、可視カーソル、クリックリップル)、Chromeのスクリーンキャストフレームを記録し、各セグメントのナレーションが終わるまで保持します。
  4. render.pyがクリップ、カード、キャプションバンド、ラウドネス正規化されたナレーショントラックを組み立てます。
  5. review.pyが結果をチェックし、公開前に確認するためのコンタクトシートを作成します。

スクリプトはこのファイルの隣の scripts/ にあります。ナレーションを書く前に references/storyboard.md を、キャプチャスクリプトを書く前に references/capture-guide.md を読んでください。どちらにも、よくある再録画を防ぐための教訓が書かれています。

0. 初回セットアップ

bash <skill>/scripts/setup.sh

これにより ~/.cache/app-training-video/ が作成されます(TRAINING_VIDEO_HOME で上書き可能)。以下を含みます:

  • 固定パッケージを持つプライベートなPython 3.10–3.13環境
  • Kokoro音声モデル(約350MB)とInter書体、SHA-256チェック済み
  • Chromium

すべてのスクリプトはその環境のPython(PY=~/.cache/app-training-video/venv/bin/python)で実行し、ストーリーボードのパスを渡してください。モデルファイルが既に別の場所にある場合は、最初に MODEL_SOURCE=<dir> を実行して再利用してください。ffmpegはバンドルされています(imageio-ffmpeg)。システム全体に何もインストールされません。

1. アプリと視聴者を理解する

何かを書く前に、実際にアプリを使うか(またはユーザーガイドを読んで)以下を確認してください:

  • 誰が見るのか: 新規顧客、現場スタッフ、内部ユーザー
  • 習得すべき主要なワークフロー: 入力から結果まで
  • 安全に表示できるデモデータ
  • アプリをクリーンな状態で起動する方法: URLまたは起動コマンド、および新しいデータフォルダまたはデモアカウント
  • ブランディング: 会社名、製品名、バージョン、ロゴPNG、アクセントカラー、アウトロ用の連絡先行

見つからないものがあればユーザーに尋ねてください。フルワークフローには6〜7分、単一機能には60〜90秒が適切です。

2. ストーリーボードを書く

assets/storyboard.example.json をプロジェクトの隣に storyboard.json としてコピーし、references/storyboard.md に従って記述します。要点:

  • 1セグメントあたり10〜35秒のスピーチ
  • チャプターは "n · Title" 形式で、各チャプターの最初のセグメントに card: "chapter" を指定
  • intro カードと outro カード
  • 音声読み上げ用に頭字語はスペルアウトし、caption_replacements で表記を復元

撮影前にナレーションをユーザーに見せてください。今変更するのは安価で、後で変更するのは高価です。

3. ナレーション

$PY <skill>/scripts/narrate.py storyboard.json

各セグメントの長さを出力します。テキストが変更されたセグメントのみ再読み上げします。発音が気になる場合は、video-build/audio/ 内の1つか2つのWAVファイルを聞き、スペルを調整して再度実行してください。

4. キャプチャスクリプトを書き、実行する

scripts/capture_template.py をストーリーボードの隣に capture.py としてコピーし、スキルの scripts/ へのパスを設定します。そして、ストーリーボードの順序に従って、撮影する各セグメントに対して with rec.segment('<id>'): ブロックを1つ記述します。ブロック内で、ナレーションが説明する内容を正確に実行します:

  • rec.click、rec.hover、rec.type、rec.drag、rec.scroll、rec.park
  • 遅い処理の周りには rec.cut() を使用し、可視の結果が現れるのを待ちます

レコーダーは空でない frames/ フォルダを拒否するため、古いフレームが混ざることはありません。

$PY capture.py storyboard.json

各セグメントの撮影時間がナレーション時間と比較して表示されます。最初の失敗ステップ、ページエラー、または撮影されなかったセグメントで実行は失敗します(ステータス incomplete)。ステップを修正し、video-build/frames/ を空にして再度実行してください。

5. レンダリングとレビュー

$PY <skill>/scripts/render.py storyboard.json
$PY <skill>/scripts/review.py storyboard.json

ビルドフォルダに出力されます:

  • <output_name>.mp4
  • .srt 字幕
  • -chapters.txt(YouTubeの説明に貼り付け)
  • -poster.jpg
  • -timeline.json
  • -review.jpg: 各セグメントの静止画

コンタクトシートを開いて確認し、MP4自体もスポットチェックしてください。以下を確認:

  • 各セグメントで正しい画面が表示されているか
  • エラーバナー、空のプロット、ダイアログの残骸がないか
  • カーソルが説明中の内容を覆っていないか
  • キャプションが正しく読めるか

セレクタが一致しても画面が間違っている可能性があるため、ビデオを完成と呼ぶ前には必ずこの確認が必要です。

6. 納品

ユーザーにMP4、SRT(ほとんどのプレイヤーはファイル名が一致すると自動ロードします)、およびチャプターリストを提供してください。長さとサイズにも言及してください。公開するには、MP4とSRTを一緒にアップロードしてください。storyboard.json と capture.py はプロジェクトと一緒に保管してください:次回UIが変更された後、手順4〜5(および文言が変更された場合は手順3)を再実行します。

トラブルシューティング

症状修正方法
Need Python 3.10–3.13python3.12をインストールするか、setup.shを実行する前に PYTHON= を設定する
アプリは起動したが launch() がタイムアウトするアプリが出力をバッファリングしている:Pythonサーバーは python -u で実行するか、ready 正規表現を確認する
LinuxでChromiumが起動しない$PY -m playwright install --with-deps chromium
ロケーターがタイムアウトするか、2つの要素にマッチする範囲を限定するか、exact=True を指定した get_by_role を使用する(キャプチャガイド参照)
セグメントがナレーションよりはるかに長いrec.cut() の範囲外に遅い処理がある
発音が間違っているspeech 内でスペルを変更し、caption_replacements ルールを追加し、narrate.pyを再実行する
キャプションのタイミングが合わないキャプションのタイミングはナレーションの長さに従う:長い文を短くするか、セグメントを分割する

関連スキル