From reviw-plugin
Decomposes videos into meaningful keyframes using ffmpeg scene detection filter. Extracts images on scene changes (threshold 0.01), timestamps from logs, supports MP4/MOV/WEBM/AVI/MKV. Adjusts sensitivity; warns on low frame counts indicating static videos.
How this skill is triggered — by the user, by Claude, or both
Slash command
/reviw-plugin:video-decomposeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
動画ファイルをffmpegのシーン検出フィルタでフレーム分解し、意味のあるキーフレーム画像を抽出する。
動画ファイルをffmpegのシーン検出フィルタでフレーム分解し、意味のあるキーフレーム画像を抽出する。
ffmpeg がインストールされていること(which ffmpeg で確認).mp4, .mov, .webm, .avi, .mkv, .m4v, .ogvreviwと同じシーン検出アルゴリズムを使用する:
# 出力ディレクトリ作成
OUTDIR="/tmp/video-decompose-$(date +%s)"
mkdir -p "$OUTDIR"
# シーン検出でキーフレーム抽出(閾値 0.01 = 標準感度)
ffmpeg -i <video_path> \
-vf "select='gt(scene,0.01)',showinfo,scale=640:-1" \
-vsync vfr \
-q:v 3 \
"$OUTDIR/scene_%04d.jpg" 2>"$OUTDIR/ffmpeg_stderr.log"
パラメータ解説:
select='gt(scene,0.01)': シーン変化スコアが閾値を超えたフレームのみ抽出showinfo: stderr にタイムスタンプ(pts_time:N.NNNNN)を出力scale=640:-1: 幅640px、高さはアスペクト比維持(確認用に十分な解像度)-vsync vfr: 可変フレームレートで選択フレームのみ出力-q:v 3: JPEG品質(1=最高, 31=最低。3=高品質)# stderr からタイムスタンプを抽出
grep "pts_time:" "$OUTDIR/ffmpeg_stderr.log" | sed 's/.*pts_time:\([0-9.]*\).*/\1/'
| 感度 | 閾値 | 用途 |
|---|---|---|
| 少なめ | 0.3 | 明らかなシーン切り替えのみ |
| やや少 | 0.1 | 大きな変化 |
| 標準 | 0.01 | 通常はこれを使う |
| やや多 | 0.005 | 細かい変化も検出 |
| 多め | 0.001 | あらゆる変化を検出 |
# 動画の長さ(秒)を取得
ffprobe -v error -show_entries format=duration -of csv=p=0 <video_path>
# フレーム数を取得
ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of csv=p=0 <video_path>
シーン変化が少ない動画(静的な画面表示など)の場合、シーン検出では1-2枚しか抽出されない。 これ自体が 「この動画は表示しただけで操作がない」 ことの証拠になる。
OUTDIR="/tmp/video-decompose-$(date +%s)" && mkdir -p "$OUTDIR" && ffmpeg -i <video_path> -vf "select='gt(scene,0.01)',showinfo,scale=640:-1" -vsync vfr -q:v 3 "$OUTDIR/scene_%04d.jpg" 2>"$OUTDIR/ffmpeg_stderr.log" && echo "Frames: $(ls "$OUTDIR"/scene_*.jpg 2>/dev/null | wc -l)" && echo "Timestamps:" && grep "pts_time:" "$OUTDIR/ffmpeg_stderr.log" | sed 's/.*pts_time:\([0-9.]*\).*/\1/' && echo "Output: $OUTDIR"
npx claudepluginhub joshuarweaver/cascade-code-general-misc-1 --plugin kazuph-reviwExtracts frames from video files at configurable intervals, creates 3x3 grid composites, and runs vision analysis to catalog on-screen text and visual elements.
Samples video frames into timestamped contact sheets that Claude can read as images. Use for summarizing, describing, reviewing, or finding scenes in video footage.
Extracts key frames from videos and animated images (GIF, APNG, WebP) into a viewable timeline using peepshow (ffmpeg). Also reads audio transcripts and metadata.