我构建了一个用于知识提取与报告撰写的 Claude Skill

1 阅读28分钟

Claude Skill+ MCP:从文档和媒体中提取知识,并根据你的模板生成报告

简要说明(TL;DR)

本文提供了一个实用示例:使用自定义的 Claude 技能(搭配 MCP 服务器作为工具),从分散在多种格式(docx、pdf、ppt、xlsx、图像、音视频录音)中的大量文档中即时提取所需信息,并根据给定模板生成结构化报告。你将学习如何快速在本地设置该技能并将其集成到日常工作中。

目录(TOC):

· 创建转录 MCP 服务器[1]· 创建用于会议纪要整理的 Claude 技能[2]· 在示例数据上运行该技能[3]· 为其他用例修改该技能[4]· 潜在扩展[5]

组织机构和知识工作者经常需要通过分析分散在多个文档和格式中的信息来撰写结构化报告。这些文档通常包括 PowerPoint 演示文稿、PDF 文件、Excel 表格、会议录音、电子邮件、网页链接以及其他非结构化或半结构化来源。

我在 AI 咨询领域的经验表明,市场对通过多文档信息提取实现 AI 驱动的报告生成需求日益增长。

例如:

  • 法律团队可能需要审阅来自多方利益相关者的文件,以准备合同或合规报告。
  • 项目经理可能需要将研讨会材料、笔记和录音整合成一份包含决策、行动项和后续事项的结构化摘要。
  • 采购团队通常将供应商文件汇编成标准化的评估报告。
  • 人力资源团队将简历、面试笔记和反馈综合成候选人评估。

在所有这些场景中,任务本质相同:从多样化的来源中提取相关信息,并以清晰的结构呈现

当输出必须遵循严格模板时,任务变得更加繁琐耗时——报告需遵守预定义的布局、章节名称、顺序和术语。

输入数据的多样性进一步增加了工作量。文本文档、电子表格、扫描件、手写笔记、图表/草图以及音视频录音各自需要不同的处理方式。因此,尽管该流程是常规且重复性的,但编制一份报告仍可能耗费数小时甚至数天的手动工作。

正是这类可重复的任务,AI 能带来显著价值,大幅提升生产力并节省大量时间。

Claude 技能在自动化常规重复性任务方面具有巨大潜力。在我之前的文章中,我已逐步演示了如何创建自定义 Claude 技能并将其应用于日常工作流。

在本文中,我将带你完成一个端到端的示例:

将异构的多格式文档集合转换为遵循指定模板和/或样例的结构化报告

我们将构建一个自定义 Claude 技能,该技能结合内置工具和自定义工具,读取、分析并融合来自 Word 文档、PowerPoint 幻灯片、PDF、Excel 表格、图像以及音视频文件等多样化输入的信息。该技能会聚合完整上下文,提取符合用户需求的相关信息,并生成结构化报告——既可使用默认布局,也可使用用户指定的模板或参考文档。

由于 Claude 模型本身无法直接转录音频或视频,我们将构建一个自定义的 **模型上下文协议(Model Context Protocol, MCP)**服务器,供 Claude 技能调用作为工具。该 MCP 服务器将处理音视频输入的转录任务。为此,我将使用我们开源的 GAIK 工具包中的 transcriber 模块,并将其暴露为 gaik-transcriber MCP 服务器。

完整工作流如下图所示。

img_009

本文构建的示例技能不绑定特定用例,可轻松适配其他场景(无需编程)。

让我们开始吧。

创建转录 MCP 服务器

我们将创建一个转录 MCP 服务器,用于转录音频/视频文件。该 MCP 服务器将在 Claude 技能中作为工具使用。我们将使用开源 GAIK 工具包(开发中)的 transcriber 模块 来搭建 MCP 服务器。

如果你的数据不包含音频/视频文件,则无需在电脑上设置此 MCP 服务器。此时请直接跳至下一节:“创建 Claude 技能”。

按照以下步骤,使用 gaik 的 [transcriber] 包创建转录 MCP 服务器。该服务器将在 Claude 技能中作为转录工具,用于处理输入文档中的音视频文件。

第一阶段:项目设置

首先,安装 Claude Desktop 并使用 Anthropic 账号登录。Claude Desktop 是连接转录 MCP 服务器所必需的。

安装 Node.js(用于 npx / 文件系统服务器)。从 官方安装程序 下载并安装。

创建项目目录:

