Agent Skills by ALSEL
汎用個人生産性⭐ リポ 4品質スコア 71/100

meeting-minutes

会議の文字起こしから実質的なコンテンツを抽出し、重要な議論は原文のまま保持しながら、雑談や不適切な言葉遣いを除外します。

description の原文を見る

Extract substantive content from a meeting transcript, preserving important discussions verbatim and filtering out chitchat and inappropriate language

SKILL.md 本文

ミーティングトランスクリプトから実質的なコンテンツを抽出し、ノイズをフィルタリングして、LLMコンテキスト効率の高い表現を生成します。

目標

ミーティングのLLMコンテキスト効率が最も高い表現を生成します。出力は今後のLLM会話のコンテキストとして使用されるため、すべてのトークンがその場所に値する必要があります。すべての実質的なコンテンツ(決定、推論、意見の相違、アクション項目)を保持しながら、トークン数を積極的に削減します。完全な逐語的交換よりも、意味が保持されている場合は簡潔な直接引用を優先します。会話的な足がかり(「つまり、私が言おうとしている事は...」、「素晴らしい指摘です。それに加えて...」)を削除し、実質的な内容のみを保持します。

引数

  • <path> (オプション) — .vtt ファイル、または .vtt ファイルを含むフォルダ。省略した場合は ~/Downloads/ がデフォルトになります。
  • --latest (オプション) — 選択肢を提示する代わりに、最新の .vtt ファイルを自動的に選択します。

コンテキスト管理

ミーティングトランスクリプトは大きいファイルです(1時間のミーティングは約70Kトークン)。会話コンテキスト内にトランスクリプトの複数のコピーが蓄積されるのを避けるため、このスキルは一時ファイルとサブエージェントをパイプラインとして使用します:

  1. メインエージェントはステップ 0、1、5 を処理します(ソース解決、Pythonスクリプト経由でVTTをストリップ、一時ファイルをクリーンアップ)。トランスクリプトコンテンツを読み取ることはありません。
  2. サブエージェントはステップ 2 を処理します(元の言語でのクリーン + フィルタリング)。meetings/tmp/meeting-stripped.txt を読み取り、meetings/tmp/meeting-cleaned.txt に書き込みます。コンテキストは破棄されます。
  3. サブエージェントはステップ 3 を処理します(英語への翻訳)。meetings/tmp/meeting-cleaned.txt を読み取り、meetings/tmp/meeting-translated.txt に書き込みます。コンテキストは破棄されます。既に英語の場合はスキップされます。
  4. サブエージェントはステップ 4 を処理します(抽出 + 構造化 + 保存)。meetings/tmp/meeting-translated.txt を読み取り、最終出力を meetings/ に直接書き込みます。コンテキストは破棄されます。

各サブエージェントは、現在のステージファイルと実行タスク命令のみを含む新しいコンテキストで開始します。以前のトランスクリプトバージョンはコンテキストを汚染しません。

実行プロトコル

これらのステップを厳密にこの順序で従う必要があります。 各ステップの完了後、そのステップのすべての要件が満たされたことを確認します。検証後にのみ、ステップをチェックして次のステップに進みます。先に進まないでください。

TodoWriteツールを使用して実行開始時にこのチェックリストを作成します:

  • ステップ 0: トランスクリプトソースを解決する
  • ステップ 1: VTTメタデータをストリップする(Pythonスクリプト)
  • ステップ 2: クリーン & フィルタリング(サブエージェント)
  • ステップ 3: 英語に翻訳する(サブエージェント)
  • ステップ 4: 抽出、構造化、保存(サブエージェント)
  • ステップ 5: クリーンアップ

各ステップを完了した後、次に進む前にTODOリストで完了をマークします。

ステップ

ステップ 0: トランスクリプトソースを解決する

