Claude AutoCut は何をしますか?
単語レベルの文字起こしに基づくローカル動画編集。すべての処理はユーザーのマシン上で実行されます:Whisper(faster-whisper)による音声認識、FFmpegによるメディア処理、Pillowによる字幕、そしてカートゥーンモードのみHyperFrames(Node.js)によるアニメーションレンダリング。APIキーや有料サービスは不要で、何もアップロードされません。
コマンドラインは、このスキルフォルダ内の scripts/autocut.py です。必要なパッケージがインストールされたPythonで実行してください(「セットアップ」を参照)。
python "<skill-dir>/scripts/autocut.py" <command> ...
<skill-dir> はこのスキルのベースディレクトリです(スキル読み込み時に表示されます)。
モードの選択
| ユーザーの要望 | モード | コマンド |
|---|---|---|
| 「この動画を編集」「間をカット」「「えーと」を除去」「撮り直しを整理」 | 自動編集 | edit VIDEO -o PROJECT |
| 動画をカットせずに字幕だけ追加 | 字幕 | captions VIDEO -o FOLDER |
| 話者の上にアニメーションシーンを配置、録画全体を保持 | フルアニメーション | cartoon init VIDEO -o PROJECT、ストーリーボード、cartoon render |
| 最初に編集し、その後編集済み動画をアニメーション化 | コンプリート | complete VIDEO -o FOLDER、ストーリーボード、cartoon render |
| 「カートゥーン」「アニメポッドキャスト」でカットするかどうか不明 | 1回だけ質問:全体を保持(フルアニメーション)または最初にカット(コンプリート)? |
リクエストが曖昧な場合は、短い質問でどのモードかを尋ね、おすすめを提案してください。最初に、セッション中に一度だけ doctor を実行します。どのモードがこのマシンで利用可能かを表示します。
セットアップ(各マシンで一度だけ)
python -m venv .venvで仮想環境を作成して有効化し、pip install -r "<skill-dir>/requirements.txt"を実行。- FFmpeg(
ffmpegとffprobe)をPATHに追加。 - カートゥーンモードのみ:Node.js 18以上(npxとnpm)。HyperFrames 0.8.79 は初回使用時にnpxで取得され、自動更新はされません。各カートゥンプロジェクトはnpmでGSAPをインストールします。
python "<skill-dir>/scripts/autocut.py" doctor
最初の文字起こしでWhisperモデルをダウンロードします(--model tiny 約75MB、small 約480MB、デフォルト)。言語が既知の場合は --language を使用し、音声が難しい場合は --model medium または large-v3 を使用してください。
自動編集
python "<skill-dir>/scripts/autocut.py" edit input.mp4 -o edits/my-video [--language en] [--model small]
手順:文字起こし → 分析 → 計画 → レンダリング → 検証(編集結果を再度文字起こしして比較)→ 字幕 → REPORT.md。プロジェクトフォルダに出力:renders/cut_vN.mp4(クリーン編集)、renders/final_vN.mp4(埋め込み字幕付き)、captions_vN.srt、decisions.md(削除されたすべての区間とそのタイプ、理由)、analysis.md、verify_vN.json。既存のファイルは上書きされません。新しいバージョンが作成されます。ソース動画は読み取り専用です。
自動計画の動作(意図的に控えめ):
- 最初の単語前と最後の単語後の無音をトリミング。
- 0.7秒より長いポーズを短縮するが、完全には削除しない。文の終わり後のポーズはより長く保持する(強調のためのポーズの可能性)。
- フィラーワードと、すぐ後に撮り直された不完全なテイクを削除。
- 同じ文の完全なテイクが2つある場合、証拠に基づいてよりクリーンな方を保持。「最後」や「最短」は基準にしない。証拠が同等の場合は両方保持し、そのケースを「レビュー対象」にリストアップ。
- 文字起こしで見逃された聞こえる音を保持し、Whisperが無音の上にでっち上げたテキストを削除。
ゲート(高インパクトカット)
他のどこにも発話されていない単語(否定語を含む)を削除するカットは 高インパクト です。自動計画では決して作成されず、overrides.json(ユーザーのリクエストに基づいて追加するカット)からのみ作成されます。レンダリングは、各高インパクトカットが承認されるまで停止します。承認するには、decisions.md から正確な区間と単語をユーザーに表示し、明示的な同意を得てから次のコマンドを実行します:
python "<skill-dir>/scripts/autocut.py" approve PROJECT --start 12.0 --end 18.5 --by "user" --reason "asked to drop the tangent"
python "<skill-dir>/scripts/autocut.py" edit input.mp4 -o PROJECT # 文字起こしは再利用され、新しいバージョンがレンダリングされる
ユーザーが与えていない承認を記録しないでください。plan PROJECT は分析と計画をレンダリングせずに再実行します。
overrides.json(プロジェクトフォルダ内)
{"cuts": [{"start": 12.0, "end": 18.5, "reason": "off-topic tangent"}],
"keep": [{"start": 3.0, "end": 4.2, "reason": "the filler is part of the joke"}],
"pauses": {"p04": {"action": "keep"}, "p07": {"keep_s": 0.8}}}
ポーズID(p04)は analysis.md から取得します。決定がどのように分類されるかについては references/editing.md を参照してください。
ユーザーへの報告
REPORT.md と decisions.md を読み、ユーザーに簡潔に伝えてください:編集前後の長さ、何がなぜ削除されたか、「レビュー対象」の項目、検証が成功したかどうか(欠落した単語、否定語が保持されたか)。自分は動画を聞いたり見たりできないこと、リズムや好みはユーザーが実際に音声を確認して判断する必要があることを伝えてください。
字幕のみ
python "<skill-dir>/scripts/autocut.py" captions input.mp4 -o captions/my-video [--no-burn] [--caption-y 0.75]
captions.srt、captions.json、captioned.mp4 を書き出します。縦型動画は高さの70%の位置に大きな大文字字幕を配置し、横型動画は下部近くに配置します。発話されたすべての単語が順番に一度だけ表示されます。
カートゥーン(フルアニメーションとコンプリート)
cartoon init VIDEO -o PROJECT(コンプリートは最初にeditを実行し、編集結果にカートゥーンプロジェクトを作成します)。PROJECT/speech.md(タイムスタンプ付きの発話ブロック)を読み、PROJECT/storyboard.jsonを作成します:隙間なく動画全体をカバーするシーン、各シーンのシナリオ、ホストのポーズと顔、オブジェクト、画面上のテキスト。スキーマ、カタログ(シナリオ、ポーズ、顔、オブジェクト、トランジション)、レイアウトルールはreferences/cartoon.mdにあります。最初のストーリーボードを作成する前にこれを読んでください。cartoon check PROJECTでエラーがなくなるまで確認。画面上のテキストは発話された単語のみを使用できます。cartoon snapshot PROJECT --at 1.5,8,20でフレームを確認(reviews/フォルダに出力)。cartoon render PROJECT(または--range 0-6で簡単なテスト)。出力:renders/cartoon_vN.mp4(ソース音声はそのままコピー)、renders/cartoon_vN.qc.json(長さと音声をチェック)。
アニメーションは、作成したストーリーボードを通じてのみ発話の意味を解釈します。コード自体が発話を理解するわけではありません。
ルール
- ソース動画や以前のレンダリングを変更または削除しないでください。
- 発話の意味を変えるカットを決して追加しないでください。ユーザーに代わって高インパクトカットを承認しないでください。
- 画面上のテキストと字幕は、発話された単語のみを使用します。
- レンダリングは一度に1つずつ実行します。カートゥーンのレンダリングは負荷が高いです(
references/troubleshooting.mdを参照)。 - 結果が「音が良い」と主張しないでください。あなたには聞こえません。測定された内容を報告してください。
問題が発生した場合
references/troubleshooting.md を参照してください(FFmpegの欠落、モデルのダウンロード、Node/npx、HyperFrames、メモリ、言語の誤り、文字起こしの不良など)。