/kallaway-edit
生クリップを、完成された縦型リール(1080x1920、30 fps、-14 LUFS)で、Kallaway スタイルに編集します。 すべてユーザーのMac上で無料ツールのみで動作します。ユーザーは通常、技術的ではありません。 平易な英語で、1ステップにつき短いメッセージを送り、コードに触れさせることは絶対にしないでください。
SK = ${CLAUDE_SKILL_DIR}、このスキルのフォルダ(絶対に書き込まないでください。アップデートで置き換わります)。
DATA = $HOME/.claude-video-editor、エディター専用フォルダ。アップデートをまたいで保持されます。
ユーザー設定(DATA/config.json)、エディターのPython(DATA/venv)、効果音(DATA/sfx)。
ROOT = プロジェクトフォルダ(raw/、exports/ があります)。DATA/config.json の projectRoot。
セットアップウィザード(ステップ0)で保存されます。WORK = ROOT/work/<slug>/(リールごとに1フォルダ。slugは短いkebab-case、例:opus-tips)。すべてのパスは引用符で囲んでください。スペースを含むことがよくあります。
すべてのスクリプトは、以下の2つのいずれかを介して、正確に記述されたとおりに実行し、ユーザーの設定を見つけられるようにします。
PY = VIDEO_EDITOR_DATA="$HOME/.claude-video-editor" "$HOME/.claude-video-editor/venv/bin/python" -I(セットアップ後)
SETUP = VIDEO_EDITOR_DATA="$HOME/.claude-video-editor" python3 -I "${CLAUDE_SKILL_DIR}/scripts/setup.py"
ビルドする前にこれらを読んでください:references/style-rules.md(見た目、数値)、references/graphics-recipes.md(話されたアイデアが図になる方法)、references/gotchas.md。
厳格なルール
- 無料ツールのみ。 ffmpeg、Node 22+、Python、HyperFrames(
npx hyperframes@<ピン留め>)、faster-whisper、 HyperFramesのローカル背景除去、バンドルされているOFLフォント、HyperFrames media-useの録音済み効果音 (セットアップ時に取得、バンドルはされません:Pixabayライセンス)、Openverseまたはユーザー自身のトラックからのCC0/CC BY音楽。 有料API、HeyGenサインイン、音楽生成、著作権のあるものは一切禁止。 - ユーザーが指定できるオプション:
music: on|off(デフォルトはセットアップ時に保存された選択)、music: <ユーザーのトラックへのパス>、setup(セットアップウィザードを再実行)。 npx hyperframes initまたはnpx hyperframes skillsは絶対に実行しないでください(~/.claude/skillsにスキルをインストールします)。 HyperFramesの呼び出しはすべて:HYPERFRAMES_SKIP_SKILLS=1 HYPERFRAMES_NO_TELEMETRY=1。 常にsnapshot ... --describe falseとしてください(そうしないとフレームがGeminiにアップロードされます)。- ユーザーの元の映像には絶対に触れないでください。
raw/のコピーから作業します。作業ファイルはWORKに置き、 完成したリールのみをexports/に置きます。ユーザーのファイルを決して削除しないでください。 - キャプションは実際に話された内容を表示し、正しく綴ります(「Claude」、「Opus 5.5」)。数字は数字で表記します。
- グラフィックは決して顔を覆わないでください。テキストはy 1470より下、またはy 1155より下の右端100ピクセル内に配置しないでください。
- 何もアニメーションアウトしません。赤
#C41514が唯一のアクセントカラーです。タイトルとセクションごとに1つのセリフ斜体単語を使用します。 - 作業内容を表示する:各ステップで、連番のPNGを
WORK/progress/にドロップします(01-takes-picked.png、...)。 - 最終レンダリングは、完了と言う前に、フルサイズで
qa.pyを使用してチェックしてください。何が一致していないか正直に伝えてください。
ワークフロー
0. セットアップウィザード(初回のみ、約5〜10分)
DATA/config.json を読み取ります。"setupComplete": true で projectRoot フォルダが存在する場合は、
SETUP --check を実行します(数秒、何もインストールしません)。READYの場合はステップ1に進み、NOT READYの場合は
指定されたものを修正します(新しいツールバージョンが必要なアップデート後は、単に SETUP を再度実行するだけです。
ユーザーのフォルダと選択は保持されます)。それ以外の場合(初回実行、またはユーザーが「/kallaway-edit setup」と言った場合)は、
ウィザードを実行します。どのステップにいるかを1行で伝えてください(「5ステップ中ステップ2:ツールを確認中」)。
- ようこそ。 「Kallaway エディターへようこそ!セットアップを開始します。これには約5〜10分かかり、一度だけ行われます。」
- Claude Code 内ですか? これは Claude Code(ターミナルアプリ、ClaudeデスクトップアプリのCodeタブ、またはIDE拡張機能)が必要です。 ローカルフォルダで開かれている必要があります。実際の動画ファイルを編集するためです。シェルコマンドを実行してローカルファイルを 読み取れる場合は、その状態です。できない場合(通常のチャット):「Claudeデスクトップアプリを開き、Codeをクリックし、 Localを選択し、フォルダを選択(または「AI video editor」というフォルダを作成)してから、もう一度 /kallaway-edit と入力してください。」 と言って停止します。
- ツールチェック。
SETUP --check。結果を短い表で表示します:ツール、見つかったか(はい/いいえ)、用途(ffmpegはカットとサウンドミックス、 Node.jsはHyperFramesを実行、HyperFramesは編集を動画に変換、faster-whisperはすべての単語を聞き取る、Pythonはヘルパースクリプトを実行、 yt-dlpはここではオプションで、リンクからリールをダウンロードし、/new-edit-style に必要)。ユーザーが自分でインストールする必要があるもの (ffmpeg、Node.js、Python)については、修正に必要な名前を1行で示し、どこに貼り付けるかを伝えてください: ターミナルアプリ(Mac:Command + Space を押して「Terminal」と入力)。Macのパスワードを求められた場合は、ユーザー自身がこのチャットではなく ターミナルに入力します。完了したと言うまで待ち、その後再度チェックします。「フルセットアップでインストールされる」とマークされた項目は、 ユーザーからの操作は必要ありません。 - ファイルの保存場所。 1つのメッセージで、それぞれに推奨される回答を添えて質問します。
- 「動画はどこに作成しますか?」現在のフォルダが空か、すでにビデオフォルダである場合は現在のフォルダ(フルパスを表示)を提案し、
そうでない場合は
~/Desktop/AI video editorを提案します。 - 「映像は通常どこに保存されますか?」
~/Downloads(AirDropで電話のクリップが置かれる場所)を提案するか、 「自分で生クリップをrawフォルダにドロップします」と提案します。 - 「あなたの声の下にBGM:オンまたはオフ?」オンを提案します(動画ごとに変更できます)。
その後、フォルダを提案します:「プロジェクトフォルダをセットアップしますか?raw/(あなたのクリップ)、
references/(好きなスタイルの動画)、exports/(完成したリール)、work/(私の作業ファイル)、
archive/(古いバージョン)を作成します。既存のものはそのまま残ります。」「はい」の場合:
SETUP --project "<フォルダ>" --clips-from "<フォルダまたは省略>" --music on|off。 不足しているフォルダのみを作成し、回答をDATA/config.jsonに保存します。
- 「動画はどこに作成しますか?」現在のフォルダが空か、すでにビデオフォルダである場合は現在のフォルダ(フルパスを表示)を提案し、
そうでない場合は
- インストール。 「無料の編集ツールを今インストールしています(1回限り、約5分:文字起こしエンジン、
動画レンダラー、効果音、音声モデル)。」
SETUPをバックグラウンドで実行し、その進行状況を平易な言葉で中継します。 インストールはDATAのみに行われます(グローバルには何も、スキルフォルダにも何もインストールされないため、 アップデートで元に戻ることはありません)。完了すると、セットアップ完了とマークされます。 - 完了。
references/filming-guide.mdから4つの撮影のヒント(カメラ固定、ワイドショット、暗い部屋で顔に温かい光、 ラインが決まるまで繰り返す)を伝え、その後:「準備完了です。クリップを raw/ にドロップするか(または<clipsFrom>内のどのファイルか教えてください)、 /kallaway-edit と入力してください。」すでにクリップが提供されている場合は、そのままステップ1に進みます。
毎回の取り込み:クリップはユーザーが指定したファイルです。それ以外の場合は、clipsFrom 内の最新の動画ファイルを
提案します。それらを ROOT/raw/ にコピーします(オリジナルは決して移動または変更しません)。
音楽は、ユーザーが特に指定しない限り、保存された music の選択に従います。
1. すべてのテイクを見つける(映像1分あたり約1分)
PY "SK/scripts/takes.py" "WORK" "ROOT/raw/clip1.MOV" "ROOT/raw/clip2.MOV"(より高速で精度の低いパスのために --fast を追加)。
WORK/takes/*.takes.txt を読み取ります:各試行とその時間範囲、リテイクのマーク。可能であれば、クリップ内でスクリプトを
見つけるか、ユーザーに尋ねます。「あなたのクリップを聞いて、各行の最良のテイクを見つけています。」と言います。
2. テイクを選び、カットする(約1分)
WORK/edl.json を書きます(形式:SK/template/examples/edl.json):各行に1セグメント、スクリプト順、通常は最後の完全で
クリーンなテイク。{"clip","chunk"} または {"clip","start","end"}(チャンク内のつまずきをスキップする場合。
単語の時間は transcribe.py --range a-b --model medium.en --no-vad で確認)。目標は20〜30秒。少しオーバーしても(〜38秒まで)、
フックが約束したことを破るよりはましです。CTA(Call To Action)は、要求されない限りスキップします。
その後、PY "SK/scripts/assemble.py" "WORK":cut.mp4(CFR、音声にタイト、圧縮済み、-14 LUFS)、segments.json、words.json、
words.txt。words.txt を読み取ります:すべての行が意図された内容を言っている必要があります。
PY "SK/scripts/qa.py" "WORK" --takes で progress/01-takes-picked.png を書き込みます。
「これがカットです:<行>。 秒。」と言います。
グラフィックを構築する前にカットをロックします。 後で再カットする場合:PY "SK/scripts/reindex.py" "WORK" "WORK/.prev/words.json" はすべてのグラフィックをその単語に保ちます。
3. 話者を切り抜く(約3〜4分、バックグラウンドで実行)
PY "SK/scripts/cutout.py" "WORK":cutout.webm(フレームマッチ、エッジクリーン)+ headtrack.json。
実行中に、編集を計画します(ステップ4)。次に、黒の上に合成された1フレームを見てハローがないか確認し、
progress/02-cutout-check.png として保存します。
3b. 音楽(music: off でない場合。約2〜6分、バックグラウンドで実行)
PY "SK/scripts/music.py" "WORK"(または --file "<曲>"、または --off)。Openverseから無料のCC0/CC BYインストゥルメンタルを
選び、ボーカルを拒否し、WORK/music-credit.txt を書き込みます。選んだ曲をユーザーに伝え、CC BYの場合はクレジット行を
キャプションに入れることを伝えます。
4. 編集を1行ごとに計画する
WORK/plan.json を書きます(形式:SK/template/examples/plan.json):
shots:各レイアウトが始まる場所(0、"line:N"= EDL行Nの最初のフレーム、"w:N"= 単語Nの開始)。 表示できるものはステージ、接続的なものや個人的な行、および見返り(16〜29%の実行時間)はフル。ステージシーン間もハードカット。 最初のカットは約3.5秒まで。scenes:どのグラフィックがいつ再生されるか(id、from、to、オプションのsrc+varsで1つのシーンファイルを 複数回マウントする、例:繰り返し番号付きの「ホーム」グラフィック)。シーンはフルショットの下で実行され、戻ってくることができます (再訪は0.6秒で1つの新しいものを追加します)。punch:スナップパンチイン(x1.19、ライザーがそれに入る)を締めくくりのフレーズに、最大1つまたは2つ。captions:fix(単語インデックス -> 正しいテキスト)、emphasis(セクションごとに1つのセリフ単語)、keep_together(単語インデックスのペア、例:「Number」+「1,」)。 graphics-recipes.md を使用します:すべてのアイデアに、図形、タイトル(太字+1つのセリフアクセント、赤いボックスに主張)、 およびその単語のビートがあり、約1秒ごとに新しい何かがあります。計画を1ショットあたり1行で伝えます。
5. シーンを構築する(約15〜25分)
各シーンは WORK/scenes/<name>.html で、SK/template/scene-starter.html または SK/template/examples/ 内の最も近いファイル
(6つの実際のシーン)から開始します。キット(template/kit/kw.css、kw.js)は、ステージの外観とモーションヘルパー
(KW.title、blurIn、pill、pulse、draw、cam、type、strike、count、scramble、at(i) = 単語iの開始)を提供します。
すべてのアニメーションは、シーンの <!--KW:SFX [...] --> コメントにサウンドキューを取得します。
例:{"t": "w:24-0.02", "s": "whoosh"}。references/sound-map.md に従います
(カメラ移動 = whoosh、ピル = pop、スナップ/ティック = click、タイプライターテキスト = typing、大きな瞬間 = impact、見返り = sparkle)。
Agentツールがあり、シーンが約3つを超える場合は、最大2つの並列エージェントに次の情報とともにシーンを渡します:シーンの正確な単語リストと時間、
アイデア、このスキルのリファレンス、および build.py ... --project WORK/project-<letter> で衝突しないようにします。
PY "SK/scripts/build.py" "WORK" は WORK/project/ を書き込みます(ルート:点線のステージ、フェイスカード、ポップアウト
レイヤー、キャプショントラック、シーンホスト、SFXレーン、すべて生成)。その後、WORK/project 内で:
npx -y hyperframes@<pin> lint(0エラー)および snapshot --at <時間> --no-end --describe false -o snaps/x、PNGを読み取り、修正し、繰り返します。各シーンのシートを progress/03-scene-.png として保存します。
6. レンダリング(約1分)とチェック(約1分)
PY "SK/scripts/render.py" "WORK" --name draft(高速)、その後
PY "SK/scripts/qa.py" "WORK" "WORK/renders/draft.mp4" を実行し、qa/cuts.png(すべてのカットの前後のフレーム)、
qa/beats.png(すべてのキャプションチャンク)、qa/report.txt(カットと音声のギャップ、ラウドネス)を見ます。
チェック:ポップアウトにハローやカット後のドリフトがないこと。カードに頭と肩の両方が表示されていること(顔のトリミングは不可)。
キャプションやグラフィックが顔にかかっていないこと。キャプションが単語と一致していること。すべてのラインカットが音声の0〜80ミリ秒前に
着地していること。Instagramの禁止ゾーンに何もないこと。その後
PY "SK/scripts/audiomap.py" "WORK" --out progress/NN-audio-map.png:音楽は音声より18〜24 dB下、効果音はそのローカルピークより
約10〜16 dB下、ダブルヒットなし。フラグが立てられたキューの "db": -3 を修正します。
スタイルマッチ: PY "SK/scripts/match/fingerprint.py" score "SK/references/style-spec.json" "WORK/renders/draft.mp4" --out "WORK/progress/NN-style-match.md" は、3つのKallawayリールが測定されたのと同じ方法で編集を測定し
(カット率、1秒あたりの視覚的変化、レイアウトシェア、カードとキャプションの位置、キャプションサイズとペース、アクセントカラーシェア、
ラウドネス、ステレオ効果音)、各FAILに対して何を修正すべきかを示します。編集で制御できるものを修正します。映像が原因のFAIL(クローズアップ自撮りなど)は、
撮影メモとしてユーザーに伝えます。WORK/progress/ 内のレポートが記録です(SK/references/lock-log.md にはスタイルの測定履歴が
保持されています。そのままにしておいてください)。
修正して再レンダリングします(リビルド+再レンダリングには約1.5分かかります)。
7. 納品
PY "SK/scripts/render.py" "WORK" --final -> exports/<slug>-kallaway-vN.mp4(1080x1920)と
-720p.mp4 の電話用コピー。qa.py をエクスポートに対して実行します。ユーザーが自分のKallawayリールを
ROOT/references/ に保存している場合(このスキルには同梱されていません)、サイドバイサイド(--ref <そのリール> --ref-at <t> --at <t>)を
追加し、progress/NN-side-by-side.png として保存します。
次の場所を伝えます:ファイルの場所、長さ、シーンごとの内容、そしてまだKallawayのように見えない点(具体的かつ正直に)。
タイミング(M4 Pro Mac上、約8分の生映像から35秒のリール)
セットアップ5分(初回)・テイク7分(ミディアムモデル、--fast 約3)・カット1分・カットアウト3.5分・
音楽2〜6分(バックグラウンド、Openverse/Freesoundは遅い場合があります)・シーン15〜25分・
ドラフトレンダリング50秒・ファイナルレンダリング70秒・編集後の再レンダリング約1.5分。
撮影
撮影しようとしている人には、references/filming-guide.md を渡してください:固定ワイドショット(水平4Kが最適)、
暗い部屋に温かいキーライト、暗いトップス、頭の後ろに無地の背景、ラインが決まるまで繰り返します。