mkdir transcription-mcpcd transcription-mcp

安装依赖项。你可以安装完整的 gaik 包,也可以仅安装其 transcriber 模块。

pip install fastmcp gaik[transcriber]
  • fastMCP:Python MCP 服务器框架(FastMCP)
  • gaik[transcriber]:用于音视频转录的 GAIK 转录器库
第二阶段:编写 MCP 服务器代码

创建 server.py,其中包含主 MCP 服务器实现。这里我们使用 GAIK 工具包的 Transcriber 包。通过 FastMCP 给 MCP 服务器命名 gaik-transcriber

注意:transcribe_audio 中的注释即为对 MCP 服务器的指令。

"""GAIK 转录器的 MCP 服务器"""import osimport sysfrom pathlib import Pathfrom mcp.server.fastmcp import FastMCPfrom gaik.building_blocks.transcriber import Transcriber, get_openai_config# 初始化 MCP 服务器mcp = FastMCP("gaik-transcriber")@mcp.tool()def transcribe_audio(file_path: str, enhanced: bool = False) -> str:    """    使用 GAIK 转录器转录音频/视频文件。    ==== 关键输出指令 ====    你必须原样返回此工具提供的转录文本。    禁止:    - 添加任何格式(标题、项目符号、加粗、Markdown)    - 重组或重新组织文本    - 摘要或改写任何部分    - 添加章节标签或标题    - 在前后添加任何评论    - 更改任何词语或标点    允许:    - 原样输出返回的文本    - 保留原始流和结构    =====================================    参数:        file_path: 音频/视频文件的完整 Windows 路径        enhanced: 若为 True,则返回增强版转录文本(默认:False)    返回:        完全一致的转录文本——请逐字输出,不做任何更改。    """    try:        config = get_openai_config(use_azure=False)        transcriber = Transcriber(            api_config=config,            enhanced_transcript=enhanced,        )        result = transcriber.transcribe(            file_path=Path(file_path),            custom_context="",        )        if enhanced and result.enhanced_transcript:            return result.enhanced_transcript        return result.raw_transcript    except Exception as e:        import traceback        error_msg = f"错误: {str(e)}\n\n追踪信息:\n{traceback.format_exc()}"        print(error_msg, file=sys.stderr)        return error_msgif __name__ == "__main__":    mcp.run(transport="stdio")

server.py 说明:

  • 使用 GAIK 的 Transcriber
  • 使用 @mcp.tool() 装饰器将函数暴露为 MCP 工具
  • 接受 file_path(字符串)和 enhanced(布尔值)参数
  • 使用 stdio 传输(通过标准输入/输出进行通信)

添加 .env 文件。你需要 OpenAI API 密钥用于音视频转录。

# OpenAI API 密钥(使用 OpenAI 时必需)OPENAI_API_KEY=your_api_key# Azure API 密钥(使用 Azure 时必需)AZURE_API_KEY=your_api_key# 提供商类型:openai 或 azureOPENAI_API_TYPE=openai

注意: 你也可以使用本地 Whisper 模型搭建转录 MCP 服务器。此时无需 OpenAI API 密钥,但需要 GPU 以加快处理速度。

至此,转录 MCP 服务器基本就绪。不过,你可能还需要安装 ffmpeg。该转录 MCP 服务器基于 GAIK 的 transcriber 包,后者使用 Whisper 模型。对于超过 25MB 的音视频文件,需要进行分块处理,这由 transcriber 包通过 ffmpeg 自动完成。

ffmpeg.org/download.ht… 下载 FFmpeg 并解压到某个文件夹。记下其二进制文件路径(例如 C:/ffmpeg-8.0.1-essentials_build/ffmpeg-8.0.1-essentials_build/bin),并将其添加到 Windows PATH 环境变量中。

第三阶段:配置 Claude Desktop

打开 Claude Desktop 的 MCP 配置文件:%APPDATA%\Claude\claude_desktop_config.json

示例路径可能是 C:\Users\<YOUR_USERNAME>\AppData\Roaming\Claude\claude_desktop_config.json

如果该文件不存在,请手动创建。

此文件用于告知 Claude Desktop 允许启动和使用哪些本地 MCP 服务器,以及如何启动它们。

我们将在配置文件中设置两个 MCP 服务器:转录服务器(位于 C:\\path\\to\\whisper-mcp\\server.py)和 fileserver(允许 Claude 读写你系统上的本地文件)。

