Communitygithub.com

perso-ai/perso-dubbing-plugin

Perso クリップスキルのコンパニオン:ショートフォームクリップツールと Perso 吹き替えプラグイン。ドキュメント/media にデモ GIF があります。

perso-dubbing-plugin とは?

このスキルは、Perso プラットフォーム上で長い動画から短いクリップを切り出し、リフレームするツールです。主に3つのエントリーポイントがあります。(1) ユーザーが明示的なタイムコードを指定した場合は、ローカルファイルを直接カットします(STT不要、クレジット消費なし)。(2) 既存の STT プロジェクトがある場合は、AI がハイライトを選択し、`--plan` と `--clips` フローでクリップを生成します。(3) 生の動画で「良い瞬間を見つけて」と指示された場合は、ユーザーに STT を使うか(クレジット消費)手動でタイムコードを指定するかを確認します。クリップ後は、字幕追加の有無をユーザーに確認し、追加する場合は srt スキルのプリセットギャラリーから選択させ、サイドカーとスタイル設定を行います。オフラインの `--video --ranges` 操作ではキー確認は不要で、バックグラウンドでエンコード処理が実行されます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/perso-ai/perso-dubbing-plugin/tree/main/skills/clip

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

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

ドキュメント

/clip

動画をショートクリップにカットし、リフレームします。字幕はこのスキルの仕事ではありません — カット後、srt スキルがスタイル設定を行います(以下の引き継ぎを参照)。

エントリーポイント

  • 明示的なタイムコード(「この動画の 2:00–3:00 をカット」)→ ローカルファイルを直接カット: --video "<file>" --ranges "2:00-3:00,..."。STT 不要、キー不要、クレジット不要。

  • STT プロジェクトでの AI ハイライト選択 → --plan してから --clips(以下のフロー)。プロジェクトのトランスクリプトと単語タイムスタンプが必要です。

  • 生の動画、「良い瞬間を見つけて」(タイムコードなし)→ トランスクリプトなしではハイライトを選択できないため、ユーザーにどちらを希望するか尋ねてください:

    • STT(適切な選択、クレジット消費): 最初に srt スキルの STT を実行してプロジェクトを作成し、その後 --plan/--clips でクリップします。
    • 無料(STT なし): ユーザーがタイムコードを指定し、--video --ranges でカットします。

    ユーザーの選択に従って進めてください。許可なく STT(クレジット消費)を実行しないでください。

コアルール

  • ワーカーのみが生のキーを参照します — 決して開いたり、エコーしたり、引数として渡したりしないでください。
  • キー制限は --project/--plan/--clips にのみ適用されます。 --video --ranges と --sidecars は完全にオフラインです — これらのためにキーチェックや登録を実行しないでください。
  • バックグラウンドで実行 — エンコードに時間がかかります。
  • このスキルは吹き替えスキルのライブラリを共有します: dubbing フォルダーは clip の隣にインストールされている必要があります。

フロー

フェーズ 1 — 計画。 node scripts/clip.mjs --project <seq> --plan は、サマリーのセクションマップ(トピックガイド)と完全な文のトランスクリプトを出力します。各行は order [start-end] text の形式です。

フェーズ 2 — 選択してカット。 トランスクリプトを読み、各クリップを { "title": "...", "start_order": N, "end_order": M } の形式で選択します。評価基準:

  • 最初にフック — 注目を集める文(質問、大胆な主張、面白い/驚くような発言)で開始します。
  • 最初の完全な文で終わるのではなく、瞬間が解決するところで終了。 ビートの終わりまで続けてください — 反応全体、フォロースルー、および二次的なパンチライン全体。見かけ上の終わりの数文先まで読んでください。それらが同じ反応であれば保持します。
  • トランジションでカット — エネルギーが低下したり、トーンが変わったりする直前(興奮した反応 → 落ち着いたナレーション)で終了します。
  • ピーク — 面白い/驚くべき/感情的な/引用可能な瞬間を優先。ハイライトは、リテラルな明かしの1〜2文後に来ることが多いです。
  • 長さ 30〜90秒 — ワーカーは範囲外の場合に警告します。早期にカットするよりも、完全なアークを優先します。
  • タイトル — その瞬間を説明します。ファイル名になります(01_<title>.mp4)。

セクションはチャプター長です — セクションマップをガイドとしてのみ使用し、フックに絞り込んでください。

実行: node scripts/clip.mjs --project <seq> --clips '<json>' [--out folder](--clips は @path も受け付けます)。横長(16:9)のソースは 9:16(ドラマショートのレターボックス)にリフレームされます。縦長のソースはそのまま保持されます。ワーカーはクリップと clips.json マニフェスト(各クリップと後で字幕に必要なトランスクリプトスライスを記録)を書き込みます。[progress] を中継し、[clips-output] からファイルを提供します。

字幕 → srt スキルへの引き継ぎ

字幕はデフォルトでオフです。カット後、ユーザーにクリップの準備ができたことを伝え、字幕を追加するかどうかを尋ねてください。 ユーザーが字幕を希望する場合、最初にプリセットを表示してください — 決して直接 1 つにジャンプしないでください。 これは srt スキルのスタイル設定フローとまったく同じです: Claude アプリではインタラクティブな ギャラリー(選択 + 適用)、その他の場所では静的な ../srt/assets/style_presets.png + node ../srt/scripts/style.mjs --list-presets メニュー。ユーザーにプリセットを選んでもらうか、スタイルを説明してもらいます(karaoke/bold-punch のようなショートフォームプリセットがクリップに適しています)。ユーザーが選択した後にのみ:

  1. サイドカーを書き込む: node scripts/clip.mjs --sidecars "<out>/clips.json" — カラオケプリセットの場合のみ --karaoke を追加します(これにより、測定された単語タイミングのための <clip>.timestamps.json も書き込まれます。通常のプリセットには .srt のみが必要です)。
  2. srt スキルで各クリップをスタイル設定: node ../srt/scripts/style.mjs "<clip>.mp4" "<clip>.srt" --preset <id>(カラオケの場合は --word-timestamps "<clip>.timestamps.json" を追加)。srt スキルの「スタイル設定と字幕焼き付け」セクションを参照してください。

テレメトリ(サイレント)のために --host <runtime> を追加します。これは他のワーカーと同じです。

設定(環境変数)

/dubbing / /srt と同じ(PERSO_API_BASE/PERSO_MEDIA_BASE — https perso.ai ホストのみ、PERSO_SPACE_SEQ、XP_API_KEY、PERSO_NO_TELEMETRY、…)。

Individual skills in this repo

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

関連スキル