lanshu-create-ai-presenter-video について
トピックまたは台本と使用許可済み画像から、AIプレゼンター動画を制作するクリエイター向けスキルです。ナレーション、映像生成、編集、納品確認を管理し、記録された状態と機械・目視のQAに基づいて完了を判定します。
主な機能
- 01トピックまたは台本から制作を開始
- 02確定したナレーションをタイムラインの基準に設定
- 03生成タスクと制作状態を記録
- 04映像・音声・字幕を確認
- 05マスター版と共有版を検証
活用シーン
- 01AIプレゼンターによる解説動画を制作
- 02確定したナレーションから分割生成を計画
- 03未完了の動画制作ジョブを再開
- 04納品前に動画ファイルを確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cclank/ lanshu-create-ai-presenter-video --skill lanshu-create-ai-presenter-videoインストール後、Claude Code で/lanshu-create-ai-presenter-videoを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreLICENSEREADME.mdREADME.zh-CN.md.github/workflows/validate.ymlagents/openai.yamlassets/job.template.jsonreferences/generation.mdqa-recovery.mdediting.mdscripts/check_state.pyfinalize_delivery.shinit_job.pypreflight.pyplan_segments.pytests/smoke.sh詳細
Lanshu AI プレゼンター動画を作成する
最小限の入力から、検証済みのプレゼンター主導動画を制作します。最終ナレーションを、プレゼンターの動き、字幕、グラフィック、カット、動画の長さを同期させる基準として使用します。
必須の成果物
- トピックまたはスクリプトと、成人のプレゼンターが一人、はっきりと写っている許可済みの画像一枚から開始します。
- 完全にデコードできるマスター動画、小容量の共有用動画、字幕、制作記録、機械検査と目視検査それぞれのQAメモを作成します。
- プロバイダー、モデル、アスペクト比、言語、動画の長さを変えても、このワークフローを利用できるようにします。
運用ルール
- 関連するリモート操作を行う前に、画像の権利、成人であること、リモートへのアップロード許可、音声クローンの許可を確認します。
- リモート生成には料金が発生する可能性があるものとして扱います。最初の有料リクエストを送る前に、アップロードするアセット、リクエストする秒数または単位、判明している費用、パイロットの規模、再試行の上限、想定される出力を明示します。その計画に対してすでに承認を得ている場合は、その承認を再利用します。
- 画像から実在の人物の声を推測してはいけません。許可済みの音声サンプルを使用するか、選択したストックボイスを録音します。
- プレゼンター生成、字幕のタイミング設定、最終シーンの区切りを決める前に、ナレーション全体を確定します。
- プレゼンター画像一枚、声の識別情報一つ、ビジュアル処理一つ、連続したプレゼンター映像一つを優先します。
- 最終合成では動画ソースをミュートします。承認済みの外部ナレーションと、意図したミックストラックのみを出力に使用します。
- 認証情報や有効期限付きURLを除き、プロバイダーへのリクエスト本文とタスクIDを保持します。中断された作業は、再送信を検討する前にポーリングします。
- 技術的な不具合は数値チェックで確認し、本人の識別、口の動きのタイミング、まばたき、ジェスチャー、手、照明、連続性は通常速度で目視確認します。
- 有料候補を3つ却下した時点、または費用、プライバシー、音声、外見、プロバイダーに重大な影響を与える変更を行う前に停止します。
- 最終ファイルが完全にデコードでき、コンタクトシートまたは全編再生を確認し、
check_state.pyがverifiedを報告するまで、完了したと主張してはいけません。
ジョブの開始または再開
新しいジョブの場合は、generation.mdを読んでください。SKILL_DIR に、このファイルを含むディレクトリを設定します。場所はハーネスによって異なります。その後、次を実行します。
SKILL_DIR=/path/to/lanshu-create-ai-presenter-video
python3 "$SKILL_DIR/scripts/init_job.py" \
--job-dir ~/Videos/my-presenter-video \
--presenter-image ~/Pictures/presenter.png \
--topic "用一分钟讲清楚上下文工程"
既存のスクリプトファイルには --script を使用します。任意のフラグには、--voice-sample、--supporting-media、--duration、--aspect、--width、--height、--fps、--watermark、--cta があります。初期化時にすべての入力がジョブ内にコピーされ、ジョブからの相対パスが記録されるため、ジョブディレクトリは単独で完結します。後続の成果物パスも、ジョブからの相対パスにしてください。
元画像を実際に確認し、音声サンプルがあれば聞きます。手動レビューと承認を job.json に記録してから、次を実行します。
python3 "$SKILL_DIR/scripts/preflight.py" ~/Videos/my-presenter-video/job.json
既存のジョブの場合は、job.json、現在の成果物、タスクID、QAレポートを読み込み、次に check_state.py(以下を参照)を実行して、最も早い未完了の状態を特定します。受け入れ済みの作業を再生成せず、その状態から再開します。
制作ステートマシン
必要な証拠が存在する場合にのみ、ジョブを次の状態に進めます。
intake
→ content_locked passing preflight report, script, beat sheet
→ audio_locked decodable final audio, ASR report
→ visual_plan_locked timeline, storyboard, plan.status "approved"
→ presenter_generated recorded main_presenter capability, selected video, visual review
→ composition_checked composition report
→ rendered decodable render with video and audio
→ verified master, share, delivery report with passing output loudness
state を手動で編集してはいけません。成果物を job.json に記録し、チェッカーに状態を判定させます。
python3 "$SKILL_DIR/scripts/check_state.py" ~/Videos/my-presenter-video/job.json --write
--write を指定しない場合、チェッカーは報告のみを行います。記録された状態が証拠で裏付けられる範囲を超えていると、ゼロ以外の終了コードを返し、次の状態に進むために不足している項目を一覧表示します。
1. コンテンツと音声を確定する
generation.mdを読んでください。
- トピックを一貫した一つの話し言葉の構成にまとめるか、事実上の意味を黙って変えずに、提供されたスクリプトを磨き上げます。
- 制作用スクリプト、ビートシート、発音、ナレーションの各セクションを保存します。
- 承認済みの音声設定一つを使用して、ナレーション全体を生成します。
- セクションごとに一貫した方法で音量を正規化し、最終音声にASRを実行して、重要な欠落、追加、数字、名前、繰り返し発話を修正します。
- 実際の長さを記録します。この長さをタイムラインの基準とします。
2. プレゼンターを計画して生成する
プレゼンター主導、画面デモ、または解説との組み合わせを選びます。話される内容を実証または明確化する場合にのみ、補助メディアを使用します。
プロバイダーがリクエスト時間または参照音声の長さをナレーションより短く制限している場合は、推測せず、固定した音声のASRタイミングに基づいて分割を計画します。
python3 "$SKILL_DIR/scripts/plan_segments.py" \
--timings ~/Videos/my-presenter-video/qa/asr/sentences.json \
--audio ~/Videos/my-presenter-video/assets/audio/final/narration.wav \
--cap 15 --whole-seconds \
--output ~/Videos/my-presenter-video/qa/requests/segment-plan.json
プランのパスを plan.segment_plan に保存します。すべてのセグメントを、同じ画像、シード、フレーミング、照明、モーションの制約から生成します。
本番の前に、短く低コストのパイロットを生成します。メイントラックでは、人物の同一性と口のタイミングを優先します。動きのある導入または締めくくりには、制御されたジェスチャーを1つ使用します。身体の動きは許容できても口のタイミングに問題がある場合は、モーションプレートを維持し、固定した音声を使って専用のリップシンク修正を適用します。
プロンプト、パラメーター、プロバイダー/モデル/バージョン、リージョン、タスクID、要求した秒数、受け入れ時のメモをアーカイブします。
3. 動画を編集する
editing.md を読みます。
固定した音声に基づく決定的なタイムラインを作成します。設定した開始位置、長さ、ソースオフセットはそれぞれ独立させます。音声と選定したメディアが確定してから、キャプションとキーワードのコールアウトを追加します。
HyperFramesを使用する場合は、最新の hyperframes、general-video、および関連するドメインの手順を読み込みます。プロジェクトのチェックを実行し、トランジションと強調フレームを確認して、Studioのプレビューを開きます。レンダリングの前に、最終的な映像の承認を待ちます。
4. 検証して納品する
qa-recovery.md を読みます。
納品品質でレンダリングし、動画全編を視聴してから、最終処理を行います。
bash "$SKILL_DIR/scripts/finalize_delivery.sh" \
~/Videos/my-presenter-video/renders/rendered.mp4 \
~/Videos/my-presenter-video/outputs \
my-video
最終処理では、入力のアスペクト比を維持し、2パスの番組ラウドネス正規化を行い、マスター版と共有版のエンコードを作成し、それらを完全にデコードして、納品時のラウドネスを測定し、黒画面と静止画イベントの数を数え、9フレームのコンタクトシートを生成します。すべてを一時ディレクトリ内で構築し、すべてのチェックに合格しない限り何も公開しません。目標値はデフォルトで -16 LUFS です。納品先で別の値が必要な場合は、PROGRAM_LUFS を設定します(例:PROGRAM_LUFS=-14)。
コンタクトシートを確認し、フリーズイベントが意図的な静止ショットかどうかを見直します。出力と納品レポートを job.json に記録し、check_state.py --write を実行して verified にします。
入力が最小限の場合のデフォルト動作
- リクエストから言語を推定します。
- 想定されるプラットフォームで別の形式が適切な場合を除き、9:16、1080×1920、30fpsを使用します。
- 提供されたスクリプトの自然な長さを保ちます。トピックの場合は、45~75秒を目標にします。
- 使用許可のある音声サンプルがない場合は、適切なストック音声を使用します。
- デザインされたフック、役立つ2~4つの要点、簡潔な締めくくりを備えた、プレゼンター主導のレイアウトを使用します。
- 依頼されている場合、または明確な理由がある場合を除き、音楽と宣伝用CTAは省きます。
- 適用先のプラットフォームにふさわしい、信頼感があり、現代的で、読みやすく、安全なスタイルにします。
必須のジョブ成果物
job.json
docs/{SCRIPT,BEAT_SHEET,TIMELINE,STORYBOARD}.md
assets/source/
assets/audio/{reference,raw,final}/
assets/video/{candidates,selected,render}/
assets/captions/
qa/{requests,asr,contacts,reports}/
renders/
outputs/
参照先の使い分け
- 受付、コンテンツ、音声、ツールの選定、プレゼンター用プロンプト、有料生成、またはプロバイダーの変更については、generation.md を読みます。
- タイムラインの作成、画面デモのレイアウト、導入、締めくくり、キャプション、キーワードのコールアウト、プレビュー、書き出しについては、editing.md を読みます。
- メディアや納品を受け入れる前、およびリップシンク、人物の同一性、手、露出、フリーズ、キャプション、音声、リモートジョブに問題が発生した場合は、qa-recovery.md を読みます。