{  "mcpServers": {    "gaik-transcriber": {      "command": "python",      "args": ["C:\\Users\\h02317\\whisper-mcp\\server.py"],      "timeout": 600000    },    "filesystem": {      "command": "npx",      "args": [        "-y",        "@modelcontextprotocol/server-filesystem",        "C:\\"      ]    }  }}

配置说明:

  • mcpServers:声明 Claude Desktop 应启动的 MCP 服务器(每个服务器对应 command/args/env)。
  • gaik-transcriber.command:通过 Python 运行转录器 MCP 服务器(本地进程,通常使用 STDIO 传输)。
  • gaik-transcriber.args:指向 server.py 的绝对 Windows 路径(MCP 服务器入口点)。
  • gaik-transcriber.timeout:600000 毫秒(10 分钟),以支持长时间运行的转录任务。
  • filesystem.command:使用 npx 运行官方文件系统 MCP 服务器。
  • filesystem.args-y 避免提示;@modelcontextprotocol/server-filesystem 是包名;C:\\ 是允许暴露给工具的根路径。
第四阶段:测试与调试

关闭 Claude Desktop(包括系统托盘或任务管理器中的后台进程),然后重新启动以加载新的 MCP 服务器配置。

现在你应该能在 Claude Desktop 中看到两个 MCP 服务器(filesystemgaik-transcriber)。

img_008 你还可以在 Claude Desktop 的 设置 → 连接器 中查看并配置这些工具。

img_007 如有错误,请检查日志文件 %APPDATA%\Roaming\Claude\logs。特别关注两个 MCP 服务器的日志文件:mcp-server-filesystem.txtmcp-server-gaik-transcriber.txt

使用音频或视频文件进行测试。Claude Desktop 的原生环境是 Linux,而转录 MCP 服务器运行在 Windows 上,因此我们需要向音视频文件提供完整的 Windows 路径。

在 Claude Desktop 中输入:

转录 C:\Users\h02317\Downloads\video.mp4 中的文件

img_006 GAIK 的转录器模块还支持通过在适当位置创建换行、段落和对话,并修正拼写或语法错误来“增强”转录文本。为此,我们可以要求 MCP 服务器生成增强版转录:

转录 C:\Users\h02317\Downloads\video.mp4 中的文件enhanced: true

img_005 img_004

创建用于会议纪要整理的 Claude 技能

我们现在将生成一个技能,该技能可处理多种格式的文档:docx、ppt、pdf、xlsx、图像和音视频。它使用 gaik-transcriber MCP 服务器处理音视频文件,并利用 Claude 的内置技能和工具(pdfdocxxlsxpptxview)处理其他文档类型。

该技能随后融合所有上下文,并考虑可选的模板和可选的样例文档,生成结构化报告。可选模板是一个带有所需结构(标题、副标题、章节、表格等)的空白文档。该技能可直接在此模板上编辑生成报告。

样例文档是一份完整的、已填写的报告,用于指定所需的语气、风格、格式和结构。

如果没有提供模板和/或样例文档,该技能将使用预定义结构生成报告。

作为示例,我们创建一个 documenting-meeting 技能,将分散的会议数据(录音、手写笔记、数字笔记、图表、草图、补充文档)转换为结构化的 MS Word 交付物,包含摘要、决策、行动项、未决问题以及可直接复制粘贴到邮件中发送给与会者的跟进消息。

该示例技能不仅限于处理会议数据。它可以轻松修改用于其他需要从多种格式文档生成报告的场景。

技能结构如下:

documenting-meetings/├── SKILL.md              # 主技能定义与工作流├── EVALUATION.md         # 测试场景与评估标准└── reference/    ├── INPUT_FORMATS.md      # 输入类型处理细节    └── OUTPUT_SECTIONS.md    # 输出章节指南

SKILL.md 是主文件,作为入口点,包含 Claude 用于决定何时及如何运行该技能的“做什么”指令。

在此包中,我将核心工作流保留在 SKILL.md 中,并将详细的“如何做”指南拆分到参考文件中,以保持技能可读性同时确保精确性。

SKILL.md 以 YAML 前置元数据开头,命名技能(documenting-meetings)并定义其功能。紧接着,该技能说明最佳运行环境(Claude Desktop)及原因:它假设有两个外部能力——用于安全文件夹/文件操作的 MCP 文件系统服务器,以及用于转录的 gaik-transcriber MCP 服务器。

