Skills meeting-notes-skill

会议纪要与会议播报生成技能。用于处理会议录音或转写文本,执行发言人区分、口语降噪、议题重构、双钻结构整理,并输出执行摘要、核心决议、Markdown待办表格、TTS播报稿和会议思维导图(HTML/SVG/XMind)。支持双向语音能力:录音转文本(ASR)与文本转录音(TTS)。用户提到“会议纪要”“录音转文字”“文字转语音”“action items”“会后总结”“决议整理”“语音简报/会议播客”“思维导图/脑图”时使用。

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/2813223285/meeting-notes-skill" ~/.claude/skills/clawdbot-skills-meeting-notes-skill && rm -rf "$T"
manifest: skills/2813223285/meeting-notes-skill/SKILL.md
source content

Meeting Notes Skill

按以下流程处理输入,不要跳步。 默认自动执行,不要求用户手动输入命令行参数。 默认使用“被动触发交互”入口:若用户未给出明确会议内容,先提问:

有什么会议纪要需要我帮你整理?可以直接发录音或文字。
对外回复风格强约束(必须执行):

  • 禁止连续发送“我先试试/再试试/正在下载模型/继续排查”等过程消息。
  • 一次请求只允许一次最终交付消息:要么给出完整结果,要么给出一次性失败说明 + 可执行修复步骤。
  • 失败说明必须是汇总态,不得按重试步骤逐条回放。
  • 禁止在对话中向用户索要 API Key 明文;仅提示“在环境变量中配置 OPENAI_API_KEY”。
  • 除非用户明确要求,不展示内部脚本命令执行日志。 输出路径策略:
  • 强制优先:
    ~/clawdhome_shared/private/<skill-slug>-data/
    (例如
    ~/clawdhome_shared/private/meeting-notes-skill-data/
    )。
  • private
    不可写,才允许回退到用户提供路径或
    workspace/<skill-slug>-data/
  • 执行结果必须打印
    output_dir=...
    便于核对真实落盘位置。
  • 默认仅落盘到上述
    .../<skill-slug>-data/
    目录,不自动复制到根目录。
  • 如需根目录快捷副本,显式启用:
    python3 scripts/generate_meeting_bundle.py ... --quick-copy
  • 公共目录仅用于读取共享资源,不写入导出结果。
  • 对外交付文件数量强约束:默认仅允许 3 个文件。
    • <会议主题>-<时间戳>.txt
      (完整纪要)
    • <会议主题>-<时间戳>.mp3
      (重点口播)
    • <会议主题>-<时间戳>.html
      (思维导图)
    • 三个文件必须使用同一命名前缀(同一会议主题 + 同一时间戳),仅扩展名不同。
    • .spoken.txt
      /
      .transcript.txt
      /
      .mindmap.json
      /
      .xmind
      /
      .full.mp3
      仅可作为中间文件,必须自动清理,不得在最终回复中列为交付物。

跨模型通用执行协议(强制):

  • 任何模型都必须遵循同一输出合同:
    执行摘要 + 核心决议 + Action Items表格 + 风险提示 + 导图结果 + 语音结果
  • 若工具调用不可用、脚本不可执行、或权限受限:必须自动降级为“纯文本可交付模式”,不能空回复或中断。
  • 降级时仍需输出:
    • 可直接落地的结构化纪要(含 Action Items 表格)
    • mermaid mindmap
      作为思维导图兜底
    • 语音失败说明(缺少依赖、安装命令、重试命令)
  • 禁止把失败静默为“已完成”。

首次交互强提醒(跨模型兼容,必须执行):

  • 在第一次响应里先输出“环境检查结果”(一段汇总即可),说明内置能力可直接使用:
    • 内置 TTS:macOS
      say
      (可直接用)
    • 内置 ASR:macOS Speech(可直接用)
    • 必装依赖:
      edge-tts
      /
      ffmpeg
    • 默认本地 ASR 安装:
      openai-whisper
      (ASR 必装,并预下载 tiny 模型)
  • 若无法确认依赖状态,必须提示用户先执行:
    bash scripts/doctor.sh --strict
  • 在 macOS 下,若缺少
    ffmpeg
    ,必须优先提示并执行安装:
    bash scripts/bootstrap_macos.sh
  • 不允许静默失败;失败时必须明确说明“缺少哪个依赖、安装命令是什么、下一步怎么做”。
  • 首次使用输出格式强制包含两段:
    • 环境状态
      :已就绪项 / 缺失项
    • 安装命令
      :可直接复制执行的命令(按当前系统)
  • 首次自动安装时,必须先回复“正在安装哪些依赖(edge-tts / ffmpeg / whisper)”,安装过程中每隔数秒给出一次进度心跳,禁止长时间无反馈造成假死感。

