Communitygithub.com

dung-video

ffmpeg を使って YouTube 動画編集環境をセットアップし、トリミング、結合、縦型ショート動画作成、 Whisper によるベトナム語字幕追加、音量均一化、YouTube 推奨設定での書き出し、サムネイルフレーム取得などの基本編集を行います。

dung-video とは?

このスキルは、Claude Code(有料 Claude プランが必要)と無料ツール ffmpeg を使って、初心者の YouTube クリエイターが自分の PC で動画編集を始められるようにします。主な機能には、プロジェクトフォルダの作成、ffmpeg と Python のインストール確認、動画のトリミングと結合、縦型 9:16 ショート動画の作成、ローカルの Whisper モデル(faster-whisper)を使ったベトナム語字幕(.srt)生成、音量の均一化(-14 LUFS)、YouTube 推奨アップロード設定(H.264、AAC、BT.709 カラー)での書き出し、サムネイルフレームの抽出などが含まれます。ユーザーの元ファイルは決して変更・削除せず、すべての出力は `exports/` フォルダに新しい名前で保存します。インストールや時間のかかる処理の前には必ずユーザーに確認を取り、コマンドを実行前に表示します。Windows 10 でテスト済み、macOS は未テストです。GPU は不要で、Whisper は CPU 上で動作するため長い動画の字幕生成は低速です。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/thegentleminh/thegentleminh-skills/tree/HEAD/plugins/dung-video/skills/dung-video

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

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

ドキュメント

Dựng video cơ bản(ffmpeg を使った基本動画編集)

あなたは、初心者の YouTube クリエイターが自分の PC で ffmpeg(無料)を使って動画編集をするのを手伝います。多くのユーザーはベトナム語話者です。ユーザーがベトナム語で書いた場合は、平易で話し言葉のようなベトナム語で答え、技術用語はシンプルにしてください(コマンドの仕組みではなく、何をするかを説明してください)。

必要条件と制限

何かをインストールする前、および要求に不足がある場合には、ユーザーに以下のことを伝えてください。

  • 必要環境: 有料 Claude プランと Claude Code。ffmpeg(無料、ユーザーの許可が必要)。字幕のみ: Python 3.10+ と faster-whisper パッケージ(数百 MB、一度ダウンロード)。
  • GPU: 不要。Whisper は NVIDIA カードがない場合は CPU で動作するため、長い動画の字幕生成は遅くなります。
  • テスト済み OS: Windows 10(Claude デスクトップアプリでのセットアップ確認、およびすべてのトリミング/結合/縦型/音量/書き出しコマンド)。macOS: 未テスト。
  • 制限: 機械生成の字幕は名前、数字、地域のアクセントを誤ることがあるため、ユーザーは .srt ファイルを必ず校正してください。基本編集のみ:エフェクト、アニメーションテキスト、音楽は対象外です。
  • ないと使えなくなるもの: Python/faster-whisper がない場合、字幕以外のすべての機能は引き続き動作します。

ルール(常に守ること)

  1. ユーザーの元ファイルを変更したり削除したりしないでください。 raw/(またはユーザーのファイルがある場所)から読み取り、すべての結果は新しい名前で exports/ に書き込みます(例:exports/clip-cat.mp4)。既存のファイルを上書きしないでください:ffmpeg に -n を追加するか、新しい名前を選んでください。
  2. 何かをインストールする前に必ず確認してください。 それが何か、なぜ必要なのか、正確なコマンドを伝え、承諾を待ってください。
  3. コマンドを実行する前に表示し、それが何をするかを一文で説明してください。1 分以上かかる処理(長い動画、字幕)の場合は、事前にその旨を伝えてください。
  4. 編集前に ffprobe でファイルを確認(サイズ、フレームレート、長さ、音声)し、コマンドがファイルに適合するようにしてください。
  5. ファイルパスは引用符で囲んでください(スペースやベトナム語の文字が含まれることがよくあります)。Windows では、ffmpeg のフィルターパスではスラッシュ(/)を優先してください。
  6. 編集後は、新しいファイルの場所と確認すべきこと(再生する、開始と終了を聞く)をユーザーに伝えてください。
  7. 引用できない YouTube のルールを主張しないでください。このスキルが YouTube を引用する場合、ソースがリンクされています。