---name: documenting-meetingsdescription: 将分散的会议数据(录音、手写笔记、图表、数字笔记、补充文档)转换为结构化的 MS Word 交付物,包含摘要、决策、行动项、未决问题和跟进消息。当用户提到会议笔记、会议摘要、会议纪要、会议行动项、会议文档,或需要整合会议材料时使用。---# 会议文档整理将分散的会议材料——音视频录音、手写笔记、图表、数字笔记和补充文档——整合为一份格式良好的 MS Word 文档,包含简洁摘要、决策、带负责人和截止日期的行动项、未决问题以及可直接发送的跟进消息。该技能设计用于在 **Claude Desktop** 中运行,需配合:- MCP **文件系统**服务器(用于列出/读取文件和文件夹)- MCP **gaik-transcriber**服务器(用于转录音视频录音)## 何时使用在以下情况使用此技能:- 用户提到“会议笔记”、“会议摘要”、“会议纪要”、“会议文档”- 用户需要将多个会议材料整合为一份文档- 用户要求从会议中提取行动项、决策或跟进事项- 用户有会议录音、手写笔记或其他会议素材需处理- 用户希望从会议数据生成结构化交付物## 输入**必需(至少一项):**- 会议录音(音视频文件)——使用 `gaik-transcriber:transcribe_audio` 转录- 手写笔记(扫描图像)——通过视觉解读- 数字笔记(文本文件、Markdown 等)- 图表/草图/图形(图像)- 多人的评论或笔记**可选:**- 补充文档(PowerPoint 幻灯片、PDF 指南、政策文档、Excel 文件)- 输出模板(带有预定义标题、章节、Logo 的空白 .docx)- 样例输出文档(.docx 或 .pdf),用于指定风格、格式、语气和长度**必需参数:**- `input_folder`:包含所需子文件夹结构的主输入文件夹路径。若未提供,请用户指定。**必需的文件夹结构:**/├── input_documents/     # 必需:录音、照片、笔记、演示文稿、PDF 等├── templates/           # 可选:带有预定义标题、章节、Logo 的空白模板└── sample_documents/    # 可选:定义风格、格式、语气、长度的样例文档```python## 工具规则(Windows 与 Linux 路径安全性)### 为何重要在 Windows 上,Claude Desktop + 工具链有时表现得像在 POSIX shell 中,生成类似 `/mnt/c/...` 的路径。而你的 MCP 服务器可能运行在**原生 Windows Python** 环境中,期望 `C:\...` 路径。这种不匹配可能导致“文件未找到”或 shell 命令失败。### 严格规则1) **优先使用 MCP 文件系统工具进行文件/文件夹操作**使用文件系统服务器列出和读取文件,而非 shell 命令。2) **在 Windows 上避免 bash 命令**如必须在 Windows 上运行命令,优先使用 **PowerShell**。3) **调用 gaik-transcriber 时,在 Windows 上优先使用带盘符的 Windows 路径**传递类似 `C:\Users\...\recording.m4a` 的文件路径。若仅有 POSIX/WSL 路径(如 `/mnt/c/...`),请在调用转录器前转换为 Windows 路径,或依赖转录器服务器内部的路径标准化(推荐)。4) **切勿假设环境为 Linux**将运行时视为操作系统模糊状态,并强制执行上述规则以保持稳定。5) **严禁以下行为:**严禁运行 pip install、python -c、pdfplumber 或任何用于 .pdf/.pptx/.xlsx 的临时解析代码。严禁使用 /mnt/user-data/uploads/... 路径;仅使用 MCP 文件系统列出的路径或用户提供的 Windows 文件夹路径。若即将执行上述任一操作,请立即停止并切换至内置的 PDF/PPTX/XLSX 技能。## 工作流### 步骤 0 — 收集上下文仅在未提供时询问:- 会议标题或目的(可选)- 期望的输出格式(默认为 Markdown)- 任何特殊关注点:“仅行动项”、“仅决策”、“面向客户的摘要”等。## 步骤 1 — 验证输入文件夹结构和能力若用户未指定输入文件夹路径,请其提供并确认其中包含 `input_documents/`(必需)。### 1) 验证文件夹结构(仅使用 MCP 文件系统)使用文件系统 MCP 工具列出:- ``- `\input_documents`(必需)- `\templates`(可选)- `\sample_documents`(可选)若 `input_documents/` 缺失或为空,则停止并请用户将会议素材放入其中。### 2) 能力检查(防止 Windows/Linux 路径导致二进制文件处理循环)目的:提前判断此环境是否能处理 Windows 文件夹中的**二进制**文件,而无需用户上传。清点以下位置发现的二进制文件:- `\input_documents`- `\templates`- `\sample_documents`将以下文件视为**二进制**(无法通过文本工具安全读取):- `.pdf`, `.pptx`, `.xlsx`, `.docx`决策:- 若存在任何二进制文件且仅位于 Windows 文件夹中:  - 假设无法直接处理,除非有二进制处理能力的工具。  - 官方 Node 文件系统 MCP 服务器支持读取文本文件和图像/音频媒体,但不保证通用二进制读取(如 Office/PDF 文件)。 :contentReference[oaicite:2]{index=2}  - 因此:    - 若有专用 MCP 文档解析工具(推荐),则使用它处理这些文件。    - 否则,必须请用户在 Claude Desktop 中上传/附加这些二进制文件,以便使用内置的 PDF/PPTX/XLSX/DOCX 技能处理。若用户要求“仅本地文件夹”处理 PDF/PPTX/XLSX/DOCX:- 解释这需要:  - 支持二进制/base64 读取的二进制兼容文件系统 MCP 服务器,或  - Windows 原生文档解析 MCP 服务器。  (明确支持二进制/base64 读取的文件系统 MCP 服务器示例:`mark3labs/mcp-filesystem-server`。) :contentReference[oaicite:3]{index=3}无论二进制处理结果如何,继续核心工作流(转录 + 文本笔记 + 图像)。### 步骤 2 — 清点输入文件从 `input_documents/` 创建快速清单:- 录音(音视频)- 图像(手写笔记、图表)- 文本文档(议程、纪要草稿、邮件等)- PDF / 幻灯片(如可能则读取文本;否则摘要)### 步骤 3 — 转录录音(gaik-transcriber MCP 工具)对每个音视频文件,调用:- `gaik-transcriber:transcribe_audio`  - `file_path`:录音的完整路径  - `enhanced`:默认为 false(仅当用户要求增强质量时为 true)若转录因“文件未找到”失败:- 重新检查路径格式,确保在 Windows 上使用带盘符的 Windows 路径。#### 步骤 4 - 图像(手写笔记、图表、草图、图形)对每个图像文件(.jpg, .jpeg, .png, .gif, .webp, .bmp, .tiff):2. 解读图像内容(手写笔记、图表)3. 创建文本描述,捕捉所有相关信息#### 步骤 5 - 笔记直接读取文件(.txt, .md, .rtf)。使用 /mnt/skills/public/docx/SKILL.md 读写 .docx 文件。## 步骤 6 — 补充文档(.pdf, .pptx, .xlsx, .docx)目标:从补充文档中提取相关信息,**不使用临时解析代码**,**不产生 Windows/Linux 路径不匹配**。### 不可协商规则(硬性规定)- 严禁运行 `cp`、`pip install`、`python -c`、`pdfplumber`、`soffice`、`pandoc` 或任何临时解析命令从 Windows 路径读取 `.pdf/.pptx/.xlsx/.docx`。- 严禁假设 `C:\...` 或 `/mnt/c/...` 在 Linux 沙箱中可访问。- 严禁虚构上传路径(如 `/mnt/user-data/uploads/...`),除非环境明确提供。- 不要使用文件系统 MCP 服务器“加载内置技能文件”。文件系统服务器用于用户允许的目录,而非 Claude 的内部技能库。(当附件可用时,请直接使用内置技能。) :contentReference[oaicite:4]{index=4}### 决策树A) 若补充文件已在 Claude Desktop 中上传/附加- 使用对应的内置技能:  - `.pdf` → PDF 技能  - `.pptx` → PPTX 技能  - `.xlsx` → XLSX 技能  - `.docx` → DOCX 技能- 仅提取与会议交付物相关的内容(决策、时间线、路线图项、行动项、风险)。- 按文件名标注提取内容。B) 若补充文件仅存在于 Windows 文件夹中(通过 `filesystem:list_directory` 发现)1) 类文本文件(`.txt`, `.md`, `.csv`, `.json`)- 通过文件系统 `read_text_file` 读取并提取相关内容。2) 二进制文件(`.pdf`, `.pptx`, `.xlsx`, `.docx`)—— 重要- 切勿尝试通过沙箱工具(pandoc/python/soffice 等)进行转换或解析。- 若有专用 MCP 文档解析工具:  - 使用 Windows 路径调用解析器,并在综合时使用返回的提取文本/表格。- 否则:  - 请用户在 Claude Desktop 中上传/附加这些文件。  - 继续处理可处理的内容(转录、笔记、图像),并将缺失的二进制文件列为“缺失输入”。模板 + 样例:- 若模板/样例文档为 `.docx/.pdf/.pptx/.xlsx` 且仅在 Windows 磁盘上:  - 请用户上传它们。  - 若未提供,则使用干净的默认 Markdown 结构继续。### 输出处理- 若补充二进制文件不可用(未上传且无解析工具),明确列出:  - 缺失输入:, , ...- 使用可用证据和默认格式生成会议交付物。- 切勿因补充二进制文件缺失而阻塞整个工作流。### 步骤 7:融合信息将所有处理后的输入合并为单一整合文本块,并用清晰分隔符标记:=== 转录:  ====== 手写笔记:  ====== 数字笔记:  ====== 图表/图形:  ====== 补充:  ===### 步骤 8:检查模板和样例文档检查专用子文件夹中的模板和样例:**模板(`/templates/`):**- 查找带有预定义结构(标题、章节、Logo)的空白 .docx 文件- 若存在多个文件,使用找到的第一个 .docx 文件。**样例(`/sample documents/`):**- 查找定义所需风格、格式、语气和长度的 .docx 或 .pdf 文件- 若存在多个文件,使用找到的第一个文档若找到:- 对于模板:复制它并填充内容(不修改结构)- 对于样例:严格遵循其格式、风格、语气和长度### 步骤 9:生成交付物在创建文档前阅读 docx 技能说明:view /mnt/skills/public/docx/SKILL.md然后遵循 docx 技能的“创建新 Word 文档”工作流生成输出。**若提供模板:** 复制模板并根据模板结构填充各部分内容。**若无模板:** 使用以下输出格式创建新文档。### 步骤 10:保存并呈现1. 将文档保存到 `input_documents` 文件夹2. 使用 `present_files` 与用户共享## 输出格式(灵活 - 若提供模板/样例则调整)当未提供模板或样例时,使用此结构:会议摘要===============日期:[提取或推断的日期]与会者:[若可识别]时长:[若可用]---执行摘要-----------------[2-4 段简洁摘要,涵盖会议讨论的主要议题、关键要点和整体成果。仅基于输入内容,保持事实性。]---已做决策--------------1. [决策文本]   - 背景:[如有,简要背景]2. [决策文本]   - 背景:[如有,简要背景][若输入中未找到决策,则完全省略此部分]---行动项------------| # | 行动项 | 负责人 | 截止日期 | 优先级 ||---|-------------|-------|----------|----------|| 1 | [描述] | [姓名] | [日期] | [高/中/低] || 2 | [描述] | [姓名] | [日期] | [高/中/低] |[若输入中未指定负责人/截止日期,标记为“待定”][若未找到行动项,则完全省略此部分]---未决问题--------------1. [提出但未解决的问题]2. [需跟进的问题][若未找到未决问题,则完全省略此部分]---跟进消息-----------------[可直接粘贴到邮件或聊天中的消息,总结关键成果和后续步骤。保持专业简洁。格式如下:]主题:会议跟进 - [主题/日期]大家好,[1-2 段总结会议、关键决策和行动项]后续步骤:- [行动项 1]- [负责人] 于 [日期] 前完成- [行动项 2]- [负责人] 于 [日期] 前完成如有任何问题,请随时告知。此致,[发件人占位符]```python## 防护措施**应做:**- 忠实提取所提供输入中的信息- 将不确定信息标记为“待定”或“录音中不明确”- 保留输入中的原始术语和名称- 严格遵循提供的模板/样例格式- 若输入中无相关信息,则省略相应部分**不应做:**- 编造或幻觉输入中不存在的任何信息- 添加源材料中未提及的行动项、决策或与会者- 对未明确说明的日期、负责人或截止日期做出假设- 在交付物中包含输入中不存在的信息部分**若信息缺失:**- 对于必填字段:标记为“待定”或“会议材料中未指定”- 对于整个部分:从交付物中省略该部分- 若关键输入缺失:告知用户哪些额外材料会有帮助**错误处理:**- 若转录失败:报告错误并继续处理其他输入- 若文件无法解析:记录问题并继续处理剩余文件- 若未找到可用输入:请用户验证文件夹路径和文件格式## 示例### 示例 1:含录音和笔记的标准会议**用户提示:**"处理我位于 /home/user/meetings/q4-planning 的会议材料并创建摘要文档"**预期文件夹结构:**/home/user/meetings/q4-planning/├── input_documents/│   ├── meeting-recording.mp4│   ├── whiteboard-photo.jpg│   └── my-notes.txt├── templates/           # (空或不存在)└── sample_documents/    # (空或不存在)```python**预期行为:**1. 验证文件夹结构,在 input_documents/ 中找到 3 个文件2. 使用 gaik-transcriber 转录录音3. 解读白板照片4. 读取数字笔记5. 使用分隔符融合所有内容6. 生成包含所有适用部分的 Word 文档(无模板/样例)7. 保存到 outputs 并呈现给用户### 示例 2:含模板和样例**用户提示:**"使用我们公司模板,根据 /meetings/standup 中的文件创建会议纪要"**预期文件夹结构:**/meetings/standup/├── input_documents/│   ├── recording.m4a│   └── notes.txt├── templates/│   └── company-template.docx└── sample_documents/    └── sample-minutes.docx```python**预期行为:**1. 在 templates/ 子文件夹中找到模板2. 在 sample_documents/ 子文件夹中找到样例3. 处理 input_documents/ 中的所有材料4. 复制模板并按照样例风格填充内容5. 呈现格式化文档### 示例 3:最小输入**用户提示:**"我只有一个通话的语音备忘录——你能把它变成会议笔记吗?文件夹是 /recordings/client-call"**预期文件夹结构:**/recordings/client-call/├── input_documents/│   └── voice-memo.m4a├── templates/           # (空或不存在)└── sample_documents/    # (空或不存在)**预期行为:**1. 验证结构,在 input_documents/ 中找到单个音频文件2. 转录音频文件3. 仅使用可用部分生成交付物4. 省略无信息的章节5. 在跟进消息中注明细节可能需要验证## 参考资料遵循以下参考文档获取每种输入文件类型的详细处理方法,以及每个交付物章节的指南。- `reference/INPUT_FORMATS.md` – 每种输入文件类型的详细处理规则- `reference/OUTPUT_SECTIONS.md` – 每个交付物章节的指南

