screenkite-transcription-cut について
マイクの文字起こしを使って録画内の無音部分を特定し、削除する ScreenKite 編集スキルです。破壊的なカットを適用する前に、ドライランで確認し、ユーザーの承認を得る必要があります。
主な機能
- 01マイク音声の文字起こし
- 02無音カット範囲の算出
- 03ドライランでの確認
- 04ScreenKite によるカット適用
- 05編集の検証と取り消し
活用シーン
- 01録画内の長い間を削除
- 02編集前にカット候補を確認
- 03無音削除後にタイムラインを確認
- 04誤ったカットを取り消す
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ screenkite/ awesome-ai-video-editing --skill screenkite-transcription-cutインストール後、Claude Code で/screenkite-transcription-cutを入力して読み込まれたか確認します。
同梱ファイルscripts/apply_cuts.pyscripts/compute_silence_cuts.py
詳細
screenkite-transcription-cut
マイクの文字起こしに基づいて、ScreenKite の録画から無音部分を削除します。
前提条件
/usr/local/bin/screenkiteにscreenkiteCLI があること。- バンドルより上の階層にある
.envにELEVEN_LABS_API_KEY(アンダースコア付き)が設定されていること。 - PATH 上に
ffmpegがあること。 python3とrequests(pip install requests)があること。
フェーズ 1 — プロジェクトを開く
/usr/local/bin/screenkite agent project open \
--path '<absolute-path-to.skbundle>' --json
プロジェクトが最新であることを確認します。
/usr/local/bin/screenkite agent project current --json
フェーズ 2 — マイク音声を文字起こしする
マイク音声は <bundle>/media/microphone_*.m4a にあります。
python3 scripts/transcribe_mic.py \
'<bundle>/media/microphone_<name>.m4a' \
--edit-dir '<bundle-parent>/<slug>-edit' \
--language en \ # or zho, auto-detect if omitted
--num-speakers 1
# Output: <edit-dir>/transcripts/<stem>.json (word-level, cached)
スクリプトは ElevenLabs Scribe を利用する薄いラッパーです。JSON がすでに存在する場合、再実行しても何も行いません。
フェーズ 3 — 無音部分のカット範囲を計算する
python3 scripts/compute_silence_cuts.py \
'<edit-dir>/transcripts/<stem>.json' \
--min-silence 0.8 \ # seconds — gaps shorter than this are kept
--pad 0.15 \ # seconds to keep at each edge of the gap
--output '<edit-dir>/cuts.json'
適用する前に cuts.json を確認してください。開始時刻順に並べられた [{start, end, gap_s}, ...] が一覧表示されます。カットが多すぎる場合や少なすぎる場合は、--min-silence を調整してください。
一般的な値:
0.5s— 積極的な設定。短い息継ぎの間も検出します0.8s— バランスの取れたデフォルト値1.5s— 控えめな設定。明らかな無音部分のみを検出します
フェーズ 4 — ドライランで確認(最初に必ず実施)
python3 scripts/compute_silence_cuts.py \
'<edit-dir>/transcripts/<stem>.json' \
--min-silence 0.8 --pad 0.15 \
--dry-run # prints human-readable table, no file written
表をユーザーに表示します。件数と最長の無音部分が適切であることを確認します。 ユーザーが確認するまで、カットを適用しないでください。
フェーズ 5 — カットを適用する
/usr/local/bin/screenkite agent tool call \
--name editTimeline \
--input-json "$(python3 scripts/compute_silence_cuts.py \
'<edit-dir>/transcripts/<stem>.json' \
--min-silence 0.8 --pad 0.15 --emit-tool-input)" \
--json
--emit-tool-input は {"action":"cut","parameters":{"ranges":[...]}} を出力します。
または、保存済みの cuts.json を直接渡します。
python3 scripts/apply_cuts.py '<edit-dir>/cuts.json'
apply_cuts.py は cuts.json を読み込み、ScreenKite CLI を呼び出して、ツールから返された更新後のクリップ数を出力します。
フェーズ 6 — 確認する
/usr/local/bin/screenkite agent tool call \
--name getProjectState --input-json '{"scope":"summary"}' --json
合計の無音時間とおおよそ同じ分だけ duration が短くなったことを確認します。ScreenKite でスクラブして、いくつかの箇所を抜き取り確認します。
カットが誤っていた場合:editTimeline action=undo(誤ったカットごとに繰り返します)。
アンチパターン
- ドライランを先に実施せずに実行しないでください。
cutは破壊的な操作であり、取り消しは一度に 1 ステップです。 - この作業に B-roll スキルを使わないでください。 このスキルは
setSceneLayoutを使用するため、コンテンツは削除されません。 --min-silenceを 0.3s 未満に設定しないでください。 300ms 未満の間隔が本当の無音であることはほとんどなく、その部分をカットすると不自然になります。- プロジェクトを開かずにカットしないでください。 現在のプロジェクトがない状態で CLI を呼び出すと、何も起こらずに失敗します。