kinetograph-render について
Kinetograph のアニメーションプロジェクトを検査・確認・レンダリングするコマンドラインスキルです。書き出し前に、画面、型、互換性、音声の問題を確認できます。
主な機能
- 01ラベル付きフレーム一覧と静止画の生成
- 02レイヤー、テキスト、フォント、素材の lint
- 03レイヤーの位置、サイズ、エフェクトの確認
- 04音量と無音区間の分析
- 05動画または画像シーケンスのレンダリング
活用シーン
- 01指定フレームでアニメーションのタイミングを確認
- 02書き出し前にレイアウトや型のエラーを検出
- 03長時間レンダリング前に非対応コンテンツを確認
- 04音声の検証とスナップショットの比較
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ 0xs4n4tg/ kinetograph --skill kinetograph-renderインストール後、Claude Code で/kinetograph-renderを入力して読み込まれたか確認します。
同梱ファイルreferences/export.md
詳細
確認、チェック、レンダリング
コマンドにはエントリーを指定します。エントリーはプロジェクトファイル(.tsx、.ts、.jsx、.js)、.json シーン、または HTML ページ(その index.html、もしくはそれを格納するディレクトリ)です。--comp <id> でコンポジションを選択し(compositions <entry> で一覧表示できます)、--props '{"title":"Hi"}' または JSON ファイルのパスで props を渡します。-o を指定しない場合、出力先は out/stills/、out/sheets/、out/renders/ となり、パスが表示されます。
1. 確認する
PNG を開いて確認します。以下の Main はコンポジション ID です。
kinetograph strip src/index.tsx -n 12:ラベル付きフレームを一度に 12 枚生成し、out/sheets/Main-strip.pngに出力します。まずこれを実行してください。アニメーション全体を確認できます。--range 10..40、--cols N。kinetograph still src/index.tsx 45:1 フレームを生成し、out/stills/Main-f45.pngに出力します。kinetograph onion src/index.tsx 0..60 -n 6:フレームを重ね合わせてモーションパスを表示し、out/sheets/Main-onion.pngに出力します。
--scale N は、N 倍のサイズで描画します。範囲 a..b は a から b-1 まで、a..=b は b を含みます。
2. ピクセルを使わずにチェックする
lint <entry>(--frames 0,45,89、デフォルトでは 8 フレームを間隔を空けて選択):ボックスやキャンバスからはみ出すテキスト、キャンバス外のレイヤー、テキストの重なり、フォントやアセットの不足、型エラーを、それぞれフレームとレイヤー ID とともに報告します。すべての lint エラーを修正してください。フレームに表示される可能性のあるものだけをチェックします。不透明度が 0 のレイヤー(または不透明度が 0 のグループ内にあるレイヤー)と、クリップによって完全に隠されるレイヤーは、そのフレームではスキップされます。inspect <entry> --frame 45:すべてのレイヤーについて、解決後の位置、サイズ、bounds、matrix(キャンバスのピクセル単位)、エフェクト、テキスト行を表示します。画像を見て推測する代わりに使ってください。check <entry>:プロジェクトの(最も近いtsconfig.jsonを使って)tsc --noEmitを実行します。レンダリングでは型チェックされないため、prop のスペルミス(opactiy={0.5})があっても、エラーなしで不透明度 100%で描画されます。lintは同じ問題をtype-errorとして報告します。audio analyze <entry>:integratedLufs(nullは無音を意味します。オンライン動画では約 -14 を目安にしてください)、truePeakDb(-1 未満に保ってください)、clippedSamples(0 が望ましい)、silencesを表示します。--range、--scenes 0..90,90..180。snapshot <entry> --update:フレームを承認します(デフォルトは最初、中央、最後。--frames 0,30)。その後にsnapshot <entry>を実行すると、__snapshots__/と比較し、ピクセルが 2 レベルを超えて変化している箇所を報告します。bench <entry>:各ステージの所要時間を計測します(--frame、--runs、--range)。effectsはエフェクトとそのフィールドを一覧表示します。
手順:strip の前に lint、render の前に strip を実行します。コマンドが失敗した場合は原因が表示されます。何かを変更する前に error.message と error.code を確認してください。
3. 診断する
doctor のみを実行すると、このインストール環境でできること、すなわちレンダラー、アドオン、CLI、スキルの各バージョンが表示されます。doctor <entry>(--range)は GPU を使わずにすべてのフレームで JS ステージを実行し、エンジンが描画できない内容を報告します(互換モード。描画可能な内容は kinetograph-markup に記載されています)。
- 正常なフレーム数(
cleanFrames、unsupportedFrames、cleanShare)。 - 要素、プロパティ、理由ごとにまとめられた各問題。最も多くのフレームで発生したものが先頭です。問題が確認された
values、要素のpaths($0.2 <div>、ホストツリー内の位置)、包括的なフレームrangesが表示されます。propertyがある問題は、その要素の CSS プロパティに関するものです。nullの場合は要素自体に関するものです。ページスクリプト独自のconsole.errorや捕捉されないエラーも問題として扱われます。
上位の問題として示された内容を削除または置き換えてから、もう一度実行してください。100%正常なら、除外されたものはありません。still、strip、render も同じ内容を stderr に警告として表示します(--json では compat.leftOut)。--strict を指定すると、該当する最初のフレームで UNSUPPORTED_CONTENT により失敗します。DOM 要素や CSS を使うプロジェクトを長時間レンダリングする前に doctor を実行してください。
4. レンダリング
kinetograph render src/index.tsx は、音声付きの out/renders/Main.mp4 を書き出します。主なオプションは次のとおりです。
--draft(半分のサイズ。--scale 0.5と同じ)、--range 0..90、--concurrency 4(一度に描画するフレーム数。ファイルの内容は同じです)。- 1080p から 4K にするには
--scale 2を指定します。このサイズで描画され、拡大処理は行われません。 --codec h264|h265|prores|vp9|gif(出力拡張子は形式に合わせてください。prores は.mov、vp9 は.webm、gif は.gif)。--crf 20または--video-bitrate 8Mのいずれかを指定します。両方は指定できません。--prores-profile 4444、--pixel-format yuv444p、--audio-codec opus。--sequenceを指定すると、動画の代わりに-oフォルダーへフレームごとに画像を書き出します。
不正な組み合わせを指定すると、変更すべき内容が表示されます。React は本番モード(高速)で実行されます。--dev-react を指定すると、React の警告が表示される開発ビルドを使用します。すべてのフラグ、アルファ、コーデックとエンコーダーのルール、および --sequence の詳細については、references/export.md を参照してください。
5. レンダリングを確認する
- 表示される概要で、サイズ、コーデック、エンコーダー、ピクセル形式、フレーム数、
repeated、およびrenderer:の行を確認します。Skia GPU (...)は高速で、Skia CPU (...)は低速です。 - 長い映像の場合は、まず範囲を
stripするか、--draft --rangeを指定してレンダリングし、タイミングを確認します。 --jsonを指定した場合は、outputと、除外された項目がわかるcompatリストを確認します。- 音声は
audio analyzeで確認します。透過レンダリングは、最初のフレームを PNG(--sequence)として開くか、アルファを表示できるプレーヤーで開いて確認します。