クリエイターティアダウン(Creator Teardown)
パス: ${CLAUDE_SKILL_DIR} は、このSKILL.mdが置かれているフォルダを指します。Windowsでは、python3と書かれているコマンドの代わりにpyを使用してください。
ユーザーへの質問はすべて質問ボックスを使用します。AskUserQuestionツールを呼び出し、選択肢は2〜4個(推奨を先頭に)提示します。そのツールがないエージェントでのみ、番号付きの質問をテキストで行います。
出力
creator-teardowns/<handle>/ に以下を出力します:
teardown.md(分析結果)teardown.html(ユーザーが参照するページ)look.md(Claudeが読み取る要約)style.json(このスタイルで編集するためのすべての測定値)- 各動画のファイル (
${CLAUDE_SKILL_DIR}/references/outputs.mdに一覧)
編集計画は edit-plans/<name>/ に出力されます。
このスタイルに一致するかどうかの判定: scripts/match.py (references/outputs.md "Match check" 参照)
最初に: doctor
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" doctor
セッション内で最初のティアダウンを実行する前に、このコマンドを必ず実行してください。Ready. と表示されれば準備完了です。Not ready と表示された場合、またはユーザーがスキルのインストールやセットアップを依頼した場合は、${CLAUDE_SKILL_DIR}/references/setup.md に従ってください。ElevenLabsキーはオプションです。チャット内でキーを要求しないでください。ユーザーは自身のターミナルで setkey コマンドを使用して保存します。
VPY="${CLAUDE_SKILL_DIR}/scripts/run.py"; 以下のコマンドで python3 "$VPY"(Windowsではpy)を使用すると、AI_EDITOR_HOME が指定する場所にあるツール用venvのPythonでスクリプトが実行されます。
パイプライン
クイックモード(ai-editorのstart、setup、style-editから呼び出された場合)
別のスキルがstyle.jsonだけを必要とする場合、以下の手順を正確に実行します: Step 1の list、Step 2のコマンド(--top 5 付き: 5 + コントロール2 + 予備2。リンク貼り付けの場合はすべて)、Step 3bの4つのコマンド、次にStep 3cの4つのコマンドを実行し、そこで停止します。Step 0の質問パートは、呼び出し元がまだ質問していない場合のみ行います。metrics.py、Step 3の筆記パス、Steps 4〜6はスキップします。14コアのMacで約3分(測定値は2〜3分、予備で最悪約1分追加)、8コアのラップトップではその約2倍かかります。その旨を先に伝えてください。
Step 0: 質問(1回のみ)
メッセージで既に回答済みの内容はスキップします。質問ボックスを1回呼び出します:
- どのクリエイター? ユーザーが指定したハンドル名またはリンク(推奨) / 後でさらに貼り付けます。複数のクリエイターを指定するのは普通です。あるクリエイターのキャプションスタイルと別のクリエイターのペースが好き、といったことがあります。各クリエイターのスタイルは1つのフォーマットです。
- 複数の場合: 誰からどの部分を取る? まだ決めていない(推奨): Step 3bの後、各クリエイターの
look.mdを比較して再度質問します。または、キャプション、ペース(カット、ズーム、モーション)、ビジュアル(グラフィック、顔のフレーミング、カード)、サウンドから選びます。
Step 1: 動画を取得する
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" list <handle> --platform tiktok --limit 40 # または youtube
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" list <name> --urls picks.txt # 貼り付けられたリンク(1行に1つ)
ランク付けされたテーブル(視聴数、x中央値)を表示し、videos.json を書き込みます。* は中央値の3倍を示します。
Instagram: list <handle> --platform instagram は、ユーザーのブラウザでのinstagram.comログインを介して、視聴数付きの最新リールを読み取ります(データはinstagram.comにのみ送信されます)。ログインしていない場合、1文のメッセージとともに終了コード1で終了します。そのメッセージをユーザーに伝えるか、6つ以上のリールリンクを picks.txt に入れて --urls を使用します(いいね数でランク付けされます。その旨伝えてください)。
Step 2: 勝者動画とコントロールグループのダウンロードと文字起こし
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/visual.py" download <handle>
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" transcribe <handle>
--top N は、N個の動画に加えて2つのコントロール動画(中央値に最も近い2つ、--control で変更可能)、さらにフォーマットチェック用の2つの予備動画(--spare)をダウンロードし文字起こしします。動画の数が十分にある場合、クリエイターの通常の長さの動画が選ばれます。貼り付けられたリンクの場合は、すべての動画が対象です。デフォルトの --top 8 は合計12動画、--top 5(高速実行)は合計9動画です。両方のコマンドに渡してください。両方のコマンドは最初に動画数を出力します。--ids <id>,<id> で特定の動画を選択できます。中央値の動画がコントロールです。視聴数50万の動画と3千の動画の両方に見られる動きは、そのクリエイターの習慣であり、50万の動画が成功した理由ではありません。少なくとも2つは保持してください。
すべての測定スクリプトは複数の動画を同時に処理します(CT_JOBS=1 で、小型ラップトップでこの機能をオフにできます)。
まず所要時間を伝えてください(ダウンロード+文字起こし:14コアMacで1動画あたり約10秒)。Whisper(無料、ローカル)がデフォルトです。ElevenLabsキーがある場合、transcribe はScribeを使用し、すべてのフィラーを保持します(音声1時間あたり0.22ドル。10動画以上の場合は見積もりを提示してください)。Whisperの文字起こしにフィラーカウントが依存する場合は、その旨をティアダウンに記載してください。
Step 3: 測定、そして分析
python3 "${CLAUDE_SKILL_DIR}/scripts/metrics.py" <handle>
metrics.json(3分割ごとのWPM、間、フィラー、文の長さ、you/I/weの使用、繰り返しフレーズ)を書き込みます。すべて単語のタイムスタンプから計算されます。
最初にStep 3bを実行し、format.json で除外された動画を以降のパスがスキップするようにします。その後、${CLAUDE_SKILL_DIR}/references/analysis-framework.md を読み込み、そのパスを実行してください。パス1では、動画ごとに1つの video-analyst エージェントを起動します(すべて1つのメッセージで送信し、同時に実行されます)。各エージェントには絶対パス creator-teardowns/<handle>/ と1つの動画IDを渡します。各エージェントはJSONのビートマップを返します。それをテーブルにマージします。Agentツールがない場合は、transcripts/<id>.timed.txt を自分で読み取り、一度に1動画ずつ処理します。transcripts/<id>.json や metrics.json 全体を絶対に読まないでください。
- ビートマップ+タイミング。 各動画をラベル付きビートに分割し、秒数マークと単語数を記録します。
- 音声/語彙プロファイル。 文の長さ、人称、命令形、繰り返しフレーズ、ユーザーが通常言わないような動き。
- ビジュアルパス。 常に実行: Step 3b。これにより、ユーザーは自分の動画をこのスタイルで編集できるようになります。
- カードイベント(クリエイターのカードやグラフィックに関する質問がある場合、または編集計画が作成される場合のみ)。
${CLAUDE_SKILL_DIR}/references/edit-plan.mdで定義された形式のevents.jsonを書き込みます。scripts/strip.pyには ffmpeg、numpy、pillowが必要です。
タイミングを省略しないでください。「フックは0:03までに着地し、14単語で構成される。項目はそれぞれ8〜11秒」は撮影可能なフォーマットですが、「フック、リスト、クロージング」はそうではありません。
Step 3b: ビジュアルパス(測定値ベース。画像はClaudeが読み取る必要はありません)
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/visual.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/look.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/format_check.py" check <handle>
次にシートパス(後述の4)、続いて python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/lookpass.py" merge <handle> を実行します。
これらは transcribe の後に実行します(look.py はOCRテキストを話された単語と一致させます)。
visual.py: カットとその種類、ショットの長さ、ズーム、パン、シェイク。look.py: 1秒あたり3フレームのOCRとYuNet顔検出: 字幕(場所、サイズ、単語、大文字小文字、色、太さ、出現方法)、顔のフレーミング、グラフィックの割合、パレット、モーションパーソナリティ。1動画あたり約40秒。format_check.py: 1つのスタイルは1つのフォーマットであり、投稿されたすべてのスタイルのブレンドではありません。フレーム、顔、字幕、ショット長、動画長で動画をグループ化します。3つ以上の過半数グループは保持され、残りはvideo/left-out/に移動されます(format.jsonに理由が記録されます。references/look-pass.md参照)。差異がある場合、その最初の行をユーザーに伝えてください(「6個中4個を使用: 2個は別のフォーマットに見えます」)。混在している場合は、どちらか一方の種類の動画をさらに追加で要求します。- シートパス:
model: "haiku"を指定した1回のAgent呼び出しで、保持された各動画のsheets/<id>.jpg(visual.pyが作成する1枚の3x3シート)を読み取り、lookpass.pyのプロンプトに従ってvideo/<id>.look-ai.jsonを書き込みます: フォント、グラフィックスタイル、トランジション、一般的でないもの。数値は絶対に含めません。正確な指示はreferences/look-pass.mdにあります。lookpass.py mergeがこれらを style.json に統合します。
その後、look.md(48行未満)を読み取ってください。フレームやシートは開かないでください。 すべてのフィールドは ${CLAUDE_SKILL_DIR}/references/look-pass.md に記載されています。style.json の数値はコードから生成されます。手動で編集しないでください。look.md とモデルの記述に矛盾がある場合(例: 測定値が「motion: punchy」、モデルが「smooth」と命名)、測定値が優先され、ティアダウンには両方を記載します。
OCRエンジンがない場合(doctorがオプションと表示): captions は未測定のままで、look.md にその旨が記載されます。自分でシートを読み取るのではなく、インストールしてください(doctor がインストール方法を表示します)。
Step 3c: 詳細パスとページの生成
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/graphics.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/sound.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/report.py" build <handle>
各measureコマンドは1行のサマリーと書き込んだファイル名を出力します(--json で完全なブロックを出力しますが、通常は不要: look.mdに数値があります)。Step 3bの後に実行します(graphics.py は look.py の顔検出結果を使用して話者をマスクします)。各グラフィック(クロップ、種類、配置、出現・退出方法(GSAPイージングでフィット))、カットの種類とカメラワーク(visual.py)、効果音と音楽、各動画の最初の3秒、コントロールグループに対する勝者の特徴、クリエイター自身の見た目に対するAIテルスキャンを追加します。フィールド、メソッド、上限、コストについては ${CLAUDE_SKILL_DIR}/references/teardown-page.md を参照してください。graphics.py measure の後、同リファレンスに従ってhaiku種類パスを実行し(実行しないと種類はコードの推測のまま)、その後 sound.py と report.py を実行します。
次に、ユーザー向けに creator-teardowns/<handle>/teardown.html を開きます(Macでは open、Windowsでは start、Linuxでは xdg-open)。必要に応じてアーティファクトとして公開することを提案します。ページやその画像を自分で読み取らないでください。look.md に数値が記載されています。勝者の動画がコントロールと何が違うのか(look.md の Winners: 行(n付き))と、クリエイターの見た目にBANレベルのAIテルがある場合はその情報を、2〜3行でユーザーに伝えてください。
その後、質問ボックスで(ページは証拠を示すだけで、チェックボックスなどはありません)、1つの複数選択質問をします: 「@ のどの部分をあなたの編集でコピーしますか?」選択肢: キャプション、ペース、グラフィックの種類、出現モーション、レイアウト、サウンド(最大4つ。必要に応じて2つの質問に分割)。各選択肢の説明には、look.md から測定値の1行を含めます(例: 「0.25秒でオーバーシュートしながらスライドイン」)。選択された部分にBANテルが含まれる場合は、ユーザーが確認する前にそれを伝えてください。回答を保存します:
python3 "${CLAUDE_SKILL_DIR}/scripts/editplan.py" blend <handle>-mine --from <handle> \
--take captions,pace,graphics,entrances,layout,sound # 選択された部分のみ
style-edit は creator-teardowns/<handle>-mine/style.json を読み取ります。選択されなかった部分はデフォルト値が使用されます。report.py build と editplan.py blend はスタイルのスキル名を出力します(skill edit-like-<handle> -> <path>。ai-editorがインストールされている場合)。その名前をユーザーに伝えてください。そのスタイルで編集した結果に対するフィードバックは、そのスキルに対して行われます。
Step 3d: 複数のクリエイター(ユーザーが複数名を指定した場合)
${CLAUDE_SKILL_DIR}/references/blend.md に従ってください: クリエイターごとにSteps 1〜3b、look.md を並べて比較、その後 editplan.py blend。
Step 4: ティアダウンを書く
${CLAUDE_SKILL_DIR}/references/teardown-template.md のテンプレートに従って creator-teardowns/<handle>/teardown.md を作成します。各動画について、統計行、逐語的な文字起こし、タイミング付きのビートテーブル、保持すべきパターンと拒否すべきパターンを含めます。
Step 5(オプション): スキルとして登録する
このフォーマットを保存する価値があるかどうかをユーザーに尋ねます。保存する場合、${CLAUDE_SKILL_DIR}/references/skill-handoff.md に従ってフォーマットスキルを作成します(スタイル自体のスキルとは別に)。
Step 6(オプション): クリエイターのスタイルでユーザーの動画を計画する
ユーザーが自分の動画を提供した場合、${CLAUDE_SKILL_DIR}/references/edit-plan.md に従ってください。ビジュアルパスから生成されたクリエイターの events.json が必要です。レンダリングは行いません。
スクリプトが停止した場合
| メッセージ | 対応方法 |
|---|---|
doctor Not ready: ... | リストされた各項目について references/setup.md に従う |
yt-dlp returned nothing / parsed 0 videos | 表示されるヒントを読む: yt-dlpを更新(doctorが方法を示す)、または単一動画リンクを要求し --urls を使用する |
| Instagramプロフィールが失敗 | 表示される文を伝える: Chromeでinstagram.comにログインするか、6つ以上のリールリンクを提供する(Step 1 「Instagram」参照) |
... Fix the key, then rerun (transcribe) | ElevenLabsキーが間違っている: ユーザーは自身のターミナルで setkey を使用して再保存するか、キーを破棄してWhisperを使用する |
no videos in ... Run download first | visual.py download <handle> を実行する |
download failed: <ids> (exit 1) | 表示される --ids を指定して再実行する。それでも失敗する場合は、サンプルが小さいことを伝えて続行する |
yt-dlp not found | fetch.py doctor を実行し、リストされた問題を修正する |
| 一部の動画の文字起こしに失敗 | --ids を指定して再試行し、それでも失敗した場合はどの動画が失敗したかを伝える。ギャップを埋めようとしない |
厳格なルール
- 実際の数字のみ、または何もなし。 効果があると主張するすべての内容は、視聴数を併記してください。数値なしで「バズった」と決して言わないでください。
- 逐語的な文字起こしのみ。 文字起こしされていない動画を要約しないでください。
- 構造はコピーするが、声はコピーしない。 すべてのティアダウンで、何を拒否すべきかを明記します。
- 中央値コントロールグループ。 少なくとも2つの中程度のパフォーマーの動画を文字起こししてください。そうしないと、フォーマットとクリエイターの習慣を区別できません。
- 文字起こしの1行、カードの統計や引用を決して捏造しないでください。 文字起こしに失敗した場合は、
--idsで再試行し、それでも失敗した場合はその旨を伝えてください。 - チャット内でElevenLabsキーを決して要求しないでください。
- style.jsonには測定値のみ。
paceとzoomはvisual.pyから。captions、face、graphics、motionはlook.pyから。単語情報(look、font_match)のみがモデルからのデータです。 - look.mdを読むこと。フレームは読まない。 フレームを開くのは、look.mdで回答できない疑問を解決するためだけであり、その場合はどのフレームを開いたか明記してください。ユーザーはteardown.htmlを、Claudeはlook.mdを参照します。
- 勝者とコントロールの比較: nを明記。 差異を「証明された」と呼んではいけません。「すべての勝者」は、このサンプル内で重複がないことを意味するだけです。
重要
分析フレームワーク、テンプレート、ルックパス、ブレンド、スキルハンドオフ、編集計画の詳細については、${CLAUDE_SKILL_DIR}/references/ 以下の各リファレンスファイルを参照してください。