首次使用前先运行环境自检:

  • bash scripts/doctor.sh --strict
  • bash scripts/asr_self_check.sh
    (定位“模型未安装”还是“二次运行状态污染”)
  • 若要带音频做冒烟转写:
    bash scripts/asr_self_check.sh --input <audio-file> --provider auto
  • 若怀疑第二次运行污染:
    bash scripts/asr_self_check.sh --clean-temp
  • 若未通过,必须先完成安装,再执行 ASR/TTS(硬门禁)。
  • 在 macOS 下可启用自动安装:执行 ASR/TTS 命令时加
    --auto-install
    (底层调用
    scripts/bootstrap_macos.sh
    )。

1) 输入与转换 (Input & Transformation)

  1. 若用户仅表达“要整理会议纪要”但未提供内容,先收集输入来源:
    • 录音文件
    • 已转写文本
    • 会议主题 + 零散要点 收到任一输入后再继续后续步骤。 0.1 若输入为“文本会议纪要/会议文本”,默认同时执行 TTS,自动产出可播放录音文件;无需用户再次明确提出“转语音”。
  2. 识别输入类型:实时流式音频、离线音频文件、或已转写文本。 1.1 音频输入执行“ASR必转”规则:未完成转写不得进入纪要结构化与播报步骤。 1.2 音频输入在 ASR 成功后,必须生成并保留一份最终纪要文档:
    <会议主题>-<时间戳>.txt
    (不能只保留
    .transcript.txt
    )。
  3. 对音频输入先执行 ASR,再执行说话人分离,输出统一的语义片段:
    • timestamp_start
    • timestamp_end
    • speaker_id
      (如
      S1
      ,
      S2
      )
    • text_raw
  4. 优先保证中英混合识别准确性,保留术语原文,不做主观翻译。
  5. 若无法可靠识别发言人,显式标注
    speaker_id: Unknown
    ,并在风险提示中说明。

2) 智能重构与降噪 (Intelligence & Processing)

  1. text_raw
    执行去口语化处理:移除“嗯、啊、那个”等语气词及明显离题寒暄。
  2. 按语义议题而非时间顺序重组内容;将同一议题的分散发言聚合。
  3. 对每个议题按“双钻结构”重写为:
    • 问题描述
    • 原因分析
    • 解决方案
    • 最终决议
  4. 明确区分“已达成共识”和“仍待确认”。不得把猜测写成结论。

3) 结构化输出 (Output & Documentation)

严格使用 references/output-template.md 的版式。

强制规则

  1. 拒绝输出大段散文;以结构化小节和 Markdown 表格为主。
  2. Action Items
    必须是 Markdown 表格,并包含:
    • 任务项
    • 负责人
    • 交付物/截止日期
    • 备注
  3. 若某项结论没有明确
    Action Item
    ,必须在“风险提示”中单列提醒。
  4. 摘要必须直接进入结论,不输出空洞开场句。
  5. Action Items 硬门禁:
    • 负责人不得为空/
      待指定
    • 交付物/截止日期不得为空/
      待确认
    • 不满足时禁止“完成态”输出,标记为
      DRAFT_PENDING
      并提示补全。
  6. 生成会议思维导图(安全模式):
    • 从纪要提取“核心决议 / 待办事项 / 风险提示 / 议题脉络”生成导图数据。
    • 仅输出
      html
      /
      svg
      /
      xmind
      (禁用
      png
      /
      jpg
      /
      pdf
      路径)。
    • 执行命令:
      python3 scripts/generate_meeting_mindmap.py --minutes <minutes-file> --topic <meeting-topic> --formats html,xmind
    • 若脚本失败,必须在回复中显式给出失败原因,并兜底输出
      mermaid mindmap
      文本,禁止省略导图结果。

