Communitygithub.com

zappurenfuro/movie-recap

ユーザーが提供したローカルの映画やエピソードから、ナレーション付きの完全な映画あらすじ動画と、ショートのInstagram Reelを作成します。字幕、サムネイル、アップロード用コピーも含まれます。

movie-recap とは?

このスキルは、Claude Code、Codex、CursorなどのAIエージェント向けに設計されており、ユーザーが指定したローカルの映画やテレビエピソードから、プロフェッショナルな映画あらすじ動画(Full Recap)と短尺のInstagram Reelを自動生成します。エージェントはまず、提供された動画ファイル(MKV、MP4、MOVなど)と字幕ファイルを探索し、タイトルに基づいて最適なソースを特定します。その後、ローカル環境に自動インストールされたPython、FFmpeg、Kokoro TTS(音声合成)、Whisper(音声認識)などのツールを活用し、動画の分析、ナレーションスクリプトの作成、音声合成、映像編集、字幕生成、サムネイル作成、アップロード用コピーの作成までを一貫して実行します。Full Recapは映画全体をカバーし、Reelはクライマックスの開始時点で終了する独自の構成を持ちます。このスキルは、過去の作業やキャッシュを再利用せず、毎回新鮮な分析と生成を行うことで、正確でオリジナルなコンテンツを提供します。最終的に、指定されたフォルダ構造に従って、ナレーション入り動画、字幕ファイル、サムネイル画像、アップロード用テキストファイルを出力します。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/zappurenfuro/movie-recap/tree/HEAD

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

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

ドキュメント

映画あらすじ動画作成

呼び出し方とデフォルトスコープ

Claude Code: /movie-recap Lucky Codex: $movie-recap Lucky(またはホストのスキルピッカーでこのスキルを選択) 引用符で囲んだ動画パスやフォルダも使用できます。呼び出しメッセージからタイトル/パスとオプションのスコープを読み取ります。Claude Codeの引数: $ARGUMENTS。ホストによってそのトークンが展開されない場合は、リテラルトークンをファイル名として使用せず、ユーザーの実際のメッセージを使用してください。

デフォルト: 以下のファイルを含む、完全なあらすじ動画とReelの両方を完了します。これは、スクリプト、アウトライン、または編集計画を作成するだけでなく、作業を実行する指示として扱います。ユーザーが明示的に要求した場合にのみ、FullのみまたはReelのみが適用されます。誰かがこのスキルを検査、インストール、説明、または変更するように依頼したからといって、レンダリングを開始しないでください。

このファイルには、現在のあらすじ動画テンプレートが両方とも含まれており、古い設定履歴は統合せずに削除されています。Fullのみの編集ルールがReelに漏れてはなりません。明示的な現在のユーザー指示がこれらのデフォルトを上書きします。通常の実行中に、ソーステンプレートや他の映画プロジェクトを変更しないでください。

入力の解決

  1. ユーザーが選択したプロジェクトフォルダから開始します。指定されたローカルビデオファイル(.mkv, .mp4, .mov, .m4v, .webm, .avi)とサイドカー字幕を検索します。明示的に指定されたパスを優先します。Lucky のようなタイトルの場合、ファイル名と関連するサブフォルダを照合し、句読点/大文字小文字および一般的なリリースサフィックスを無視します。
  2. 以前のあらすじ動画のエクスポート、予告編、サンプル、サムネイル、一時的な作業成果物をソース選択から除外します。選択する前に候補メディアを調査します。ファイルが最も長いという理由だけでファイルを選択しないでください。映像、クレジット、字幕から同一性を確認します。
  3. 要求されたタイトルに対して、可能性のあるソースが1つだけある場合は、尋ねずに進めます。Lucky が複数のエピソードに一致する場合、または2つの異なる映画が依然として可能性がある場合は、候補を特定する簡潔な質問を1つ行います。エピソードを黙って結合したり、任意のものを選択したりしないでください。タイトルがない場合は、唯一明確なソースを使用します。それ以外の場合は尋ねます。ソースが存在しない場合は、検索した場所を報告し、そのパスを要求します。映画を自動的にダウンロードしないでください。
  4. ソースは変更しないでください。ソースの隣に <Title>-Full-Recap および <Title>-Reel-Recap フォルダを新規作成します。いずれかが既に存在する場合は、以前の作業を上書きするのではなく、一貫性のある未使用の -Edit-2, -Edit-3 などのペアを選択します。該当する場合は名前にエピソード識別子を使用します。
  5. 最終フォルダの外側に、スコープが限定されたタスク作業フォルダを作成します。該当するプロジェクト指示があれば読み取りますが、2つのモード契約を別々に保ちます。関連のない既存のAGENTS.mdを上書きしないでください。プロジェクト指示を永続化する必要がある場合は、ソースルートまたは別のタスクワークスペース内に保持し、簡潔な最終出力の中には含めないでください。

