mcpField
Y
youtube-clipper

youtube-clipper

github.com/op7418クリエイティブ・メディア2.3k4.1k 回インストール40 週間前に更新
リポジトリ

youtube-clipper について

youtube-clipperは、YouTube動画から章ごとのクリップを作成するスキルです。字幕を分析して話題の切り替わりを見つけ、動画のカット、字幕翻訳と焼き込み、要約文の生成を支援します。

主な機能

  1. 01動画と英語字幕のダウンロード
  2. 02字幕分析による細かな章分け
  3. 03選択した章からのクリップ作成
  4. 04字幕の翻訳と二言語形式への統合
  5. 05字幕の焼き込みと要約文の生成

活用シーン

  1. 01長い動画から話題別のクリップを抽出
  2. 02クリップ用の二言語字幕ファイルを作成
  3. 03字幕付き動画を作成
  4. 04章の要約からSNS向けの文章を準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/op7418/youtube-clipper-skill --skill youtube-clipper

インストール後、Claude Code で/youtube-clipperを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.env.example
.gitignore
LICENSE
README.md
install_as_skill.sh
FIXES_AND_IMPROVEMENTS.md
TECHNICAL_NOTES.md
README.zh-CN.md
.github/
REPOSITORY_SETTINGS.md
references/
ffmpeg-guide.md
subtitle-formatting.md
yt-dlp-guide.md
scripts/
__init__.py
analyze_subtitles.py
download_video.py
clip_video.py
burn_subtitles.py
extract_subtitle_clip.py
merge_bilingual_subtitles.py
generate_summary.py
translate_subtitles.py
utils.py
templates/
summary-template.md

詳細

YouTube動画スマート編集ツール

Installation: GitHubからこのスキルをインストールする場合は、インストール手順についてREADME.mdを参照してください。推奨方法は npx skills add https://github.com/op7418/Youtube-clipper-skill です。

ワークフロー

以下の6つのフェーズに従って、YouTube動画の編集タスクを実行します。

フェーズ 1: 環境の確認

目的: 必要なツールと依存関係がすべてインストールされていることを確認します。

  1. yt-dlp が利用可能か確認します

    yt-dlp --version
    
  2. FFmpeg のバージョンと libass のサポート状況を確認します

    # 优先检查 ffmpeg-full(macOS)
    /opt/homebrew/opt/ffmpeg-full/bin/ffmpeg -version
    
    # 检查标准 FFmpeg
    ffmpeg -version
    
    # 验证 libass 支持(字幕烧录必需)
    ffmpeg -filters 2>&1 | grep subtitles
    
  3. Python の依存関係を確認します

    python3 -c "import yt_dlp; print('✅ yt-dlp available')"
    python3 -c "import pysrt; print('✅ pysrt available')"
    

環境の確認に失敗した場合:

  • yt-dlp がインストールされていない場合: brew install yt-dlp または pip install yt-dlp を案内します
  • FFmpeg に libass がない場合: ffmpeg-full のインストールを案内します
    brew install ffmpeg-full  # macOS
    
  • Python の依存関係が不足している場合: pip install pysrt python-dotenv を案内します

注意:

  • 標準の Homebrew FFmpeg には libass が含まれていないため、字幕を焼き付けられません
  • ffmpeg-full のパス: /opt/homebrew/opt/ffmpeg-full/bin/ffmpeg(Apple Silicon)
  • 続行するには、まず環境の確認に合格する必要があります

フェーズ 2: 動画のダウンロード

目的: YouTube動画と英語字幕をダウンロードします。

  1. ユーザーに YouTube URL を尋ねます

  2. download_video.py スクリプトを呼び出します

    cd ~/.claude/skills/youtube-clipper
    python3 scripts/download_video.py <youtube_url>
    
  3. スクリプトは次の処理を行います:

    • 動画をダウンロードします(最高 1080p、mp4 形式)
    • 英語字幕をダウンロードします(VTT 形式、自動生成字幕は代替として使用)
    • ファイルパスと動画情報を出力します
  4. ユーザーに次の情報を提示します:

    • 動画タイトル
    • 動画の長さ
    • ファイルサイズ
    • ダウンロード先のパス

出力:

  • 動画ファイル: <id>.mp4(特殊文字による問題を避けるため、動画 ID を使用して命名します)
  • 字幕ファイル: <id>.en.vtt

フェーズ 3: 章の分析(中核となる差別化機能)

