Community生产力与协作github.com

space-enthusiast/meeting-minutes

将会议录音(m4a, mp3, wav, mp4 等格式)转换为会议纪要,全程在用户本地计算机上运行。Whisper 负责转录,pyannote 负责说话人分离,AI 代理根据标注了说话人的转录稿生成纪要。适用于用户提供录音并要求生成纪要、摘要、转录稿、语音转文字或“谁说了什么”的场景。音频数据不会离开电脑。

meeting-minutes 是什么?

该技能(SKILL)旨在将本地会议录音文件转化为可信赖的会议纪要,全程在用户本地执行。其核心理念是“录音即事实来源”,转录稿是证据,纪要则是该证据的解读。技能基于 Whisper 进行语音转录,利用 pyannote 实现说话人分离(即区分不同说话者),最终由 AI 代理根据带有说话人标签的转录稿自动生成结构化的会议纪要文件。 该技能支持三种操作模式:指导模式(回答关于转录、模型选择等的问题);转录模式(仅输出带说话人标记的文本);纪要模式(完整运行所有阶段,输出包含附件在内的最终纪要文件)。工作流程分为5个阶段:环境设置、转录、说话人分离、说话人校正和纪要生成。技能严格遵守“音频不离开本地”原则,不会将录音上传至远程服务。它会先询问用户许可再进行软件安装,并以低优先级运行,避免影响用户同时操作电脑。 该技能适用于任何AI代理平台(如 Claude Code、Codex 等),并已内置对常见平台特性(Shell、后台运行、Python环境等)的抽象支持。它特别强调诚实性:只包含转录稿支持的内容,不编造说话人、日期或决策;对于不确定的说话人标签会明确标注为猜测。技能同时内置了反模式指南,例如不推荐同时运行转录和说话人分离,以及避免使用会议机器人记录作为主要来源。最终输出包括 JSON/TXT 格式的转录稿、说话人分离数据、校正记录以及一份完整的 Markdown 格式会议纪要。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/space-enthusiast/meeting-minutes-skill/tree/HEAD/skills/meeting-minutes

Installed? Explore more 生产力与协作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Meeting Minutes

Produce minutes that a person who missed the meeting can trust: every statement traceable to the recording, every speaker label honest about how sure it is.

The recording is the source of truth. A transcript is evidence, and minutes are a reading of that evidence. Notes written by a meeting bot or by an attendee are secondary: use them only to cross-check.

Operating modes

Loading this skill does not authorize a full run. Pick the smallest mode that answers the request.

  • Guidance mode: questions about how to transcribe, which model fits a machine, why speaker labels are wrong, how to read an existing transcript. Answer from the relevant file. Do not install anything or create files.
  • Transcript mode: the user wants the text only. Run setup, transcription, and (unless declined) speaker separation. Stop after the speaker-labelled transcript.
  • Minutes mode: the user wants minutes. Run every phase and write the files listed under "Outputs".

If the request could mean more than one mode, ask one short question before installing anything.

Platform terminology

This skill is agent-neutral.

  • Shell is whatever the platform uses to run commands on the user's computer.
  • Background run is the platform's way to start a long command and be told when it ends. If there is none, run the command in the foreground and tell the user how long to expect.
  • Environment is a Python environment that this skill creates once and reuses. <python> is its interpreter.
  • Reference script is a code block in these files. Save it under <out>/work/ and run it with <python>. It is a tested starting point, not a fixed contract: adapt it when the machine, the library version, or the request calls for it, and say what you changed.

Principles

  1. The audio stays local. Never upload the recording, or any part of it, to a remote service. Transcription and speaker separation run on this computer.
  2. Be open about where the text goes. The transcript is text, and the agent writing the minutes reads it. If that agent is a cloud model, the text goes to that provider. Say so once before the first run if the meeting may be sensitive.
  3. Only what was said. Minutes contain what the transcript supports. No invented owners, dates, numbers, or decisions.
  4. Honest speaker labels. A number becomes a name only with evidence. A guess is marked as a guess.
  5. One heavy job at a time, at low priority. Speech models use the whole machine. Never run transcription and speaker separation together. Slower is fine; the user still has to work on this computer.
  6. Ask before installing, never handle secrets. Show the command before installing a program. The user signs in, accepts model terms, and stores tokens. Do not ask for a password or a token in the conversation.
  7. Recognition errors are expected. Names, numbers, and jargon are the weak points. Verify what matters instead of smoothing it over.

Setup values

Resolve these before the first phase. Ask the user only for what you cannot find out yourself.

  • Skill directory: the absolute directory containing this SKILL.md.
  • Recording: the absolute path of the audio or video file.
  • Output directory <out>: default is a new folder next to the recording, named after it with -minutes appended. Use another place when the user names one or the recording sits in a synced or shared folder where working files do not belong.
  • Language: ask, or let the model detect it.
  • Attendees: names, and teams or roles if known. Needed to put names on speakers and for the minutes header. If the user does not know, continue with numbered speakers.
  • Title, date and time, purpose: for the header. Take them from the user or from the file name and metadata; never from guesswork.

Outputs

All paths are inside <out>.

FileWritten inContent
transcript.jsonPhase 2Segments with word-level timestamps. Never edited afterwards
transcript.txtPhase 2The same text, one timestamped line per segment. The uncorrected record
diarization.jsonPhase 3Who spoke when, speakers numbered from 1
speakers.jsonPhase 4Speaker number to name, with uncertainty marks
corrections.tsvPhase 4Recurring recognition errors and their fixes
transcript-speakers.txtPhase 4The speaker-labelled, corrected transcript. The basis for the minutes
minutes.mdPhase 5The minutes, with the speaker-labelled transcript as an appendix
work/allReference scripts as they were run, and logs

Workflow

PhaseReadResult
1. SetupSETUP.mdA working environment, and a decision on GPU or CPU and on speaker separation
2. TranscriptionTRANSCRIPTION.mdtranscript.json, transcript.txt
3. Speaker separationDIARIZATION.mddiarization.json
4. Speakers and correctionsSPEAKERS.mdspeakers.json, corrections.tsv, transcript-speakers.txt
5. MinutesMINUTES.mdminutes.md

Phase 1 is done once per computer; later runs only verify it. Phases 2 and 3 are long: use a background run and continue when it ends. Phase 3 is skipped when the user declines the one-time model access; the rest still works, without names.

Check each phase's result before starting the next one. Each file ends with a "Check" section.

Reporting to the user

When the run ends, tell the user:

  • where minutes.md is;
  • which speaker names are confirmed and which are guesses;
  • what was skipped or changed from the defaults, and why;
  • the known weak points of this run (unclear names or numbers, overlapping speech, a stretch of poor audio).

Anti-patterns

  • Summarizing notes written by a meeting bot when the recording is available. Such notes drop stretches of the meeting and merge all voices into one.
  • Running transcription and speaker separation at the same time "to save time". It slows both and can exhaust GPU memory.
  • Giving the speech model a list of attendee names as a hint. It then writes those names into silent stretches and drops real speech.
  • Naming a speaker because a name "fits". One wrong attribution in shared minutes costs more than ten "Speaker 3" labels.
  • Fixing the transcript by rewriting sentences. Correct recurring mis-heard words through corrections.tsv; leave the wording alone.
  • Writing an action item with an owner and a date that nobody stated.
  • Reporting success without opening the result. Read the first and last minute of the transcript and compare the speaker count with the attendee count.

相关技能