4) TTS 播报稿生成 (TTS & Feedback)

  1. 不全文朗读;仅提取“核心决议 + 待办事项 + 风险提示”生成 1-3 分钟播报稿。
  2. 在播报稿中加入节奏标记(如
    [停顿1s]
    [加重]
    [放慢]
    )。 2.1 朗读前必须清洗文本:去除 Markdown、URL、表格分隔符、控制标记和特殊符号,避免把符号读出来。 2.2 必须额外生成独立口播稿文件(
    <prefix>.spoken.txt
    ),TTS 只读取口播稿,不可直接朗读会议文档。 2.3 口播稿结构固定为:开场一句 -> 核心决议(最多3条)-> 待办(最多3条,含负责人和截止)-> 风险(最多2条)-> 收束一句。
  3. 按场景切换音色建议:
    • 项目部署/复盘:干练专业
    • 头脑风暴/团队同步:亲和清晰
  4. 当用户未指定音色时,默认“干练专业”。
  5. 当用户明确要求“生成录音/语音文件”时,除文本播报稿外,还必须提供可直接合成语音的最终朗读文本(去除控制标记版本)。 5.1 当用户仅提供文本纪要(未明确提语音)时,也必须生成语音文件(默认行为)。 5.2 文本输入默认生成一份核心音频:
    • 重点口播音频:
      <prefix>.mp3
      (基于
      .spoken.txt
    • 原文全文音频(
      .full.mp3
      )改为按需生成,不作为默认交付。 5.3 音频格式强制为
      mp3
      ;若只能生成
      m4a
      ,必须转码为
      mp3
      后再交付。 5.4 原文全文音频必须“逐字朗读”:
      .full.txt
      必须与用户输入文本一致,不允许清洗、改写、摘要或重排。
  6. 文本转语音输出默认要求:
    • 格式:统一
      mp3
      (若中间产物为
      m4a
      ,必须转码后交付)
    • 时长:
      1-3
      分钟
    • 内容:仅“核心决议 + 待办事项 + 风险提示”
    • 命名规范:
      <会议主题>-<YYYYMMDD-HHMMSS>.<ext>
  7. 在 macOS 本地优先使用
    scripts/generate_tts_brief.sh
    生成语音文件。
  8. 跨平台(Linux/macOS/Windows)优先使用
    scripts/audio_bridge.py
    • 默认使用
      provider=auto
      ,优先已安装识别引擎(local whisper),再回退云端/系统内置。
    • TTS
      provider=auto
      默认路由:
      edge -> builtin -> local -> openai
      (默认优先
      edge-tts
      )。
    • 默认音色固定:
      zh-CN-XiaoxiaoNeural
      ,默认风格:
      warm
    • 如需回退可显式传参:
      --provider auto
    • 不要求用户手动选择 provider/voice;若依赖缺失,直接给出安装提示并说明“安装后将自动恢复默认音色效果”。
    • 免费高质量 TTS 依赖(必装):
      python3 -m pip install edge-tts
    • 音频处理与转码依赖(必装):
      ffmpeg
    • 使用 OpenAI 回退时需设置
      OPENAI_API_KEY
    • OpenAI 默认模型可通过环境变量覆盖:
      • OPENAI_ASR_MODEL
        (默认
        gpt-4o-mini-transcribe
        )
      • OPENAI_TTS_MODEL
        (默认
        gpt-4o-mini-tts
        )
  9. 音色策略(默认统一):
    • 默认固定:
      edge + zh-CN-XiaoxiaoNeural + warm
    • 可通过环境变量覆盖:
      MEETING_TTS_EDGE_VOICE=<voice-name>
    • 输出结果中必须注明“实际使用音色”。
  10. 会议纪要文档与音频必须同名同时间戳,仅扩展名不同:
  • 文档:
    <会议主题>-<YYYYMMDD-HHMMSS>.txt
  • 音频:
    <会议主题>-<YYYYMMDD-HHMMSS>.m4a|mp3
  • 音频生成后必须做可解码校验;不可播放时自动切换下一 provider 重试,不可直接交付损坏文件。
  1. 全模型兜底返回格式(脚本不可用时):
  • 状态
    :
    SUCCESS
    PARTIAL_SUCCESS
    (必须明确)
  • 依赖检查
    : 已安装 / 缺失列表
  • 会议纪要
    : 按模板完整输出
  • 思维导图
    : 输出
    mermaid mindmap
    代码块
  • 语音结果
    : 输出“未生成原因 + 安装命令 + 重试命令”
  1. 执行命令(推荐):
  • 一键全量产出(推荐):
    python3 scripts/generate_meeting_bundle.py --input <minutes-text-file> --topic <meeting-topic> [--outdir <dir>]
  • 该命令默认强制校验 3 项核心产物:
    txt + audio.mp3 + mindmap.html
  • 脚本默认自动清理同主题历史产物与中间文件(如
    spoken/full/mindmap.json/xmind/transcript
    ),仅保留最新三件套。
  • 如需保留历史,显式追加:
    --no-cleanup
  • 如需同时复制到
    ~/clawdhome_shared/private/
    根目录,显式追加:
    --quick-copy
  • 任一缺失即失败,禁止返回“已完成”。
  • 最终回复仅允许展示上述 3 个核心文件;禁止额外展示中间文件路径。
  1. 执行命令(仅语音):
  • bash scripts/generate_tts_brief.sh <brief-text-file> <meeting-topic>
  • 该脚本默认委托
    audio_bridge.py
    的 edge 神经语音链路(不再走本地 Tingting 默认路径)。
  • 示例:
    bash scripts/generate_tts_brief.sh test-output/meeting-brief.txt 产品周会 test-output
  1. 执行命令(跨平台):
  • TTS:
    python3 scripts/audio_bridge.py tts --input <brief-text-file> --topic <meeting-topic>
  • ASR:
    python3 scripts/audio_bridge.py asr --input <audio-file> --topic <meeting-topic> --provider auto --language zh
  • ASR 一键自检:
    bash scripts/asr_self_check.sh [--input <audio-file>] [--provider auto|local|builtin|openai] [--clean-temp]
  • 自动安装依赖(macOS):在上面命令后追加
    --auto-install
  • 内置 ASR 脚本(macOS):
    scripts/builtin_asr.swift
  • ASR
    provider=auto
    默认路由:
    local -> openai -> builtin
    (优先安装引擎,不默认先走系统内置)。
  • m4a/mp3/aac/mp4
    压缩音频,内置 ASR 强制先走
    ffmpeg
    转码为
    wav
    ;缺少
    ffmpeg
    时直接提示安装(
    brew install ffmpeg
    )。
  • macOS 依赖一键引导:
    bash scripts/bootstrap_macos.sh
    (自动检测并安装
    ffmpeg
    )。
  1. 跨模型一致性建议(强制统一音色):
  • 固定 Provider:
    edge
  • 固定音色:
    zh-CN-XiaoxiaoNeural
  • 可设置环境变量:
    export MEETING_TTS_EDGE_VOICE=zh-CN-XiaoxiaoNeural
  1. 音频后处理(降低 AI 味):
  • 默认在
    audio_bridge.py tts
    成功后自动执行后处理。
  • 可单独执行:
    bash scripts/postprocess_audio.sh <input-audio> [output-audio]
  • 后处理链:高通 + 低通 + 压缩 + 响度标准化(语音听感更自然)。
  1. ASR 低置信度输出:
  • 在转写 JSON 中输出
    low_confidence_segments
    ,用于人工复核。
  • 优先复核这些片段再发布最终纪要。
  1. Action Items 校验脚本:
  • python3 scripts/validate_action_items.py <minutes.md>
  • 校验失败时视为不可发布状态。
  1. 思维导图脚本:
  • python3 scripts/generate_meeting_mindmap.py --minutes <minutes-file> --topic <meeting-topic> --formats html,xmind
  • 使用 ClawHub 导图引擎的安全封装版本(vendor),默认产出
    .mindmap.json + .html + .xmind

5) 质量门禁 (Quality Gate)

输出前逐条检查 references/quality-gate-checklist.md。 若未通过,不要直接提交最终纪要,先补齐缺失字段或标记“待补信息”。

6) 缺失信息处理 (Missing Data Policy)

  1. 负责人缺失:填
    待指定
    ,并在备注要求会后确认。
  2. 截止日期缺失:填
    待确认
    ,并在风险提示说明“时效不可追踪”。
  3. 决议边界不清:填“待确认结论”,禁止伪造最终决策。