目的: Claude AI を使用して字幕の内容を分析し、詳細な章(2~5分単位)を生成します。

  1. analyze_subtitles.py を呼び出して VTT 字幕を解析します

    python3 scripts/analyze_subtitles.py <subtitle_path>
    
  2. スクリプトは構造化された字幕データを出力します:

    • タイムスタンプ付きの字幕全文
    • 合計時間
    • 字幕の行数
  3. AI による分析を実行します(これが最も重要な手順です):

    • 字幕全体を読みます
    • 内容の意味とテーマの切り替わりを把握します
    • 自然な話題の切り替わり箇所を特定します
    • 2~5分単位の章を生成します(30分単位の大まかな分割は避けてください)
  4. 各章について、次の情報を生成します:

    • タイトル: 簡潔にまとめたテーマ(10~20文字)
    • 時間範囲: 開始時刻と終了時刻(形式: MM:SS または HH:MM:SS)
    • 要約: この区間の内容を説明する1~2文(50~100文字)
    • キーワード: 中核となる概念を表す3~5語
  5. 章の生成原則:

    • 粒度: 各章は2~5分(短すぎたり長すぎたりしないようにします)
    • 網羅性: 動画の内容を漏れなくすべてカバーします
    • 有意性: 各章は比較的独立した話題を扱います
    • 自然な分割: 時間で機械的に区切らず、テーマが切り替わる箇所で分割します
  6. 章の一覧をユーザーに提示します:

    📊 分析完成,生成 X 个章节:
    
    1. [00:00 - 03:15] AGI 不是时间点,是指数曲线
       核心: AI 模型能力每 4-12 月翻倍,工程师已用 Claude 写代码
       关键词: AGI、指数增长、Claude Code
    
    2. [03:15 - 06:30] 中国在 AI 上的差距
       核心: 芯片禁运卡住中国,DeepSeek benchmark 优化不代表实力
       关键词: 中国、芯片禁运、DeepSeek
    
    ... (所有章节)
    
    ✓ 所有内容已覆盖,无遗漏
    

フェーズ 4: ユーザーによる選択

目的: 編集する章と処理オプションをユーザーに選んでもらいます。

  1. AskUserQuestion ツールを使って、ユーザーに章を選んでもらいます

    • 選択できる章番号を提示します
    • 複数選択に対応します(複数の章を選択できます)
  2. 処理オプションを尋ねます:

    • バイリンガル字幕を生成しますか?(英語 + 中国語)
    • 字幕を動画に焼き付けますか?(ハード字幕)
    • 要約テキストを生成しますか?
  3. ユーザーの選択を確認し、処理計画を提示します


フェーズ 5: 編集処理(中核となる実行フェーズ)

目的: 複数の処理タスクを並行して実行します。

ユーザーが選択した各章について、以下の手順を実行します。

5.1 動画クリップの編集
python3 scripts/clip_video.py <video_path> <start_time> <end_time> <output_path>
  • FFmpeg を使用して正確に編集します
  • 元の動画品質を維持します
  • 出力: <章タイトル>_clip.mp4
5.2 字幕クリップの抽出
  • 字幕全体から該当する時間範囲の字幕を抽出します
  • タイムスタンプを調整します(開始時刻を差し引き、00:00:00から開始します)
  • SRT 形式に変換します
  • 出力: <章タイトル>_original.srt
5.3 字幕の翻訳(ユーザーが選択した場合)
python3 scripts/translate_subtitles.py <subtitle_path>
  • 一括翻訳の最適化: 1回につき字幕20件をまとめて翻訳します(API 呼び出しを95%削減)
  • 翻訳方針:
    • 技術用語の正確さを維持します
    • 口語的な表現にします(ショート動画に適しています)
    • 簡潔で自然な表現にします(冗長な表現は避けます)
  • 出力: <章タイトル>_translated.srt
5.4 バイリンガル字幕ファイルの生成(ユーザーが選択した場合)
  • 英語字幕と中国語字幕を結合します
  • 形式: SRT のバイリンガル形式(各字幕に英語と中国語を含みます)
  • スタイル: 英語を上、中国語を下に表示します
  • 出力: <章タイトル>_bilingual.srt
5.5 字幕の動画への焼き付け(ユーザーが選択した場合)
python3 scripts/burn_subtitles.py <video_path> <subtitle_path> <output_path>
  • ffmpeg-full を使用します(libass に対応)
  • 一時ディレクトリを使用してパスに空白が含まれる問題を解決します(重要!)
  • 字幕スタイル:
    • フォントサイズ: 24
    • 下部マージン: 30
    • 色: 白い文字 + 黒い縁取り
  • 出力: <章タイトル>_with_subtitles.mp4
5.6 要約テキストの生成(ユーザーが選択した場合)
python3 scripts/generate_summary.py <chapter_info>
  • 章のタイトル、要約、キーワードに基づいて生成します
  • ソーシャルメディアに適したテキストを生成します
  • 含まれる内容: タイトル、主な見解、適したプラットフォーム(小紅書、抖音など)
  • 出力: <章タイトル>_summary.md

進捗状況の表示:

🎬 开始处理章节 1/3: AGI 不是时间点,是指数曲线

1/6 剪辑视频片段... ✅
2/6 提取字幕片段... ✅
3/6 翻译字幕为中文... [=====>    ] 50% (26/52)
4/6 生成双语字幕文件... ✅
5/6 烧录字幕到视频... ✅
6/6 生成总结文案... ✅

