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、またはそれらを含むフォルダ。
手順
ユーザーのカレントディレクトリから作業します。ユーザーが指定した正確なパスを使用し、引用符で囲んでください。映像ファイルの移動、名前変更、削除は行わないでください。以下の手順で推奨事項として表示されるもの以外は、何もインストールしないでください。
ワークフロー
(手順は順番に実行してください。完了できない手順があれば、スキップせずに報告します。)
- ツールの確認。
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を使用してください。 - 入力の解決。 ユーザーがファイルまたはフォルダを指定した場合は、それを使用します。「録画」などとパスなしで言った場合は、カレントディレクトリ内の動画ファイルを検索します(上記の拡張子を対象に、新しいものから順に)。複数の候補がある場合や候補がない場合のみ確認してください。それ以外の場合は、使用したパスを伝えて処理を進めます。フォルダはそのまま渡します。CLIはそれを1つのセッションとして扱います。
- 常に最初にドライランを実行。
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またはより低い値を提案する前に確認します。 - レンダリング。 ユーザーがプレビューのみを要求した場合を除き、
uvx clip-anything "<input>"を同じオプションで、ただし--dry-runと--jsonは付けずに実行し、進行状況UIを表示します。ユーザーがキャプションを希望し、一度だけのモデルダウンロードに同意している場合にのみ--yesを追加します。それ以外の場合はCLIに確認させます。出力フォルダを報告します(デフォルトは./clips、--outで指定可能)。 - ピックの説明。
clips/report.jsonを読みます(ファイルを直接読むか、python3 -I -cで読み取ります)。各okクリップについて、時間範囲、スコア、およびそれを支えたシグナル(components: ベースラインからのラウドネス、オーディオオンセット、モーション、オーディオ/モーション一致、静的カードペナルティ、発話ボーナス(存在する場合))を1行で示します。layoutがfacecamの場合、およびcaptionsが true の場合にそれらを記載します。warningsのすべてのエントリを平易な言葉でリストアップします。ツールは明示的に品質低下を伝えますので、ユーザーはそれを認識する必要があります。 - 調整オプションを提案。 各オプションを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: キャッシュされた分析を無視 異なるオプションでの再実行は、分析がビデオの横にキャッシュされているため、数秒で完了します。
- 開示。 キャプションまたはタイトルが存在する場合、次のことを一度だけ伝えます: キャプションは機械による文字起こし(faster-whisper、ローカル)であり、タイトルはローカルのビジョンモデルから生成されます。どちらも誤っている可能性があり、投稿する前に確認する必要があります。
例
- 「昨夜のストリームからショート動画を5本作って。~/Videos/obs/ にあるよ」→ ステップ1、フォルダを渡し、
--count 5でドライラン、テーブル表示、レンダリング、説明。 - 「なぜロード画面をピックしたの?」→
report.jsonを開き、そのクリップのcomponentsを表示(高いcard値は静的カードペナルティが発動したが、ラウドなオンセットが依然として勝ったことを示します)。--min-score 0.6または--configTOML内でより高い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つの警告が残ります。