動画制作 dev(ハブ)
パス:
${CLAUDE_PLUGIN_ROOT}がこのプラグインのルートです。この変数が設定されていない場合、ルートはこのスキルの「ベースディレクトリ」から2つ上のフォルダになります(<root>/skills/<skill>)。スキルが~/.claude/skillsに直接コピーされている場合は、${CLAUDE_PLUGIN_ROOT}/skillsの代わりに~/.claude/skillsを使用してください。
このスキルは、「SSHとは」と「GitとGitHubのベストプラクティス」の動画制作で学んだことをまとめたものです。 出力は、1080x1920、30fpsの縦型MP4動画で、Python(Pillow)で1フレームずつ描画されたアニメーション、無料のニューラル音声(edge-tts)、コード(NumPy)で生成された音楽で構成されています。After EffectsやCapCutなどの有償ソフトは一切使用しません。
応答は、ブラジルポルトガル語(シンプル、結果を先に)で行ってください。
スキルマップ
| スキル | 使用時 |
|---|---|
| video-dev(これ) | 常に最初:質問、準備、フォルダ作成、最終レンダリング、納品 |
| video-conceito | 仕組みを説明する場合(SSH、DNS、HTTPS、Docker、JWT...):図解、パケットの移動 |
| video-tutorial-terminal | 一緒に打つコマンドを教える場合(Git、Docker CLI、npm、Linux...):ターミナルとタイピング表示 |
| narracao-voz | 台本の作成/調整、音声、英語用語の発音、単語のタイミング |
| trilha-video | 背景音楽と音声とのミキシング(ダッキング) |
動画の種類が決まったら、該当するスキルを読んでください。ナレーションとBGMは、その段階になったら読んでください。
パス
SK = ${CLAUDE_PLUGIN_ROOT}/skills (プラグインのルート。「パス」を参照)
SK/video-dev/scripts/ motor.py, render.py, novo.py, checar.py
SK/video-dev/exemplos/ssh/ SSH動画の完全なプロジェクト(コンセプト)
SK/video-dev/exemplos/git/ Git動画の完全なプロジェクト(チュートリアル)
SK/narracao-voz/scripts/ narracao.py, pronuncia_base.json
SK/trilha-video/scripts/ trilhas.py, mixar.py
SK/video-dev/references/ elementos.md(APIとレイアウト), licoes.md(既知のエラー)
ステップ1 — 質問(ファイル作成前)
AskUserQuestionツールを使って、一度に最大4つの質問を1ラウンドで行います。最初に推奨オプションを表示します。ユーザーがすでにリクエストで回答した質問はスキップします。ユーザーが「あなたが決めて」と言った場合は、デフォルト(太字)を使用します。
ラウンド1(常に実施):
- 動画の種類: コンセプト(仕組みを図解で説明)・ ターミナルチュートリアル(コマンドをステップバイステップ)・ 混合(コンセプトの後でコマンド:コンセプトスキルを使用し、チュートリアルから
Termを借用)。 - ビジュアル: Dracula(暗め、ネオンカラー、完成動画と同じ)・ クリーム(紙背景、白いボックス、ペーパースタイル)。
- 尺: ショート、最大60秒(5~6シーン、Shorts向き)・ ミディアム、1:30~2分(8~10シーン)・ フル、約3分(12~14シーン、SSHやGitのように)。
- BGM: シンセ(ミニマルでテクノ調、動画で使用したもの)・ ローファイ・ アンビエント・ ピアノ・ BGMなし。
ラウンド2(まだ不明な場合のみ):
- 対象者: 初心者(すべての用語を説明)またはプログラマー(簡潔に)。
- 音声: pt-BR-AntonioNeural(男性、使用済み)または pt-BR-FranciscaNeural(女性)。
narracao.py --vozesを実行して他の音声を確認できます。 - 必須ポイント: 絶対に外せない要素は?特定の例、コマンド、ストーリーは?
- 締めくくり: まとめ/チェックリスト(デフォルト)、「この動画を保存」という呼びかけ、またはコメントを促す質問。
次に進む前に、テーマ、種類、ビジュアル、尺、シーン数、BGMを2~3行で確認してください。
ステップ2 — コンピュータの準備(マシンごとに1回)
python SK/video-dev/scripts/checar.py
不足がある場合: python SK/video-dev/scripts/checar.py --instalar(edge-tts、pillow、imageio-ffmpeg、numpy をpipでインストール。ffmpegはimageio-ffmpegに含まれており、システムに何もインストールしません)。BahnschriftとConsolasフォントはWindowsに標準搭載されています。
ユーザーに一度だけ伝えてください:音声はインターネットを使用します。台本のテキストはMicrosoftの音声サービスに送信されます。アニメーションと音楽は100%コンピュータ内で処理されます。
Windowsではパスが長くなりすぎないように注意してください。Pythonは深いフォルダ(Claudeの一時フォルダなど)で「File name too long」エラーを起こします。短いパスで作業してください。
ステップ3 — 動画フォルダの作成
同期フォルダ(OneDrive、Dropbox、iCloud)外のパスを推奨します。レンダリング中に数千のフレームが書き込まれ、同期処理が遅くなるためです。推奨: ~/Projetos/videos/<短い名前>/。ユーザーに別の場所を希望するか尋ねてください。
python SK/video-dev/scripts/novo.py <pasta> --tipo conceito --titulo "Dockerとは" --tema dracula --cenas 12
構造(台本の1セリフ = 1シーン):
<pasta>/
video.json タイトル、ファイル名、テーマ、音声、レート、BGM
roteiro.json ["シーン1のセリフ", "シーン2のセリフ", ...]
pronuncia.json オプション: プロジェクト固有の用語 -> 音声のスペル
cenas.py def cenas(): return [[シーン1の要素], ...]
audio/ cena01.mp3 + cena01.json(各単語のタイミング)
saida/ <nome>.mp4, <nome>_trilha.mp4, poster.jpg, preview/
ステップ4 — 台本 → ユーザーに表示 → 承認
動画の種類(コンセプトまたはチュートリアル)に従って台本を書き、narracao-voz スキルの発声ルールに従ってください。アニメーション化する前に台本を表示してください。テキストの修正はシーンの修正よりもはるかに安価です。承認を得てから進めてください。
ステップ5 — ナレーション
python SK/narracao-voz/scripts/narracao.py <pasta>
python SK/narracao-voz/scripts/narracao.py <pasta> --tempos 3 # シーン3の各単語が発声されるタイミング
ナレーションはシーンの前に生成します。各シーンの長さは、ナレーション時間 + 0.7秒で決まり、要素は対応する単語が発声される秒数に合わせて配置されるためです。
ステップ6 — シーン(アニメーション)
from motor import * を使用して cenas.py を記述します(完全なAPIは references/elementos.md にあります)。各シーンについて: --tempos N を実行し、各キーワードに表示する要素を選択し、その時間(または0.2秒前)を要素の t に使用します。
コードを読むだけでなく、フレームを確認してください:
python SK/video-dev/scripts/render.py <pasta> --preview # 各シーンの最終フレーム
python SK/video-dev/scripts/render.py <pasta> --cena 4 # シーン4、1秒ごとのフレーム
生成されたPNGをReadツールで開き、確認してください: 端が切れていないか、要素が重なっていないか、スマートフォンで読める大きさのテキストか、下部250px(TikTok/Reelsのキャプションやボタンが表示される領域)に重要な要素がないか。
ステップ7 — 最終レンダリング + BGM
python SK/video-dev/scripts/render.py <pasta> # saida/<nome>.mp4 + poster.jpg
python SK/trilha-video/scripts/mixar.py <pasta>/saida/<nome>.mp4 synth # saida/<nome>_trilha.mp4
3分の動画のレンダリングには数分かかります。バックグラウンドで実行してください。
ステップ8 — 確認と納品
- ffmpegで長さとオーディオの有無を確認してください(
ffmpeg -i arquivo.mp4でストリームが表示されます)。 - 最終MP4から異なる時点の3~4フレームを抽出して確認してください。
- SendUserFile(
display: "render")で納品し、フォルダの場所を伝えてください。 - 視聴・共有用のページ(SSHやGitの動画のように)が必要な場合は、MP4とスクリプトを
filesに含めてArtifactとして公開してください。ユーザーから依頼があった場合のみ公開してください。 - ユーザーの許可なしにYouTube/TikTok/GitHubにアップロードしないでください。
完成後のよくある変更
| リクエスト | 対応 |
|---|---|
| フレーズの変更 | roteiro.json を編集 → narracao.py --so N を実行 → シーンNのタイミングを調整 → レンダリング |
| 発音の誤り | プロジェクトの pronuncia.json を編集 → narracao.py --so N を実行(narracao-vozを参照) |
| 別のビジュアル | レンダリング時に --tema creme、または video.json の tema を変更 |
| 音楽の音量調整 | mixar.py ... --trilha 0.25 を実行(trilha-videoを参照) |
| 長い動画のショート版 | キーシーンと簡潔な台本だけをコピーした新しいプロジェクトを作成 |
始める前に、references/licoes.md を読んでください。最初の2本の動画での成功と失敗が書かれています。