跳到正文
cccskills
免费在 GitHub 公开

voice-post-call

Turn voice calls into GBrain records containing transcripts, summaries, audio links, and references to people or companies. The workflow also sends summaries to a configured messaging service; automatic processing when calls end requires additional implementation.

中文简介正在准备中。当前显示英语简介。

原文查看原文说明

Post-call handling for a voice session — turn the transcript into a brain page, post the summary to the operator's messaging surface, archive the audio. The pipeline is the contract; the firing paths are operator-wired (see "Two firing paths" below for what ships today).

查看安装方法

适用场景

  • Keep a transcript and summary of a voice call
  • Review call decisions alongside the original audio
  • Link call records to people and company pages
  • Send call summaries to a configured messaging service

包含的文件(2)

  • SKILL.md6.8 KB
  • routing-eval.jsonl591 B

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

voice-post-call — Post-session transcript + summary handling

Convention: see gbrain's skills/conventions/quality.md for citation rules + back-link enforcement, and skills/_brain-filing-rules.md for the filing decision protocol. (These are not copied by the install; the relative paths resolve only if your host repo mirrors gbrain's skills layout.)

Iron Law

Every call gets processed, even on tool-call failure. The voice persona MAY log mid-session via an opted-in write tool, OR the call may end without that tool firing (model forgot, WebRTC dropped, browser crashed). A call-end handler should post a structured signal regardless so the brain still gets the transcript + audio reference — see "Two firing paths" below for which of these ships today and which the operator implements.

If both paths fire (the tool call AND the call-end handler), the second one is idempotent — it sees the brain page already exists and updates instead of duplicating.

The pipeline

1. CAPTURE  → MediaRecorder on the host repo's voice-agent service captures
              the full call audio (webm/opus) to /tmp/calls/<ts>-<persona>.webm.
              The browser client at /call?test=1 also captures via WebAudio-tee
              for E2E asserts; production /call uses server-side capture only.
2. TRANSCRIBE → Whisper (via gbrain transcription) processes the audio. Output:
              full transcript (timestamped) + speaker labels where possible.
3. SUMMARIZE  → A separate LLM call produces a 3-5 sentence summary covering
              key topics, decisions, and unresolved items.
4. WRITE      → Create or update meetings/YYYY-MM-DD-call-<persona>.md with:
              - frontmatter (date, persona, duration, ratings)
              - full transcript in a "Transcript" block-quote section
              - summary in a "Summary" section
              - audio link (file://, or signed URL if uploaded to storage)
              - any entity cross-links (people, companies mentioned)
5. CROSS-LINK → For each entity in the transcript (person, company), append a
              timeline entry to people/<slug>.md or companies/<slug>.md pointing
              back to this call page. Iron Law: per conventions/quality.md.
6. POST       → Send the summary to the operator's messaging surface (Telegram,
              Slack, Discord — whichever is wired in $TARGET_REPO/.env).

Two firing paths (both operator-wired today)

Path A — Persona-initiated mid-call (opt-in): The voice persona calls log_to_brain via the WebRTC data channel; the host-repo /tool endpoint dispatches through tools.mjs. log_to_brain is in OPTIONAL_OPS, not READ_ONLY_OPS, so this only works if the operator's tools-allowlist.local.json opts in (there is no log_call_summary tool — the override can only enable ops listed in OPTIONAL_OPS).

Path B — Call-end handler (not yet shipped): The shipped server.mjs has no automatic call-end handler — nothing fires when the WebSocket / WebRTC connection closes. To get the safety-net behavior, implement a post-call handler in your host repo that reads the captured audio + transcript on connection close and runs the pipeline above. Until you do, Path A (opt-in) is the only firing path, and calls where the persona never logs are NOT processed.

Brain page format

---
type: meeting
subtype: voice-call
persona: venus
date: 2026-05-17
duration_sec: 124
caller: operator
rating: 7
issues: []
audio_url: "file:///tmp/calls/2026-05-17-1029-venus.webm"
created: 2026-05-17
---

# Voice call: 2026-05-17 with Venus

> Brief 3-5 sentence summary of what was discussed and any decisions made.

## Summary
[Agent-authored 3-5 sentence summary covering topics, decisions, action items.]

## Transcript

> [Verbatim per-turn transcript with speaker labels and timestamps. Pure quote
> — do not paraphrase. Block-quoted because the exact wording matters more
> than a cleaned-up version.]

