From frame-inspect
Extracts frames from videos/images, renders Remotion to MP4/stills/GIF, checks specs like resolution/fps/codec, and visually verifies quality via ffmpeg/ffprobe shell toolkit.
How this skill is triggered — by the user, by Claude, or both
Slash command
/frame-inspect:frame-inspectThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
動画・画像のフレーム抽出、Remotion レンダリング、仕様チェック、目視検証の統合ツールキット。
動画・画像のフレーム抽出、Remotion レンダリング、仕様チェック、目視検証の統合ツールキット。
scripts/video-tool.sh で全操作を統一的に実行できる:
TOOL={スキルディレクトリ}/scripts/video-tool.sh
$TOOL info <video> # 動画情報を表示
$TOOL check <video> --spec KEY=VAL ... # 仕様チェック
$TOOL frames <video> <outdir> [--fps N] # フレーム抽出
$TOOL still <dir> <outdir> [--frame N] # Remotion still
$TOOL render <dir> <output> [--comp ID] # Remotion → MP4
$TOOL gif <video> <output> [--fps N] # GIF 作成
ユーザーから以下を確認:
| 入力 | 判定方法 | 使えるコマンド |
|---|---|---|
.mp4 / .mov / .webm / .avi | 拡張子で判定 | info, check, frames, gif |
.png / .jpg / .jpeg / .gif / .webp | 拡張子で判定 | Read で直接表示 |
ディレクトリ + package.json に remotion | package.json を Read | still, render + 上記全て |
| ディレクトリ + 動画ファイル群 | ls で確認 | 各ファイルに対して上記 |
$TOOL info {videoPath}
出力: 解像度、fps、長さ、コーデック、ファイルサイズ
# App Store プレビュー動画の仕様チェック例
$TOOL check {videoPath} \
--spec width=886 \
--spec height=1920 \
--spec fps=30 \
--spec codec=h264 \
--spec max_duration=25 \
--spec max_size_mb=500
# 汎用的な仕様チェック
$TOOL check {videoPath} \
--spec width=1920 \
--spec height=1080 \
--spec fps=60
チェック可能な項目:
| キー | 説明 | チェック方法 |
|---|---|---|
width | 横幅 (px) | 完全一致 |
height | 縦幅 (px) | 完全一致 |
fps | フレームレート | 完全一致 |
codec | コーデック名 | 完全一致 (h264, hevc 等) |
max_duration | 最大長さ (秒) | 以下 |
max_size_mb | 最大サイズ (MB) | 以下 |
# 1秒に1枚(デフォルト)
$TOOL frames {videoPath} {outDir}
# 0.5秒に1枚
$TOOL frames {videoPath} {outDir} --fps 2
# サムネイル用(2秒に1枚)
$TOOL frames {videoPath} {outDir} --fps 0.5
# フレーム 0
$TOOL still {projectDir} {outDir} --frame 0
# フレーム 90(30fps なら 3秒目)
$TOOL still {projectDir} {outDir} --frame 90
# コンポジション ID を明示
$TOOL still {projectDir} {outDir} --frame 0 --comp MyComposition
# 自動検出(Root.tsx から composition ID を取得)
$TOOL render {projectDir} out/preview.mp4
# コンポジション ID を明示
$TOOL render {projectDir} out/preview.mp4 --comp AppStorePreview
レンダリング後は自動的に check で仕様確認するのを推奨:
$TOOL render {projectDir} out/preview.mp4
$TOOL check out/preview.mp4 --spec width=886 --spec height=1920 --spec fps=30
# デフォルト(5fps, 幅320px)
$TOOL gif {videoPath} out/preview.gif
# 高品質(10fps)
$TOOL gif {videoPath} out/preview.gif --fps 10
抽出したフレーム画像を Read ツールで確認する。
Read: {outDir}/frame_001.png
Read: {outDir}/frame_005.png
Read: {outDir}/frame_010.png
検証結果をユーザーに報告:
## フレーム検証レポート
### 対象
- ファイル: {fileName}
- 種類: {MP4 / Remotion / 画像}
- 解像度: {width} x {height}
- fps: {fps}
- 長さ: {duration}(動画の場合)
- コーデック: {codec}
- サイズ: {size}MB
### 仕様チェック
| 項目 | 値 | 判定 |
|------|-----|------|
| 解像度 | {W}x{H} | OK/NG |
| fps | {fps} | OK/NG |
| 長さ | {duration}s | OK/NG |
| コーデック | {codec} | OK/NG |
| サイズ | {size}MB | OK/NG |
### フレーム検証結果
| フレーム | タイミング | 判定 | コメント |
|---------|-----------|------|---------|
| frame_001.png | 0:01 | OK | - |
| frame_003.png | 0:03 | NG | テキストが右端で切れている |
| frame_005.png | 0:05 | OK | トランジションがスムーズ |
### 問題点
1. **frame_003.png (0:03)**: テキストが画面右端で切れている
- 推定原因: テキスト要素の x 座標が大きすぎる
### 良好な点
- 全体のカラーバランスが良い
- シーン遷移が滑らか
スクリプトが使えない環境では、以下のコマンドを直接実行:
# 基本情報
ffprobe -v error -select_streams v:0 \
-show_entries stream=width,height,r_frame_rate,codec_name,duration \
-show_entries format=duration,size \
-of default=noprint_wrappers=1 input.mp4
# JSON 形式(パース用)
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
# 等間隔フレーム抽出(1fps)
ffmpeg -i input.mp4 -vf "fps=1" out/frame_%03d.png -y
# 特定秒のフレーム
ffmpeg -i input.mp4 -ss 5.5 -frames:v 1 out/at_5s.png -y
# 特定フレーム番号(0-indexed)
ffmpeg -i input.mp4 -vf "select=eq(n\,60)" -frames:v 1 out/frame_060.png -y
# GIF 作成
ffmpeg -i input.mp4 -vf "fps=5,scale=320:-1:flags=lanczos" out/preview.gif -y
# 先頭 N 秒だけ切り出し
ffmpeg -i input.mp4 -t 5 -c copy out/first_5s.mp4 -y
# still(特定フレーム抽出)
cd {projectDir} && npx remotion still {compositionId} out/frame.png --frame=0
# render(MP4 出力)
cd {projectDir} && npx remotion render {compositionId} out/preview.mp4
# フレーム番号の計算(30fps)
# 1秒 = 30フレーム, 3秒 = 90, 5.5秒 = 165
# 1. MP4 にレンダリング
$TOOL render ./preview-video out/preview.mp4
# 2. 仕様チェック
$TOOL check out/preview.mp4 --spec width=886 --spec height=1920 --spec fps=30 --spec codec=h264 --spec max_duration=25
# 3. フレーム抽出
$TOOL frames out/preview.mp4 out/video-frames --fps 2
# 4. Read で目視確認
Read: out/video-frames/frame_001.png
Read: out/video-frames/frame_010.png
Read: out/video-frames/frame_020.png
# 1. 情報確認
$TOOL info input.mp4
# 2. フレーム抽出
$TOOL frames input.mp4 out/frames
# 3. Read で目視確認
Read: out/frames/frame_001.png
Read: out/frames/frame_005.png
npx claudepluginhub sean-sunagaku/claude-code-plugin --plugin frame-inspectProvides best practices for building videos with Remotion in React. Covers captions, FFmpeg integration, audio visualization, 3D, animations, assets, charts, and more.
Remotion best practices for React video creation: project setup, animation patterns, asset handling, and composition using Sequence.
Covers Remotion best practices for video creation in React, including 3D, animations, audio, captions, charts, transitions, and more. 29 domain-specific rules.