video-comparer
2つの動画を比較して圧縮結果や画質の違いを分析したい場合に使用するスキルです。PSNR・SSIMなどの品質指標やフレームごとの視覚的比較を含むインタラクティブなHTMLレポートを生成します。「動画を比較したい」「映像品質の確認」「圧縮前後の比較」といった要求をトリガーに動作します。
description の原文を見る
This skill should be used when comparing two videos to analyze compression results or quality differences. Generates interactive HTML reports with quality metrics (PSNR, SSIM) and frame-by-frame visual comparisons. Triggers when users mention "compare videos", "video quality", "compression analysis", "before/after compression", or request quality assessment of compressed videos.
SKILL.md 本文
Video Comparer
概要
2つのビデオを比較し、圧縮結果を分析するインタラクティブHTMLレポートを生成します。スクリプトはビデオメタデータを抽出し、品質メトリクス(PSNR、SSIM)を計算し、フレームごとの視覚的比較を3つの表示モード(スライダー、並並び、グリッド)で作成します。
このスキルを使用する時機
このスキルは以下の場合に使用してください:
- 元のビデオと圧縮されたビデオを比較
- ビデオ圧縮品質と効率を分析
- コーデックパフォーマンスまたはビットレート削減の影響を評価
- ユーザーが「ビデオを比較」「ビデオ品質」「圧縮分析」「圧縮前後」と述べた場合
コア使用法
基本的なコマンド
python3 scripts/compare.py original.mp4 compressed.mp4
以下を含む comparison.html を生成します:
- ビデオパラメータ(コーデック、解像度、ビットレート、期間、ファイルサイズ)
- 品質メトリクス(PSNR、SSIM、サイズ/ビットレート削減のパーセンテージ)
- フレームごとの比較(デフォルト: 5秒間隔のフレーム)
コマンドオプション
# カスタム出力ファイル
python3 scripts/compare.py original.mp4 compressed.mp4 -o report.html
# カスタムフレーム間隔(大きいほど = フレームが少ない、処理が速い)
python3 scripts/compare.py original.mp4 compressed.mp4 --interval 10
# バッチ比較
for original in originals/*.mp4; do
compressed="compressed/$(basename "$original")"
output="reports/$(basename "$original" .mp4).html"
python3 scripts/compare.py "$original" "$compressed" -o "$output"
done
要件
システム依存関係
FFmpeg と FFprobe(ビデオ分析とフレーム抽出に必須):
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg
# Windows
# https://ffmpeg.org/download.html からダウンロード
# または: winget install ffmpeg
Python 3.8以上(型ヒント、f文字列、pathlib を使用)
ビデオ仕様
- 対応フォーマット:
.mp4(推奨)、.mov、.avi、.mkv、.webm - ファイルサイズ制限: ビデオあたり500MB(設定可能)
- 処理時間: 標準的なビデオで約1~2分。期間とフレーム間隔によって異なります
スクリプトの動作
自動検証
スクリプトは自動的に以下を検証します:
- FFmpeg/FFprobe のインストールと可用性
- ファイルの存在、拡張子、サイズ制限
- パスセキュリティ(ディレクトリトラバーサルを防止)
検証が失敗すると、解決ガイダンス付きの明確なエラーメッセージが表示されます。
品質メトリクス
スクリプトは2つの標準的な品質メトリクスを計算します:
PSNR(Peak Signal-to-Noise Ratio): ピクセルレベルの類似度測定(20~50 dB スケール、高いほど良い)
SSIM(Structural Similarity Index): 知覚的類似度測定(0.0~1.0 スケール、高いほど良い)
詳細な解釈スケールと品質閾値については、references/video_metrics.md を参照してください。
フレーム抽出
スクリプトは指定された間隔(デフォルト: 5秒)でフレームを抽出し、比較用に一貫した高さ(800px)にスケーリングし、base64データURLとして自己完結型HTMLに埋め込みます。処理後、一時ファイルは自動的にクリーンアップされます。
出力レポート
生成されるHTMLレポートには以下が含まれます:
- スライダーモード: ドラッグして元のビデオと圧縮ビデオを表示(デフォルト)
- 並並びモード: 直接比較のための同時表示
- グリッドモード: コンパクトな2列レイアウト
- ズームコントロール: 50~200% の倍率調整
- 自己完結型フォーマット(サーバー不要、オフラインで動作)
重要な実装の詳細
セキュリティ
スクリプトは以下を実装しています:
- パス検証(絶対パス、ディレクトリトラバーサル防止)
- コマンドインジェクション防止(
shell=Trueなし、検証された引数) - リソース制限(ファイルサイズ、タイムアウト)
- カスタム例外:
ValidationError、FFmpegError、VideoComparisonError
一般的なエラーシナリオ
「FFmpeg not found」: システム要件セクションのプラットフォームパッケージマネージャーを使用してFFmpegをインストール
「File too large」: 比較前にビデオを圧縮するか、scripts/compare.py の MAX_FILE_SIZE_MB を調整
「Operation timed out」: FFMPEG_TIMEOUT 定数を増やすか、より大きい --interval 値を使用(処理するフレームが少なくなります)
「Frame count mismatch」: ビデオの期間/フレームレートが異なります。スクリプトは最小フレーム数に自動的に切り詰め、警告を表示します
設定
スクリプトには、ファイルサイズ制限、タイムアウト、フレーム寸法、および抽出間隔の調整可能な定数が含まれています。動作をカスタマイズするには、scripts/compare.py の先頭の定数を編集してください。詳細な設定オプションとその影響については、references/configuration.md を参照してください。
参考資料
詳細情報については以下のファイルを参照してください:
references/video_metrics.md: 品質メトリクスの解釈(PSNR/SSIMスケール、圧縮ターゲット、ビットレートガイドライン)references/ffmpeg_commands.md: FFmpegコマンドリファレンス(メタデータ抽出、フレーム抽出、トラブルシューティング)references/configuration.md: スクリプト設定オプションと調整可能な定数assets/template.html: 表示モードとスタイリングをカスタマイズするためのHTMLレポートテンプレート
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- daymade
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/daymade/claude-code-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。