Communitygithub.com

Moh4696/シネマティックフィルム

コードのみでナレーション付きのシネマティックフィルムを、あらゆるテーマで作成します。1台のカメラが、写真、書類、カード、地図、ルート、大きな数字で構成された1つの世界を滑らかに移動し、すべてのスタンプ、ハイライト、数字がナレーターの言葉に合わせて配置されます。効果音、オプションのスコア、焼き込み字幕も付きます。ドキュメンタリーや歴史、製品発表、ブランドや創業者の物語、科学・技術解説、伝記、実録犯罪に最適です。

シネマティックフィルム とは?

これは、PythonとSkiaライブラリを使用して、完全にコードからシネマティックなナレーションフィルムを生成するAIエージェントスキルです。ユーザーは任意のトピックを選択でき、スクリプトを記述し、このスキルがボイスオーバー、タイミング、ビジュアル要素を含む完全なフィルムをレンダリングします。主なワークフローは、スクリプト作成、ビートテーブルの承認、画像収集、仮ボイスでのタイミング調整、カメラ移動とスポットライトを設定したシーンコーディング、そして最終レンダリングです。このスキルは、開発者ツール(Claude Code、Cursorなど)と連携し、複雑で再現性のあるビデオ制作プロセスを効率化するために設計されています。ルールには「1行に1つのヒーロー」、「ヒットは発話された単語に合わせる」、「電話で1秒で読める大きさ」などがあり、プロフェッショナルな結果を保証します。スキルの仕組みを理解することで、AIエージェントはユーザーの代わりにこの複雑なパイプラインの各ステップを自律的に実行できるため、ドキュメンタリー、製品発表、解説動画などの制作に強力なツールとなります。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Moh4696/cinematic-skill/tree/HEAD/skills/cinematic-film

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

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

ドキュメント

シネマティックフィルム は何をしますか?

この方法で作られたフィルムは、1つのカメラが1つの世界を移動するものです。すべての写真、カード、切り抜き、地図、数字は1つの大きなボード上に存在し、ストーリーが進むにつれてカメラは紐、ルート、矢印に沿ってそれらの間を移動します。すべてのビジュアルヒットは、ナレーターが話す言葉に合わせてタイミングが調整されます。すべてコード(PythonのSkia)で記述されているため、毎回同じようにレンダリングされ、どんなトピックにも対応でき、新しい音声が自動的にフィルム全体のタイミングを再調整します。

アル・カポネに関する5分22秒のドキュメンタリーから構築され、その後あらゆる主題に拡張されました。ここにあるルールは、制作中に発生した問題から記述されました。

ツール

ファイル機能
scripts/check_setup.pyPython、skia-python、ffmpeg、フォント、メモリをチェックし、インストールすべきものを表示
scripts/get_fonts.pyこのマシンに不足しているテキストロール用に、オープンライセンスのフォント(Bebas Neue、Homemade Apple)を取得
scripts/new_project.pyassets/template/(実行可能な解説)からプロジェクトを開始、または--exampleでドキュメンタリー例を作成
scripts/make_beats.pybeats.md(承認するテーブル)を作成。時系列、行の長さ、音声テキストの数字をリント
scripts/tts_say.py最終的な音声の前にフィルムのタイミングを取るための、無料のスクラッチ音声(macOS say、espeak-ng、または任意のTTSコマンド)
scripts/split_takes.pyセクション全体のテイクを1行ごとのクリップに分割し、疑わしいカットをフラグ付け
scripts/build_narration.py行を結合してaudio/narration.m4aとaudio/timing.jsonを作成。これがフィルムの基盤
scripts/fetch_commons.pyWikimedia Commonsを検索し、ライセンスとクレジット付きでダウンロード。非フリーファイルを拒否し、credits.mdを作成
scripts/make_map.py地図用にパブリックドメインの境界(任意の国または地域)を投影
scripts/prep_assets.pyすべての画像を1つのルック(白黒、セピア、または自然色)にグレーディング。ボードテクスチャを生成
scripts/engine.pyフィルムエンジン:カメラ、スポットライト、アイテム、地図、ルック、フィルム仕上げ
scripts/render.py静止画、コンタクトストリップ、キューリスト、および並列MP4レンダリング
scripts/build_sfx.pyキューリストからすべての効果音を合成(サンプル無し、ライセンス不要)
scripts/mix_soundtrack.py音声、効果音、オプションの音楽を、ダッキングとラウドネスノーマライゼーションでミックス
scripts/burn_captions.py4つのキャプションスタイルのいずれかを完成したフィルムに焼き付け、SRTファイルを作成