ツール、音声、実際の実行

自動インストールされたランタイム

グローバルツールを検索する前に、インストールされたこのSKILL.mdの隣にある runtime.json を読み取ります。その manifest_path に従い、共有マニフェストを再読み取りします。status: ready が必要です。その絶対パスの python、ffmpeg、kokoro_model、kokoro_voices、source_whisper_model(多言語ソース映画認識用)、および whisper_model(英語ナレーションアライメント用)を使用します。これらのパスにより、ユーザーが仮想環境をアクティブにしたり、モデルを手動で探したりする必要がなくなります。プロービングには、このPython環境のPyAVを使用します。インストーラーは別のffprobe実行可能ファイルを提供しません。デフォルトでCPUを優先し、GPUが機能することを確認した後にのみ利用可能なGPUを使用します。

ポインタがない場合は、~/.movie-recap/runtime-v1/runtime.json も確認し、次に以下のポータブルな検出を実行します。共有マニフェストがない場合、古い場合、または準備ができていない場合は、実際のセットアップエラーを説明し、ユーザーにこのリポジトリの python install.py --target claude または --target codex(スキルを置き換える場合は --update 付き)を実行するように指示します。ユーザーが依存関係のセットアップを依頼し、リポジトリが利用可能な場合は、自分でインストーラーを実行します。マニフェストファイルが存在するという理由だけでセットアップが成功したと報告しないでください。参照されている実行可能ファイル/モデルを確認してください。runtime.jsonにはマシン固有のパスが含まれているため、公開リポジトリに含めないでください。

これはエージェントワークフローであり、スタンドアロンのビデオレンダリングプログラムではありません。不足している編集ロジックを作成する前に、互換性のある実稼働ヘルパーを検査して再利用します。FFmpeg/ffprobe(またはPyAVプロービング)、Python、TTSエンジン、ASR/アライメントツールを検出します。長いレンダリングをコミットする前に、短いエンコードを試してテストします。NVENCが利用できない場合は、互換性のあるCPUエンコーディングを使用します。テキスト指示のみが作成された場合に、完成したビデオを主張しないでください。

デフォルトのナレーター: ローカルのKokoro am_michael、英語、1.00倍速で合成。Full: 正確に1回の atempo=1.10 調整を適用。Reel: 1.00倍速を優先し、最大1.30倍速を検討する前にスクリプトを短縮します。出力間で音声を黙って切り替えたり、正確なInstagram音声を主張したりしないでください。インストール済みモデルを再利用し、有料サービスについては事前に確認します。必要なローカル実行または使用可能な音声が利用できない場合は、スタンドアロンのSKILL.mdがそれらの機能をインストールするふりをせずに、特定のブロッカーを報告します。リポジトリインストーラーが自動セットアップを提供します。

ポータブルな依存関係検出:

  • アクティブな環境またはユーザー指定のパスからPythonとFFmpeg/ffprobeを見つけます。インストールされている場合、imageio_ffmpeg.get_ffmpeg_exe() でFFmpegバイナリを見つけることができます。
  • ユーザーのインストール済みTTS環境からKokoro ONNXモデルと音声データを見つけます。特定のユーザー名、ダウンロードフォルダ、またはオペレーティングシステムを想定しないでください。ファイルがない場合は、必要なアセットを報告し、パスを尋ねるか、必要に応じてセットアップの許可を求めます。
  • 現在のユーザーのHugging Faceキャッシュまたはユーザー指定のモデルディレクトリで、キャッシュされたfaster-whisperモデルを探します。CUDAサポートを調べ、必要に応じてCPUにフォールバックします。
  • 各マシンで同等のローカルツールを検出します。モデルウェイト、API資格情報、またはフィルム映像をこのスキルにパッケージ化しないでください。

