mcpField
V
video-content-analysis

video-content-analysis

github.com/gasseraneデータ・データベース3663 回インストール6 日前に更新
リポジトリ

video-content-analysis について

video-content-analysisは、動画ファイルからマニフェストを中心とする要約、文字起こし、フレーム画像を作るスキルです。録画を分析し、構造化した結果を後続の専門ワークフローに渡すチーム向けで、プライバシー区分と同意確認に基づいて処理します。

主な機能

  1. 01動画ファイルの文字起こし
  2. 02要約と連番付きフレーム画像の作成
  3. 03構造化マニフェストへの出力記録
  4. 04話者ダイアライゼーションの任意実行
  5. 05プライバシー区分と同意の確認
  6. 06ブランド付きWord要約の任意作成

活用シーン

  1. 01フォーカスグループ録画の定性コーディング準備
  2. 02ウェビナーや研修動画の要約
  3. 03構造化した動画分析結果の後続専門家への引き継ぎ

MCP 対応

内部または公開資料では、ユーザーがMicrosoft 365 MCPサーバー経由で取得したローカルのMicrosoft 365 Stream字幕ファイルを使い、Whisperによる文字起こしを省略できます。

インストール

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

$npx skills add https://github.com/gasserane/personal-skills --skill video-content-analysis

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

同梱ファイル

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

.gitignore
CHANGELOG.md
setup/
.gitignore
constants.psd1
constants.py
Generate-TestFixture.ps1
InstallDetect.psm1
InstallDetect.Tests.ps1
README.md
requirements.txt
setup-video-pipeline.ps1
smoke-test.py
test_smoke_test.py

詳細

video-content-analysis

/analyze-video <path> は、1 つの動画ファイルからマニフェストを軸にした成果物一式を生成します。後続の専門家(qualitative-coding-specialist、intersectionality-analyst、gender-transformative-assessor、sbcc-campaign-mel-specialist)は、マニフェストを直接利用します。

使用する場面

動画、録画、FGD、ウェビナー、トレーニングセッション、または SBCC クリップを指定し、文字起こし、要約、話者分析、または後続のコーディングを求めるリクエストで起動します。Ane が /analyze-video <path> を直接入力した場合も起動します。

ライブ音声のキャプチャ(v1 ではファイルベースのみ)や、動画以外のメディア(音声のみのファイルは v1 の対象外)では起動しないでください。

必要な入力

まとめて質問してください。最初の 3 項目は必須です。

  1. 動画のパス(必須)。ローカルファイル。対応コンテナ:mp4、mkv、mov、webm。
  2. プライバシーティア(必須)。sensitive、internal、public のいずれか。デフォルトは sensitive です。機密性の高いコンテンツ(FGD、インタビュー、インフォームド・コンセントに関する制約があるもの)はローカルマシン上にとどめます。内部向け/公開向けのコンテンツでは、利用可能な場合に Microsoft 365 Stream のキャプションを使用できます。
  3. 同意ステータス(必須)。not_applicable、consent_internal_use_only、consent_research_anonymised、consent_research_attributed、consent_publication_anonymised、consent_publication_attributed、consent_unclear のいずれか。consent_unclear の場合、後続の分析は実行されません。
  4. 言語ヒント(任意)。Whisper 用の 2 文字コード(例:ro、en、fr)。自動検出する場合は省略します。
  5. 話者分離を実行しますか?(任意、デフォルトはいいえ)。--diarize を指定すると、文字起こしの後に pyannote.audio を実行します。「誰の声が聞こえたか」の分析に必要です。実行時間が約 50% 増加します。
  6. ブランドテンプレートを使った Word 形式の要約を作成しますか?(任意、デフォルトはいいえ)。--brand-summary を指定すると、プレーンな summary.md に加えて、IPPF Visual Identity 2025 に準拠した summary.docx を作成します。
  7. 出力ディレクトリ(任意)。デフォルトは <video-parent>/<video-stem>.video-analysis/ です。
  8. Microsoft 365 のキャプションファイル(任意、内部向け/公開向けのみ)。ユーザーが Microsoft 365 MCP サーバーを通じてすでに取得したローカルの .vtt パスです。Whisper をスキップします。

手順

Step 1 — 入力を収集する

Ane に必須入力 1〜3 を 1 つのメッセージで尋ねます。呼び出し時に --diarize、--brand-summary、またはキャプションのパスが渡されている場合は、再度尋ねないでください。明示された値を優先します。

Step 2 — 不足している場合は同意メタデータを取得する

同意メタデータが不完全な場合(ステータスは設定されているが、documented_in/documented_date/responsible_person がない場合)、Ane に 2 回目の質問をまとめて行います。取得した値はオーケストレーターの呼び出しに渡し、マニフェストに記録されるようにします。

Step 3 — オーケストレーターを呼び出す

Bash を使って、venv の Python から 1 行の analyze_video(...) 呼び出しを実行します。実行前に ffmpeg の PATH 拡張を必ず適用してください。取得した kwargs を渡します。

$env:PATH = "$env:LOCALAPPDATA\Microsoft\WinGet\Packages\Gyan.FFmpeg_Microsoft.Winget.Source_8wekyb3d8bbwe\ffmpeg-8.1.1-full_build\bin;$env:PATH"
& 'C:/Users/AGasser/OneDrive/GitHub/personal-skills/skills/video-content-analysis/venv/Scripts/python.exe' -c @'
from pathlib import Path
from ane_package.video.orchestrator import analyze_video
from ane_package.video.types import ConsentMetadata, ConsentStatus, PrivacyTier
result = analyze_video(
    Path(r"<VIDEO PATH>"),
    privacy_tier=PrivacyTier.<TIER>,
    consent=ConsentMetadata(
        status=ConsentStatus.<STATUS>,
        documented_in=r"<PATH OR NOTE>",
        documented_date="<ISO DATE OR EMPTY>",
        responsible_person="<NAME OR EMPTY>",
    ),
    language=<"ro" OR None>,
    diarize=<True OR False>,
    brand_summary=<True OR False>,
    output_dir=<PATH OR None>,
    m365_caption_path=<PATH OR None>,
)
print("MANIFEST:", result.manifest_path)
print("SUMMARY:", result.summary_path)
print("BRAND_SUMMARY:", result.brand_summary_path)
'@
Step 4 — Tier 1 BLUF 要約をインラインで表示する

