Communitygithub.com

clip-anything

ゲーム録画やストリームVODから縦型ハイライトクリップを自動生成するCLIツールです。プレビュー表示、9:16クリップのレンダリング、各ピックの説明を提供します。

clip-anything とは?

`shreyassaw5394/clip-anything` スキルは、長時間のゲーム録画やストリームのアーカイブから、自動で縦型のハイライトクリップ(ショート動画、リールなど)を生成するAIエージェントスキルです。このスキルは、ローカルで動作する `clip-anything` CLI ツールを制御し、実際にレンダリングする前に「ドライラン」でどの瞬間が切り出されるかをプレビュー表示します。さらに、各クリップが選ばれた理由を `report.json` から読み取り、ユーザーにスコアや重要な要素(音声の盛り上がり、モーション、発話ボーナスなど)をわかりやすく説明します。対応プラットフォームはClaude CodeやCursorなどのAIエージェントを想定しており、ローカルのCLIツール (`uvx clip-anything`) を実行するため、映像データが外部に送信されることはありません。macOS/Linux/Windowsの主要な環境で動作し、事前に `uvx` (または `pipx`) と `ffmpeg` がインストールされている必要があります。ユーザーはファイルやフォルダを指定するだけで、クリップ数や最低スコア、長さなどのパラメータを調整しながら、最適なハイライトを効率的に生成できます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/shreyassaw5394/clip-anything/tree/HEAD/.cursor/skills/clip-anything

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

clip-anything は何をしますか?

目的

長時間の録画(単一ファイル、複数ファイル、またはセッションを含むフォルダ)から、トップNの縦型ハイライトクリップを、無料のローカルCLI clip-anything を使って生成します。このスキルはツールを駆動し、実際にカットする前にその内容をプレビュー表示し、レポートを読み込むことで、各瞬間がなぜ選ばれたのかをユーザーが理解できるようにします。アップロード、投稿、または映像の送信は一切行いません。CLI自体も、オプションで一度だけ行われるWhisperモデルのダウンロードを除き、ネットワーク通信を行いません(そのダウンロードも事前に確認します)。

前提条件

  • uvx(uvに付属)または pipx がPATHに通っていること。CLIはPythonパッケージです。uvx clip-anything でインストールなしで実行できます。
  • ffmpeg と ffprobe がPATHに通っていること。これらがない場合、CLIは終了コード3とインストール方法を表示して終了します。
  • ユーザーが指定できる録画ファイル: .mp4 .mkv .mov .m4v .ts .m2ts .mts .webm .avi .flv、またはそれらを含むフォルダ。

手順

ユーザーのカレントディレクトリから作業します。ユーザーが指定した正確なパスを使用し、引用符で囲んでください。映像ファイルの移動、名前変更、削除は行わないでください。以下の手順で推奨事項として表示されるもの以外は、何もインストールしないでください。

ワークフロー