步骤 0 是快速上下文检查,确认基本要素。步骤 1 是可靠性步骤,使用 MCP 文件系统列出验证所需文件夹结构。

步骤 2 确定实际存在的内容(录音、图像、笔记、补充文档)。步骤 3 使用 gaik-transcriber:transcribe_audio 转录音视频文件,默认 enhanced: false

步骤 4 和 5 处理图像和文本笔记。图像通过视觉解读为结构化文本,而 .txt/.md/.rtf 笔记则直接读取。

步骤 6 阻止不安全方法(无 pip install,无 python -c,无 soffice/pandoc 黑客手段,无猜测 /mnt/... 路径),并在 (A) 文件附加时使用适当文档处理、(B) 对类文本格式使用 MCP,或 (C) 列出不可访问的缺失二进制文件之间做出选择。

一旦所有可用输入处理完毕,步骤 7 将所有内容融合为一个带清晰分隔符的整合证据块(按文件名区分转录、手写笔记、数字笔记、图表、补充提取)。

步骤 8–9 从提取转向生成。技能检查可选的模板和样例文档,若提供则严格遵循,并在无模板/样例时生成干净的默认文档结构。最后,步骤 10 呈现生成的文件。

该技能还有三个支持文件,作为“附录”保持 SKILL.md 简洁的同时确保行为一致。reference/INPUT_FORMATS.md 记录每种输入类型的处理规则(支持的音视频扩展名、确切转录调用、图像解读期望,以及如何处理补充文档和模板/样例)。

