oma-video について
oma-videoは、動画依頼をショート、解説、デモの各ワークフローに振り分けるスキルです。決定的な素材パイプラインで動画を生成・検証し、人が録画したデモ映像にも対応します。
主な機能
- 01ショート、解説、デモの各モード
- 02スクリプトとレンダリング仕様の素材パイプライン
- 03ffprobeによる動画検証
- 04人が録画したデモ素材
- 05プロバイダー費用とフォールバックの制御
活用シーン
- 01SNS向け短尺動画の作成
- 02READMEやコードの解説
- 03画面録画を使った操作デモ
- 04プロバイダー処理なしでの動画レンダリング計画
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ first-fluke/ oh-my-agent --skill oma-videoインストール後、Claude Code で/oma-videoを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
config/video-config.yamlresources/checklist.mdexecution-protocol.mdprompt-tips.mdscript-schema.mdvendor-matrix.mdresources/hyperframes-authoring/demo.mdexplainer.mdREADME.mdshorts.mdresources/mpt/driver.pyresources/strudel/package.jsonpage.htmlrender.mjs詳細
Video Router
スケジューリング
使用する場合
ショート動画/リール、README やコードの解説、またはデモのウォークスルーには、このスキルを使用します。
| リクエスト | モード | デフォルトのアスペクト比 | 必須のソース |
|---|---|---|---|
| ショート動画、リール、ソーシャルクリップ | shorts | 9:16 | トピックまたは概要 |
| README、コード、データの解説 | explainer | 16:9 | トピックまたはソースパス |
| デモまたはウォークスルー | demo | 16:9 | --capture による人間の録画 |
使用しない場合
静止画像には oma-image、スライド資料には oma-slide、音声のみには oma-voice、インタラクティブな HTML 解説には oma-explanation を使用します。完成済み動画の編集とライブ配信は対象外です。
構造的なフロー
入力は概要に加え、任意のモード、アスペクト比、ロケール、字幕、ビジュアル、音声、音楽、長さ、コンポジター、キャプチャパス、シードです。出力は .agents/results/videos/<timestamp>-<shortid>-<mode>/ に保存されます。
script.json、timing.json、render-spec.jsonが決定論的なアセットバスを構成します。- 字幕と取得した音声/ビジュアルアセットは、ハッシュ、プロバイダー、コスト、警告、終了コードとともに
manifest.jsonに記録されます。 - 実際のレンダリングが成功すると、
<mode>-<slug>.mp4、エンコードされた動画ストリーム、正の ffprobe 再生時間が生成されます。
OMA_VIDEO_MOCK=1 はテストハーネス専用です。.mp4 という名前の決定論的なテキストプレースホルダーを作成できますが、これらのファイルがユーザーへの納品物になることはありません。HyperFrames/MPT ツールチェーンの欠如、未作成のコンポジション、レンダリングエラー、または無効な動画が発生した場合は、診断情報とともに失敗し、復旧用にスクリプト/レンダリング仕様が残されます。
決定して確認する
明確な場合はモードを推定します。ショート動画/リール -> shorts、README/コード/データ/解説 -> explainer、デモ/ウォークスルー/キャプチャ -> demo。1 行のリクエストの場合は、実行前に推定したモード、アスペクト比、長さ、ビジュアル戦略、字幕、ロケール、音声/音楽を伝えます。デフォルトが明確な場合、ユーザーにアンケートへの回答を求めてはいけません。
結果が変わる場合に限り質問します。モード/ソースが曖昧な場合、必要なデモ録画がない場合、またはコスト確認が必要な場合です。明示されたモード、アスペクト比、長さ、字幕、音声はそのまま尊重します。
デモでは、人間が画面を録画し、ログインを操作します。--source web --url はコンテキストを提供するだけで、ログインを自動化したり、レコーダーを起動したりすることはありません。--capture がない場合は、手順に沿ったキャプチャ方法を案内して停止します。
論理操作
ガードレール
- 外部への出力が明示的に許可されていない限り、出力パスとキャプチャパスは
$PWD内に保持します。キャプチャ形式を検証し、外部アセットを実行ディレクトリにコピーします。ログとマニフェスト内の URL クエリ/ハッシュトークンをマスクします。 - プロバイダーの設定ではキーは任意です。設定済みのチェーンを使用します。有料プロバイダーには、環境キーとコストガードレールが必要です。ローカルのフォールバックで音声、ビジュアル、字幕、音楽を置き換えることができます。カバレッジは警告に記録します。コンポジターの失敗をフォールバック動画で置き換えることはできません。
- 有料プロバイダーのアクションや再実行の前に、計画時の見積もりを
cost.guardrail_usdまたは--max-usdと比較し、既存の支出承認を再利用します。アクティブな OMA 動画ワークフローでは、実行前に実際の有料、制限付き、フォールバック、または却下の選択を記録します(実行プロトコルのステップ 2)。--yesまたはOMA_VIDEO_YES=1を渡せるのは、すでに承認済みの有料アクションに限ります。この指定によって許可が付与されるわけではありません。 limits.max_duration_sec(180)とlimits.max_scenes(40)を遵守します。SIGINT/SIGTERM でサブプロセスの処理をキャンセルします。- 実行ディレクトリは保持します。ユーザーの動画アーティファクトを自動削除してはいけません。
--dry-runは計画用アーティファクトのみを書き込み、プロバイダーによるレンダリングは行いません。MP4 の存在を保証するものではありません。
標準コマンドパス
# Plan or create the asset bus. Supply --script whenever an agent authored it.
oma video generate "Jeju coffee" --mode shorts --aspect 9:16 \
--captions tiktok --script ./script.json --output json
# Deterministic planning only; no real render or provider work.
oma video generate "explain this project" --mode explainer --seed 42 --dry-run
# Human-recorded demo input.
oma video generate "feature walkthrough" --mode demo --capture <absolute-path>.mp4
# Scaffold the per-run HyperFrames project, author index.html as instructed,
# then render and validate the encoded output.
oma video compose <runDir> --output json
oma video render <runDir> --output json
# Diagnose required toolchains without changing a run.
oma video doctor
oma video provider list
oma video generate --output json は
{exitCode, runDir, manifestPath, scriptPath, renderSpecPath, warnings, error} を返します。
動画とアセットのパスはマニフェストから読み取ります。JSON エンベロープに outputs フィールドはありません。
失敗と復旧
-
HyperFrames のコンポジションが見つからない場合:
oma video compose <runDir>を実行すると、プロジェクトとオーサリングの仕様が準備されます。生成されたAUTHORING.mdを使って<runDir>/hyperframes/index.htmlを作成し、oma video render <runDir>を実行します。このコマンドは、出力をリント、レンダリングし、ffprobe で検査します。報告されたコンポジションまたはツールチェーンの問題を修正して再実行してください。レンダリングできない場合は、失敗レポートを返します。 -
MPT ツールチェーンが見つからない場合:
--compositor mptには、インストール済みのチェックアウト、その仮想環境、ffmpeg が必要です。セットアップが許可されており実行可能な場合は、oma video doctor --install-mptを使用してください。MPT のセットアップ失敗、ドライバーの失敗、動画以外の出力は診断結果とともに失敗し、プレースホルダーの MP4 は書き込みません。
成功とは、すべてのアセットスキーマとマニフェストのハッシュが検証され、実際の MP4 が動画ストリームと再生時間の検証に合格することを意味します。部分的な成功では、キー不要のビジュアル、タイミング、字幕、または音楽のフォールバックを使用できますが、実際の動画の検証は必須です。
参考資料
条件付きで読み込むリソース
タスクに必要なものだけを読み込んでください。
resources/execution-protocol.md:順序に沿ったパイプライン全体、失敗のマッピング、JSON レポートのルールについて説明しています。resources/vendor-matrix.md:プロバイダー、キー、コスト、またはフォールバックの順序を変更する前に確認してください。resources/script-schema.md:--script入力を作成または検証する場合に確認してください。resources/prompt-tips.md:概要をシーンのプロンプトに変換する場合に確認してください。resources/hyperframes-authoring/README.mdと選択したモードのガイド:index.htmlを作成する前に確認してください。resources/checklist.md:実際の動画をユーザーに渡す前に確認してください。
検証
CLI/ランタイムの変更では、影響を受ける成功パスと失敗パスの回帰テストを追加してください。最低限、対象を絞った Vitest ファイルを実行します。例:
cd cli
bunx vitest run commands/video/providers/compositor.test.ts \
commands/video/orchestrator.test.ts
bunx biome check commands/video/providers/compositor.ts \
commands/video/providers/compositor.test.ts
ドキュメントやモックのみの分岐をテストするためだけに、実際のレンダリングを実行しないでください。