ザ・リハーサル は何をしますか?
会議を予測し、それが起こる前にユーザーが聞いたり、見たり、めくったりできるようにします。
| 出力 | ファイル | 説明 |
|---|---|---|
| 予測 | script.md | 起こりそうな会話、1ターン1行、スライドマーカー付き |
| トークトラック | out/rehearsal.mp3 | 2つの声、各サイドに1つずつ |
| 動画 | out/rehearsal.mp4 | 各発言セクションに1スライド、音声に合わせて、字幕埋め込み |
| 字幕 | out/rehearsal.srt | 話者名付きの文単位のキャプション |
| プレゼンテーション | out/deck.html | オフラインでめくれるデッキ; 各セクションの正確な発言を表示 |
以下のパスはこのスキルのフォルダからの相対パスです。プロジェクトフォルダ内で作業してください(script.md、slides/、out/)。
1. 会議の情報を集める
何かを書き始める前に、以下を収集してください:相手の人物(役割、経歴、担当範囲)、会議の目標、時間と形式、ユーザー自身の事実(履歴書、数字、計画、承認済みの回答)、そして相手が探りを入れてきそうな点。ユーザーがすでに持っている資料(コールシート、計画、調査、メール、職務記述書)を読み込みます。
スクリプトを変えるような事実のみを質問してください。ユーザーが自身の経験から答えなければならない質問は 準備 項目にします。決して架空の回答で埋めてはいけません。リハーサルを実施する価値があるのは、ユーザーの発言が真実である場合のみです。リハーサルで自信満々にでっち上げた数字は、本番の会議でもでっち上げた数字になります。
2. 会話を予測する
references/script-format.md の形式で script.md を書きます。
- 実際の会議の順序に従って配置します:オープニング、相手の枠組み、ユーザーの背景、探りの質問、ユーザーの計画またはピッチ、厳しい質問、ロジスティクス、ユーザーからの質問、クロージング。
- 相手の発言は予測です。スクリプトのヘッダーにその旨を明記してください。相手の会社についての事実をでっち上げる必要がある場合は、発言を一般的なものに留めます(「条件を共有できません」)。
- ユーザーの発言は、ユーザーが提供した事実またはユーザーが所有する文書のみを使用し、承認済みの表現がある場合はそれをそのまま使用します。
- 最初に回答し、1つの例を示し、そこで止めます。1回の回答につき1〜3文がほとんどの会議に適しています。
- 数字は人が話すように書きます(「500万」、「161パーセント」)。音声が自然に読めるようにするためです。
- 各発言セクションの開始ターンの前に
<!-- slide: id -->を配置します。通常、質問ごとに1セクションです。 - ファイルの最後に 準備 リストを追加します。事実から回答できなかった質問をリストアップします。
メディア生成前のオプションのストレステスト:1〜2名のレビューアに相手役と相手の上司役を演じてもらい(サブエージェントとして起動できる場合)、ユーザーの回答や計画を批評してもらいます。事実が裏付ける変更を適用し、残りはユーザー用にリストアップします。
3. 音声化する
pip install -r requirements.txt # edge-tts, pydub; ffmpeg がインストールされている必要があります
python scripts/make_audio.py script.md out --voice "Dana=en-US-AvaNeural" --voice "Sam=en-US-AndrewNeural"
2つのサイドに明確に異なる声を割り当てます(edge-tts --list-voices で一覧表示されます)。このスクリプトは out/rehearsal.mp3 と out/timeline.json(字幕用の文のタイミング情報)を出力します。Edgeはランダムにリクエストを数回ドロップすることがありますが、スクリプトが再試行します。
4. 発言セクションごとに1枚のスライドを描く
すべてのスライドマーカーに対して、references/slide-format.md の形式で slides/<id>.html を書きます。各スライドはそのセクションを絵に変換します:タイトルとして質問、回答はタイムライン、番号付きステップ、比較、実際の数字の棒グラフ、決定パス、用語表など。やり取りを一字一句、スライドの <aside> スピーカーノートに配置します。ユーザーが注意すべき箇所(「準備:イエスから署名までのタイムライン」)にはコールアウトを追加します。デッキは学習補助教材としても機能するためです。
5. 動画とデッキをレンダリングする
python scripts/render_video.py slides out --fonts "https://fonts.googleapis.com/css2?family=..."
python scripts/build_deck.py slides out --fonts "https://fonts.googleapis.com/css2?family=..." --title "リハーサル: <会議名>"
render_video.py は Google Chrome または Chromium(見つからない場合は CHROME= で設定)と、libass 付きでビルドされた ffmpeg が必要です。--fonts はスライドが使用する Google Fonts のURL1つです。スライドがシステムフォントを使用する場合は省略します。Slides のアーティファクトタイプが利用可能な場合、同じスライドファイルを共有可能なデッキとして公開できます。
6. 確認し、引き渡す
- スライドごとに1フレームを取得し(
ffmpeg -ss <秒数> -i out/rehearsal.mp4 -frames:v 1 frame.png)、内容を確認します:テキストが枠内に収まっているか、字幕領域の下に何もないか、フォントが読み込まれているか。 - 動画の長さが音声の長さと一致していることを確認します。
- 以下の3つの注意事項とともにファイルを引き渡します:相手の発言は予測であること;準備リストにはユーザー自身の事実が必要であること;スクリプトテキストはMicrosoftの音声サービスに送信されたこと。
プライバシー
edge-tts はスクリプトテキストをMicrosoftの音声サービスに送信します。音声を生成する前に、スクリプトに機密情報(給与、健康、未発表の取引や名前)が含まれているかどうかをユーザーに伝え、音声版から除外することを提案してください。APIキーや有料サービスは使用されていません。
ファイル
scripts/make_audio.py- タイミング付き2声MP3とtimeline.jsonを生成するスクリプトscripts/render_video.py- スライドと音声を組み合わせて字幕付きMP4とSRTを生成scripts/build_deck.py- スライドからオフラインでめくれるdeck.htmlを生成references/script-format.md-script.mdの書き方references/slide-format.md- スライドの書き方