reference/OUTPUT_SECTIONS.md 定义每个输出部分的含义、何时出现,以及——至关重要的是——何时必须省略(例如,若无明确决策,则移除“决策”部分而非填充占位符)。

EVALUATION.md 提供测试提示和通过/失败标准,可用于在真实场景中验证技能(多输入会议、模板+样例运行、仅音频会议、错误恢复和“缺失文件夹路径”情况)。

要在 Claude Desktop 中使用该技能,请将技能文件夹打包为 .zip 文件,并通过点击**设置 → 功能中的+添加**** 上传。**

在示例数据上运行该技能

我在示例文档(由 Claude Opus 4.5 生成)上运行了该技能。这些文档采用技能所需的相同文件夹结构。技能至少需要一个输入文档进行处理。

input_folder/├── input_documents/                      # 必需:待处理的会议素材│   ├── deployment-freeze-policy.pdf      # 假期冻结政策(1223日 - 12日)、值班安排、例外规则│   ├── notes.txt                         # 与会者手写笔记,含行动项、决策、关键要点│   ├── project-budget.xlsx               # Q3 预算分配及五大项目类别的支出│   ├── roadmap-presentation.pptx         # 2页幻灯片:标题页 + 项目状态概览(移动应用、仪表盘、API)│   └── sketch.png                        # 白板时间线图表,显示 Q3/Q4 里程碑和关键决策├── sample_documents/                     # 可选:输出风格/格式参考│   └── sample-meeting-minutes.docx       # 示例会议纪要(Q2 规划),定义语气、结构、长度└── templates/                            # 可选:带有预定义章节的空白模板    └── meeting-template.docx             # 带有摘要、决策、行动项、跟进占位符的模板

