mcpField
R
review-video

review-video

github.com/dojocodinglabsクリエイティブ・メディア16662 回インストール2 週間前に更新
リポジトリ

review-video について

Remotion 動画のレビュー用スキルです。レンダリングしたフレームを確認し、TwelveLabs で動画全体を分析して修正につなげます。構造化されたフィードバックを取り入れる制作ワークフロー向けです。

主な機能

  1. 01フレームを抽出して確認
  2. 02動画を TwelveLabs にアップロード
  3. 03評価基準に沿った動画分析
  4. 04タイムスタンプをフレームとシーンに対応
  5. 05修正と再レビューを反復

活用シーン

  1. 01字幕のはみ出しや素材の欠落を確認
  2. 02テンポ、ナレーション、効果音を評価
  3. 03冒頭のフックと終盤の CTA を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dojocodinglabs/remotion-superpowers --skill review-video

インストール後、Claude Code で/review-videoを入力して読み込まれたか確認します。

詳細

動画レビュー — AI を活用した動画フィードバックループ

Remotion の動画をレビューし、まずはレンダリングした数フレームを確認し、その後 TwelveLabs にレンダリング全体を「視聴」させて、専門的なフィードバックを提供します。これにより、プレビュー、レビュー、改善、反復という制作のループを完結させます。

video-analysis ルールを利用するため、remotion-production スキルを読み込んでください。レンダリングには、公式の remotion-render スキルに従います。

ここではレンダリングが許可されています。 /review-video の呼び出しは、レビュー用にレンダリングする明示的な依頼です。そのため、再度確認を求める必要はありません。

ワークフロー

1. フレームの簡易チェック(低コスト、ローカル)

何かをアップロードする前に、公式の remotion-render の説明に従って、いくつかの静止フレームをレンダリングし、自分で確認します。

npx remotion render [CompositionId] out/review-frames --frames=0,45,90,150,240 --image-format=png

冒頭のフック、各シーンの中間地点、最も情報量の多い場面(字幕やオーバーレイ)、最後のフレームをカバーするようにフレームを選びます。PNG を読み込み、次を確認します。

  • 空白または何も表示されないフレーム、アセットの欠落(staticFile() が見つからない場合、何も表示されないかエラーになります)
  • テキストの読みやすさ、はみ出し、安全領域(公式の remotion-create/video-layout.md)
  • プラットフォーム UI に対する字幕の配置(captions-workflow ルール)

これらのフレームに明らかな問題がある場合は、先に修正して(ステップ 6 を参照)、このステップを繰り返します。フルレンダリングと TwelveLabs へのアップロードを行うより、はるかに低コストです。

2. 動画全体をレンダリングする

既存のレンダリングを探します。

ls -t out/ 2>/dev/null | grep -E '\.(mp4|webm|mov)$'

なければ、または作成後にコードが変更されていれば、今すぐレンダリングします。

npx remotion render [CompositionId] out/video.mp4
3. レンダリングを TwelveLabs にアップロードする
create-asset:
  file: [absolute path to the render, e.g. /path/to/project/out/video.mp4]

返されたアセット ID を保持します。インデックスは不要です。分析呼び出しでアセットの準備ができていないと表示された場合は、数秒待ってから再試行します。

4. 分析 — ディレクターによるレビュー

レビュー全体を JSON で返す sync-analyse-video 呼び出しを 1 回実行します(レンダリングが 1 時間を超える場合は、同じ prompt と jsonSchema を使って async-analyse-video を実行し、その後 get-analyse-task でポーリングします)。

sync-analyse-video:
  assetId: [asset ID]
  modelName: "pegasus1.5"
  temperature: 0.2
  prompt: "You are a video director reviewing a [duration]s [platform] video at [WxH]. Intent: [one-line brief]. Script: [narration, per scene]. Score each dimension 1-10 and list concrete fixes with timestamps in seconds. Check: framing and composition; whether on-screen text is readable and on screen long enough; transitions; blank, frozen or glitchy frames; pacing (scenes too long or too short); whether the voiceover matches what's on screen; SFX timing; music mood and level under the voice; whether the first 3 seconds hook; whether the CTA is clear."
  jsonSchema: [the rubric below]

サーバーのデフォルトモデルは API から削除されているため、必ず modelName: "pegasus1.5" を指定します。

評価基準(jsonSchema):