オーケストレーターの戻り値から summary.md を読み取り、会話内に表示します。最後の行にマニフェストのパスを追加し、Ane が /ann または専門家に渡せるようにします。

Step 5 — 実行ごとのフィードバックプロンプト

返答する前にフィードバックプロンプトを実行します。venv の Python を使用してください。

& 'C:/Users/AGasser/OneDrive/GitHub/personal-skills/skills/video-content-analysis/venv/Scripts/python.exe' -c @'
from ane_package.video.feedback import prompt_verdict
v, n = prompt_verdict()
print(f"VERDICT={v.value}")
print(f"NOTE={n or ''}")
'@

判定が partial または failed の場合、判定と注記を ~/.claude/skills/video-content-analysis/telemetry.jsonl に追記し、次回の振り返りで確認できるようにします。オーケストレーターはすでに実行のテレメトリー行を書き込んでいます。この 2 回目の書き込みは、source_hash をキーとする判定の更新です。(プロンプトのタイミングを見直す際に、Stage 6 でこれらをオーケストレーター内の単一の呼び出しにまとめます。)

回帰フィクスチャの保存(判定:partial / failed)

実行が partial または failed で終了すると、このスキルは tests/video/fixtures/auto/<source_hash>/ に回帰フィクスチャとして保存するかどうかを確認します。

ティアによる制限:

  • privacy: public かつ consent: not_applicable | consent_publication_* → 完全保存(ソース+文字起こし+フレーム+マニフェスト)
  • その他の対象となる判定 → メタデータのみ保存(同意情報+話者ラベルを含み、文字起こしテキストとソースパスを除去した、編集済みマニフェスト)
  • consent_unclear → 判定に関係なく、全面的にブロック

自動保存ディレクトリは gitignore に登録されています。自動保存されたフィクスチャは、レビューして選択的にコミットするまでローカルにのみ存在します。

ステップ 6 — 返却

マニフェストのパス、サマリーのパス、および(存在する場合)ブランドサマリーのパスを Ane に返します。次の操作を提案します。

  • 「詳細なコーディングを行うには、/ann analyse the focus group findings in <manifest> を実行します。」
  • 「複数の対象を横断して分析するには、/ann compute speaker time-share by gender across these 3 manifests を実行します。」
  • 「スライドデッキを確認するには、summary.docx を開きます」(--brand-summary が渡された場合)。

振り返りプロトコルの実行

/analyze-video --retrospective

~/.claude/skills/video-content-analysis/telemetry.jsonl を読み込み、mel_wiki/wiki/calibration/video-content-analysis.md の7つのアンカーに照らしてパフォーマンスを算出し、繰り返し発生する失敗を特定して、~/.claude/skills/video-content-analysis/retrospectives/retrospective-YYYY-MM-DD.md に書き込みます。

提案のみです。 振り返りによって、スキル、仕様、コードが編集されることはありません。変更を反映する前に、Ane がレビューして承認します。

また、成功した /analyze-video の実行終了時に should_run_retrospective(state) が True を返すと、振り返りが自動的に実行されます。つまり、成功した実行が10回に達した時点、または前回の振り返りから4週間が経過した時点のいずれか早い方です。

出力

  • manifest.json — 後続の専門処理で使用する唯一の信頼できる情報源です。
  • summary.md — Tier 1 の BLUF サマリー(プレーンな Markdown)。
  • summary.docx — IPPF Visual Identity 2025 ブランドテンプレート(--brand-summary を指定した場合)。
  • transcript.json / transcript.txt / transcript.vtt — プリミティブによって生成されます。
  • frames/ — 連番が付いた PNG フレーム。
  • network.log — 1行の監査記録。

キャリブレーションアンカー

このスキルの運用品質ベンチマークは、作業フォルダー内の mel_wiki/wiki/calibration/video-content-analysis.md にあります。

7つのアンカー:

  • スキーマの妥当性(マニフェストの100%が manifest_v1.schema.json に合格すること)
  • 文字起こしの品質 — ルーマニア語(合成ルーマニア語 FGD フィクスチャで WER < 15%)
  • プライバシーの適用(sensitive ティアで network_egress != none がゼロであること)
  • 同意の適用(consent_unclear の素材から公開される成果物がゼロであること)
  • データギャップの検出(audio_quality_flags[] の各フラグが data_gaps[] の行に対応していること。信頼度に基づく拡張は Stage 4.5 の完了後に適用)
  • パフォーマンス(このハードウェアで、話者分離を含む60分の FGD を実時間90分未満で処理すること)
  • ユーザー満足度(直近10回の実行の判定のうち、{useful, partial} に該当する割合が80%以上)

これらのアンカーは振り返りプロトコルで使用されます。上記のセクションを参照してください。

エビデンスベース: Stage 5 実装計画は docs/superpowers/plans/2026-05-09-stage-5-skill-orchestrator.md、設計仕様は docs/superpowers/specs/2026-05-08-video-content-analysis-design.md の Sections 5–8 + 10、IPPF Visual Identity 2025 ブランドテンプレートは ane_package.reporting.brand.IPPF_FORMAT_TEMPLATE にあります。

コメント