除这些文档外,还单独向技能提供了一个示例音频文件(.mp3)的会议录音。这是为了避免 Windows 和 Linux 环境之间的文件路径不匹配,因为上传的文件位于 Claude Desktop 的原生 Linux 环境中;而转录 MCP 服务器运行在 Windows 环境中,音视频文件通过 fileserver MCP 定位。

示例数据可在 GitHub 仓库中找到。

将输入文档打包为 .zip 并上传至 Claude Desktop。

Claude Desktop 中处理数据的提示:

使用 documenting-meetings 技能处理上传文件夹中的文档。此外,从本地驱动器 C:\Users\h02317\Downloads\meeting_recording.mp3 读取一个额外的音频文件。

技能处理数据的过程如下图所示,展示了完整的智能体工作流。

img_003 img_002 该技能遵循样例文档 sample-meeting-minutes.docx,在给定模板 meeting-template.docx 上生成输出文档。

以下是生成报告的截图。其长度、风格、格式和语气完美遵循了给定的模板和样例文档。

img_001

为其他用例修改该技能

本文创建的示例技能展示了如何将多种格式的文档转换为所需格式的结构化报告。

该技能可轻松适配其他用例。

Skill.md 中,你可能需要更改 namedescription、输入发现与预处理步骤(扫描哪些文件夹,哪些文件类型重要),以及输出构建步骤(章节结构、语气,以及最终文件的写入位置/方式)。此外,步骤 7 和步骤 10 也需要修改。

