Freedom Video Generation Studio は何をしますか?
トピック、スクリプト、プロンプト、Pythonの例から再現可能な動画を構築します。決定論的なシーンやコード・図のアニメーションにはManimレンダリングが必須です。設定済みのクラウドビデオモデルを追加して、他の映像素材を生成することもできます。このワークフローは、Codex、Claude、Gemini、OpenClaw、Hermes、DeepSeek、Kimi、WorkBuddy、または通常のPythonスクリプトでそのまま利用できます。
2つのプロバイダー層を分離する
- エージェントプロバイダーは、レッスンプラン、ナレーション、字幕、プロンプト、Manim/Pythonソースの作成にのみ使用します。OpenAI互換のチャットエンドポイントは、DeepSeek、Kimi、Hermesなどのプロバイダーに使用できます。
- ビデオプロバイダーは、ビデオクリップの生成または強化にのみ使用します。ビデオジョブをチャット補完エンドポイントに送信しないでください。
- Agnes Video 2.5 Flashはオプションのデフォルトとして扱い、必須依存にはしないでください。
- プロバイダーの設定や呼び出しの前に、references/provider-config.mdをお読みください。
必須ワークフロー
-
出力先プロジェクトディレクトリを作成します。ソースコード、音声、字幕、レンダリング結果、ログはすべてこのディレクトリ内に保持します。
-
レッスンの作成やレンダリングの前に、以下を実行します。
python3 scripts/ensure_manim.py --project-root <OUTPUT_PROJECT>この手順は必須です。Manimを
<OUTPUT_PROJECT>/.venv-manimに検出またはインストールし、バージョンを確認し、実際のスモークレンダリングを行います。失敗した場合は停止してください。以降のレンダリングでは、スクリプトが出力するManim実行可能ファイルのパスを使用します。 -
ナレーションが必要な場合は、生成前に以下の必須セットアップを実行します。
python3 scripts/ensure_kokoro.py --project-root <OUTPUT_PROJECT>これにより、固定バージョンのKokoro中国語スタックが
<OUTPUT_PROJECT>/.venv-kokoroにインストールされ、要求されたkokoro-tts-zhソースリビジョンが.vendor以下に保存され、初回使用時に選択されたモデル/音声がダウンロードされ、実際のスモークテストWAVが合成されます。いずれかのステップが失敗した場合は停止します。音声とナレーションコマンドについてはreferences/audio-config.mdを参照してください。 -
タイム付きのレッスンプランを作成します。各シーンについて、ナレーション、画面に表示するコード、アニメーション、字幕テキスト、および時間を指定します。コード実行の概念、状態変化、ポインター、トレース、図、および決定論的な教育用ビジュアルにはManimを使用します。
-
完全なナレーションを生成してからシーンのタイミングを固定します。
scripts/kokoro_narrate.pyを使用し、デフォルトでは温かみのある教え方の音声zf_032を速度0.96で使用します。1つのレッスン内では1つの音声と安定した中程度の速度を維持し、測定されたWAVとそのマニフェストに合わせてビジュアルや字幕のタイミングを調整します。 -
Manimのドラフトをレンダリングし、測定された時間、フレームサイズ、テキストの境界、コードハイライト、トランジションがナレーションプランと一致することを確認します。
-
クラウドビデオプロバイダーは、教材を実質的に向上させる場合にのみ呼び出します。課金対象のジョブの前には、必ず以下の安全プレフライトを実行します。
-
最終ビデオをアセンブルし、音声、字幕のタイミング、コードの可読性、時間、再生可能な出力を確認します。
ナレーションソースポリシー
- すべてのナレーション付きビデオには、統合された
kokoro-tts-zhモデルファミリーが提供する中国語の音声を使用します。 - macOSの
say、Windows SAPI、ブラウザの音声合成、またはその他のオペレーティングシステムの音声を自動フォールバックとして使用しないでください。 - Kokoroのインストール、モデルのダウンロード、音声のロード、または合成に失敗した場合は、停止して失敗を報告してください。機械的な音声に黙って代替しないでください。
- Kokoroはプリセット音声を提供します。任意にアップロードされた話者の声をクローンするわけではありません。リンク先のリポジトリのクローンパスは、別個のStableTTSサブモジュールと、このスキルでは自己完結しておらず検証されていないモデルの重みに依存します。クローンリクエストに対しては、個別に設定・検証されたクローンバックエンドと、ユーザーがその音声を使用する許可を持っていることの確認を要求します。
必須請求プレフライト
クラウドビデオリクエストの前に、必ず以下を実行します。
- プロバイダーの現在の価格エンドポイント、または現在の公式価格情報を照会します。
- 設定された割当エンドポイントを通じてアカウントの割り当て/クレジットを照会します。
- 要求された時間、解像度、モデル、およびプロバイダー価格を使用して、予想最大コストを計算します。
- それを
VIDEO_MAX_COST_PER_TASKおよび利用可能なクレジットと比較します。 - プレフライト結果を
<OUTPUT_PROJECT>/usage/video-usage.jsonlに記録します。
価格または割り当てが不明な場合、エンドポイントが確認できない場合、クレジットが不十分な場合、または最大コストを超える場合は、ジョブを送信しないでください。プロバイダーが無料枠を宣伝していても、現在のリクエストが無料であるとは限りません。
リトライおよびポーリングルール
- 無期限にリトライしないでください。
- 非同期ジョブには
VIDEO_MAX_POLLSとVIDEO_POLL_INTERVAL_SECONDSを使用します。 - 一時的なネットワーク障害またはHTTP 429/5xxエラーは、最大
VIDEO_MAX_RETRIES回、上限付き指数バックオフでリトライします。 - キュー満杯、容量不足、クレジット不足、認証、バリデーション、または価格ポリシーエラーの場合は、プロバイダーが明示的に短い
Retry-Afterを提供し、かつ設定されたリトライ予算が1回のリトライを許可する場合を除き、即座に停止します。 - ステータスポーリングに失敗したからといって、単に置き換えジョブを作成しないでください。まず元のジョブをIDで取得してください。
使用記録台帳
プレフライトとプロバイダー呼び出しごとに1つのJSONオブジェクトを<OUTPUT_PROJECT>/usage/video-usage.jsonlに追加します。APIキーや認証ヘッダーを保存しないでください。以下を含めます。
{"timestamp":"ISO-8601","provider":"name","model":"id","job_id":"id-or-null","requested_seconds":10,"actual_seconds":10,"call_count":1,"status":"succeeded","price_source":"endpoint-or-url","estimated_cost":0,"actual_cost":0,"currency":"USD","cost_known":true,"error":null}
プロバイダーが実際のコストを返さない場合は、actual_costをnullに設定し、cost_knownをfalseに設定します。黙って0を記録しないでください。最後に、総呼び出し回数、生成された時間、既知のコスト、およびコスト不明の呼び出しを集計します。
出力契約
最終ビデオに加えて、編集可能なManimソース、KokoroナレーションWAVとマニフェスト、字幕ファイル、プロバイダーセーフな設定テンプレート、レンダリングコマンド、および使用記録台帳を提供します。使用したKokoroの音声/モデル/速度を明記し、クラウドビデオAPIを呼び出さなかった場合やコストを確認できなかった場合も明確に記載します。
ソースコード、ログ、プロンプト、シェル履歴、スクリーンショット、またはコミットされた.envファイルに秘密情報を公開しないでください。環境変数を使用し、.env.exampleテンプレートのみを提供してください。