transcript-digest スキル
~/.claude/board/transcripts/ の書き起こしを読み、話した内容を整理して構造化する。人は吐き出すだけ、整理はこちらの仕事、という分担を実装したスキル。
meeting-digest が Notion の議事録を入力にするのに対し、こちらは Meet の生の書き起こし(Gemini メモ / 文字起こし)を入力にする。抽出後の投入先は同じ。
実行手順
1. 対象ファイルの決定
引数にファイル名が指定されていればそれ1件のみを対象にする(例: /transcript-digest 2026-07-29-proj-alpha.md)。
引数がなければ 未処理の全ファイルを対象にする:
ls ~/.claude/board/transcripts/*.md 2>/dev/null
cat ~/.claude/board/transcripts/.processed.log 2>/dev/null
.processed.log は1行1レコードの追記専用ファイル(<ファイル名>\t<処理日時ISO>\t<生成タスク数>)。
1列目に載っているファイル名は処理済みなので除外する。README.md も除外する。
対象が0件なら「未処理の書き起こしはありません。」と表示して何も書き込まずに終了する(ヘルパーを一切呼ばない)。
2. 本文の読み取り
対象ファイルを Read する。frontmatter から date / meeting / kind / source_url を取得する。
kind が無い場合は本文から推定する(発言者が1人だけなら solo、複数なら meeting)。
書き起こしは Gemini の要約メモと生の文字起こしのどちらもありうる。生の文字起こしの場合、言い淀み・繰り返し・脱線が大量に含まれるのが正常であり、それを理由に情報を捨てない。脈絡のなさは話者の思考の順序であって、ノイズではない。
3. 抽出(kind で観点を変える)
kind: solo(一人で話した独り言)
本人が頭の中を吐き出したものなので、「会議の決定事項」ではなく 本人の判断とその理由を拾う。
① 下した判断とその理由
- 「〜にする」「〜でいく」「〜はやめる」等の帰結と、その直前後に語られた理由をセットで拾う
- 理由が語られていない判断は、理由を捏造せず「理由の言及なし」と明記する
② まだ決めていない論点
- 「迷っている」「どっちがいいか」「悩ましい」「保留」等。A案とB案が並置されている箇所
- これは後で本人が決める必要がある未決事項なので、必ず拾う
③ 守りたい一線・懸念
- 「ここは譲れない」「〜だけは避けたい」「〜が崩れると困る」等
- 品質・体験・整合性についての危惧
④ 次にやること
- 「やらないと」「確認する」「聞く」「作る」等、本人が自分に課している作業
kind: meeting(実会議の書き起こし)
meeting-digest と同じ観点で抽出する。
① 決まったこと — 「着地」「確定」「決定」「見送り」「方針」。進捗の羅列は対象外、変化・決定のみ ② なぜそうなったか — 制約・外部要因・数値根拠(あれば必ず含める)。突然タスクを渡されたときに「なぜ自分がこれをやるのか」がわかるレベルで書く ③ 自分へのタスク — me / 自分 / me への言及を最優先。「情報共有のみ」「DONE」「完了」は除外
4. 出力フォーマット
ファイルごとに新しい順で表示する。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🎙 2026-07-29 | Project Alpha 結果カードの詰め(独り言)
📄 2026-07-29-proj-alpha-result-card.md
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
**下した判断&理由**
- ✅ 〜にする
📖 〜のため
**まだ決めていない**
- ❓ 〜(A案: 〜 / B案: 〜)
**守りたい一線**
- 🛡 〜
**次にやること**
- [ ] 〜
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
合計 書き起こし: X 件 / タスク: Y 件 / 未決の論点: Z 件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
kind: meeting の場合は見出しを「決まったこと&なぜ」「自分のタスク」に読み替える(meeting-digest と同形式)。
フォーマットルール:
📖の理由は必須。書き起こしに理由が無ければ「理由の言及なし」と書く。推測で埋めない- 「まだ決めていない」は0件でも
なしと明記する(見落としを防ぐため省略しない)
5. Activity への書き出し
表示が完了したら、書き起こし1件=1エントリとして Council の Activity に append する。
kind:"digest"source:"transcript-digest"title:"<meeting> の整理"(solo なら"<meeting>(独り言)の整理")summary: 下した判断/決まったことを1〜2文に圧縮action_items: 「次にやること」の配列(無ければ[])project: 判別できれば案件名links:source_urlがあれば[{url: source_url, label: meeting}]
cat <<'JSON' | node ~/.claude/scripts/council-activity-append.js
{
"kind": "digest",
"source": "transcript-digest",
"title": "Project Alpha 結果カードの詰め(独り言)の整理",
"summary": "ある項目の紹介文は生成せず参考値+注釈に留める方針で自分の中では固めた。表示の制約で体験が重くなるため。",
"action_items": ["Member Aに掲載外の項目の扱いを確認する"],
"project": "Project Alpha",
"links": []
}
JSON
6. Board へのタスク切り出し
「次にやること」のうち、自分が実行すべき具体的な未完了作業だけを選別して1件ずつ append する。
- 除外: すでに対応済みのもの/担当が明確に他者のもの/作業に落ちていない感想
- priority: 期限の言及や強い切迫があれば
high、通常はmedium、軽微なフォローはlow - title:
[<meeting>] <タスク>の形にする - activity_source:
"transcript-digest"固定 - 対象が0件ならヘルパーを呼ばない
cat <<'JSON' | node ~/.claude/scripts/council-task-append.js
{
"title": "[Project Alpha 結果カードの詰め] Member Aに掲載外の項目の扱いを確認する",
"priority": "medium",
"activity_source": "transcript-digest"
}
JSON
id は title + activity_source から決定的に生成されるため、再実行しても増殖せず、Board 上で編集・完了・アーカイブ済みのタスクを復活させない。
7. 処理済みの記録(最後に必ず実行)
Activity と Board への書き出しが終わったファイルについて、.processed.log に追記する。
printf '%s\t%s\t%s\n' "2026-07-29-proj-alpha-result-card.md" "$(date -Iseconds)" "2" >> ~/.claude/board/transcripts/.processed.log
必ず >> を使う。 >(上書き)は board-guard がブロックする。
書き出しに失敗したファイルは記録しない(次回また対象になるほうが、取りこぼすより安全)。
未決の論点について
kind: solo で拾った「まだ決めていない」は、Activity の summary には含めるが Board のタスクにはしない(作業ではなく判断待ちのため)。ターミナル出力で本人に見せるところまでが役割。
これらは Phase 3 のデザイン判断OS(~/.claude/board/design-os/)の重要な素材にもなる。「何を迷い、最終的にどう決めたか」が判断の癖そのものだからである。
境界
- 対象は 会社(@example.com)のデータのみ。
~/side-projects(副業)の内容は扱わない - 外に出るもの(Slack投稿・Figmaコメント)は生成しない。このスキルは整理と記録までで、送信・決定は本人が行う