接下来,更新两个编码大部分“业务规则”的参考文件,这样就不必重写整个工作流。如果你的新用例接受不同媒体(如网络研讨会录音、访谈、客户通话、课堂讲座),请调整 INPUT_FORMATS.md。这里定义支持的格式、每种类型的处理方式,以及要跳过或标记的内容。

如果你的新用例需要不同的交付物(如事故报告、销售通话摘要、合规备忘录、项目状态更新),请编辑 OUTPUT_SECTIONS.md。这里重新定义章节模式、每个章节的含义,以及证据缺失时的处理方式。

最后,将 EVALUATION.md 视为安全网:每当更改输入、工具或输出模式时,更新测试用例,以便快速验证技能行为是否仍然正确(尤其是在缺失文件、部分输入或工具故障的情况下)。

潜在扩展

该技能可适配多种用例并在多方面改进:

  • 通过 Claude Agent SDK 将技能转化为应用工作流通过 SDK 智能体运行相同的技能包,可程序化调用 Skill、文件系统工具和你的 MCP 工具。
  • 扩展技能以支持生成-修订-校正工作流生成的报告可经检查并在需要时修正。此过程可进行多轮,直至报告通过验证标准。
  • 探索其他用例,如根据模板分析和改进简历、根据客户+公司文档生成销售提案,或从内部政策和证据文件综合合规文档。

#AI #AI工具 #软件开发 #LLM #大模型 #agent #Agent #智能体


希望这篇文章能为您带来一些帮助。如果有任何疑问或建议,请在评论区留言,我们将尽力回答!

让我们一起探索并推动前沿技术发展!🚀💻

祝好运!😊✍️

-END-

微信公众号:算子之心