(手順は順番に実行してください。完了できない手順があれば、スキップせずに報告します。)

  1. ツールの確認。 command -v uvx || command -v pipx および command -v ffmpeg && command -v ffprobe を実行してください。uvx と pipx の両方がない場合は、以下を表示して停止します。 curl -LsSf https://astral.sh/uv/install.sh | sh (macOS/Linux) または winget install astral-sh.uv (Windows)。 ffmpeg がない場合は、以下を表示して停止します: brew install ffmpeg / sudo apt install ffmpeg / winget install Gyan.FFmpeg。 pipx しか存在しない場合は、このファイルで uvx clip-anything と書かれている箇所は pipx run clip-anything を使用してください。
  2. 入力の解決。 ユーザーがファイルまたはフォルダを指定した場合は、それを使用します。「録画」などとパスなしで言った場合は、カレントディレクトリ内の動画ファイルを検索します(上記の拡張子を対象に、新しいものから順に)。複数の候補がある場合や候補がない場合のみ確認してください。それ以外の場合は、使用したパスを伝えて処理を進めます。フォルダはそのまま渡します。CLIはそれを1つのセッションとして扱います。
  3. 常に最初にドライランを実行。 uvx clip-anything "<input>" --dry-run --json 2>/dev/null を実行してください(ユーザーが数を指定した場合は --count N を追加)。stdoutからJSONをパースします。順位、start から end(mm:ss形式)、duration_s、score、title(存在する場合)、そして components の最上位コンポーネントを示す短いテーブルを表示します。clips が空の場合は、その旨を明確に伝え、warnings(below_floor 警告はアクションバーをクリアするものがなかったことを意味します)を読み、--min-score 0 またはより低い値を提案する前に確認します。
  4. レンダリング。 ユーザーがプレビューのみを要求した場合を除き、uvx clip-anything "<input>" を同じオプションで、ただし --dry-run と --json は付けずに実行し、進行状況UIを表示します。ユーザーがキャプションを希望し、一度だけのモデルダウンロードに同意している場合にのみ --yes を追加します。それ以外の場合はCLIに確認させます。出力フォルダを報告します(デフォルトは ./clips、--out で指定可能)。
  5. ピックの説明。 clips/report.json を読みます(ファイルを直接読むか、python3 -I -c で読み取ります)。各 ok クリップについて、時間範囲、スコア、およびそれを支えたシグナル(components: ベースラインからのラウドネス、オーディオオンセット、モーション、オーディオ/モーション一致、静的カードペナルティ、発話ボーナス(存在する場合))を1行で示します。layout が facecam の場合、および captions が true の場合にそれらを記載します。warnings のすべてのエントリを平易な言葉でリストアップします。ツールは明示的に品質低下を伝えますので、ユーザーはそれを認識する必要があります。
  6. 調整オプションを提案。 各オプションを1行で、ユーザーが見た内容に適合するものだけを提案します。
    • --count N: クリップ数を増減(最大値。静かなセッションでは少なくなります)
    • --min-score 0.3: アクションバーを下げる。--min-score 0 はファイルをそれ自体と比較してランク付け
    • --min 20 --max 60: クリップ長の制限(秒)
    • --crop center: 動きを追跡せず、静的な中央クロップ
    • --no-captions: キャプションを焼き付けない。--facecam off: ウェブカムスタックなし
    • --vision: ローカルのOllamaによる再ランク付けとタイトル生成(実験的。127.0.0.1:11434 とのみ通信)
    • --force: 前回の実行からのクリップを上書き。--no-cache: キャッシュされた分析を無視 異なるオプションでの再実行は、分析がビデオの横にキャッシュされているため、数秒で完了します。
  7. 開示。 キャプションまたはタイトルが存在する場合、次のことを一度だけ伝えます: キャプションは機械による文字起こし(faster-whisper、ローカル)であり、タイトルはローカルのビジョンモデルから生成されます。どちらも誤っている可能性があり、投稿する前に確認する必要があります。

例

  • 「昨夜のストリームからショート動画を5本作って。~/Videos/obs/ にあるよ」→ ステップ1、フォルダを渡し、--count 5 でドライラン、テーブル表示、レンダリング、説明。
  • 「なぜロード画面をピックしたの?」→ report.json を開き、そのクリップの components を表示(高い card 値は静的カードペナルティが発動したが、ラウドなオンセットが依然として勝ったことを示します)。--min-score 0.6 または --config TOML内でより高い w_card を提案。
  • 「カットするものだけ見せて、レンダリングはしないで」→ ステップ1から3のみ実行。

制限事項

  • トランスクリプトが先立つ瞬間(アクションのないジョークなど)は、設計上スコアが低くなります。ツールはアクションを優先し、発話はボーナスです。
  • アクションバーは2つのゲームで調整されました。未知のゲームでは、要求した数より少ないクリップが返される可能性があります。その場合は、強制的に --min-score 0 を提案するのではなく、その旨を伝えてください。
  • 1080p60のソースは、およそ1時間あたり100秒の分析時間がかかります。複数時間のファイルでは待ち時間が発生しますが、ハングするわけではありません。
  • このスキルはクリップの編集、サムネイルの選択、または外部への投稿を行いません。投稿はユーザーの作業です。

トラブルシューティング

  • 終了コード2: 入力が不正(パスが見つからない、サポート外のファイル、動画のないフォルダ)。CLIのメッセージを表示します。
  • 終了コード3: ffmpeg または ffprobe が見つからない。ステップ1のOS別インストールコマンドを表示します。
  • 終了コード1: 何もレンダリングされなかった。ドライランのJSONで warnings を読みます。通常は below_floor です。
  • キャプションが焼き付けられず、サイドカー .ass ファイルとして書き出される: ffmpeg のビルドに libass が含まれていない(標準のHomebrewフォーミュラ)。PATHに ffmpeg-full ビルドがあれば修正されます。その他の機能は正常に動作します。
  • --vision が効果がない: Ollama が実行されていないか、ビジョンモデルがない。アクションのみの処理は継続され、1つの警告が残ります。

関連スキル