Communitygithub.com

akachandan1/video-studio

トーキングビデオにスタイル付きの単語同期キャプションと、オプションでスクロールを止めるフックを追加します。ユーザーがビデオをアップロードし、キャプションスタイルのカタログから選択すると、キャプション付きのMP4を生成します。

video-studio とは?

このスキルは、ユーザーが提供したトーキングビデオに対して、単語単位で同期されたスタイリッシュなキャプションを追加するためのものです。ユーザーが「字幕を追加して」「キャプションスタイルを見せて」などとリクエストした際に使用します。まずビデオを解析して文字起こしを行い、次にユーザーのビデオ上で7種類のキャプションスタイル(Lime Hook、Karaoke Pop、One Word、Clean Box、Editorial、Subtitle、Neon)をプレビュー表示します。ユーザーがスタイルとオプションのフック(注意を引く導入テキスト)を選択すると、最終的なキャプション付きMP4をレンダリングします。すべての処理はHyperFramesを使用してローカルで実行され、After Effectsは不要です。対応プラットフォームはClaude Code(ターミナルベースのAIコーディングアシスタント)で、開発者やコンテンツクリエイターがビデオ制作ワークフローを自動化するために設計されています。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/akachandan1/video-studio/tree/HEAD/.claude/skills/caption-video

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

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

ドキュメント

動画にキャプションを付ける

ユーザーがトーキング動画を提供します。ユーザーはキャプションスタイルのカタログから選択し、それは自分の映像上でプレビュー表示され、キャプション付きのMP4を提供します。すべてローカルでHyperFramesを使って実行されます。After Effectsは不要です。

キット: .claude/skills/caption-video/kit/(スタジオリポジトリ内)。プロジェクトは videos/captions/<name>/ に作成され、完成した動画は out/captions/<name>.mp4 に出力されます(どちらもスタジオルートからの相対パス)。

スタジオルートから、K="$PWD/.claude/skills/caption-video/kit" と設定し、python3 "$K/caption.py" … を実行します(パスは引用符で囲みます。フォルダ名にスペースが含まれる可能性があります)。システムのPythonに numpy/scipy がない場合は、スタジオのvenv Python(.venv/bin/python)を使用してください。setup/setup.sh で作成されます。

フロー

1. 動画を取得する

動画パスが指定されていない場合は、ユーザーに尋ねてください。そのファイルが存在し、話している人物が含まれていることを確認します。実行:

python3 "$K/caption.py" new "<動画パス>" <ショートネーム>

これにより動画がコピーされ、H.264に再エンコードされ、WhisperXで単語単位で文字起こしされます。久しぶりの初回実行は1分程度かかることがあります。長い動画はおおよそ実時間÷4で処理されます。

2. 文字起こしを表示する

コマンド出力から文字起こしを読みやすいブロックで表示します。特にブランド名や専門用語(製品名、「HyperFrames」、略語など)の間違いと思われる箇所を指摘し、ユーザーに確認または修正を求めます。修正内容はビルド時に --fix "間違い=正しい,…" で指定します。文字起こしが無意味な場合、または音声に音声が含まれていない場合は、停止してその旨を伝えてください。作った単語にキャプションを付けないでください。

3. すべてのスタイルをユーザーの映像で表示する

python3 "$K/caption.py" styles でリストを取得し、python3 "$K/caption.py" preview <name> でビジュアルシートを取得します。シートは videos/captions/<name>/previews/styles.png にあります。自分で確認し、SendUserFile(render を表示)で送信します。その横に、各スタイルの「最適な用途」を記載した番号付きリストを表示します:

  1. Lime Hook: テンプレートの見た目(Anton大文字、ライム色の話し言葉)
  2. Karaoke Pop: 大きな2単語のバースト、黄色の話し言葉
  3. One Word: 一度に1つの大きな単語
  4. Clean Box: 白いカードに濃い文字、話し言葉にマーカー
  5. Editorial: 落ち着いた文節、キーワードがイタリックのセリフ体
  6. Subtitle: 小さな全文字幕
  7. Neon: 話し言葉にシアンのグロー