Python 3.9+、pip install skia-python numpy pillow(scipyはオプション)、およびffmpegが必要です。最初にscripts/check_setup.pyを実行してください。LinuxまたはWindowsでは、プロジェクトごとにscripts/get_fonts.pyも実行してください。すべてのコマンドは--project <folder>を受け付けます。

フィルムの選択

種類ルック画像典型的なアイテム
歴史、実録犯罪、調査wall、slate白黒グレーディングされたアーカイブ写真と書類印刷物、破れた切り抜き、スタンプ、赤い紐、地図ルート
製品発表、ブランドまたは創業者の物語studio、charcoal自然色グレーディングされた製品写真とチーム写真カード、大きな数字、カウンター、矢印
科学、工学、仕組みblueprint、paper図、アーカイブまたはAI静止画カード、カウンター、ペン書き、地図
テクノロジー、宇宙、予告編nightスクリーンショット、レンダリング、AI静止画大きなタイプ、カウンター、ルート、カード

ルックはボードと仕上げであり、すべてのアイテムはすべてのルックで機能するため、自由に組み合わせてください。references/story.mdには、各種類のストーリーの形があります。

ルール

  1. 1行に1つのヒーロー。 各ナレーション行には、カメラが捉えるものが正確に1つだけあります。スポットライトが他のすべてを暗くします。
  2. ヒットは発話された単語に合わせる。 スタンプは行の開始時ではなく、「起訴された」という言葉に合わせて打たれます。doc.W(line, "word")ですべてのタイミングを調整します。
  3. フレーズは1つの方法で表示する。 画面上にタイプするか、実際の文書に表示するかのどちらかで、両方は決して行いません。文書の本文コピーは灰色の行であり、フィラーワードは使用しません。
  4. 時間はオープニング後、前方にのみ進む。 コールドオープンは先に飛ぶことができます。1つのブリッジ行(「4年前…」)の後、ストーリーの時間は前方にのみ進みます。
  5. 電話で1秒で読める大きさ。 大きく凝縮された大文字。画面上のタイプされたラベルは、フレーム高さの約3%以上にする必要があります。
  6. 少ない方が良い。 紐はビートの後にフェードし、古いアイテムは暗くなります。最終的な引きのショットは、乱雑ではなく、構成されたように見えるべきです。
  7. 本物に見えるものは発明しない。 実際の写真と書類にはクレジットが付きます。コードで描かれた文書は再現とラベル付けされ、実際に書かれた言葉のみを引用します。AI画像はイラストとして問題ありませんが、実際の出来事や実際の人物の証拠としては決して使用しません。

ワークフロー