1. コンピュータの確認

順番に実行します:

  • ffmpeg -version と ffprobe -version
  • python --version(macOS では python3 --version も試してください)- 字幕にのみ必要です。

ffmpeg がない場合、インストールを提案します(事前に確認):

  • Windows: winget install --id Gyan.FFmpeg -e
  • macOS(Homebrew): brew install ffmpeg(brew 自体がない場合は、ユーザーを https://brew.sh に誘導して停止してください)。

Python がなく、ユーザーが字幕を希望する場合:

  • Windows: winget install --id Python.Python.3.12 -e
  • macOS: brew install python

インストール後、コマンドが見つかるようになるには、ユーザーが 新しいターミナルを開く(または Claude Code を再起動する)必要がある場合があります。ffmpeg -version で再度確認してください。

2. プロジェクトフォルダのセットアップ

Claude Code を開いたフォルダ内に、以下を作成します:

raw/        元ファイル(ここに動画をコピーします。編集はしません)
exports/    すべての完成ファイルまたは中間ファイル
CLAUDE.md   チャンネルに関するメモ。各セッションの開始時に Claude Code が読み取ります

CLAUDE.md が存在しない場合、作成を提案し、ユーザーに 4 つの簡単な質問をします:チャンネルのトピック、動画の言語、ショート動画/長い動画/両方、普段のカメラ(電話かカメラか)。次のような短いファイルを作成します:

# Kênh của mình
- Chủ đề: ...
- Ngôn ngữ video: tiếng Việt
- Làm: video dài và Shorts
- Quay bằng: điện thoại
- Gốc để trong raw/, file làm ra để trong exports/

3. 基本編集

常に入力を最初に確認してください:ffprobe -v error -show_entries stream=codec_type,codec_name,width,height,r_frame_rate:format=duration -of default=nw=1 "raw/input.mp4"

トリミング(cắt một đoạn)

指定された時間に正確にカットするために再エンコードします:

ffmpeg -n -ss 00:00:12 -to 00:01:30 -i "raw/input.mp4" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/input-cat.mp4"

時間は mm:ss または hh:mm:ss で指定できます。複数の部分 = 複数のトリミング、その後結合します。

結合(ghép nhiều clip)

  1. すべてのクリップを ffprobe で確認します。すべての幅、高さ、フレームレートが同じ場合、exports/list.txt を作成します:
    file '../raw/clip1.mp4'
    file '../raw/clip2.mp4'
    
    次に:ffmpeg -n -f concat -safe 0 -i "exports/list.txt" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/ghep.mp4"
  2. 異なる場合は、各クリップを同じサイズとフレームレートに一度にスケーリングおよびパディングします(2 つのクリップを 1920x1080、30 fps に変換する例):
    ffmpeg -n -i "raw/a.mp4" -i "raw/b.mp4" -filter_complex "[0:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=30[v0];[1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=30[v1];[0:a]aresample=48000[a0];[1:a]aresample=48000[a1];[v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/ghep.mp4"
    
    クリップにオーディオトラックがない場合は、ユーザーに伝え、そのクリップに無音(anullsrc)を追加してエラーを回避します。

ショート動画用の縦型バージョン(khung dọc)

YouTube は、動画が 正方形または縦型 で、長さが最大 3 分、アップロード解像度が最大 1080p の場合にショート動画としてカウントします(YouTube ヘルプ 15424877、10059070)。1080x1920(9:16)が一般的な縦型サイズです。YouTube は正確なピクセルサイズを公開していません。

  • 中央を切り抜く(人物が中央にいる場合に適しています): ffmpeg -n -i "raw/input.mp4" -vf "crop=ih*9/16:ih,scale=1080:1920,setsar=1" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/input-doc.mp4"
  • フレーム全体をぼかし背景で維持(画面録画やワイドショットに適しています): ffmpeg -n -i "raw/input.mp4" -filter_complex "[0:v]scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,boxblur=20:2[bg];[0:v]scale=1080:-2[fg];[bg][fg]overlay=(W-w)/2:(H-h)/2,setsar=1[v]" -map "[v]" -map 0:a? -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/input-doc.mp4" ユーザーにどちらを希望するか尋ねてください。被写体が中央にない場合は、切り抜き位置を移動することを提案します(crop=ih*9/16:ih:X:0、X = 左端のピクセル)。

ベトナム語字幕(phụ đề)

ユーザーの自分のコンピュータで Whisper を使用します(無料、アップロードは行われません)。Python とパッケージ faster-whisper(モデルを含めて約数百 MB。事前に確認): python -m pip install faster-whisper 次に、このスキルに付属するスクリプトを実行します(パス:この SKILL.md の隣にある scripts フォルダ): python "<skill folder>/scripts/phu_de.py" "raw/input.mp4" --lang vi --out "exports/input.srt" .srt ファイルが生成されます。Whisper は誤りを犯すこと(名前、数字、アクセント)をユーザーに伝えてください。使用する前に .srt を開いて修正する必要があります。初回実行時はモデルをダウンロードするため遅くなります。 ユーザーが .srt を修正した後、字幕を画像に焼き付けるには: ffmpeg -n -i "raw/input.mp4" -vf "subtitles=exports/input.srt:force_style='FontSize=18,Outline=2'" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a copy "exports/input-phude.mp4" (Windows では、.srt パスは相対パスでスラッシュを使用してください。ドライブ文字(C: など)はフィルター内では C\: と記述する必要があります。)多くのクリエイターは、視聴者が字幕をオフにできるように、焼き付けずに YouTube Studio に .srt をアップロードします。

音量の均一化(chuẩn âm lượng)

YouTube はラウドネス目標を公開していません。視聴者側では「安定した音量」設定があり、大きな部分と小さな部分を均一にします(YouTube ヘルプ 14106294)。オンライン動画の一般的な選択肢は約 -14 LUFS です。これは YouTube のルールではなく一般的な選択肢であることを伝えてください。ffmpeg の loudnorm を 2 パスで使用します(ffmpeg ドキュメント):

  1. 測定:ffmpeg -hide_banner -i "exports/video.mp4" -af loudnorm=I=-14:TP=-1.5:LRA=11:print_format=json -f null - 末尾の JSON から input_i、input_tp、input_lra、input_thresh を読み取ります。
  2. それらの数値を適用: ffmpeg -n -i "exports/video.mp4" -af loudnorm=I=-14:TP=-1.5:LRA=11:measured_I=<input_i>:measured_TP=<input_tp>:measured_LRA=<input_lra>:measured_thresh=<input_thresh>:linear=true,aresample=48000 -c:v copy -c:a aac -b:a 192k "exports/video-am-luong.mp4" 完成した動画に対して 1 パスを使用しないでください。動画全体で音量が調整され続けます。

YouTube 用に書き出し(xuất file)

YouTube の推奨アップロードエンコード設定(YouTube ヘルプ 1722171)に従います:高速スタート付き MP4、H.264 High プロファイル、プログレッシブ、4:2:0、フレームレートの半分のクローズド GOP、2 B フレーム。AAC-LC オーディオ 48 kHz。BT.709 カラー。記録時と同じフレームレート。SDR の推奨ビットレート:1080p 8 Mbps(24-30 fps)または 12 Mbps(48-60 fps)。720p 5 / 7.5 Mbps。1440p 16 / 24。4K 35-45 / 53-68。オーディオ:ステレオ 384 kbps(モノラル 128 kbps)。 1080p、30 fps の動画の例(GOP 15):

ffmpeg -n -i "exports/video.mp4" -c:v libx264 -profile:v high -pix_fmt yuv420p -b:v 8M -bf 2 -g 15 -flags +cgop -x264-params "colorprim=bt709:transfer=bt709:colormatrix=bt709" -color_range tv -c:a aac -b:a 384k -ar 48000 -movflags +faststart "exports/video-youtube.mp4"

-b:v と -g(フレームレートの半分)を動画に合わせて調整します。60 fps の場合は -b:v 12M -g 30 を使用します。動画が記録されたフレームレートを維持します(-r は追加しないでください)。

サムネイルフレーム(lấy khung hình)

ffmpeg -n -ss 00:00:42 -i "raw/input.mp4" -frames:v 1 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" -q:v 2 "exports/khung-0042.jpg" ユーザーが選択できるように、異なる時間のフレームを 3〜4 枚提供します。YouTube のサムネイルルール(サイズ、16:9、JPG/PNG、ファイルサイズ)は YouTube ヘルプ 72431 にあります。

問題が発生した場合

このスキルは Claude Code で作成されたため、バグがある可能性があり、コンピュータごとに環境が異なります。ステップが失敗した場合、またはユーザーがスキルの動作が間違っていると言った場合:

  1. 簡単に、ベトナム語で説明します: 何が失敗したのか、なぜか、を一文か二文で。ユーザーが要求しない限り、生のスタックトレースは表示しません。
  2. このスキルと実行されたコマンドを読み直します。 原因を見つけます(以下のリストに一般的な原因があります)。
  3. 修正して再実行し、exports/ に新しいファイルを書き込みます。修正中でも、ユーザーの元ファイルには決して触れたり上書きしたりしません。
  4. 原因がこのスキル自体にあった場合(間違ったコマンドや欠落したステップ)、そのことを伝え、全員のために修正されるように報告を提案します:https://github.com/thegentleminh/thegentleminh-skills/issues

よくある失敗

  • 'ffmpeg' is not recognized / command not found:ffmpeg がインストールされていないか、インストール前にターミナルが開かれたためです。新しいターミナルを開いて再度確認してください。
  • No such file or directory:パスと引用符を確認してください。フォルダを一覧表示して正確な名前を見つけてください。
  • already exists. Exiting.:出力名が既に使用されています。新しい名前を選んでください(決して上書きしないでください)。
  • Unknown encoder 'libx264':ffmpeg ビルドにそれがありません。上記のコマンドで再インストールしてください。
  • トリミング後に音声が同期しない:再エンコードしてトリミングを再実行してください(上記のコマンドは既に再エンコードしています)。

Individual skills in this repo

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

anh-thanh-video

Turn photos into a video - a beat-synced photo edit (photos change on the beat with flash, pop, shake and snap-and-ease camera moves, like the "2 ảnh / 3 ảnh" templates but with any song the user owns and any number of photos), a gentle photo album (slow push toward faces, soft crossfades, title and captions), or a 2.5D "3D zoom" where near things move more than far things. Faces stay in frame, Vietnamese text done right, 9:16 / 16:9 / 1:1 / 4:5. Use for "biến ảnh thành video", "ghép ảnh thành video", "video ảnh theo nhạc", "photo slideshow", "mẫu capcut nhiều ảnh", "video kỷ niệm", "album ảnh cưới/gia đình", "ảnh 3D", product photo videos.

tach-nguoi

Person cut-out effects on your own clip - big text BEHIND the person (chữ sau lưng người), a freeze-frame character intro with a name card, freeze snap / comic freeze, and clones (phân thân, one take or two). Vietnamese text done right, placed automatically so it stays readable, inside each app's safe area, 9:16 or 16:9. Use when the user wants "text behind me", "chữ sau lưng", "chữ xuyên người", "giới thiệu nhân vật", "dừng hình", "freeze frame", "phân thân", "clone", or other cut-out effects on their own video.

video-giai-thich

Make a Vietnamese animated explainer video (9:16, TikTok / Reels / Shorts) from a topic or a question - "vì sao bầu trời màu xanh?", "lãi kép là gì?" - with a spoken-Vietnamese script, a voice (ElevenLabs, your own recording, or none), on-screen words that appear as they are spoken, and pictures animated in code and timed to the words. Five looks (riso print, chalkboard, newsprint, blueprint, poster). Use for "làm video giải thích", "video kiến thức", "video khoa học", "giải thích bằng hoạt hình", "explainer video in Vietnamese", "vibe coding animation", "video kiểu Vibe知识".

関連スキル