Communitygithub.com

viethuynh243/video-studio

専門的な動画の作成・編集を1つのコマンドで自動化。ストーリーボードからの新規映像制作、既存動画のナレーション差し替え、自動字幕付け、フレームレート補正、QCチェック、AIスロップ(ありきたりな表現・根拠のない数値等)の検出・修正、CapCutへの書き出しまでをカバーします。

video-studio とは?

Video Studio は、Claude Code などの AI エージェント上で動作するスキルで、動画制作・編集の全工程を自動化します。具体的には、ストーリーボードに基づく新規映像制作(プロフェッショナルなカット編集、Ken Burns エフェクト、テロップ、トランジション、ベトナム語 TTS ナレーション、BGM のダッキング処理、LUFS 準拠、字幕)、既存動画のナレーション差し替え(音声分離、文単位の自動タイミング調整、オリジナルBGM保持)、自動字幕、フレームレート補正(60fps/30fps→24fps)、品質管理(QC:フリーズフレーム、フラッシュ、ジッター、LUFS、リップシンクの自動チェック)をコマンド一つで実行します。特にベトナム語の TTS に強く、北部訛りの自然な音声合成が可能です。さらに、「AI スロップ」検出機能が搭載されており、脚本や映像がAIらしい決まり文句や根拠のない数値、空虚な断言に陥っていないかをチェックし、修正を提案します。対応プラットフォームは Claude Code を想定しており、MCP(Model Context Protocol)サーバー経由で直接ツールを呼び出すか、Bash 経由で Python スクリプトを実行します。主なターゲットユーザーは、企業案件やプロジェクト紹介動画、ショートフィルム、マイクロドラマなどを高品質かつ迅速に制作したい映像クリエイターやコンテンツ制作者です。

対応✓Claude Code~Codex CLI~Cursor
npx skills add viethuynh243/video-studio

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

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

ドキュメント

Video Studio - 自動動画編集

このスキルは完成品の動画を自動生成します。単なるガイドではありません。すべての操作は scripts/autovideo.py で一元管理されています。 専門知識(カメラアングル、リズム、音声、字幕、CapCut、AI動画、実践的な教訓)は references/ にあり、ストーリーボード作成時やQCレポート確認時の判断に活用します。

スクリプトのパス: このファイルが置かれているディレクトリの scripts/ サブディレクトリ(READMEに従い ~/.claude/skills/video-studio/scripts にインストール)。

0. ユーザー用スラッシュコマンド

/video:plan アイデア・脚本・絵コンテ・照明の相談 · /video:make 新規動画制作 · /video:revoice ナレーション差し替え · /video:subs 字幕 · /video:reframe 縦/正方形へのリフレーム · /video:library 素材ライブラリ · /video:qc 品質チェック · /video:voices 目的に応じた声の選択 · /video:fix ジッター/fps/ブレの修正 · /video:critic 独立した批評 · /video:slop "AIスロップ" の検出と修正 · /video:capcut CapCutへの書き出し。 ユーザーが自然言語で頼んできた場合(コマンドを打たずとも)以下の表に従って処理します。

0b. MCPツール video-studio(優先的に使用)

セッション内で mcp__video-studio__* ツールが利用可能な場合は、Bashでスクリプトを実行する代わりに直接呼び出します:

  • 高速: video_probe, video_qc, contact_sheet, voices_suggest, voices_catalogue, pronunciation_preview, shot_search, motion_stills, slop_check, slop_compare.
  • 長時間処理(job_id を返し、job_status / job_list で追跡): make_video, revoice_video, subtitle_video, convert_fps, reframe_video, stabilize_video, motion_graphic, critic_kit, voice_samples. 一度登録: claude mcp add --scope user video-studio -e PYTHONIOENCODING=utf-8 -- python <repo>/scripts/mcp_server.py

1. 要求に応じたコマンド選択

