レビューループ(HyperFrames 版) は何をしますか?
あなたはビデオを見ることはできませんが、フレームは見ることができます。「現在のバージョン」の出力済みコンタクトシートを確認せずに、ビデオ完了を報告しないでください。
原作:whaleyxbt/claude-motion の
review-loopスキル(MIT、同ディレクトリのLICENSE参照)。元のnpm run …コマンドを kinocut MCP の HyperFrames ツールと、このディレクトリのscripts/sheet.pyに置き換え。「(本版追加)」とマークされた段落は原作にはありません。
以下の SHEET は python "<このスキルディレクトリ>/scripts/sheet.py"(例:~/.claude/skills/review-loop/scripts/sheet.py)を指します。すべてのパスは絶対パスを使用します。
ループ
- まず機械チェックを実行(本版追加):プロジェクトディレクトリで
hyperframes checkを実行します。lint、実行時、レイアウトオーバーフロー、アニメーション、コントラストチェックを一度に実行します(公式ではvalidate/inspectは非推奨となり、checkに置き換えられました)。エラーがあれば先に修正し、修正後に次の手順に進みます。詳細は公式のhyperframes-cliスキルを参照してください。- マスクの出現は、登場中に必ず
container_overflowを報告しますが、これは意図的なデザインであり、マスクコンテナにdata-layout-allow-overflowを追加します。ただし、配置後にtext_box_overflowが報告される場合は、コンテナの高さが不足しており、文字(特に中国語と上付き文字)が切れる可能性があるため、コンテナを高くする必要があります。
- マスクの出現は、登場中に必ず
- ドラフト:
hyperframes_render、パラメータquality: "draft"、output_pathを<プロジェクト>/out/draft.mp4に設定。 - コンタクトシート:
SHEET --video <プロジェクト>/out/draft.mp4 --timeline <プロジェクト>/timeline.js --out <プロジェクト>/out/sheets各ビートの 0.3 秒後(アニメーションが収束した時点)にフレームをキャプチャし、4×2 で結合してout/sheets/beats-N.pngを作成。各フレームにはビート名と時間がラベル付けされます。各フレームのデフォルト幅は 360 px、つまりモバイルフィードでの実際の幅です。 - Read ツールで各シートを開き、以下のチェックリストと項目ごとに照合します。
- 疑わしい箇所を拡大確認:
- トランジション部分をスキャン:
SHEET --video … --from 3 --to 5 --every 0.2 --name scrub - 特定の時刻を確認:
SHEET --video … --at 3.7,3.75,3.8 --name exact - 単一フレームをフル解像度で確認:
hyperframes_still、frameにフレーム番号(秒数 × fps) - ビデオを再出力せずに、
hyperframes_snapshotのatを使用してコンポジションから直接スクリーンショットを撮り、SHEET --images … --labels …で結合することもできます。
- トランジション部分をスキャン:
- 修正後は手順 0 に戻ります。完全に一巡して問題が見つからなければ、終了します。
- 最終版:
hyperframes_render、quality: "high"でビデオを出力し、出力されたビデオに対して手順 2 を再度実行し、その後オーディオチェックを行います(下記参照)。
チェックリスト
構成
- 各フレームには焦点が 1 つだけある。2 つの要素が競合する場合、1 つは待機する。
- 意図しない衝突や重なりがない。特にトランジション時、退出と進入の要素が同じ空間を共有する場合に注意。
- セーフゾーン:重要なコンテンツは端から約 60 px 以上離す。
- フレーム 0 は実際の画面であり、黒ではない(ソーシャルプラットフォーム上のサムネイルになるため)。
テキスト
- マスク、コンテナ、または画面端によって切られていない(意図的な場合を除く)。
- モバイル幅(シートのセル)に縮小しても、重要なメッセージが読み取れる。
- 読み取られるべきときに、テキストが動いていない。
- (本版追加)中国語:誤字なし;すべて繁体字フォントで、簡体字が混在していない;句読点は全角;フォントの文字欠けなし(四角や明らかに異なるフォントが表示されない)。
リズム
- 各読み取られるべき状態は、十分に長く停止している(
motion-designのセクション 4 参照)。停止中のフレームでテキストがまだ動いている場合、停止時間が短すぎる。 - シーン間はオーバーラップして接続されており、空白画面にカットされない。
- 退出は進入より速い。
一貫性
:rootカラーパレットの色のみを使用。アクセントカラーはそのフレームの強調点を示す。- 同じ要素は、登場するすべてのシーンで同じように見える。
オーディオ(オーディオがある場合のみ)
- 波形:
video_audio_waveformで、オーディオのピークがTLのビートに合っているか確認。 - ラウドネス(本版追加、原作の
npm run waveを置き換え):ffmpeg -hide_banner -nostats -i <最終ビデオ> -af ebur128=peak=true -f null -最後のサマリーのIntegrated loudnessとTrue peakを確認。目標は −14 LUFS ±1、true peak ≤ −1 dBFS。 - 中国語ナレーションのアクセントと感情は、ユーザーが耳で確認し、スコアで代用しない(本版追加)。
報告
完了時には、何をチェックしたか、何を修正したか、どのシートで結果を確認できるかを明確に述べること。再出力して実際に確認していない修正は、修正済みと主張しない。