Communitygithub.com

Jenesyx/reel-split

ユーザーが /reel-split を実行したとき、または分割画面の解説リール(フレーム上部約45%にアニメーションするウィジェットパネル、その下に常にスピーカー、字幕・効果音なし)を要求したときに使用します。典型的には「このツールを見つけました」や「5つのヒント」系の動画で、生のトーキングヘッド映像に使います。

reel-split とは?

このスキルは、クリーム色のパネルがフレーム上部を覆う分割画面リール(スプリットエディット)を自動生成します。パネルの高さはデフォルトで864ピクセル(1080pの45%)で、その下にスピーカーが常時表示されます。パネルにはUI風のウィジェット(カード、メーター、トグル、ターミナル、チップなど)が配置され、発言内容を視覚的に補足します。対応プラットフォームはClaude CodeなどのAIエージェントで、ffprobeによる映像確認、Whisper文字起こし、顔追跡、シーンプランニング、Hyperframesによるウィジェット構築、仕上げ処理までの全工程を自動化します。例えば「5つのClaudeスキル」を紹介する実動画のサンプルが `examples/split/` に含まれています。ユーザーは `/reel-split` コマンドまたは自然言語で要求でき、スキルは不足情報(コメントキーワード、固有名詞など)を一度だけまとめて質問します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Jenesyx/arta-edit-studio/tree/main/.claude/skills/reel-split

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Reel — 分割編集(スピーカーの上に45%パネル)

クリーム色の固定パネルがフレーム上部(1080 × split.panel_height、デフォルト864 = 45%)を覆い、UI風ウィジェット(カード、メーター、トグル、ターミナル、チップ)を表示して発言内容を正確に図示します。スピーカーはスケール1で下部に配置され、決して動きません。終了時:コメントキーワードを大きく表示、フォローカードを表示。実例:examples/split/(実際の100秒動画「5つのClaudeスキル」の企画+シーンモジュール)。

引数:$ARGUMENTS

デフォルト(ユーザーが指定した場合のみ変更)

まず reel.config.json を読み込みます(なければ reel.config.example.json にフォールバック)。

項目デフォルト
分割"split": split.panel_height(864 → パネル45%、スピーカー55%、960 = 50/50)
スピーカースケール1、ズームなし、移動なし;顔はスピーカー領域の中央(speaker_y)
セーフボックス"safe": split.safe = [64, 160, 64, 32] → シーンコンテンツは上から160px、952×672の範囲内(Instagramヘッダー/電話ステータスバーで上部が隠れるのを避ける)
字幕 / SFX / 音楽なし。音声はテイクのミックスそのまま、finish.py でリマックス
テイク既にカット、グレーディング、音楽追加済みと想定 → そのまま使用。未編集/生テイクの場合は事前に確認
CTA吹き出しカードにコメントキーワード(単語または数字)を大きく表示;フォローカード:"handle": creator.handle、テキストのみ、顔写真なし
パレットsplit_palette:クリーム色パネル、インク色テキスト、アクセント塗り;クリーム色上のテキストは accent_deep(コントラスト)

入力

テイク名とトピックは引数から取得します。不足している情報(テイクが既にカット/グレーディング/音楽付きか、コメントキーワード、Whisperが聞き間違えそうな名前や専門用語(ツール名、製品名))は、一度のメッセージでまとめて質問します。

パイプライン

PY = .venv/Scripts/python.exe -X utf8(Windows)または .venv/bin/python -X utf8(macOS/Linux)。長時間のステップはバックグラウンドで実行。

#ステップコマンド / アクション確認事項
1確認ffprobe;コンタクトシート ffmpeg -i raw/<take> -vf fps=1/5,scale=216:384,tile=9x2 -frames:v 1 work/<take>/sheet.jpg を目視確認頭の上に空の壁? 既に編集済み?
2文字起こし$PY tools/transcribe.py <take> --prompt "<名前, 専門用語>"ツール名を校正;3秒以上のギャップ → ウィンドウを再文字起こし
3顔$PY tools/face_track.py <take> --split <パネル高さ>speaker_y を出力
4ビート計画アイデアごとに1シーン、通常3~7秒、各ウィジェットを発言単語にピン留め(キュー=単語の開始)。シーンはコンテンツのみ変更、レイアウトは変更しない
5計画ファイルwork/<take>/showcase.json を examples/split/showcase.json から生成:video("../../raw/<file>")、split、speaker_y、safe、scenes_module、scenes[] {kind, start, end, cue{...}}、フォローシーン用の handle;_note に顔番号を記録
6シーンtools/scenes_<slug>.py を examples/split/scenes_5skills.py から生成:種類ごとに sc_<kind>(i, s) -> (html, js)、RENDER 辞書、オプションで CSS/JS。座標はセーフボックス内(幅952);id は s{i}-*;キュー時間は絶対時間。sc_comment、sc_follow がCTA
7ビルド$PY tools/showcase_build.py <take>;work/<take>/sc 内で:npx hyperframes lint public → エラー0;npx hyperframes snapshot public -o ../snaps --no-end --describe false --at <各シーンの中間>;シートを読んで修正テキストがパネル内に収まっているか、ヘッダーの下にはみ出ていないか
8クイックレンダリング$PY tools/finish.py <take> --seconds 12;work/<take>/sc/quick_sheet.jpg を読む
9完全レンダリング$PY tools/finish.py <take>(バックグラウンド)→ final/<take>/、確認、qa/sheet.jpgシートを読む
10報告パス、長さ、シーン数、検証結果。新しいことが学べたらこのスキルに追加する

パネルルール

  • ウィジェットはその瞬間に話されている文を図示する:リポジトリ名が出たらリポジトリカード、比較するときはメーター、「これは違う」と言ったら取り消し線。
  • 各シーンは次のシーンの0.25秒前にフェードアウト(ビルダーが自動実施);シーン内では要素がキュー単語のタイミングで出現する。
  • 画面に表示する数字はテイク内の実際のカウントでなければならない。
  • showcase_build.py に組み込まれているシーン種類(hook、repo、cta、…)は45%セーフボックスより前のもので、はみ出す可能性がある;代わりに examples/split/scenes_5skills.py をベースに tools/scenes_<slug>.py に種類を記述すること。
  • ペルシア語/アラビア語テキスト:.fa クラス(要素単位のRTL、決して <html> に dir="rtl" を設定しない)、letter-spacing: 0、数字は fa() を使用、大きなゼロはラテン文字 0。
  • 同一プロパティに重複するトゥイーン、Math.random / from:"random" は禁止;スライドインのfrom-stateには autoAlpha:0 を含める。
  • ソースクリップがHDR(HLG)の場合、事前にトーンマッピング(tools/story_assets.py の TONEMAP)— finish.py は「HDRオートプロモーション」で停止する。
  • hyperframes snapshot はレンダリングの証明にはならない — ステップ8が確認手段。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

関連スキル