mcpField
C
clipswarm

clipswarm

ローカル
github.com/Shoberman2メディア・デザイン03 週間前に更新

clipswarm について

clipswarmは、YouTube動画やライブ配信を字幕付きショート動画にする、エージェント向けのローカル動画編集サーバー兼CLIです。並列処理と定期検索に対応し、切り抜く場面はエージェントや設定した選定方式が決めます。

主な機能

  1. 01YouTube動画とライブ配信の切り抜き
  2. 02字幕付き9:16ショート動画の作成
  3. 03複数の編集ジョブを並列処理
  4. 04動画の定期検索と切り抜き
  5. 05文字起こし検索ツールの提供

活用シーン

  1. 01ポッドキャストの見どころを短尺化
  2. 02ライブ配信の直近部分を切り抜き
  3. 03特定トピックの新着動画を監視
  4. 04複数動画のクリップを一括作成

MCP 対応

動画情報、文字起こし、クリップ作成、定期監視のツールをMCPクライアントに提供します。複数ジョブをまとめて送信し、レンダリング中に結果を取得できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"shoberman2-clipswarm": {
"command": "npx",
"args": [
"-y",
"clipswarm"
]
}
}
}
起動コマンドnpx -y clipswarm

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmclipswarm0.1.0

ツール

12

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
urlstringはいYouTube URL

詳細

clipswarm

CI npm License: MIT

オープンソースで、エージェントを中心に設計された動画クリッピングツールです。 任意の数のAIエージェントにYouTube動画 またはライブ配信 を指定すると、すぐに投稿できるバイラルなショート動画が完成します。9:16、フックとなるヘッダー、単語ごとの字幕に対応しています。APIキーもサブスクリプションも不要で、お使いのマシン上で動作します。

clipswarmで作成したバイラル動画クリップ。ISSにいる3人の宇宙飛行士の動画全体の上に「宇宙飛行士、地上約400キロから7月4日を祝う」と書かれた白いヘッダーカードがあり、下には単語ごとの字幕が表示されている

次の1コマンドで作成:clipswarm clip https://youtu.be/75-H-i9ctkE 6 14.4 --viral --title "Astronauts celebrate July 4th from 250 miles up"
映像:NASA(パブリックドメイン)。NASAの支持を示すものではありません。