再利用、新しいコンテンツ、重複する作業

  • 汎用的なコード、インストール済みツール/モデル、スキーマ、レンダリング/フィルタービルダー、字幕ユーティリティ、検証およびパッケージングロジックは、置き換える前に再利用します。最初に互換性を検査し、不足している動作のみを適応させます。コードを映画固有のデータから分離して保持します。以前の映画のパス、プロット、スクリプト、ソースタイムマップ、ナレーション、ブランディング、または資格情報を新しいジョブや公開ヘルパーに引き継がないでください。
  • 新しいあらすじ動画の制作には毎回、提供されたソースの新しい分析、新しく作成されたFull/Reelスクリプト、および新しく合成されたナレーションが必要です。以前のあらすじ動画の分析、生成されたトランスクリプト、スクリプト、ショットセレクション、または音声をショートカットとして読み取ったり再利用したりしないでください。ソースから提供された字幕は有効な入力です。現在の実行の新しい分析をFullとReelで共有し、スクリプトと編集契約は別々に保ちます。「同じビデオ、クロップを変更」などの明示的なリビジョンでは、影響を受けていないコンテンツを保持してもかまいません。不必要に再生成しないでください。
  • 同じ実行内の再試行では、検証済みの変更されていない結果を再利用してもかまいません。ソースID、スクリプトリビジョン、音声/モデル/レート、トランスフォーム、エンコーダー設定、ヘルパーバージョンを中間結果とともに記録します。入力が変更された場合は、影響を受ける作業とそれに依存するタイミング、字幕、画像、チャプターを無効にします。ファイルが存在するだけではキャッシュの検証にはなりません。新しい実行は、以前のコンテンツキャッシュを継承してはなりません。
  • 独立した作業を重複させます: トランスクリプションとビジュアルサンプリング、承認済みの自然な段落の合成とショット検査、サムネイルとアップロード用コピーのドラフトとレンダリング。FullとReelは、現在の実行の分析後は独立して進めることができます。関連する音声が測定/アライメントされた後、およびタイムラインがロックされた後にのみ、画像の長さとキャプションを確定します。タイムラインがロックされた後にチャプターを確定します。ワーカーを忙しくさせておくためだけに、未レビューのドラフトを合成しないでください。
  • 便利な場合は、シェルステージに再利用可能なジョブランナーを使用します。そのマニフェストとワークフローガイダンスを読んでください。依存関係、境界のある並行性、排他的リソース、ステージタイミングを提供します。映画の分析や編集の構築は行いません。互換性のあるローカルプロダクションヘルパーを再作成する代わりに再利用します。不足しているロジックのみを作成します。編集レビューはエージェントに任せます。サポートされている場合は、ロードされたモデルを段落間で保持するために、長時間実行されるTTSプロセスを使用します。
  • 制約のあるリソースごとに、2つの独立したジョブと1つのヘビージョブから控えめに開始します。採用前にGPU TTSまたは追加ワーカーのベンチマークを実施します。発音、ポーズ、音声、エンコード品質を維持します。メモリまたはCPU/GPUの競合が作業を遅くする場合は、並行性を減らします。プロセスを重複させることは、エージェントや有料サービスを起動することを許可するものではありません。
  • ソース検査から最終検証までの経過時間を測定します。これには、セットアップ、修正、および失敗が含まれます。ステージタイミングは個別に記録します。重複する期間を合計したり、キャッシュされた再レンダリングを新しい制作と同一視したりしないでください。速度目標のためにストーリーを短くしたり、ナレーション速度制限を超えたり、エクスポート品質を低下させたり、チェックをスキップしたりしないでください。