ユーザーの希望実行内容
アイデア/脚本 + 素材(動画、画像)から新規動画制作project.json を templates/project_make.json に従って作成 → autovideo.py make project.json --out TEN_v1.mp4
既存動画のナレーション差し替え / 吹き替えautovideo.py revoice VIDEO.mp4 --script loi.txt [--voice auto --muc-dich thoi_su] --out TEN_v1.mp4 [--subs]
動画に字幕を追加autovideo.py subs VIDEO.mp4 --script loi.txt --out TEN_sub.mp4(音声から自動タイミング検出)
納品前の動画チェックautovideo.py qc VIDEO.mp4(+ contact_sheet.py で目視確認)
任意のfps(24/25/30/50/60/120)変更、スローモーション、ジッター修正fps_convert.py convert SRC OUT --fps 24 [--slowmo 4](RIFE GPU)
横動画→縦/正方形(被写体追跡); 仮想的なパン/ズーム; 手ブレ補正camera.py reframe / move / stabilize
フッテージから最適なカットを選択、説明文から検索shot_select.py scan / best / search
カット間のカラーマッチング、シネマティックルックgrade.py match / look / apply
プラットフォーム別書き出し、ビート検出deliver.py export <preset> / beats
制作前のアイデア、絵コンテ、照明、カメラアングルの相談/video:plan + references/11-dien-anh-cao-cap.md
ルートマップ、チャプターカード、データ可視化(コードベースのモーショングラフィックス)motion_html.py stills/render + templates/motion/*.html、または "nguon": {"html": ...} シーン
脚本/動画が「AI臭い」場合:決まり文句、無出典の数字、空虚な主張、均一なリズム、過剰なエフェクト/video:slop(slop_guard.py で計測 → 新しいエージェントが修正提案 → compare で再計測)
納品前の動画審査(制作者とは別の審査員)/video:critic(critic.py + 新しいエージェント、全項目が8点以上になるまで審査)
目的に応じたナレーション音声の選択voices.py suggest --muc-dich thoi_su --gioi-tinh nu、2~3の候補音声サンプルを生成しユーザーに聴かせる
CapCutに送って手動調整make/revoice に --capcut TEN_NHAP を追加、または capcut_api.py build --spec
AI動画/マイクロドラマreferences/09-phim-ai-pipeline.md + storyboard.py jobs

すべてのコマンドは自動実行: 既存ファイルを上書きせず、中間ファイルを <out>_work/ に保存し、BAO_CAO_QC.md(映像エラー、ジッター度、LUFS、台詞一致率)を生成します。レポートを必ず読んでから送信し、数値を回答に明記してください。

2. make 用 project.json の作成(最重要)

  • 各 canh(シーン)は1つの台詞に対応。nguon は次のいずれか: {"file", "vao", "ra"}(動画)、{"anh", "hieu_ung": zoom_in|zoom_out|pan_left|pan_right}、{"mau": "#0E2440"}。
  • シーン長は自動計算 = max(thoi_luong, 音声長 + 0.9秒)。動画シーンは元のカット内に自動的に配置; 素材が不十分な場合は自動でシーンを短縮し、フリーズは行わない。
  • 画像は発言内容に正確に一致すること(正しい工事、正しいイベント) - 素材は probe_qc.py --inventory + contact_sheet.py で選定し、ファイル名だけで判断しないこと。
  • chuyen_canh(トランジション): 同じ話題内では cut、話題や空間が変わる場合は dissolve。シーンは 7~8 秒以内。
  • 台詞は話し言葉で書く; 数字と単位はそのまま記述(119 km、100 km/h) - tts_vi.py が自動で正規化(ハイフン/ダッシュが「đến」と読まれるのを防止)。
  • chu_tren_hinh(テロップ): 短く、台詞に出てくる数字や名前のみ; 「—」は使わない。
  • 上級設定: プロジェクトの任意の fps(異なるfpsの素材は自動で fps_convert 経由)、動画シーンに slowmo、camera(仮想的なpush/pan)、on_dinh(手ブレ補正)、 khung_thong_minh(縦書き出し時に被写体を自動追跡); プロジェクト全体に mau(カラーマッチング+ルック)と cat_theo_nhac(ビートに合わせたカット)も可能。
  • 音声は無理に決めない: "giong": "auto"(デフォルト)は "muc_dich"(doanh_nghiep(企業)、thoi_su(ニュース)、tai_lieu(ドキュメンタリー)、quang_cao(広告)、 mang_xa_hoi(ソーシャルメディア)、huong_dan(チュートリアル)、sang_trong(フォーマル)、tre_em(子ども)、su_kien(イベント))+ "gioi_tinh"、"vung"、"am_sac"(低/中/高)に基づき、各音声のプロファイル(voices.py profile: 読み上げ精度、ピッチ、速度)から選択。または直接指定: VieNeu音声名、{"edge": "vi-VN-HoaiMyNeural"}、 {"clone": "mau_giong.wav"}(話者の同意が必要)、またはシーンごとに実際の録音 "ghi_am": "cau3.wav"。シーン/キャラクターごとに異なる音声も可能。 決定前に必ず 2~3 の候補音声をユーザーに提示し(voices.py suggest)、聴いてもらうこと。
  • 精度: 発音辞書 templates/phat_am.json + プロジェクト固有の "phat_am"(略語、固有名詞); 各文は Whisper で再確認され、< "do_chinh_xac"(0.97)の文は最大 "doc_lai" 回自動で読み直し、結果を文単位で報告; 字幕は単語単位で正確に配置。
  • 編集スタイル: "phong_cach": trang_trong(フォーマル) | dien_anh(シネマティック、2.39レターボックス、フィルム調) | tai_lieu(ドキュメンタリー) | nang_dong(ビートカット) | mang_xa_hoi(被写体追跡フレーム)。 シーンごとのトランジション: cut, dissolve, fade_black, dip_white, wipe_left/right, slide_left/right, zoom_in。 フレーム: "khung": fill(トリミングして埋める) | fit_blur(全体表示、背景ぼかし) | smart(被写体追跡)。"letterbox": 2.39。すべてのオプションはシーン単位で上書き可能。
  • モーショングラフィックス: "nguon": {"html": "templates/motion/route_map.html", "params": {...}}(ルートマップの描画アニメーション、チャプターカードなど)。make は自動でBGMのみの _chi_nhac.mp4 も出力。大規模制作前にはディレクターズブリーフ+ facts.md を作成(references/12)。
  • AIスロップ対策: "facts": "facts.md"(各数字+原文+出典+日付)と "luat": ["~/.video_studio/luat/<khach>.json"] (クライアントルールブック、リポジトリ外に保存)。make は自動チェックし、レポートに「AIスロップ対策」セクションを追加; "chan_khi_slop": true で架空の数字やルール違反がある場合に処理を停止。 クライアントが手動で修正した文はそのままルールブックにコピー(slop_guard.py ghi)し、次回の動画で自動検出できるようにする(references/13)。
  • シーンの自動選択: "kho_canh": "kho.json"(shot_select.py scan --clip から)と "nguon": {"tim": "aerial view of a highway at sunset"} → 最もマッチし、十分な長さがあり、未使用で、品質スコアの高いカットを取得。検索クエリは英語で記述。

3. 不変のルール

  1. 納品物を削除/上書きしない。 新しいバージョンは _vN。メインバージョンの差し替えはユーザーの承認があった場合のみ: 旧バージョンを mv -n で _luu_<mo_ta> にリネーム、新バージョンを cp -n、cmp で確認。
  2. 測定してから話す - BAO_CAO_QC.md の数値を使用; 未測定の場合は未測定と伝える。
  3. 内容は事実に基づく: 正しい工事/組織、海外ストック素材不使用、QRコード、広告、無関係なスローガン、許可のない人物の登場禁止。
  4. 翻訳は意味とコンテキストを100%正確に; 迷う文は質問すること。
  5. ユーザーに代わってパスワード/APIキーを入力しない。
  6. モデルは正規のソースからのみダウンロード、.safetensors を優先、専用の venv にインストール。
  7. コミュニケーションはベトナム語。
  8. 架空の数字は使用しない: 映像/音声内のすべての数字は facts に記載されているか、[tính: ...] として明示されている必要がある。エージェントが作成した修正版は、slop_guard.py compare で再測定された後にのみ受け入れ可能(作成者自身が確認しない)。

4. 必要に応じて参照をロード

状況ファイル
ワークフロー、バージョン管理、クライアントへのレポートreferences/01-quy-trinh.md
カメラアングル、ショットサイズ、カットのリズム、トランジション、静止画references/02-ngon-ngu-hinh-anh.md
ジッター、フリーズ、フレーム損失、fps変換references/03-khung-hinh-chuyen-dong.md
色、スケール/クロップ、ロゴ、ファイル出力references/04-hinh-anh-mau-xuat.md
ナレーション、TTS、BGM、LUFSreferences/05-am-thanh-giong-doc.md
字幕、翻訳、テロップreferences/06-phu-de-dich-chu.md
CapCut(MCP、VectCutAPI、Web)references/07-capcut.md
納品前QCreferences/08-qc-giao-file.md
AI動画 / マイクロドラマreferences/09-phim-ai-pipeline.md
実践的な教訓references/10-bai-hoc-thuc-te.md
照明、レンズ、絞り/シャッタースピード/ISO/ND、AI動画プロンプト、カメラアングル、色、音声、編集references/11-dien-anh-cao-cap.md
AIスロップ対策:出典付き数字、クライアントルールブック、ブラインドレビュー担当者、再測定後のみ受付references/13-chong-ai-slop.md
ディレクターズブリーフ、「AIっぽい動き」対策ルール、コードベースグラフィックス、批評ループ、大規模プロジェクト(GES、3D、現状)references/12-dao-dien-motion-va-phe-binh.md

5. スクリプト一覧

スクリプト役割
autovideo.pyメインエントリ: make、revoice、subs、qc
voices.py各音声のプロファイル測定、目的に応じた音声提案、複数音声ソース(VieNeu、Edge、クローン、録音)
accuracy.py発音辞書、各文の再確認、誤読の自動再読み上げ
motion_html.pyHTMLを使ったモーショングラフィックス + seek(t)(Playwright)、自動サブフレームモーションブラー
critic.py独立した審査用ツールキット:コンタクトシート/サムネイル/ストリップ、デッドフレーム、テロップ表示時間、スロップチェック(slop_guard と連携)
slop_guard.pyAIスロップ対策:出典/導出された数字、決まり文句、空虚な主張、リズム、均一な編集、クライアントルールブック; compare で修正版の可否を判定
mcp_server.pyMCPサーバー: 21ツール(高速+ジョブキュー)をClaudeが直接呼び出し
probe_qc.py素材目録 / 動画QC(フレーム損失、フラッシュ、重複フレーム、フリーズ、ジッター、カデンス、LUFS、黒縁)
contact_sheet.py3フレーム/ショットのコンタクトシートを生成し目視確認
fps_convert.py24-120fps変換、スローモーション、180°モーションブラー、補間フレーム検出(RIFE/フロー)
camera.pyインテリジェントリフレーム(顔+顕著性マップ)、仮想的なパン/ズーム、vidstab手ブレ補正
shot_select.pyショットライブラリ: カット分割、スコアリング、説明文検索(CLIP)
grade.pyLUTカラーマッチング、自動ホワイトバランス、ルック; LUT適用
deliver.pyプラットフォーム別プリセット書き出し、ビート検出
cadence_fix.pyオプティカルフローによるセグメント単位のリズム補正(旧版、GPU不要)
tts_vi.pyVieNeu-TTS ベトナム語(25音声)、テキスト正規化、専用venvで自動実行
speech_check.py台詞一致率(Whisper)、方言推定
voice_mix.pyタイムラインへの台詞配置、音声処理チェーン、ダッキング、LUFS、動画合成
subs.py字幕文分割、SRT/ASS、焼き込み
demucs_split.py音声/音楽分離
capcut_api.pyVectCutAPI経由でCapCutデスクトップ用下書きを作成
storyboard.pyストーリーボード、ショットリスト確認、AI動画ジョブキュー

環境(install.ps1 でインストール): ffmpeg が PATH に存在; Python 3.12(numpy, opencv, soundfile, librosa, Pillow, faster-whisper, torch, demucs); VieNeu は ~/tools/venv_vieneu(VIENEU_PY で変更可能); RIFE は ~/tools/rife/(RIFE_BIN); YuNet は ~/tools/models/(YUNET_ONNX); VectCutAPI は ~/tools/VectCutAPI(ポート 9001)。

関連スキル