"Get me the 3 best moments from each of these 10 podcasts as shorts"
        │
        ├─ clipper agent 1 ─┐
        ├─ clipper agent 2 ─┼─► clipswarm MCP ─► yt-dlp ─► ffmpeg ─► clips/*_viral.mp4
        └─ clipper agent N ─┘     shared queue, cached transcripts, retries

clipswarmを選ぶ理由

OpusClipのようなアプリは、何が「バイラル」になるかを代わりに決めます。clipswarmは、決めるためのツールをあなたのエージェントに提供し、制作作業を担います。

  • バイラル向けフォーマットを標準搭載:1080×1920、フックとなるヘッダーカード、動画フレームの全体(クロップやズームは一切ありません)、そして発話に合わせて単語ごとにハイライトするアニメーション字幕に対応しています。レイアウトはソースの形状に合わせて調整されます。
  • YouTube動画とライブ配信の両方に対応:ライブ配信でたった今起きたこと(start: -60, end: "now")や、午後8時41分に放送された内容をクリップできます。
  • 実際の単語タイミングに基づく字幕:通常の動画にはYouTubeの自動字幕、ライブ配信にはローカルのwhisper.cppを使います。無料で、オフラインで動作します。
  • 自動運転で動作:カテゴリーとスケジュール(「netflixの株価、6時間ごと」など)を指定すると、新しい動画を見つけ、AIが見どころを選んでフックを書き、バックグラウンドでクリップをレンダリングします。
  • エージェントのスウォーム向けに構築:多数の動画にまたがる数十の並列ジョブと、同時に動作する多数のエージェントを、1つの共有キューで処理します。動画ごとのトランスクリプト取得は1回だけで、1つのジョブが失敗してもバッチ全体には影響しません。
  • 高速かつ省リソース:クリップする秒数分だけをダウンロードし(3時間の配信全体ではありません)、macOSではハードウェアエンコーディングを使用します。
  • あらゆるffmpegで動作:テキストはclipswarm自体がレンダリングするため、drawtext/libassなしの標準ビルド(Homebrew版など)でも問題なく動作します。

インストール

1. 依存関係(Node 20以上):

brew install yt-dlp ffmpeg whisper-cpp     # macOS
# Linux: pip install -U yt-dlp && sudo apt install ffmpeg   (+ whisper.cpp for live captions)
npx -y clipswarm setup                     # checks everything; downloads the caption model (~140MB)

whisper-cppは任意です。なくてもすべての機能は使えますが、ライブ配信のクリップには字幕が付きません。

yt-dlpは最新の状態に保ってください(yt-dlp -U/brew upgrade yt-dlp)。YouTubeは古いバージョンを定期的に使えなくします。失敗の原因として最も多いのがこれです。

2. AIアプリに追加:

アプリ方法
Claude Code(推奨。clipperエージェントが含まれます)/plugin marketplace add Shoberman2/clipswarmの後に/plugin install clipswarm@clipswarm
Claude Code(MCPのみ)claude mcp add clipswarm -- npx -y clipswarm mcp --out ./clips
Claude Desktop設定 → 開発者 → 設定を編集し、以下のJSONを追加
ChatGPTデスクトップアプリ/Codexcodex mcp add clipswarm -- npx -y clipswarm mcp(Codex CLI、IDE拡張機能、ChatGPTデスクトップアプリで共有されます)
Cursor~/.cursor/mcp.jsonに、以下のJSONを追加
VS Codecode --add-mcp '{"name":"clipswarm","command":"npx","args":["-y","clipswarm","mcp"]}'
Gemini CLIgemini mcp add clipswarm npx -y clipswarm mcp
{ "mcpServers": { "clipswarm": { "command": "npx", "args": ["-y", "clipswarm", "mcp", "--out", "/Users/you/clips"] } } }

なぜclaude.aiやウェブ版ChatGPTでは使えないのですか? これらはホスト型サーバーにしか接続できません。YouTubeダウンローダーをホストすると、データセンターのIPアドレスがブロックされ、利用規約に関するリスクが生じ、50MBの動画をチャットウィンドウ経由で送信することになります。clipswarmはローカルで動作するため、こうした3つの問題はすべて解消されます。

使い方

プラグインをインストールした Claude Code で:

これらの動画ごとにクリッパーエージェントを並列で起動し、それぞれからバイラルショート動画に最適な場面を3つ選んでください:

https://www.youtube.com/@aljazeeraenglish/live の最後の60秒を、バイラルショート動画として切り出してください。

各 clipper エージェントは動画の文字起こしを読み、単独で成立する場面を選び、それぞれにフックを書いて、create_clips を呼び出します。これらはすべて同時に実行されます。

バイラル形式

オプションデフォルト
style"plain"9:16形式にするには "viral"
title動画タイトルヘッダーのフックです。エージェントは短く印象的なもの(10語以下)を書いてください。ヘッダーを付けない場合は ""
background"#000000"動画の背後の色(または "blur")
captionstrue1~3語ずつ表示する単語ごとの字幕で、現在の単語を強調表示します
accent"#FFE600"強調色

フレーム全体を常に表示します。 動画の重要な要素(スプレッドシート、グラフ、2人目の話者など)がフレーム内のどこにあっても見えるよう、clipswarm はトリミングもズームもしません。レイアウトはソースに合わせて変わります。

ソースレイアウト
ワイド画面(16:9、画面録画、ポッドキャスト)幅いっぱいに表示し、ヘッダーを上、字幕を下に配置して、黒背景の中央に表示
縦型(9:16のショート動画、スマートフォンの動画)フレームいっぱいに表示し、ヘッダーと字幕を動画に重ねて表示
正方形/4:3/その他収まる最大サイズに拡大し、何も切り落とさない

通常の動画では YouTube の自動字幕(単語ごとの正確なタイミング)を、ライブ配信や字幕のない動画ではローカルの whisper.cpp を使って字幕を生成します。どちらも利用できない場合でもクリップは生成され、理由を説明する warnings エントリーが結果に含まれます。

ライブ配信

現在ライブ配信中のストリームへのリンク(watch?v= またはチャンネルの /live リンク)を貼り付けてください。時刻はライブ配信の現在位置を基準にします。

切り出したい内容startend
最後の30秒-30"now"
2分前から20秒間"-2:00""-1:40"
特定の時刻に放送された内容"2026-10-08T00:51:00Z""2026-10-08T00:51:30Z"
  • 利用できるのは直近1時間程度です(YouTube の DVR ウィンドウ)。
  • 通常のライブクリップは高速化のためストリームコピーされ、直前のキーフレームから始まります(最大5秒早くなる場合があります)。結果の live.from/live.to には正確な実時間の範囲が示されます。フレーム単位で正確に切り出すには precise: true を使用してください。バイラルクリップは常にフレーム単位で正確に切り出されます。
  • end に未来の時刻は指定できません。配信された後にもう一度試してください。

Watch:クリップが自動で見つかります

clipswarm にカテゴリとスケジュールを指定すると、新しい動画を YouTube で検索し、最適な場面を選んで、外出中にバイラルクリップとしてレンダリングします。新しいクリップが届くと、Mac に通知が表示されます。

clipswarm watch add "netflix stock analysis" --every 6h          # what to look for, how often
clipswarm watch install                                          # background job (launchd on macOS)
clipswarm watch run --force                                      # or run it right now
clipswarm watch inbox                                            # what it found and clipped

または、エージェントにこう依頼してください:「12 時間ごとに新しい AI エージェント関連ニュースの動画を探して、最適な場面をクリップしてください。」(MCP ツール:create_watch、list_watches、run_watch、get_inbox、update_inbox_item、delete_watch、watch_scheduler。)

場面の選び方は、優先度の高い順に次のとおりです。

  1. AI。 Claude Code CLI がインストールされている場合、Claude がトランスクリプトを読み、単独で成立する場面を選び、各見出しにフックを書きます(例:「Netflix は 67 ドルですが、このモデルは 127 ドルと予測」)。これはご自身の Claude アカウントで実行されます。
  2. 最もリプレイされた場面。 十分に古い動画(通常は数日経過したもの)にある、YouTube のリプレイのピークを使います。
  3. トランスクリプトのヒューリスティック。 無料でオフライン動作します。質問、数字、強い主張、勢いのある箇所を評価します。

YouTube の字幕がない場合や、レート制限されている場合、ウォッチャーは音声のみをダウンロードし、whisper.cpp で文字起こしします。クリップにできなかったものは needs_agent として受信トレイに入り、エージェントが対応します。

オプションデフォルト
--every6h30m、6h、1d…(最小 5m)
--max-age72hこの期間内にアップロードされた動画のみ
--min-viewsなし再生回数の少ない動画を除外
--videos31 回の実行あたりの新しい動画数
--clips / --seconds2 / 45動画あたりのクリップ数、目標の長さ
--pickerauto強制する場合は ai、heatmap、transcript
--liveオフ現在ライブ配信中のストリームも受信トレイに一覧表示
--no-autoオフ動画の収集のみを行い、クリップは作成しない
--out~/clipswarm/<id>クリップの保存先

状態は ~/.clipswarm/ に保存されます(移動するには CLIPSWARM_HOME を設定します)。各動画は一度だけ処理されます。Linux では、watch install が crontab の行を表示し、clipswarm watch daemon を実行すると、どこでもフォアグラウンドループを動かせます。

仕組み

  1. 場面を見つけます。 エージェントは get_video_info、search_transcript、get_transcript を呼び出します。トランスクリプトは yt-dlp 経由で取得した YouTube の字幕を使い、キャッシュされます。
  2. 切り取ります。
    • 通常の動画: yt-dlp が指定された区間のみをダウンロードします。
    • ライブ配信: clipswarm は YouTube のローリング HLS プレイリスト(壁時計のタイムスタンプ付きの 5 秒セグメント)を読み込み、指定範囲をカバーするセグメントのみを取得します。
  3. バイラルにします。 clipswarm は単語ごとのタイミングを取得し、見出しと字幕のフレームを描画します(フォント → ベクターパス → PNG)。ffmpeg は、全体をトリミングしていない動画とそれらを 9:16 のキャンバス上で合成します。
  4. マシンを共有します。 すべてのエージェントのすべてのジョブは、1 つの同時実行数リミッターを通過し、YouTube で断続的に発生する 403 エラーに対して再試行されます。

コントリビューターの方は、コード全体の解説として docs/ARCHITECTURE.md をご覧ください。

MCP ツール

ツール機能
get_video_infoタイトル、チャンネル、再生時間、チャプター、liveStatus
get_transcript[m:ss] text 形式の簡潔なタイムスタンプ付きトランスクリプト。from/to を指定して範囲を絞り込むこともできます
search_transcriptフレーズが話されている箇所を、クリップに使える余白付きの時間範囲として返します
create_clipsライブ・通常を問わず、任意の数の動画から多数のクリップを並列に切り出します。オプション:style、title、captions、accent、background、label、vertical、maxHeight、precise
get_clipsまだレンダリング中のバッチの結果を取得します。create_clips は約 40 秒後に jobId を返すため、MCP クライアントの約 60 秒のタイムアウトで長時間のバッチが中断されることはありません
create_watch、list_watches、delete_watch、run_watchスケジュールされた YouTube のトピック検索と、任意の自動クリップ作成を管理します
get_inbox、update_inbox_item、watch_schedulerエージェントが対応する必要のある動画を確認し、オプトイン方式のバックグラウンドスケジューラーを管理します

CLI

clipswarm clip <url> 13:53 14:28 --viral --title "His best advice in 30 seconds"
clipswarm clip <live-url> -60 now --viral --title "This just happened live"
clipswarm clip <url> 1:23 1:58 --label raw-cut                    # plain clip
clipswarm batch jobs.json --out clips                             # many jobs at once, writes clips/manifest.json
clipswarm search <url> stay hungry
clipswarm transcript <url>
clipswarm setup

スケジュール監視

監視では、カテゴリ内で最近アップロードされた動画をYouTubeで検索し、見どころを切り抜けます。動画検索と切り抜きは、監視を実行するか、バックグラウンドスケジューラーをインストールしたときにのみ行われます。監視を追加しても、設定が保存されるだけです。

clipswarm watch add "AI research" --every 6h
clipswarm watch list
clipswarm watch run ai-research
clipswarm watch inbox
clipswarm watch remove ai-research

自動切り抜きはデフォルトで有効です。デフォルトの --picker auto は、利用可能な場合はローカルのClaude Code CLIを使用し、その後YouTubeのリプレイピークまたは文字起こしのヒューリスティックにフォールバックします。このClaude CLIの呼び出しでは設定済みのアカウントが使用され、利用枠を消費する場合があります。これを避けるには、--picker heatmap または --picker transcript を使用してください。--no-auto を指定すると、見つかった動画はAI エージェントが確認できるよう、受信箱に追加されます。自動で選定できない動画と、--live が有効な場合のライブ配信は、受信箱に追加されます。clipswarm watch install を実行すると、期限が到来した監視を5分ごとに確認するmacOS launchdジョブをインストールします。clipswarm watch uninstall を実行すると、そのジョブを削除します。監視の状態は ~/.clipswarm/state.json に保存されます(別の場所を使うには CLIPSWARM_HOME を設定してください)。

設定

環境変数デフォルト
CLIPSWARM_CONCURRENCYmin(6, cpus)同時に実行できるダウンロード/エンコードジョブの最大数。すべての呼び出し元で共有されます。正の整数を指定してください
CLIPSWARM_MAX_CLIP_SEC600誤って動画全体をダウンロードするのを防ぎます。0より大きい値を指定してください
CLIPSWARM_RETRIES3一時的なYouTubeエラーに対する再試行回数。0以上の整数を指定してください
CLIPSWARM_WHISPER_MODEL~/.cache/clipswarm/ggml-base.en.binwhisper.cppの任意のモデル。多言語モデルも使用できます
CLIPSWARM_FONTバンドルされているMontserrat Black見出しや字幕に使う任意のTTF/OTF

プラットフォームのサポート

macOSLinuxWindows
クリップ、バイラル形式、ライブ配信✓(ハードウェアエンコード)✓✓
監視✓ launchd✓ watch install がcron行を表示✓ タスクスケジューラ
通知✓––

CIでは、3つすべてのプラットフォームでテストスイート(実際のffmpegレンダリングを含む)を実行します。

既知の制限事項

  • YouTubeの変更によってダウンローダーが動作しなくなることがあります。 クリップの作成に失敗し始めたら、まずyt-dlpを更新してください(yt-dlp -U)。clipswarmのエラーメッセージにもその旨が表示されます。
  • 頻繁に使用すると、レート制限がかかる場合があります。 YouTubeは、多数のリクエストの後に字幕に対してHTTP 429を返すことがあります。clipswarmは再試行し、whisper.cppを使って音声をローカルで文字起こしする方法にフォールバックします。
  • ライブ配信: 利用できるのは直近約1時間分のみで、配信中は文字起こしがありません。
  • 「最もリプレイされた」データは、動画の公開から数日経つまで表示されないため、監視ではまずAIによる選定を使用します。
  • 横長の動画はスマートフォンでは小さく表示されます。 clipswarmは動画をクロップしないためです。これは意図した動作で、関連する内容が切り落とされることはありません。

責任ある利用

使用する権利のあるコンテンツのみを切り抜いてください。自分の動画、ライセンスを取得したコンテンツ、またはお住まいの地域のフェアユースの対象となる利用が該当します。ダウンロードはYouTubeの利用規約で制限されている場合があります。このツールの使用方法については、ご自身で責任を負ってください。

ロードマップ(協力者募集中)

ユーザーからの要望をもとに進めます。Issueを作成してください。

  • 字幕スタイルの追加(カラオケ風のボックス、絵文字、単語ごとのポップ表示)
  • ローカルファイルや他のプラットフォームへの対応(yt-dlpが対応するサイトのほとんどは、すでに動作します)
  • リモートエージェント向けのオプションのホストモード/HTTPトランスポート

ライセンス

MIT。バンドルされているMontserratフォントは、SIL Open Font Licenseの下で提供されています。協力する方法については、CONTRIBUTING.mdをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。