共有制作ワークフロー

  1. ソースストリーム、長さ、アクティブな寸法、フレームレート、オーディオ言語、字幕を調査します。エンディングを含むストーリー全体のダイアログを読み、サンプリングします。使用可能な字幕がない場合はローカルASRを使用します。ASRの推測に頼るのではなく、重要なアクションを視覚的に確認します。夢、フラッシュバック、伝説、および不確実な結果を実際のイベントから区別します。Web調査で映画の同一性/年を裏付けることはできますが、映像分析をプロットの推測に置き換えないでください。
  2. 正確な因果関係を持つ、平易で具体的な英語のナレーションを書きます。AIスローガン、積み重ねられた劇的な断片、架空のダイアログ、および反復的なフィラーを避けます。ナレーションされた各イベントの正確なパッセージを含むソースタイムマップを作成します。Fullは完全なストーリーをカバーします。Reelはコンテキストを確立し、クライマックスの開始時に停止します。独自のスクリプトとネタバレカットオフを持ちます。
  3. 短い表示キャプションの断片ではなく、完全な段落または自然な文を合成します。それらを自然な呼吸の間隔を持つ連続したナレーションに結合します。実際に調整された音声を測定し、その後で画像タイムラインを構築します。音節を保持し、任意のショット長に合わせてオーディオを引き伸ばさないでください。
  4. 単語を生成された音声にアライメントします。脱落、固有名詞、予期しない発話を監査します。faster-whisperでは、期待されるスクリプト全体を initial_prompt として提供しないでください。単語を幻覚したり、冒頭をスキップしたりする可能性があります。PyAV APIの不一致によりオーディオデコードが失敗した場合は、FFmpegを使用してモノラル16 kHz PCMをデコードし、NumPy配列をWhisperに渡します。信頼性の低い結果を、でっち上げられた単語タイムスタンプを受け入れる代わりに検査します。
  5. ソースイン/アウト、出力開始/終了、ナレーションフレーズアンカー、フリーズポイント、トランスフォームを含む一時的な編集マニフェストを保持します。名前付きアクションを、発話されたフレーズまたはその少し前に配置します。中間アクションフレームとレンダリングされたショット境界を検査します。「彼らがキスをする」を凍結されたハグでカバーしたり、「CCTVを検索する」を数秒後まで無関係なショットでカバーしたりしないでください。
  6. Full RecapをパートA、ReelをパートBを使用してレンダリングします。独立した作業はマシンの制限内で重複してもかまいません。現在の実行の新しいソース分析のみを再利用し、Full Recapの変換された画像は再利用しません。タイミングは、一貫したCFR、明示的なフレームカウント、concat長さを使用してフレーム精度を保ちます。同じ実行内のキャッシュされたレンダリングを、現在のスクリプト、ソース選択、設定に対してチェックします。変更されたクリップを、古いファイルを再利用する代わりに無効にします。互換性のある画像バッチを1回エンコードし、可能な場合はそれらのアセンブリをストリームコピーします。その2つのミックスのためにReel画像ストリームを再利用します。修正が許可された場合にのみ影響を受けるバッチを再レンダリングし、その後最終的なアセンブルされたエクスポートを再チェックします。
  7. 明確なナレーションを、控えめな適切な別のBGMとミキシングします。控えめなオリジナル合成アンダースコアは許容されます。自動的にUndertowを追加しないでください。明示的なオーディオマッピングは、Fullエクスポートからすべてのフィルムオーディオを除外する必要があります。両方のモードでH.264 High、yuv420p、CFR、正方形ピクセル、AAC-LCステレオ(48 kHzが適切)、MP4 faststartを使用します。
  8. 同じナレーションの単語と測定されたタイミングから、自然なフレーズのTTS SRTと短い表示SRTを独立して生成します。両方にパートAの共有字幕ルールを使用します。その「オリジナルオーディオなし/Fullのみのエクスポート制限」はパートBを上書きしません。すべての単語、句読点、順序を保持します。指定されたアップロードコピーとサムネイルを提供します。
  9. 完全なデコード、期待されるフレーム数/長さ、寸法、コーデックプロファイル、オーディオヘッドルーム、重複しないSRTタイミング、正確なスクリプト再構築を検証します。すべてのフルクリップの合計時間と非連続ソース選択を監査します。2つのReel画像ストリーム/タイミングを比較します。サムネイルと選択されたナレーションアクションを検査します。可能な場合はオーディオを使用して代表的なモーションを確認します。静止画とメタデータだけではスムーズな再生を証明できません。利用できない通常速度のリスニング/ウォッチパスについて正直に報告します。
  10. 検証後にのみ、タスクプロジェクト内の明示的に検証されたパスを使用して、タスクで生成された一時ファイルをクリーンアップします。ソース、以前の編集、共有ツール/モデル、指示、および成果物を保持します。共有キャッシュを削除しないでください。クリーンアップがホストによってブロックされている場合は、ブロックをバイパスするために別のシェルや言語を介して再試行しないでください。保持された場所と理由を報告します。明示的な許可なしに公開、アップロード、または主張に異議を唱えないでください。

最終パッケージ契約

<Title> を確認された映画/エピソードのラベルに置き換えます。デフォルトの配信は合計3つのMP4です。Fullが1つ、Reelが2つのバージョンです。

<Title>-Full-Recap/
  <Title>-recap-with-narration.mp4
  <Title>-narration-TTS.srt
  <Title>-captions-display.srt
  youtube-upload.txt
  thumbnails/
    thumbnail-01.png
    thumbnail-02.png
    thumbnail-03.png
<Title>-Reel-Recap/
  <Title>-recap-with-narration.mp4
  <Title>-recap-without-narration.mp4
  narration.txt
  <Title>-narration-TTS.srt
  <Title>-captions-display.srt
  instagram-copy.txt

ナレーションなしのFull Recapビデオや空のオリジナルオーディオSRTを作成しないでください。Fullアップロードコピーは、この結合ワークフローでは必須であり、オプションではありません。特に明記しない限り、ロゴ、透かし、またはチャンネルブランディングを追加しないでください。

関連スキル