🔊 [Audio](file:///tmp/calls/2026-05-17-1029-venus.webm)

## Entities mentioned
- [Person](people/<slug>.md)
- [Company](companies/<slug>.md)

## Timeline

- **2026-05-17 10:29 PT** | voice call with Venus, 124s, rating 7 — [topic]

Citation format

[Source: voice call with <persona>, YYYY-MM-DD HH:MM PT]

Anti-patterns

  • ❌ Paraphrasing the transcript. The verbatim text IS the signal; the summary is the agent's interpretation.
  • ❌ Skipping the audio archive step. Every call has a recoverable audio file.
  • ❌ Skipping entity cross-links when people/companies are mentioned. Iron Law fail.
  • ❌ Posting to messaging WITHOUT writing the brain page first. The messaging summary is a notification, not the canonical record.
  • ❌ Letting Path A's success suppress Path B. They MAY both fire; the second one is idempotent and serves as a redundant safety net.

Related skills

Ships with this bundle (sibling directories after install):

Lives in gbrain's skills/ (present on the host only if your repo mirrors gbrain's skills layout):

  • meeting-ingestion — analogous flow for multi-party meeting transcripts (different in that voice-call is typically 1:1)
  • media-ingest — for recorded one-way voice memos (different from live voice calls)

Contract

This skill guarantees:

  • Routing matches the canonical triggers in the frontmatter.
  • The post-call pipeline runs idempotently — second invocations update rather than duplicate.
  • Output written under meetings/ or voice-calls/ (consistent with _brain-filing-rules.md).
  • Conventions referenced (quality.md, _brain-filing-rules.md) are followed.
  • Privacy contract preserved: no real names in any committed sample; the operator's actual call transcripts contain whatever they say, which is the operator's data and not gbrain's concern.

Output Format

---
type: meeting
subtype: voice-call
persona: <mars|venus>
date: YYYY-MM-DD
duration_sec: N
caller: <identity>
rating: 0-10
audio_url: "<file:// or signed URL>"
---

# Voice call: <date> with <persona>

> <Summary>

## Summary
<body>

## Transcript

> <verbatim>

🔊 [Audio](<url>)

## Timeline

- **<date> <time> <tz>** | voice call with <persona>, <duration>s — <topic>

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Check research claims cited in books, articles, or conversations by tracing the original paper, methods, underlying data, and independent replication. Save a sourced assessment explaining whether the claim holds up and what remains uncertain.

中文简介正在准备中。当前显示英语简介。

  • Check a study cited in a book
  • Trace a numerical claim in an article to its source data
  • Verify research evidence before using it in writing
garrytan/gbrain3.1万2026年10月19日 更新

Explore old files and email archives to rediscover personal writing, ideas, and meaningful conversations. Review selected items one at a time, save worthwhile material as organized notes, and track progress within explicitly permitted folders.

中文简介正在准备中。当前显示英语简介。

  • Rediscover old journals and creative writing
  • Find meaningful letters and email conversations
  • Recover past product and business ideas
garrytan/gbrain3.1万2026年10月19日 更新

Restructure raw article text stored in gbrain into summaries, exact quotes, key insights, and links to related pages. Preserve the original text and connect the article's significance to projects and interests already recorded in gbrain.

中文简介正在准备中。当前显示英语简介。

  • Organizing saved articles into readable notes
  • Collecting exact quotes for essays
  • Connecting articles to current projects
garrytan/gbrain3.1万2026年10月19日 更新

ask-user

免费

Present clear choices when a task needs a human decision, then pause execution until the user replies. This reusable interaction pattern supports filing decisions, priority selection, and confirmation before destructive actions, with an option to decline.

中文简介正在准备中。当前显示英语简介。

  • Clarifying requests with several possible meanings
  • Confirming before bulk deletion or overwriting
  • Choosing where to file meeting notes
garrytan/gbrain3.1万2026年10月19日 更新

Collect public posts across a blog, newsletter, or feed archive and save clean Markdown pages for each article. The workflow avoids duplicates, supports resumed runs, repairs empty results, and hands articles to a separate enrichment skill.

中文简介正在准备中。当前显示英语简介。

  • Importing a blog's public article archive
  • Organizing public newsletter posts as knowledge pages
  • Rerunning a feed import without duplicates
garrytan/gbrain3.1万2026年10月19日 更新

Create a detailed chapter-by-chapter reading companion from an EPUB or PDF, connecting the book’s ideas to experiences and words saved in your personal knowledge store. The result highlights parallels without prescribing actions.

中文简介正在准备中。当前显示英语简介。

  • Connect a book’s ideas to personal experiences
  • Review detailed chapter summaries alongside personal reflections
  • Create a parent’s guide for reading a children’s book aloud
garrytan/gbrain3.1万2026年10月19日 更新

查看 garrytan 的全部技能

报告此技能的问题