audio-transcriber
音声録音をLLMと連携してインテリジェントに要約し、プロフェッショナルなMarkdownドキュメントへ変換するスキル。会議や講演などの録音データを構造化されたドキュメントとして自動生成したい場面で活躍します。
description の原文を見る
Transform audio recordings into professional Markdown documentation with intelligent summaries using LLM integration
SKILL.md 本文
目的
このスキルは、音声からテキストへの文字起こしを自動化し、プロフェッショナルなMarkdown出力を生成します。話者、タイムスタンプ、言語、ファイルサイズ、再生時間などの豊富なメタデータを抽出し、構造化された会議録とエグゼクティブサマリーを生成します。Faster-WhisperまたはWhisperを使用し、ゼロ設定で動作し、ハードコードされたパスやAPIキーなしにプロジェクト全体で普遍的に機能します。
Plaudのようなツールに触発されたこのスキルは、生の音声録音を実行可能なドキュメントに変換し、会議、インタビュー、講演、コンテンツ分析に最適です。
使用時期
以下の場合にこのスキルを実行してください:
- ユーザーが音声/ビデオファイルをテキストに文字起こしする必要がある
- ユーザーが録音から会議録を自動生成したい
- ユーザーが会話で話者識別(ダイアライゼーション)を必要としている
- ユーザーが字幕/キャプション(SRT、VTT形式)が必要
- ユーザーが長い音声コンテンツのエグゼクティブサマリーを求めている
- ユーザーが「この音声を文字起こしして」「音声をテキストに変換して」「録音から会議記録を生成して」などの変種を質問している
- ユーザーが一般的な形式の音声ファイル(MP3、WAV、M4A、OGG、FLAC、WEBM)を持っている
ワークフロー
ステップ 0: 検出(文字起こしツールの自動検出)
目的: ユーザー設定なしに利用可能な文字起こしエンジンを特定します。
アクション:
インストールされているツールを検出するために検出コマンドを実行します:
# Faster-Whisper の確認(推奨 - 4~5倍高速)
if python3 -c "import faster_whisper" 2>/dev/null; then
TRANSCRIBER="faster-whisper"
echo "✅ Faster-Whisper detected (optimized)"
# 元の Whisper にフォールバック
elif python3 -c "import whisper" 2>/dev/null; then
TRANSCRIBER="whisper"
echo "✅ OpenAI Whisper detected"
else
TRANSCRIBER="none"
echo "⚠️ No transcription tool found"
fi
# ffmpeg の確認(音声形式変換)
if command -v ffmpeg &>/dev/null; then
echo "✅ ffmpeg available (format conversion enabled)"
else
echo "ℹ️ ffmpeg not found (limited format support)"
fi
文字起こしツールが見つからない場合:
提供されたスクリプトを使用した自動インストールを提案します:
echo "⚠️ No transcription tool found"
echo ""
echo "🔧 Auto-install dependencies? (Recommended)"
read -p "Run installation script? [Y/n]: " AUTO_INSTALL
if [[ ! "$AUTO_INSTALL" =~ ^[Nn] ]]; then
# スキルディレクトリを取得(リポジトリとシンボリックリンク設置の両方に対応)
SKILL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# インストールスクリプトを実行
if [[ -f "$SKILL_DIR/scripts/install-requirements.sh" ]]; then
bash "$SKILL_DIR/scripts/install-requirements.sh"
else
echo "❌ Installation script not found"
echo ""
echo "📦 Manual installation:"
echo " pip install faster-whisper # Recommended"
echo " pip install openai-whisper # Alternative"
echo " brew install ffmpeg # Optional (macOS)"
exit 1
fi
# インストール成功を確認
if python3 -c "import faster_whisper" 2>/dev/null || python3 -c "import whisper" 2>/dev/null; then
echo "✅ Installation successful! Proceeding with transcription..."
else
echo "❌ Installation failed. Please install manually."
exit 1
fi
else
echo ""
echo "📦 Manual installation required:"
echo ""
echo "Recommended (fastest):"
echo " pip install faster-whisper"
echo ""
echo "Alternative (original):"
echo " pip install openai-whisper"
echo ""
echo "Optional (format conversion):"
echo " brew install ffmpeg # macOS"
echo " apt install ffmpeg # Linux"
echo ""
exit 1
fi
これにより、ユーザーは1回の確認で依存関係をインストールするか、必要に応じて手動インストールを選択できます。
文字起こしツールが見つかった場合:
ステップ 0b(CLI検出)に進みます。
ステップ 1: 音声ファイルの検証
目的: ファイルが存在することを確認し、形式をチェックし、メタデータを抽出します。
アクション:
-
ユーザーからファイルパスまたはURLを受け取る:
- ローカルファイル:
meeting.mp3 - URL:
https://example.com/audio.mp3(一時ディレクトリにダウンロード)
- ローカルファイル:
-
ファイルが存在することを確認:
if [[ ! -f "$AUDIO_FILE" ]]; then
echo "❌ File not found: $AUDIO_FILE"
exit 1
fi
- ffprobe またはファイルユーティリティを使用してメタデータを抽出:
# ファイルサイズを取得
FILE_SIZE=$(du -h "$AUDIO_FILE" | cut -f1)
# ffprobe を使用して再生時間と形式を取得
DURATION=$(ffprobe -v error -show_entries format=duration \
-of default=noprint_wrappers=1:nokey=1 "$AUDIO_FILE" 2>/dev/null)
FORMAT=$(ffprobe -v error -select_streams a:0 -show_entries \
stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$AUDIO_FILE" 2>/dev/null)
# 再生時間を HH:MM:SS に変換
DURATION_HMS=$(date -u -r "$DURATION" +%H:%M:%S 2>/dev/null || echo "Unknown")
- ファイルサイズをチェック(クラウドAPI用に大きい場合は警告):
SIZE_MB=$(du -m "$AUDIO_FILE" | cut -f1)
if [[ $SIZE_MB -gt 25 ]]; then
echo "⚠️ Large file ($FILE_SIZE) - processing may take several minutes"
fi
- 形式を検証(対応形式:MP3、WAV、M4A、OGG、FLAC、WEBM):
EXTENSION="${AUDIO_FILE##*.}"
SUPPORTED_FORMATS=("mp3" "wav" "m4a" "ogg" "flac" "webm" "mp4")
if [[ ! " ${SUPPORTED_FORMATS[@]} " =~ " ${EXTENSION,,} " ]]; then
echo "⚠️ Unsupported format: $EXTENSION"
if command -v ffmpeg &>/dev/null; then
echo "🔄 Converting to WAV..."
ffmpeg -i "$AUDIO_FILE" -ar 16000 "${AUDIO_FILE%.*}.wav" -y
AUDIO_FILE="${AUDIO_FILE%.*}.wav"
else
echo "❌ Install ffmpeg to convert formats: brew install ffmpeg"
exit 1
fi
fi
ステップ 3: Markdown出力の生成
目的: メタデータ、文字起こし、会議録、サマリーを含む構造化されたMarkdownを作成します。
出力テンプレート:
# Audio Transcription Report
## 📊 Metadata
| Field | Value |
|-------|-------|
| **File Name** | {filename} |
| **File Size** | {file_size} |
| **Duration** | {duration_hms} |
| **Language** | {language} ({language_code}) |
| **Processed Date** | {process_date} |
| **Speakers Identified** | {num_speakers} |
| **Transcription Engine** | {engine} (model: {model}) |
## 📋 Meeting Minutes
### Participants
- {speaker_1}
- {speaker_2}
- ...
### Topics Discussed
1. **{topic_1}** ({timestamp})
- {key_point_1}
- {key_point_2}
2. **{topic_2}** ({timestamp})
- {key_point_1}
### Decisions Made
- ✅ {decision_1}
- ✅ {decision_2}
### Action Items
- [ ] **{action_1}** - Assigned to: {speaker} - Due: {date_if_mentioned}
- [ ] **{action_2}** - Assigned to: {speaker}
*Generated by audio-transcriber skill v1.0.0*
*Transcription engine: {engine} | Processing time: {elapsed_time}s*
実装:
インテリジェントなサマリー化のためにPythonまたはbashをAIモデル(Claude/GPT)と共に使用します:
def generate_meeting_minutes(segments):
"""文字起こしからトピック、決定、アクションアイテムを抽出します。"""
# セグメントをトピック別にグループ化(タイムスタンプで単純クラスタリング)
topics = cluster_by_topic(segments)
# アクションアイテムを特定(キーワード:"should"、"will"、"need to"、"action")
action_items = extract_action_items(segments)
# 決定を特定(キーワード:"decided"、"agreed"、"approved")
decisions = extract_decisions(segments)
return {
"topics": topics,
"decisions": decisions,
"action_items": action_items
}
def generate_summary(segments, max_paragraphs=5):
"""AIを使用してエグゼクティブサマリーを作成します(Claude/GPT API またはローカルモデル経由)。"""
full_text = " ".join([s["text"] for s in segments])
# Chain of Density アプローチを使用(prompt-engineer フレームワークから)
summary_prompt = f"""
Summarize the following transcription in {max_paragraphs} concise paragraphs.
Focus on key topics, decisions, and action items.
Transcription:
{full_text}
"""
# AIモデルを呼び出し(プレースホルダー - ユーザーはClaude APIを統合するか、ローカルモデルを使用できます)
summary = call_ai_model(summary_prompt)
return summary
出力ファイル命名:
# v1.1.0: タイムスタンプを使用して上書きを回避
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
TRANSCRIPT_FILE="transcript-${TIMESTAMP}.md"
ATA_FILE="ata-${TIMESTAMP}.md"
echo "$TRANSCRIPT_CONTENT" > "$TRANSCRIPT_FILE"
echo "✅ Transcript salvo: $TRANSCRIPT_FILE"
if [[ -n "$ATA_CONTENT" ]]; then
echo "$ATA_CONTENT" > "$ATA_FILE"
echo "✅ Ata salva: $ATA_FILE"
fi
シナリオ A: ユーザーがカスタムプロンプトを提供
ワークフロー:
-
ユーザーのプロンプトを表示:
📝 Prompt fornecido pelo usuário: ┌──────────────────────────────────┐ │ [User's prompt preview] │ └──────────────────────────────────┘ -
prompt-engineer が利用可能な場合、自動的に改善:
🔧 Melhorando prompt com prompt-engineer... [Invokes: gh copilot -p "melhore este prompt: {user_prompt}"] -
両方のバージョンを表示:
✨ Versão melhorada: ┌──────────────────────────────────┐ │ Role: Você é um documentador... │ │ Instructions: Transforme... │ │ Steps: 1) ... 2) ... │ │ End Goal: ... │ └──────────────────────────────────┘ 📝 Versão original: ┌──────────────────────────────────┐ │ [User's original prompt] │ └──────────────────────────────────┘ -
どちらを使用するかを質問:
💡 Usar versão melhorada? [s/n] (default: s): -
選択されたプロンプトで処理:
- "s" の場合:改善版を使用
- "n" の場合:オリジナルを使用
LLM処理(両方のシナリオ)
プロンプトが確定したら:
from rich.progress import Progress, SpinnerColumn, TextColumn
def process_with_llm(transcript, prompt, cli_tool='claude'):
full_prompt = f"{prompt}\n\n---\n\nTranscrição:\n\n{transcript}"
with Progress(
SpinnerColumn(),
TextColumn("[progress.description]{task.description}"),
transient=True
) as progress:
progress.add_task(
description=f"🤖 Processando com {cli_tool}...",
total=None
)
if cli_tool == 'claude':
result = subprocess.run(
['claude', '-'],
input=full_prompt,
capture_output=True,
text=True,
timeout=300 # 5分
)
elif cli_tool == 'gh-copilot':
result = subprocess.run(
['gh', 'copilot', 'suggest', '-t', 'shell', full_prompt],
capture_output=True,
text=True,
timeout=300
)
if result.returncode == 0:
return result.stdout.strip()
else:
return None
進行状況の出力:
🤖 Processando com claude... ⠋
[完了後:]
✅ Ata gerada com sucesso!
最終出力
成功(両方のファイル):
💾 Salvando arquivos...
✅ Arquivos criados:
- transcript-20260203-023045.md (transcript puro)
- ata-20260203-023045.md (processado com LLM)
🧹 Removidos arquivos temporários: metadata.json, transcription.json
✅ Concluído! Tempo total: 3m 45s
文字起こしのみ(ユーザーがLLMを拒否):
💾 Salvando arquivos...
✅ Arquivo criado:
- transcript-20260203-023045.md
ℹ️ Ata não gerada (processamento LLM recusado pelo usuário)
🧹 Removidos arquivos temporários: metadata.json, transcription.json
✅ Concluído!
ステップ 5: 結果サマリーを表示
目的: 完了状態と次のステップを表示します。
出力:
echo ""
echo "✅ Transcription Complete!"
echo ""
echo "📊 Results:"
echo " File: $OUTPUT_FILE"
echo " Language: $LANGUAGE"
echo " Duration: $DURATION_HMS"
echo " Speakers: $NUM_SPEAKERS"
echo " Words: $WORD_COUNT"
echo " Processing time: ${ELAPSED_TIME}s"
echo ""
echo "📝 Generated:"
echo " - $OUTPUT_FILE (Markdown report)"
[if alternative formats:]
echo " - ${OUTPUT_FILE%.*}.srt (Subtitles)"
echo " - ${OUTPUT_FILE%.*}.json (Structured data)"
echo ""
echo "🎯 Next steps:"
echo " 1. Review meeting minutes and action items"
echo " 2. Share report with participants"
echo " 3. Track action items to completion"
使用例
例 1: 基本的な文字起こし
ユーザー入力:
copilot> transcribe audio to markdown: meeting-2026-02-02.mp3
スキル出力:
✅ Faster-Whisper detected (optimized)
✅ ffmpeg available (format conversion enabled)
📂 File: meeting-2026-02-02.mp3
📊 Size: 12.3 MB
⏱️ Duration: 00:45:32
🎙️ Processing...
[████████████████████] 100%
✅ Language detected: Portuguese (pt-BR)
👥 Speakers identified: 4
📝 Generating Markdown output...
✅ Transcription Complete!
📊 Results:
File: meeting-2026-02-02.md
Language: pt-BR
Duration: 00:45:32
Speakers: 4
Words: 6,842
Processing time: 127s
📝 Generated:
- meeting-2026-02-02.md (Markdown report)
🎯 Next steps:
1. Review meeting minutes and action items
2. Share report with participants
3. Track action items to completion
例 3: バッチ処理
ユーザー入力:
copilot> transcreva estes áudios: recordings/*.mp3
スキル出力:
📦 Batch mode: 5 files found
1. team-standup.mp3
2. client-call.mp3
3. brainstorm-session.mp3
4. product-demo.mp3
5. retrospective.mp3
🎙️ Processing batch...
[1/5] team-standup.mp3 ✅ (2m 34s)
[2/5] client-call.mp3 ✅ (15m 12s)
[3/5] brainstorm-session.mp3 ✅ (8m 47s)
[4/5] product-demo.mp3 ✅ (22m 03s)
[5/5] retrospective.mp3 ✅ (11m 28s)
✅ Batch Complete!
📝 Generated 5 Markdown reports
⏱️ Total processing time: 6m 15s
例 5: 大容量ファイルの警告
ユーザー入力:
copilot> transcribe audio to markdown: conference-keynote.mp3
スキル出力:
✅ Faster-Whisper detected (optimized)
📂 File: conference-keynote.mp3
📊 Size: 87.2 MB
⏱️ Duration: 02:15:47
⚠️ Large file (87.2 MB) - processing may take several minutes
Continue? [Y/n]:
ユーザー: Y
🎙️ Processing... (this may take 10-15 minutes)
[████░░░░░░░░░░░░░░░░] 20% - Estimated time remaining: 12m
このスキルはプラットフォーム非依存で、GitHub Copilot CLIが利用可能な任意のターミナルコンテキストで機能します。特定のプロジェクト設定や外部APIに依存せず、ゼロ設定の哲学に従っています。
制限事項
- このスキルは、タスクが上記で説明されたスコープに明確に一致する場合にのみ使用してください。
- 出力を環境固有の検証、テスト、または専門家のレビューの代替とは考えないでください。
- 必要な入力、許可、安全性境界、または成功基準が不足している場合は、停止して説明を求めてください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- sickn33
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/sickn33/antigravity-awesome-skills / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。