{
  "type": "object",
  "properties": {
    "overall_score": { "type": "integer", "description": "1-10" },
    "scores": {
      "type": "object",
      "properties": {
        "hook": { "type": "integer", "description": "1-10, first 3 seconds" },
        "pacing": { "type": "integer", "description": "1-10" },
        "composition": { "type": "integer", "description": "1-10, framing and layout" },
        "text_legibility": { "type": "integer", "description": "1-10, size, contrast, time on screen" },
        "transitions": { "type": "integer", "description": "1-10" },
        "audio_sync": { "type": "integer", "description": "1-10, voiceover and SFX against visuals" },
        "audio_mix": { "type": "integer", "description": "1-10, voice clarity, music level" },
        "cta": { "type": "integer", "description": "1-10, clarity of the ending" }
      },
      "required": ["hook", "pacing", "composition", "text_legibility", "transitions", "audio_sync", "audio_mix", "cta"]
    },
    "working": { "type": "array", "items": { "type": "string" } },
    "fixes": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "start": { "type": "number", "description": "seconds" },
          "end": { "type": "number", "description": "seconds" },
          "dimension": { "type": "string", "enum": ["hook", "pacing", "composition", "text_legibility", "transitions", "audio_sync", "audio_mix", "cta", "glitch"] },
          "severity": { "type": "string", "enum": ["critical", "major", "minor"] },
          "issue": { "type": "string" },
          "fix": { "type": "string" }
        },
        "required": ["start", "end", "dimension", "severity", "issue", "fix"]
      }
    },
    "priority_fix": { "type": "string" }
  },
  "required": ["overall_score", "scores", "working", "fixes", "priority_fix"]
}

次回のレビューと比較できるよう、JSON を保存(例:out/review-1.json)してから、アセットを削除します。

delete-asset:
  assetId: [asset ID]

レビューのたびに新しいアセットがアップロードされ、アセットはアカウントのストレージ容量を消費します。

特定の区間(たとえば 12~18 秒の修正箇所)を詳しく見るには、アセットを削除する前に、その区間を含む startTime/endTime を指定して sync-analyse-video を再実行します(対象区間は最低 4 秒必要です)。

5. レビューを提示する

JSON をプロフェッショナルなディレクターレビューの形式にします。各修正箇所のタイムスタンプをフレーム数(Math.round(seconds * fps))に変換し、該当するシーン名も記載して、修正箇所がコードと対応するようにします。

🎬 Video Review: [filename]
Duration: [X]s | Resolution: [WxH]

📊 Overall Score: [overall_score]/10
   Hook [x] · Pacing [x] · Composition [x] · Text [x] · Transitions [x] · Audio sync [x] · Mix [x] · CTA [x]

✅ What's Working:
  - [working[0]]
  - [working[1]]

⚠️ Improvements Needed (by severity):
  1. [CRITICAL] [start]-[end]s (frames [a]-[b], [scene]) [issue] → [fix]
  2. [MAJOR] ...
  3. [MINOR] ...

🎯 Priority Fix:
  [priority_fix]

🔄 Next Steps:
  - [ ] [actionable task 1]
  - [ ] [actionable task 2]
  - [ ] [actionable task 3]
  Then run /review-video again.

AI によるレビューをステップ 1 の自分のフレームチェックと照合します。目で確認できる内容について両者の見解が異なる場合は、フレームチェックを優先し、その旨を伝えます。

6. 修正を実装する

提案された修正を適用するか、ユーザーに確認します。適用する場合:

  1. ユーザーの変更を保持します。 編集前にファイルを読み直します。前回のやり取り以降にユーザーがコードを変更したり、Studio で編集したりしていた場合は、その変更を維持したうえで修正を適用します。修正によってユーザーの変更が元に戻る場合は、確認を求めます。
  2. 重要度の高い修正と重大な修正からコードを変更します。
  3. Studio で変更を確認します(npx remotion studio、またはアプリ内ブラウザーを使って --no-open を指定し、表示された URL を開きます)。反復作業中は Studio を開いたままにします。
  4. 再レンダリング(ステップ 2)し、再レビュー(ステップ 1~5)を行って改善を確認します。新しいスコアを保存済みの JSON と比較します。
7. 反復ループ

ユーザーが満足するか、レビューで重大な問題がなくなるまで反復を続けます。

ループ:フレームチェック → レンダリング → アップロード → 評価基準に沿って分析 → アセットを削除 → 修正(Studio で) → 再レンダリング → 品質が十分になるまで繰り返す。

レビューチェックリスト

レビューごとに、次の項目を確認してください。

映像:

  • 空白または何も表示されないフレームがない
  • 目標の解像度でテキストが読みやすい
  • 全体を通して色に一貫性がある
  • アニメーションが滑らかで、カクつきがない
  • 画像や映像の品質が高く、ピクセル化していない

音声:

  • ナレーションが明瞭で聞き取りやすい
  • 音楽の音量がナレーションを邪魔していない
  • 効果音のタイミングが適切
  • 音割れや歪みがない
  • 冒頭と末尾にフェードイン/フェードアウトがある

構成:

  • 冒頭に強いフックがある(最初の2~3秒)
  • 物語の流れが明確
  • プラットフォームや視聴者層に適したテンポ
  • 必要に応じて、CTAを含むすっきりとした締めくくりがある
  • 全体の長さが目標に合っている

技術面:

  • アスペクト比が正しい(16:9または9:16)
  • FPSが正しい(30または60)
  • 対象プラットフォームに適したファイルサイズ
  • レンダリングの乱れがない

コメント