ターゲットフォルダとファイルを決定します。最初にマッチするルールに従います:

  1. <path>.vtt ファイル — そのファイルを直接使用します。ステップ 1 に進みます。
  2. <path> がフォルダ + --latest — Bash経由で ls -t <folder>/*.vtt | head -1 を実行して、最新の .vtt ファイルを選択します。存在しない場合は停止してユーザーに通知します。
  3. <path> がフォルダ(no --latest) — Bash経由で ls -t <folder>/*.vtt | head -3 を実行します。結果を番号付きリスト(最新優先)として提示し、ユーザーに選択を促します。存在しない場合は停止してユーザーに通知します。
  4. <path> なし + --latest — ルール 2 と同じですが、フォルダとして ~/Downloads/ を使用します。
  5. <path> なし、--latest なし — ルール 3 と同じですが、フォルダとして ~/Downloads/ を使用します。
  6. ユーザーが貼り付けたテキスト — それを直接使用します。
  7. ユーザーがURLを指定 — Bash経由で curl -sL <url> -o meetings/tmp/transcript.vtt を使用してファイルをダウンロードします。ダウンロードが失敗した場合は停止してユーザーに通知します。

解決後、次に進む前にファイル名をユーザーに確認します。

ステップ 1: VTTメタデータをストリップする(Pythonスクリプト)

解決したソースが .vtt ファイルの場合、Bash経由でストリッピングスクリプトを実行します。ワーキングディレクトリの問題を避けるために、スクリプトと出力の両方に絶対パスを使用します:

PROJECT_ROOT="$(pwd)" && SKILL_SCRIPT="$(ls "${PROJECT_ROOT}/.claude/skills/meeting-minutes/scripts/main.py" "${HOME}/.claude/skills/meeting-minutes/scripts/main.py" 2>/dev/null | head -1)" && uv run "$SKILL_SCRIPT" "<input>" "${PROJECT_ROOT}/meetings/tmp/meeting-stripped.txt"

<input> を解決されたファイルパスに置き換えます。スペースを含むファイル名を処理するために、それをクォートし、${HOME} 記法を使用します(例: "${HOME}/Downloads/my meeting.vtt")。

ソースが貼り付けたテキストまたは非VTTファイルの場合、Writeツールを使用して meetings/tmp/meeting-stripped.txt(プロジェクトルート配下)に直接書き込みます。

スクリプトはVTTヘッダ、シーケンス番号、タイムスタンプ、HTMLタグを削除し、スピーカーラベルと話された内容のみを保持します。行数の出力をユーザーに確認して進みます。

ステップ 2: クリーン & フィルタリング(サブエージェント)

Agentツールを使用して model: "sonnet" でサブエージェントを起動します。サブエージェントは meetings/tmp/meeting-stripped.txt を読み取り、クリーン & フィルタリングを行い、結果を meetings/tmp/meeting-cleaned.txt に書き込みます。進む前にサブエージェントの完了を待ちます。

サブエージェント プロンプト(このブロック全体を渡します):

ファイル meetings/tmp/meeting-stripped.txt を読み取ります。これはスピーカー属性が付きのミーティングトランスクリプトです(VTTメタデータは既に削除されています)。

最初の数行の交換から言語を特定します。簡潔に述べます。

元の言語と同じ言語で、トランスクリプトのクリーン & フィルタリング版を生成します。翻訳しないでください。次のすべてを、単一の出力パスで同時に適用してください。中間バージョンを出力しないでください。

修正:

  • スペルミスと文字化け記号(例: "ceskeho" -> "českého"、"nastroj" -> "nástroj"、"je to 1" -> "je to jedno")
  • 自動キャプションによってマングルされた壊れた固有名詞(例: VIBMC -> v IBMce -> v IBM)
  • 同音異義語と聞き違い(周囲の文脈を使用して正しい単語を選択)
  • 文の境界(自動キャプションが破った場所で自然な構造を復元)
  • スピーカー属性(全体を通して一貫した名前に正規化)

完全に削除:

  • 挨拶、別れ、「週末はどうでしたか」などの雑談
  • 作業項目に無関係なオフトピックの接線
  • フィラー(「えっと」、「あの」、「ほら」、「先ほど言った」、および言語相当物)
  • 政治的に不正確、不快、または不適切な言語
  • 問題に関連のない個人的、機密的、または政治的意見
  • 新しい情報を追加しない繰り返された声明(最も明確なバージョンを保持)
  • 会話的な足がかり(「つまり、私が言おうとしている事は...」、「素晴らしい指摘です。それに加えて...」)

その他すべて保持、特に: 決定、技術的な議論、アクション項目、提案、意見の相違、ステータスアップデート、ブロッカー、推論、および作業を前に進める議論。疑わしい場合は保持します。

いくつかの修正について不確実な場合は、最も可能性が高い解釈で進みます。

結果を meetings/tmp/meeting-cleaned.txt に書き込みます。処理されたトランスクリプトのみを出力し、コメントなし。

サブエージェントが完了した後、成功を確認し、検出された言語をユーザーに確認して進みます。

ステップ 3: 英語に翻訳する(サブエージェント)

トランスクリプトが既に英語の場合、Bash経由で meetings/tmp/meeting-cleaned.txtmeetings/tmp/meeting-translated.txt にコピーし、ステップ 4 に進みます。

そうでない場合は、Agentツールを使用して model: "sonnet" でサブエージェントを起動します。サブエージェントは meetings/tmp/meeting-cleaned.txt を読み取り、英語翻訳を meetings/tmp/meeting-translated.txt に書き込みます。進む前にサブエージェントの完了を待ちます。

サブエージェント プロンプト(このブロック全体を渡します):

ファイル meetings/tmp/meeting-cleaned.txt を読み取ります。これはクリーン & フィルタリングされたミーティングトランスクリプトです。これを流暢な英語に翻訳します。

保持: スピーカー属性、トーンと言語レベル(カジュアルはカジュアルのまま、技術的は技術的なまま)、意見の相違、躊躇、不確実性(「確実ではありませんが...」、「多分...すべきかも」)、英語で標準的な技術用語と頭字語(例: "Kubernetes"、"API"、"SDK")。

適応: 慣用句と表現を自然な英語相当物に。英語の語順に従ってください。ソース言語の文法ではなく。

しないこと: 要約、編集上の意見追加、元になかった意味の追加、カジュアルスピーチの形式化、または形式的なスピーチのカジュアル化。用語に清潔な英語相当物がない場合、元の文言を括弧内に保持します: "the deployment target (nasazovaci cil)"。

結果を meetings/tmp/meeting-translated.txt に書き込みます。翻訳されたトランスクリプトのみを出力し、コメントなし。

サブエージェントが完了した後、成功をユーザーに確認して進みます。

ステップ 4: 抽出、構造化、保存(サブエージェント)

Agentツールを使用して model: "sonnet" でサブエージェントを起動します。サブエージェントは meetings/tmp/meeting-translated.txt から読み取り、構造化された抽出を生成して、meetings/ に直接保存します。進む前にサブエージェントの完了を待ちます。

サブエージェント プロンプト(このブロック全体を渡します):

ファイル meetings/tmp/meeting-translated.txt を読み取ります。これはクリーン & フィルタリングされた英語ミーティングトランスクリプトです。これを次の形式に抽出して構造化します。すべてのセクションは必須ですが、セクションが空の場合は「特定されなし。」を使用します。

# ミーティング抽出

## 重要な決定
- [決定 1]
- [決定 2]

## アクション項目
- [ ] [オーナー]: [アクション項目]

## 議論

### [トピック 1 タイトル]
[スピーカーの言葉で保持された議論。スピーカーに帰属する直接引用を使用します。意見の相違、ニュアンス、スピーカーが述べた推論を保持します。]

### [トピック 2 タイトル]
[トピック 1 と同じアプローチ]

## 未解決の質問
- [ミーティング中に提起された未解決の質問]

ルール:

  • 主要な瞬間の直接引用。 決定、意見の相違、強い意見、新しい洞察に対して逐語的引用を使用します。これらはトークンの価値が最も高いです。
  • コンテキストの簡潔な言い換え。 背景となる議論、ステータスアップデート、および既知の概念の説明は圧縮できます。それらを帰属させてください(「Johnは...と述べました」)が、逐語的に引用しないでください。
  • 声明を帰属させてください。 トランスクリプトからスピーカー名/識別子を使用します。
  • 意見の相違を逐語的に保持してください。 人々が意見を異にする場合、両側を直接引用として保持します。正確な言葉がここで重要です。
  • 推論チェーンを保持してください。 サポート議論、異議、反論、および例を保持してください。可能な限り圧縮しますが、論理を失わないでください。
  • 編集上の意見を追加しないでください。 意見、評価、または推奨を追加しないでください。述べられたことを報告してください。
  • 繰り返しを折りたたんでください。 同じポイントが複数回行われた場合、最も明確なバージョンのみを保持します。

構造化抽出を meetings/YYYY-MM-DD-meeting-<short-slug>.md に書き込みます。ここで YYYY-MM-DD は今日の日付で、<short-slug> はミーティングの主なトピックの2-3単語のケバブケース概要です。コメントを含めず、フォーマットされた抽出のみ。

サブエージェントが完了した後、出力ファイルパスをユーザーに伝えてクリーンアップに進みます。

ステップ 5: クリーンアップ

Bash経由で rm -rf meetings/tmp/ を実行して一時ディレクトリを削除します。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
apocohq
リポジトリ
apocohq/skills
ライセンス
MIT
最終更新
2026/4/14

Source: https://github.com/apocohq/skills / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: apocohq · apocohq/skills · ライセンス: MIT