com um clique
sync-meetings
Google Meet付きカレンダー予定の文字起こし・Geminiメモを取得し、議事録としてvaultに書き出す
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
Google Meet付きカレンダー予定の文字起こし・Geminiメモを取得し、議事録としてvaultに書き出す
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
config.yamlで指定されたNotionページを取得し、ページごとのカスタムpromptに従ってvaultに書き出す
daily/weekly/monthlyの振り返りを生成しjournal/に書き出す
日次の思考・感想・ふりかえりをvaultのjournal/timeline/に書き出す
Slackから自分宛メンション・参加スレッド・主要チャンネルの最新情報を収集し、Obsidian vaultのsnapshot/slack.mdに書き出す
sync-slack, sync-linear, sync-notion を並列実行し、snapshot を一括更新する
Claude セッションの生ログをサマライズして snapshot/claude-log.md に書き出す
| name | sync-meetings |
| description | Google Meet付きカレンダー予定の文字起こし・Geminiメモを取得し、議事録としてvaultに書き出す |
| user-invocable | true |
| argument-hint | [日付|イベントタイトル] (省略時は今日。例: today, yesterday, 2026-04-03, 4/3, スプリントレビュー) |
| allowed-tools | ["Read","Write","Edit","Bash","Grep","Glob"] |
Google Meet 付きカレンダー予定の文字起こし(トランスクリプト)・Gemini 会議メモを取得し、構造化された議事録として vault に書き出す。
{vault.path}/journal/meetings/{yyyyMMdd}-{sanitized-title}.mdリポジトリルートの config.yaml から vault.path を読み取る。
gws CLI (Google Workspace CLI) を使用する。
必要スコープ(gws auth status で確認):
https://www.googleapis.com/auth/calendar.readonlyhttps://www.googleapis.com/auth/meetings.space.readonlyhttps://www.googleapis.com/auth/documents.readonlyhttps://www.googleapis.com/auth/drive.readonlygws 実行時の注意:
Using keyring backend: keyring は stderr に出る。JSON パース時は 2>/dev/null で捨てることrm ~/.config/gws/token_cache.json で再取得させるconfig.yaml を読み、vault.path を取得するdate コマンドで現在の日時を取得する(推測しない)today → 今日yesterday → 昨日YYYY-MM-DD or M/D → 指定日NOW=$(date '+%Y-%m-%dT%H:%M:%S')
TODAY=$(date '+%Y-%m-%d')
gws calendar events list で対象日の予定を取得する。
gws calendar events list --params '{
"calendarId":"primary",
"timeMin":"{TARGET_DATE}T00:00:00+09:00",
"timeMax":"{TARGET_DATE}T23:59:59+09:00",
"singleEvents":true,
"orderBy":"startTime"
}' --format json 2>/dev/null
フィルタ条件:
conferenceData.conferenceId が存在するイベント(Google Meet 付き)summary に部分一致するものに絞り込むstart.date だけで start.dateTime がないもの)は除外各イベントから以下を抽出する:
summary(タイトル)start.dateTime / end.dateTimeattendees[](displayName 優先、なければメールローカル部)conferenceData.conferenceId ← Meet 会議コードconferenceData.entryPoints[].uri のうち https://meet.google.com/ で始まるもの(Meet リンク)Meet 付きイベントがない場合は「対象日に Google Meet 付きのイベントが見つかりませんでした」と報告して終了する。
各イベントについて space.meeting_code で絞り込み、対象日の conferenceRecord を特定する。
gws meet conferenceRecords list --params "{
\"filter\":\"space.meeting_code=\\\"$MEETING_CODE\\\" AND start_time>=\\\"${TARGET_DATE}T00:00:00Z\\\" AND start_time<=\\\"${NEXT_DATE}T00:00:00Z\\\"\"
}" --format json 2>/dev/null
複数レコードが返った場合はイベントの開始時刻に最も近いものを選ぶ。 該当レコードがない場合は「まだ会議記録が生成されていない」として扱い、イベントメタデータのみで出力する。
conferenceRecord の name(例: conferenceRecords/xxx)を使って各リソースを取得する。
# transcripts
gws meet conferenceRecords transcripts list --params "{\"parent\":\"$CR_NAME\"}" --format json 2>/dev/null
# smartNotes (Geminiメモ)
gws meet conferenceRecords smartNotes list --params "{\"parent\":\"$CR_NAME\"}" --format json 2>/dev/null
# participants (参加者名)
gws meet conferenceRecords participants list --params "{\"parent\":\"$CR_NAME\"}" --format json 2>/dev/null
transcript が存在する場合、発言単位のエントリを取得する。--page-all で自動ページング。
gws meet conferenceRecords transcripts entries list \
--params "{\"parent\":\"$TRANSCRIPT_NAME\",\"pageSize\":100}" \
--page-all --page-limit 20 \
--format json 2>/dev/null
各 entry は以下を持つ:
startTime / endTimeparticipant(participants list と突き合わせて話者名に変換)text(発言内容)participant リソース名から participants list の signedinUser.displayName に名前解決する。
smartNotes が存在する場合、docsDestination.document を使って Doc 本文を取得する。
gws docs documents get --params "{\"documentId\":\"$DOC_ID\"}" --format json 2>/dev/null
レスポンスの body.content[] を走査し、paragraph.elements[].textRun.content を連結してプレーンテキスト化する。
取得したデータを統合し、Output Template に沿って議事録を生成する。
要約のルール:
出力先: {vault.path}/journal/meetings/{yyyyMMdd}-{sanitized-title}.md
ファイル名のサニタイズ:
20260403-スプリントレビュー.mdjournal/meetings/ ディレクトリがなければ作成する:
mkdir -p "{vault.path}/journal/meetings"
同じ日の同じ会議の再実行は上書きする。
bash scripts/commit-vault.sh
---
source: google-meet
type: meeting-note
meeting_date: YYYY-MM-DD
meeting_time: "HH:MM-HH:MM"
collected_at: YYYY-MM-DDThh:mm
ttl: 30d
auto_generated: true
has_transcript: true/false
has_gemini_notes: true/false
---
# {Meeting Title}
- **日時**: YYYY-MM-DD HH:MM - HH:MM
- **参加者**: {参加者リスト(表示名, カンマ区切り)}
- **Meet**: {Meet link}
## 概要
{会議全体の要約を3-5文で。何のための会議で、何が話されたかの概要}
## 議論した重要事項
- **{トピック1}**: {議論の要点}
- **{トピック2}**: {議論の要点}
## 決定事項
- {決定事項1}
- {決定事項2}
## アクションアイテム
| 担当 | タスク | 期限 |
|------|--------|------|
| {名前} | {やること} | {期限があれば} |
## 残論点・TODO
- {持ち越しになった議題}
- {次回までに確認すべきこと}
---
<details>
<summary>ソースドキュメント</summary>
- Transcript Doc: {Google Docs URL or "なし"}
- Gemini Notes Doc: {Google Docs URL or "なし"}
- ConferenceRecord: {conferenceRecords/... or "なし"}
</details>
date コマンドで日時を取得する。推測しない## 概要 に「文字起こし・メモが見つかりませんでした」と記載するauto_generated は truegws コマンドの stderr は 2>/dev/null で捨て、stdout のみを JSON パースする