✨ 章节 1 处理完成

フェーズ 6: 結果の出力

目的: 出力ファイルを整理し、ユーザーに提示します。

  1. 出力ディレクトリを作成します

    ./youtube-clips/<日期时间>/
    

    出力ディレクトリは現在の作業ディレクトリ内に作成されます

  2. ファイル構成を整理します:

    <章节标题>/
    ├── <章节标题>_clip.mp4              # 原始剪辑(无字幕)
    ├── <章节标题>_with_subtitles.mp4   # 烧录字幕版本
    ├── <章节标题>_bilingual.srt        # 双语字幕文件
    └── <章节标题>_summary.md           # 总结文案
    
  3. ユーザーに次の情報を提示します:

    • 出力ディレクトリのパス
    • ファイル一覧(ファイルサイズ付き)
    • すぐにプレビューできるコマンド
    ✨ 处理完成!
    
    📁 输出目录: ./youtube-clips/20260121_143022/
    
    文件列表:
      🎬 AGI_指数曲线_双语硬字幕.mp4 (14 MB)
      📄 AGI_指数曲线_双语字幕.srt (2.3 KB)
      📝 AGI_指数曲线_总结.md (3.2 KB)
    
    快速预览:
    open ./youtube-clips/20260121_143022/AGI_指数曲线_双语硬字幕.mp4
    
  4. ほかの章も続けて編集するかどうか尋ねます

    • 続ける場合は、フェーズ 4(ユーザーによる選択)に戻ります
    • 続けない場合は、スキルを終了します

重要な技術ポイント

1. FFmpeg のパスに空白が含まれる場合の問題

問題: FFmpeg の subtitles フィルターは、空白を含むパスを正しく解析できません

解決策: burn_subtitles.py は一時ディレクトリを使用します

  • 空白を含まない一時ディレクトリを作成します
  • ファイルを一時ディレクトリにコピーします
  • FFmpeg を実行します
  • 出力ファイルを目的の場所に移動します
2. 一括翻訳の最適化

問題: 1件ずつ翻訳すると、多数の API 呼び出しが発生します

解決策: 1回につき字幕20件をまとめて翻訳します

  • API 呼び出しを95%削減します
  • 翻訳速度を向上させます
  • 翻訳の一貫性を維持します
3. 章の分析の詳細度

目的: 30分単位の大まかな分割を避け、2~5分単位の章を生成します

方法:

  • 字幕の意味を把握し、テーマの切り替わりを特定します
  • 自然な話題の切り替わり箇所を探します
  • 各章に一貫した論述が含まれるようにします
  • 時間で機械的に分割することは避けます
4. FFmpeg と ffmpeg-full の違い

違い:

  • 標準の FFmpeg: libass に対応していないため、字幕を焼き付けられません
  • ffmpeg-full: libass を含み、字幕の焼き付けに対応しています

パス:

  • 標準: /opt/homebrew/bin/ffmpeg
  • ffmpeg-full: /opt/homebrew/opt/ffmpeg-full/bin/ffmpeg(Apple Silicon)

エラー処理

環境の問題
  • ツールが不足している場合 → インストールコマンドを案内します
  • FFmpeg に libass がない場合 → ffmpeg-full のインストールを案内します
  • Python の依存関係が不足している場合 → pip install を案内します
ダウンロードの問題
  • 無効な URL → URL の形式を確認するよう案内します
  • 字幕が見つからない場合 → 自動生成字幕を試します
  • ネットワークエラー → 再試行するよう案内します
処理の問題
  • FFmpeg の実行に失敗した場合 → 詳細なエラー情報を表示します
  • 翻訳に失敗した場合 → 再試行します(最大3回)
  • ディスク容量が不足している場合 → 空き容量を確保するよう案内します

输出文件命名规范

  • 视频片段: <章节标题>_clip.mp4
  • 字幕文件: <章节标题>_bilingual.srt
  • 烧录版本: <章节标题>_with_subtitles.mp4
  • 总结文案: <章节标题>_summary.md

文件名处理:

  • 移除特殊字符(/, \, :, *, ?, ", <, >, |)
  • 空格替换为下划线
  • 限制长度(最多 100 字符)

用户体验要点

  1. 进度可见: 每个步骤都展示进度和状态
  2. 错误友好: 清晰的错误信息和解决方案
  3. 可控性: 用户选择要剪辑的章节和处理选项
  4. 高质量: 章节分析有意义,翻译准确流畅
  5. 完整性: 提供原始和处理后的多个版本

开始执行

当用户触发这个 Skill 时:

  1. 立即开始阶段 1(环境检测)
  2. 按照 6 个阶段顺序执行
  3. 每个阶段完成后自动进入下一阶段
  4. 遇到问题时提供清晰的解决方案
  5. 最后展示完整的输出结果

记住:这个 Skill 的核心价值在于 AI 精细章节分析 和 无缝的技术处理,让用户能快速从长视频中提取高质量的短视频片段。

コメント