コンテンツに基づいて1行で1つを推奨します: ハイプ系やソーシャル系 → 1か2、解説や広告 → 4、創業者ストーリーやプレミアム → 5、インタビューやポッドキャスト → 6、テックやAI → 7。その後、番号を選ぶようにユーザーに依頼します。caption.py のカタログが変更されている場合は、このコピーではなく styles が出力するものをリストしてください。

4. フック(オプション)

話し手が実際に話した内容から3つのフックを提案します。最も驚くべき数字、結果、または矛盾から始め、4~8語を使用し、見返りを1つの大きな単語にします。各フックをフック構文でフォーマットし、AskUserQuestion で「フックなし」を含む3つのフックオプションをユーザーに提示します(ユーザーが自分で入力することもできます)。

フック構文は | ごとに1行を使用し、各行はスタイルで始まります:

  • s: イタリックのセリフ体導入(「どのように」「なぜ」)
  • c: 白いコンデンス大文字のセットアップ
  • b: 大きなリング付きの見返りとなる単語または数字(1~2語)
  • l: ライム色の大文字のひねり
  • r: 小さなイタリックのタグ

例: s:どのように|c:私は達成した|b:30万+|l:広告なしで|r:再生回数。フックは動画の最初の10秒で提供される内容と一致している必要があります。

4b. ポリッシュ(提案する。ユーザーがグレーディング、音声のクリーンアップ、トリミング、音楽を依頼した場合に実行する)

python3 "$K/polish.py" <name> [--grade clean|cinematic|none] [--music calm|none] [--music-level 1.0] [--denoise 100]
  • トリミング: 最初の単語の前と最後の単語の後の無音部分をカットし(0.3秒と0.9秒を保持)、文字起こしをそれに合わせてシフトします。
  • グレーディング: clean(デフォルト)で温かく健康的な肌、穏やかなコントラストとソフトなビネット効果を提供します。cinematic はより深くクールです。選択する前に、各設定の1フレームをオリジナルと比較して確認してください。
  • 音声: DeepFilterNet3ノイズ除去(~/.venvs/dfn、setup.shで作成。グローバルにインストールしないでください。numpy<2が必要です)、その後ハイパスフィルター、プレゼンスブースト、デエッサー、軽いコンプレッション。
  • 音楽: 合成された落ち着いたピアノとパッドのベッド。レベル1では、無音部分で音声より約20dB下、話している間は約25dB下に位置します。静かにするには --music-level 0.6、より目立たせるには 1.5 を使用します。
  • オリジナルは source_orig.mp4 / transcript_orig.json として保存されるため、任意の設定でポリッシュを再実行できます。ポリッシュ後、build と render を再度実行します。
  • 冒頭での言い間違いや言い直し(「現時点では、現時点では…」など)に言及します。それらをカットすると小さなジャンプカットが発生するため、実行前に確認してください。

5. ビルド、チェック、レンダリング

python3 "$K/caption.py" build <name> --style <キー> [--hook "…"] [--hot "単語,単語"] [--fix "a=b"]
cd "videos/captions/<name>" && npx --yes [email protected] check
python3 "$K/caption.py" render <name>
  • --hot でアクセントカラーを維持する単語を指定します。見返りとなる単語を2~5個選びます。数字は自動的にホットになります。
  • check のコントラスト警告は、フックのフェードアウト時点では想定内です。レンダリング前に実際のエラーを修正してください。
  • フックをレンダリングする前に、スナップショットを撮り(npx --yes [email protected] snapshot . --at 1.6 --no-end --describe false)、顔を覆っていないことを確認します。顔がフレームの上部にある場合(座っているかミッドショット)、--hook-y 0.43 でフックを胸の位置に移動します。シェーディングは自動的に追従します。
  • 送信前に、out/captions/<name>.mp4 から3~4フレームを取得して確認します。キャプションが口や目を覆っていてはいけません。覆っている場合は、--cap-y(数字が大きいほど画面の下に表示)で再ビルドします。
  • 横向きに撮影された映像(カメラが横向きで、回転メタデータがない場合)は、コンタクトシートで人物が横向きに寝ているように表示されます。最初に回転させ(ffmpeg -vf transpose=2 = 反時計回り90度、transpose=1 = 時計回り。1フレーム確認)、videos/_caption-inputs/ に配置してから、そのファイルに対して new を実行します。
  • MP4を SendUserFile で送信し、そのパスをリンクとして表示します。

