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 Remotion best practices for video creation in React: project setup, animation with useCurrentFrame/interpolate, staticFile usage, and CSS transform rules.
Covers Remotion best practices for video creation in React, including 3D, animations, audio, captions, charts, transitions, and more. 29 domain-specific rules.
Full video production workflow for Remotion projects. Teaches how to orchestrate MCP tools (TTS, music, SFX, stock footage, video analysis) into complete Remotion compositions. Use this skill whenever producing a video that needs audio, voiceovers, music, stock footage, or analyzing existing video files.