本文へ移動
cccskills
無料GitHub で公開

mail-transcripts

Gmail AI transcript notifications → meeting Notes: URLs + mark read. Args: (none). Invoked standalone or as step 1 of /meeting wrap.

インストール方法を見る

含まれるファイル(2)

  • SKILL.md4.0 KB
  • SETUP.md2.8 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Mail Transcripts

Setup: SETUP.md — Gmail label, OAuth scopes, and resolve_path() customization.

Usage

  • /mail-transcripts — Run the Gmail → vault sync once (no arguments).

When to run

CallerWhen
StandaloneWhenever you want to drain the AI-transcript inbox without wrapping meetings.
/meeting wrap <path>Step 1 — Before /cache-notes, so Notes: is filled from Gmail when Gemini emails beat manual paste.
/meeting wrap pending …Step 1 — Before discovering pending meetings, so newly linked or auto-created notes are included in the pending scan.

Gmail filter

Fixed query (do not change without updating this skill and the script):

label:🤖-ai-transcripts in:inbox

The label name includes the emoji 🤖 (robot). Ensure that label exists in Gmail and that transcript notifications are delivered into Inbox with that label applied.

Workflow

Step 1: Preconditions

  1. Confirm gws is installed and authenticated (gws auth status).
  2. Confirm Gmail OAuth includes read + modify message scopes (marking read uses users.messages.modify).

Step 2: Run the vault script

From the vault root, run:

python3 .scripts/gmail_ai_transcripts_to_meetings.py

Implementation lives in .scripts/gmail_ai_transcripts_to_meetings.py. The script:

  1. Lists messages matching the query (paginated up to maxResults in script — currently 100).
  2. For each message, decodes MIME parts, extracts https://docs.google.com/document/d/... URLs.
  3. Parses the subject line Notes: "Title" Mon DD, YYYY (supports curly " " Unicode quotes). A bare Meeting Summary for <recurring meeting> (no Notes: pattern) maps to that meeting using the email Date header.
  4. Resolves Meetings/**/*.md targets using title + date heuristics (daily standups → Meetings/Engineering/Scrum/YYYY-MM-DD.md, tech-leads → Meetings/Engineering/TechLeads/, interviews → Meetings/Interviews/, etc. — see script resolve_path()). Edit that function to match your own folder conventions.
  5. Updates existing notes: appends the Doc URL under Notes: if that document ID is not already present.
  6. Creates a minimal meeting stub if no file exists (Notes:, created:, # Title - YYYY-MM-DD) — agents may refine folder/title afterward.
  7. Marks each processed message read by removing the UNREAD label via gws gmail users messages modify.

Step 3: Report

Print a short summary: created paths, updated paths, noop (URL already in note), skip_no_doc (no Doc URL in body — still marked read if the script marks those), and any errors.

Important Notes

  • No Google Doc in email (e.g. narrative-only "Meeting Summary"): the script cannot set Notes:; it may still mark the thread read — adjust script behavior there if you want to leave unread for triage.
  • Wrong meeting matched: resolution is heuristic; fix resolve_path() in the script or move/rename the note in Obsidian.
  • Privacy: transcript emails stay in Gmail; the skill only links Docs into local vault files.
  • Do not duplicate mail-transcripts logic in other skills — call the script or point here.

Offer to commit

When /mail-transcripts is run standalone, offer /commit. When run inside /meeting wrap or /meeting wrap pending, the parent sequence commits once at the end (include any new/updated meeting files in that commit scope).

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Fetch & embed AI transcripts as Obsidian callouts. Args: <path>, all, refresh <path>. Prompts for URLs if empty.

日本語の概要は準備中です。原文の説明を表示しています。

benoror/obsidianos_work1652026年6月11日 更新

commit

無料

Stage and commit with flexible intent parsing. Accepts file/folder scope, free-text description, amend, or any combination.

日本語の概要は準備中です。原文の説明を表示しています。

benoror/obsidianos_work1652026年6月11日 更新

defuddle

無料

Extract clean markdown content from web pages using Defuddle CLI, removing clutter and navigation to save tokens. Use instead of WebFetch when the user provides a URL to read or analyze, for online documentation, articles, blog posts, or any standard web page.

日本語の概要は準備中です。原文の説明を表示しています。

benoror/obsidianos_work1652026年6月11日 更新

Resolve and fill Participants frontmatter + link unlinked names in body. Args: <path>, all.

日本語の概要は準備中です。原文の説明を表示しています。

benoror/obsidianos_work1652026年6月11日 更新

Extract action items as plain markdown bullets (with confirmation). Args: <path>. No args = run [/note-status pending --step=todos](../note-status/SKILL.md#pending-mode).

日本語の概要は準備中です。原文の説明を表示しています。

benoror/obsidianos_work1652026年6月11日 更新

Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections. Use when working with .canvas files, creating visual canvases, mind maps, flowcharts, or when the user mentions Canvas files in Obsidian.

日本語の概要は準備中です。原文の説明を表示しています。

benoror/obsidianos_work1652026年6月11日 更新

benoror のスキルをすべて見る

このスキルの問題を報告する