6. 修正

設定は videos/captions/<name>/caption.json に保持されるため、修正は build <name> --<オプション> … の後に render <name> を実行するだけです。よくあるリクエスト:

  • スタイル変更: --style。
  • サイズ変更: --size 1.2。
  • 上下調整: --cap-y 0.7。
  • キャプションあたりの単語数: --words 2。
  • 色変更: --accent "#FF4D3D"。
  • フック変更: --hook。--hook "" で削除。
  • フック長: --hook-dur 3.5。

ユーザーは自分で cd videos/captions/<name> && npm run dev を実行してHyperFrames Studioで開くこともできます。

セットアップ情報(何かが壊れた場合)

  • 文字起こしは ~/.claude/skills/embedded-captions/scripts/transcribe.cjs を HYPERFRAMES_ROOT=~/.hyperframes-root で呼び出します。HyperFrames CLI 0.8.147がインストールされ、packages/cli/dist/cli.js へのシンボリックリンクがある必要があります。どちらかが欠けている場合は、再インストール: npx hyperframes skills update embedded-captions、その後 ~/.hyperframes-root を再ビルドします([email protected] をnpmインストールし、node_modules/hyperframes/dist/cli.js を packages/cli/dist/cli.js にシンボリックリンクします)。
  • フォントは kit/fonts/ にあります(すべてSIL OFLライセンス)。各プロジェクトにコピーされます。
  • setup/doctor.sh ですべてのコンポーネントをチェックし、setup/setup.sh で修復します。
  • 人物の背後に表示されるキャプションは /embedded-captions ワークフローで可能ですが、非常に遅く(10秒あたり約4分)、HYPERFRAMES_ROOT の設定が必要です。リクエストがあった場合のみ提案してください。

Individual skills in this repo

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

akachandan1/video-studio

Painterly and illustrated animation — Kurzgesagt-style flat science explainers ("what's inside", scale, mechanisms), art-history styles (Van Gogh, Monet, Lichtenstein, Kusama, Matisse, cubism, ink wash, 8-bit, Roman mosaic, cave painting, Persian miniature…). Uses the huashu-art-motion canvas engine with CUSTOM scenes, renders MP4s, and assembles/scores them in HyperFrames. Also the claude-animation plugin for hand-drawn 2D.

akachandan1/video-studio

Fast CapCut-style chop-cut reel with a story — showreels, hype edits, launch teasers, "make it punchy". One canvas engine on a beat grid (punch-ins on cuts, flash frames, impact shakes, whip pans, speed ramps, freeze frames) rendered in HyperFrames, in 16:9 and 9:16 from one edit, with an original synthesized score locked to the cuts.

akachandan1/video-studio

Guided studio for narrated, fact-checked explainer videos in a Vox-style editorial look (bold collage, flat colour fields, marker annotations, big numbers) or a paper-diorama documentary look. One idea in → sourced script in 10-second blocks → style key + per-scene prompts (or free code-built collage scenes) → offline voiceover fitted to each block → HyperFrames cut with captions, animated number callouts and an original score, in 16:9 and/or 9:16. Use for "Vox-style video", "explainer", "animated explainer", "data-driven video", "make a video about X", "why does X happen".

akachandan1/video-studio

Apple / OpenAI-style product launch film or premium spec ad (30–60 s) — minimal supers, big product moments, signature transition, piano/pulse score, end-card lockup. Shots come from code (HyperFrames scenes), Higgsfield AI image→video, or real product footage, all assembled and rendered in HyperFrames. Includes the fold-cut builder (shots hinge shut/open on the centre line).

関連スキル