4つのゲート(ゲートと表示)でユーザーの承認を待ちます。

  1. ストーリー。 リサーチし、script.jsonを作成します:テイク(セクション)の行。各行にはtext、spoken(数字は言葉に)、hero、typedがあります。事実メモも併記します。60〜90秒で約150〜230語です。詳細はreferences/story.mdにあります。
  2. ビートテーブル。 scripts/make_beats.pyを実行し、すべてのリント警告を修正します。ゲート: ユーザーがbeats.md(事実を含む)を承認します。
  3. 画像。 photos.jsonにすべての画像をリストします:そのID、種類、出典。
    • アーカイブ画像:fetch_commons.py search、category、get。
    • ユーザー自身のファイル:<project>/assets/photos/にドロップします。
    • AI静止画:1つのスタイルで生成します(motion-assetsスキルが計画と価格設定を行います)。
    • references/archive.mdには、他のアーカイブと権利ルールが記載されています。
  4. スクラッチ音声。 tts_say.py、次にsplit_takes.py、次にbuild_narration.pyを実行します。split_takes.pyがフラグを立てたすべての行を聞きます。これでタイミングが実際のものになります。
  5. アセット。 ストーリーが移動する場合はmake_map.pyを実行し、次にprep_assets.pyを実行します。
  6. シーン。 scene.pyを作成します:セクションごとにクラスターでボードをレイアウトし、doc.L/doc.Wのタイミングでアイテムを追加し、カメラとスポットライトのキー(film.shot)を設定します。references/film.mdを読んでください。出荷された両方のプロジェクトがパターンを示しています:assets/template/scene.py(解説、スタジオルック)とassets/wright-flyer/scene.py(ドキュメンタリー、すべてのアイテムタイプ)。
  7. ルックテスト。 各行の1つの静止画を1280x720でrender.py --probeでレンダリングし、すべてを確認します。次に、すべての大きなカメラ移動に対して--stripを実行します。ゲート: ユーザーにオープニングとルックの静止画を見せます。
  8. ドラフト。 最初の30秒を1280x720でスクラッチ音声でレンダリングします。ゲート: ユーザーが視聴します。
  9. 最終音声。 任意のTTSまたは人物で録音します(references/voice.md)。スプリット、ビルド、プローブを再度実行します。シーン内の何も変更しません。
  10. サウンド。 render.py --cues、次にbuild_sfx.py、次にmix_soundtrack.pyを実行します。必要に応じてスコアを追加します。references/sound.mdを読んでください。
  11. 仕上げ。 フルレンダリングを実行し、次にburn_captions.pyとSRTを作成します。1440pまたは4Kでレンダリングする前にreferences/performance.mdを読んでください。フィルムと共にcredits.mdを引き渡します。

毎回のセルフレビュー

何かが機能すると主張する前に、静止画を確認してください。これらは、実際のレンダリングで発生したことがあるミスです:

  • 暗いボードに暗いインク:見えません。暗いルックには明るいタイプを使用するか、暗いタイプの背後に完全なラベルブロックのためにbar_h=0.92を使用します。
  • カメラは動いたがスポットライトが残り、暗いフレームになる。分割しない限りfilm.shot()を使用します。
  • 地図の縮尺が小さすぎる:海岸全体が1枚の写真より小さい。各場所に独自のスペースができるようにKを選択します(references/film.md)。
  • 地図のラベルが衝突する。ラベルを隣接するラベルから離れた側に配置します。
  • クラスターが地図の端にまたがっている。クラスターは地図上か、明確に地図外のどちらかに保ちます。
  • ハイライトが単語から数ピクセルずれている。PaperDoc.phrase_spansを使用し、画像のグリッドオーバーレイから読み取った分数でdoc.on(print, fx, fy)を使用します。

出荷済みプロジェクト

  • assets/template/:「From Cherry to Cup」、25秒の解説(スタジオルック)。カード、矢印、カウンターで構成され、画像はありません。new_project.py my-filmでコピーされます。スクラッチ音声を追加すればレンダリングされます。
  • assets/wright-flyer/:「Twelve Seconds」、初飛行と50,000ドルの賞金に挑み2度墜落したライバルについての90秒のドキュメンタリー。7枚のパブリックドメイン写真、アメリカ地図、2つの組版文書、すべてのアイテムタイプを使用しています。
python3 scripts/new_project.py wright --example
python3 scripts/fetch_commons.py get --project wright
python3 scripts/make_map.py --project wright && python3 scripts/prep_assets.py --project wright
python3 scripts/tts_say.py --project wright && python3 scripts/split_takes.py --project wright && python3 scripts/build_narration.py --project wright
python3 scripts/render.py --project wright --size 1280x720 --out out/draft.mp4 --audio audio/narration.m4a

関連スキル

Open 3D Skillsより:motion-assetsは、フィルムにイラストが必要な場合にAI静止画を計画・価格設定し、frame-captureはコード描画フィルムの代わりにウェブページを録画します。

関連スキル