アナライザー は何をしますか?
気に入ったリールを渡すと、フック、ペース、編集を分解します。そして、同じ構造を再利用して、あなたのテーマに関する動画を構築します。
すべてこのコンピュータ上で実行されます。ツールは ~/.claude/skills/analyzer/scripts/ にあり、スキル独自の Python で実行されます:~/.claude/skills/analyzer/.venv/bin/python (以下:PY = そのパス、AN = ~/.claude/skills/analyzer/scripts)。
0. インストールの確認(毎回実行)
test -x ~/.claude/skills/analyzer/.venv/bin/python && command -v ffmpeg
どちらかが欠けている場合は、1行でユーザーに伝え、インストーラを実行してください:bash ~/analyzer-skill/install.sh、または先にクローンします:git clone https://github.com/corbinsylk/analyzer-skill ~/analyzer-skill && bash ~/analyzer-skill/install.sh。
1. リールを取得する
リンク(Instagram、TikTok、YouTube Shorts、X)またはファイル。次に:
PY AN/fetch.py "<link or file>"
最終行に動画のパスを出力します(ダウンロードは ~/Movies/Analyzer/ に保存されます)。公開投稿はログインなしでダウンロードできます。失敗した場合(非公開、年齢制限、削除済み)、ユーザーにダウンロードまたは画面収録してファイルをドラッグするよう伝えてください。
2. 測定する
PY AN/transcribe.py "<video>"
PY AN/shots.py "<video>"
どちらも動画の隣にある作業フォルダ <video name>-analysis/ を使用します。transcribe.py は transcript.md と words.json(すべての単語にタイムスタンプ付き;初回実行時に「mps」に関する速度ヒントが表示されますが無害です)を生成します。shots.py は pacing.md(以下のすべての数値と、各ショットで何が話されているかを示すショット単位の表)、sheet-N.jpg コンタクトシート(小さく、番号付き、概要用)、および shots/NN.jpg(1ショットあたり1フレーム、幅720ピクセル、画面のテキストが読める大きさ;長いショットは最初と最後の瞬間を示す NN-a/NN-b も含む)を生成します。shots.py が動画の明らかなショット数よりも大幅に少ないショットを検出した場合は、--threshold 0.18 で再実行してください;1つのショットが多数に分割される場合(速い動き、フラッシュ)は、--threshold 0.4 を使用してください。
3. 確認して、分解を書く
transcript.md と pacing.md を読んでください。概要のためにすべてのコンタクトシートを開き、最初の3秒間のショットと、何かが変化するショット(テキスト出現、ズーム、グラフィック、新しい場所)の shots/NN.jpg フレームを開いてください:すべてを開く必要はありません。動画の音声は聞こえません:トランスクリプトに表示されている内容以外の音楽や効果音については何も言わないでください。トランスクリプトは名前や用語(スポーツ、ブランド、料理)を聞き間違える可能性があります:それらを画面のテキストと照合し、正しい綴りを使用してください。
以下のセクションを含む <work folder>/breakdown.md を書き、すべての主張を時間またはショット番号に結び付けてください:
- フック(0-3秒)。 正確な言葉、画面上の内容(フレーミング、画面上のテキストとその位置、動き)、カット数、そしてなぜスクロールを止めるのか:好奇心のギャップ、約束、パターンの破壊。
- 構成。 時間順のビート:フック、セットアップまたは問題、展開、ペイオフ、コールトゥアクション。各ビートについて:その役割、秒数と単語数の長さ、そしてその役割を果たす台詞。
- ペーシング。 pacing.md からの数値(ショット数、平均および中央値のショット長、最初の3秒間のカット数、1分あたりの単語数)とその意味。ビートの単語数をカウントするには:
PY AN/words.py "<work folder>" <start> <end>(秒または分:秒);単語数、ペース、単語を出力します:どこで速くなるか、どこで止まるか、カット率がどのようにストーリーに従うか。 - 編集。 フレーミングとカメラ(フレームに対する顔の大きさ、ズームイン、アングル変更:フレームから目視で)、画面上のテキスト(スタイル、サイズ、位置、表示タイミング)、キャプション(スタイル、一度に表示される単語数)、Bロール、画面収録、グラフィック、トランジション。
- 公式。 誰でも再利用できるテンプレートとしての構成:各ビートを
[ここに入れる内容]、目標の長さ、単語数、編集操作とともに。
次に、ユーザーにフック、公式、そしてそれを機能させている3つの要素を数行で伝え、breakdown.md を参照するように伝えてください。
4. ユーザーのテーマで作り直す
ユーザーがまだ伝えていない場合は、1つ質問してください:「新しい動画をどのテーマ(そして誰に向けて)で作成しましょうか?」
次に <work folder>/remake.md を書いてください:
- スクリプト、一字一句、ビートごとに、同じ構成で、各ビートは reference の単語数(words.py から)の約10%以内に収め、同じ長さで同じペースで実行されるようにします。フックは reference と同じメカニズム(同じ種類の約束、数字、質問、パターンの破れ)を使用し、その言葉は決して使いません。ユーザーが自分の話し方(声やブランドファイル、このプロジェクトの以前のスクリプト、独自の指示)を伝えている場合は、その声で書いてください;そうでなければ、平易で直接的な、人がカメラに向かって話すような言葉で書いてください。
- ショットプラン:各ビートについて、撮影内容(フレーミング、視線の方向、ジェスチャー、小道具や場所)、および reference から取ったその瞬間の編集操作(カット、ズームイン、画面上のテキストとその正確な言葉、表示するBロール)。
- 画面上のテキストは、その時間とともに別途リストアップ。
- 撮影ノート:すべての台詞は2回言ってベストテイクを選べるようにし、台詞の間に1秒の間隔を空けること。
5. ラフカット(ユーザーが撮影した場合)
ユーザーがリメイクの映像をドラッグしたとき:
PY AN/transcribe.py "<footage>"
映像の transcript.md と words.json を読んでください。スクリプトの各行について、最も良いクリーンテイク(完全で、つまずきがない;通常は最後のテイク)を選び、スクリプト順に <footage work folder>/keep.json を書いてください:
[{"line": "the script line", "start": 12.40, "end": 15.92}]
start = テイクの最初の単語の s、end = 最後の単語の e(words.json から)。次に:
PY AN/rough_cut.py "<footage>" "<footage work folder>"
各テイクを単語の境界で正確にカットし、顔に合わせて9:16でフレーミングし、単語ごとのキャプション付きで順に結合し、rough-cut.mp4 と rough-cut.jpg(8フレームのサムネイル)を書き出します。jpg を開いて、顔がフレームに収まり、キャプションが読めることを確認してください。ユーザーにラフカットの内容と、ショットプランからエディタでまだ追加すべき編集操作(テキスト、ズーム、Bロール)を伝えてください。