screenshot-compression について
PNG と JPEG のスクリーンショットを、形式を維持して圧縮するスキルです。pngquant と jpegoptim で画像を上書き処理し、ディレクトリの再帰処理や品質設定にも対応します。
主な機能
- 01PNG または JPEG 形式を維持
- 02画像を上書き圧縮
- 03ディレクトリの再帰処理
- 04PNG と JPEG の品質設定
- 05ファイルごとと全体の結果表示
活用シーン
- 01リポジトリへのコミット前にスクリーンショットを圧縮
- 02文書やブログ用画像を一括で縮小
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ zc277584121/ marketing-skills --skill screenshot-compressionインストール後、Claude Code で/screenshot-compressionを入力して読み込まれたか確認します。
同梱ファイルscripts/compress_screenshots.py
詳細
スキル:スクリーンショットの圧縮
元の形式を維持したまま、スクリーンショット画像(PNG/JPEG)を上書き圧縮します。PNG には pngquant、JPEG には jpegoptim を使用します。どちらもスクリーンショットの内容(UI 要素、テキスト、ベタ塗りの色)の圧縮に非常に効果的です。
前提条件:システムに
pngquantとjpegoptimがインストールされている必要があります。スクリプトは自動でインストールしません。ツールの有無を確認し、見つからない場合はインストール手順を表示します。
使用する場面
スクリーンショットのファイルサイズが大きすぎるため、形式を変えずにサイズを小さくしたい場合に使用します。よくある例:
- GitHub の README、ブログ記事、ドキュメント用の画像を準備する
- リポジトリへのコミット前に画像サイズを小さくする
- スクリーンショットをディレクトリ単位で一括圧縮する
元の形式を維持する理由(WebP ではなく)
WebP は圧縮率に優れていますが、一部の環境では互換性が低くなります。
| 環境 | WebP の対応 |
|---|---|
| ブラウザー(Chrome/Firefox/Safari/Edge) | 対応 |
| GitHub Issues/PRs | 対応 |
| WeChat エディター | 非対応 |
| Word / PowerPoint | 非対応 |
| 一部のフォーラム/ブログのバックエンド | 環境による |
PNG/JPEG を維持すれば、圧縮後の画像をあらゆる場所で使用できます。
デフォルトのワークフロー
python /path/to/skills/screenshot-compression/scripts/compress_screenshots.py <files-or-directories>
スクリプトは次の処理を行います。
pngquantとjpegoptimがインストールされていることを確認します。見つからない場合はインストール手順を表示して終了します- 拡張子からファイル形式を自動判定します
- 各ファイルを上書き圧縮します(元のファイルを上書きします)
- ファイルごと、および合計の圧縮結果を表示します
依存関係の確認
このスクリプトには、2 つのシステムツールが必要です。どちらかが見つからない場合は、処理を続けず、インストール手順を表示して終了します。ユーザーに代わってインストールしないでください。エラーメッセージを伝え、ユーザー自身でインストールできるようにしてください。
インストールコマンド:
# macOS
brew install pngquant jpegoptim
# Ubuntu / Debian
sudo apt install pngquant jpegoptim
# CentOS / RHEL
sudo yum install pngquant jpegoptim
スクリプトのオプション
| フラグ | デフォルト | 説明 |
|---|---|---|
paths(位置引数) | 必須 | 圧縮する画像ファイルまたはディレクトリ |
-r、--recursive | オフ | ディレクトリを再帰的に処理します |
--png-quality | 80-95 | pngquant の品質範囲(最小値~最大値、0~100) |
--jpeg-quality | 85 | jpegoptim の最大品質(0~100) |
使用例
# Compress a single file
python .../compress_screenshots.py screenshot.png
# Compress all images in a directory
python .../compress_screenshots.py ./images/
# Recursive directory scan
python .../compress_screenshots.py ./docs/ --recursive
# High quality for code screenshots
python .../compress_screenshots.py *.png --png-quality 90-100
# Aggressive compression for thumbnails
python .../compress_screenshots.py *.jpg --jpeg-quality 70
品質調整ガイド
| 用途 | --png-quality | --jpeg-quality |
|---|---|---|
| 一般的なスクリーンショット(ドキュメント、Web ページ) | 80-95 | 85 |
| コードのスクリーンショット(テキストの鮮明さを重視) | 90-100 | 90 |
| サムネイル/プレビュー(サイズを優先) | 60-80 | 70 |
仕組み
PNG(pngquant)
- 24 ビットのトゥルーカラー(1,600 万色)を 8 ビットのパレット(256 色)に量子化します
- Floyd-Steinberg ディザリングを使用して滑らかなグラデーションを実現します
- スクリーンショットは最適な対象です。UI の色は通常、256 色を大きく下回るためです
- 一般的な削減率:60~80%
JPEG(jpegoptim)
- 指定された品質レベルで再エンコードします
--strip-allを使ってメタデータ(EXIF、ICC プロファイル、サムネイル)を削除します- ハフマンテーブルを最適化します
- 一般的な削減率:20~50%
重要な注意事項
- ファイルは上書き圧縮され、元のファイルが上書きされます。必要に応じて、事前にバックアップしてください。
- 処理対象は
.png、.jpg、.jpegファイルのみです。それ以外の形式は通知なしでスキップされます。 - スクリプトが依存関係をインストールすることはありません。ツールが見つからない場合は、インストール手順を表示して終了します。
コメント
Markdown 対応