微信扫码
添加专属顾问
我要投稿
Claude Skill + MCP 强强联手,轻松实现多格式文档知识提取与报告自动化,大幅提升工作效率!核心内容: 1. 如何搭建转录 MCP 服务器处理音视频输入 2. 创建会议文档 Claude Skill 实现信息提取与整合 3. 灵活修改 Skill 适配法律、HR、采购等不同业务场景
本文展示了一个实用示例,演示如何即时从散落在多种格式(.docx、.pdf、.ppt、.xlsx、图像、音频/视频录音)的文档堆中提取所需信息,并使用自定义 Claude Skill 和 MCP 服务器作为工具,根据给定模板生成结构化报告。你将学习如何快速在本地设置此 Skill 并将其集成到日常工作流程中。
组织和知识工作者经常面临通过分析分散在多个文档和格式中的信息来编写结构化报告的任务。
这些文档通常包括 PowerPoint 演示文稿、PDF、Excel 表格、会议录音、电子邮件、网络链接和其他非结构化或半结构化来源。
例如:
在所有这些用例中,任务都是相同的:从不同来源提取相关信息并以清晰的结构呈现。
当输出必须遵循固定模板时,任务变得更加费力和耗时,要求报告遵守预定义的布局、章节名称、顺序和术语。
输入数据的多样性进一步增加了复杂性。文本文档、电子表格、扫描文件、手写笔记、草图/图表和音频/视频录音各自需要不同的处理。
因此,尽管这个过程是常规和重复的,但编译单个报告可能需要几个小时,甚至几天的手工工作。
这些是 AI 可以提供显著价值的可重复任务类型,可以提高生产力并节省大量时间。
Claude Skills 在自动化常规和重复性任务方面具有强大的潜力。Skills 是指令、脚本和资源的文件夹,Claude 动态加载它们以提高特定任务的性能。Skills 教会 Claude 如何以可重复的方式完成特定任务。
在本文中,我将引导你完成一个端到端示例:
将跨多种格式的异构文档集合转换为遵循给定模板和/或样本的结构化报告。
我们将构建一个自定义 Claude Skill,它使用内置和自定义工具来读取、分析和融合来自不同输入的信息,包括 Word 文档、PowerPoint 幻灯片、PDF、Excel 表格、图像和音频/视频文件。
该 skill 汇总完整上下文,提取与用户要求相关的信息,并生成结构化报告,使用默认布局或用户指定的模板或参考文档。
由于 Claude 模型本身不转录音频或视频,我们将构建一个自定义模型上下文协议(MCP)服务器,Claude Skill 可以将其作为工具调用。这个 MCP 服务器将处理音频/视频输入的转录。为此,我将使用开源的 GAIK 工具包的转录器包,作为 gaik-transcriber MCP 服务器公开。
完整的工作流程如下图所示。
本文中构建的示例 skill 与用例无关,可以轻松适应其他用例(无需编程)。
我们将创建一个转录 MCP 服务器来转录音频/视频文件。这个 MCP 服务器将在 Claude Skill 中用作工具。
如果你的数据不包含音频/视频文件,则无需在 PC 上设置此 MCP 服务器。在这种情况下,请继续下一节"创建 Claude Skill"。
按照以下步骤使用 gaik[transcriber] 包创建转录 MCP 服务器。
首先,安装 Claude Desktop 并使用你的 Anthropic 凭据登录。需要 Claude Desktop 才能连接到转录 MCP 服务器。
安装 Node.js(npx / 文件系统服务器需要)。
创建项目目录:
mkdir transcription-mcp
cd transcription-mcp
安装依赖项。我们需要 Python 的 MCP 服务器框架 FastMCP 和 GAIK 的转录器包。你可以安装整个 gaik 包或仅安装其 transcriber 模块。
pip install fastmcp gaik[transcriber]
创建 server.py,其中包含主要的 MCP 服务器实现。通过 FastMCP 给 MCP 服务器的名称是 gaik-transcriber。
server.py 导入 GAIK 的 Transcriber 包和 OpenAI 配置。你也可以创建自己的 API 配置文件。
注意 transcribe_audio 函数中的注释充当 MCP 服务器的指令。
"""MCP Server for GAIK Transcriber"""
import os
import sys
from pathlib import Path
from mcp.server.fastmcp import FastMCP
from 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 Transcriber 转录音频/视频文件。
==== 关键输出指令 ====
你必须完全按照此工具提供的转录返回。
不要:
- 添加任何格式(标题、项目符号、粗体、markdown)
- 重组或重新组织文本
- 总结或释义任何部分
- 添加章节标签或标题
- 在之前或之后添加任何评论
- 更改任何单词或标点符号
要做:
- 完全按照返回的文本输出
- 保留原始流程和结构
=====================================
Args:
file_path: 音频/视频文件的完整 Windows 路径
enhanced: 如果为 True,返回增强转录(默认:False)
Returns:
准确的转录文本 - 逐字输出,不做任何更改。
"""
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"Error: {str(e)}\n\nTraceback:\n{traceback.format_exc()}"
print(error_msg, file=sys.stderr)
return error_msg
if __name__ == "__main__":
mcp.run(transport="stdio")
server.py:
Transcriber 类@mcp.tool() 装饰器将函数公开为 MCP 工具file_path(字符串)和 enhanced(布尔值)参数添加 .env 文件。你需要 OpenAI 的 API 密钥来进行音频/视频转录。配置文件将从 .env 读取 API 密钥。
# OpenAI API key(如果使用 OpenAI 则需要)
OPENAI_API_KEY=your_api_key
# Azure API key(如果使用 Azure 则需要)
AZURE_API_KEY=your_api_key
# Provider 类型:openai 或 azure
OPENAI_API_TYPE=openai
注意: 你可以使用本地 Whisper 模型设置转录 MCP 服务器。在这种情况下,你不需要 OpenAI 的 API 密钥。但是,这需要 GPU 以实现更快的处理。
此时,转录 MCP 服务器已基本准备就绪。但是,你可能想要安装 FFmpeg。GAIK 的 transcriber 包使用 Whisper 模型。对于超过 25MB 的音频/视频文件,需要分块,transcriber 包通过 FFmpeg 隐式处理。
从 https://ffmpeg.org/download.html 下载 FFmpeg 并将其解压到文件夹。记下其二进制文件的路径(例如,C:/ffmpeg-8.0.1-essentials_build/ffmpeg-8.0.1-essentials_build/bin)并将其添加到 Windows PATH。
打开 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 在你的系统上读/写本地文件。
将以下内容粘贴到 C:\Users\<YOUR_USERNAME>\AppData\Roaming\Claude\claude_desktop_config.json。你只需要更改 args 中的路径。
{
"mcpServers": {
"gaik-transcriber": {
"command": "python",
"args": ["C:\\Users\\h02317\\whisper-mcp\\server.py"],
"timeout": 600000
},
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"C:\\"
]
}
}
}
关闭 Claude Desktop。从系统托盘或任务管理器中也将其关闭。重启 Claude Desktop 以加载新的 MCP 服务器配置。
现在,你应该能够在 Claude Desktop 中看到两个 MCP 服务器(filesystem 和 gaik-transcriber)。
你还应该能够在 Claude Desktop 的 Settings → Connectors 中查看和配置这些工具。
如果有错误,请检查 %APPDATA%\Roaming\Claude\logs 中的日志。特别是检查两个 MCP 服务器的 mcp-server-filesystem.txt 和 mcp-server-gaik-transcriber.txt 日志文件。
使用音频或视频文件进行测试。Claude Desktop 的本机环境是 Linux。由于转录 MCP 服务器在 Windows 中运行,我们必须提供音频/视频文件的完整 Windows 路径。
在 Claude Desktop 中:
Transcribe the file in C:\Users\h02317\Downloads\video.mp4
GAIK 的转录器模块还有一个选项,可以通过在适当的位置创建行、创建段落和对话以及修复任何拼写或语法错误来增强转录。为此,我们可以要求 MCP 服务器增强转录,如下所示:
Transcribe the file in C:\Users\h02317\Downloads\video.mp4
enhanced: true
我们现在生成一个 Skill,它接受具有多种格式的多个文档:docx、ppt、pdf、xlsx、图像和音频/视频。它使用 gaik-transcriber MCP 服务器处理音频/视频文件,并使用 Claude 的内置 skills 和工具(pdf、docx、xlsx、pptx、view)处理其他文档类型。
然后,该 skill 融合所有上下文并考虑可选模板和可选样本文档以生成结构化报告。可选模板是一个具有所需结构(标题、副标题、章节、表格等)的空白文档。该 skill 可以直接编辑此模板以生成报告。
样本文档是一个完整的、已填写的报告,提供它是为了遵循特定的语气、风格、格式和结构。
如果没有提供模板和/或样本文档,该 skill 使用预定义的结构来生成报告。
作为示例,我们创建一个 documenting-meeting skill,它将分散的会议数据(录音、手写笔记、数字笔记、图表、草图、补充文档)转换为结构化的 MS Word 交付物,其中包含摘要、决策、行动项、开放问题以及可以直接复制粘贴到会议参与者电子邮件中的后续消息。
示例 skill 不仅限于处理会议数据。它可以轻松修改用于其他用例,其中用户必须从多种格式的多个文档生成报告。
以下是 skill 结构:
documenting-meetings/
├── SKILL.md # 主 skill 定义和工作流
├── EVALUATION.md # 测试场景和评估标准
└── reference/
├── INPUT_FORMATS.md # 输入类型处理详细信息
└── OUTPUT_SECTIONS.md # 输出章节指导
SKILL.md 是主文件,作为入口点,包含 Claude 用来决定何时以及如何运行 skill 的"做什么"指令。
在这个包中,我将核心工作流保留在 SKILL.md 中,并将详细的"如何做"指导拆分到参考文件中,以便 skill 保持可读性,同时仍然精确。
SKILL.md 以 YAML 前置元数据开始,命名 skill(documenting-meetings)并定义它的功能。紧接着,skill 解释了它最适合在哪里运行(Claude Desktop)以及原因。它假定两个外部功能:用于安全文件夹/文件操作的 MCP 文件系统服务器,以及用于转录的 gaik-transcriber MCP 服务器。
---
name: documenting-meetings
description: 将分散的会议数据(录音、手写笔记、图表、数字笔记、补充文档)转换为结构化的 MS Word 交付物,包含摘要、决策、行动项、开放问题和后续消息。当用户提到会议笔记、会议摘要、会议纪要、会议行动项、会议文档或需要整合会议材料时使用。
---
# 会议文档
将分散的会议材料——音频/视频录音、手写笔记、图表、数字笔记和补充文档——转换为一个格式良好的 MS Word 文档,包含简明摘要、决策、带有负责人和截止日期的行动项、开放问题以及准备发送的后续消息。
它设计为在 **Claude Desktop** 中运行,具有:
- MCP **filesystem** 服务器(用于列出/读取文件和文件夹)
- MCP **gaik-transcriber** 服务器(用于转录音频/视频录音)
工作流程包括以下步骤:
询问(仅在未提供时):
如果用户未指定输入文件夹路径,请询问它并确认它包含 input_documents/(必需)。
使用文件系统 MCP 工具列出:
<input_folder><input_folder>\input_documents(必需)<input_folder>\templates(可选)<input_folder>\sample_documents(可选)如果 input_documents/ 缺失或为空,停止并要求用户在那里添加会议工件。
从 input_documents/ 创建快速清单:
对于每个音频/视频文件,调用:
gaik-transcriber:transcribe_audiofile_path:录音的完整路径enhanced:默认为 false(仅当用户要求增强质量时才为 true)对于每个图像文件(.jpg、.jpeg、.png、.gif、.webp、.bmp、.tiff):
直接读取文件(.txt、.md、.rtf)。
使用 /mnt/skills/public/docx/SKILL.md 读取/写入 .docx 文件。
目标:从补充文档中提取相关信息,而不使用临时解析代码,也不使用 Windows/Linux 路径不匹配。
如果补充文件在 Claude Desktop 中上传/附加:
.pdf → PDF skill.pptx → PPTX skill.xlsx → XLSX skill.docx → DOCX skill将所有处理的输入合并到一个具有清晰分隔符的合并文本块中:
=== 转录:<filename> ===
<转录内容>
=== 手写笔记:<filename> ===
<解释内容>
=== 数字笔记:<filename> ===
<笔记内容>
=== 图表/图形:<filename> ===
<图表/图形描述>
=== 补充:<filename> ===
<提取内容>
检查专用子文件夹中的模板和样本:
模板(<input_folder>/templates/):
样本(<input_folder>/sample documents/):
如果找到:
在创建文档之前阅读 docx skill:
view /mnt/skills/public/docx/SKILL.md
然后遵循 docx skill 的"创建新 Word 文档"工作流来生成输出。
如果提供了模板: 复制模板并根据模板结构填写章节。
如果没有模板: 使用下面的输出格式创建新文档。
input_documents 文件夹present_files 与用户共享当没有提供模板或样本时,使用此结构:
会议摘要
===============
日期:[提取或推断的日期]
参与者:[如果可从输入中识别]
持续时间:[如果可用]
---
执行摘要
-----------------
[2-4 段简明的会议摘要,涵盖讨论的主要主题、
关键点和整体结果。保持事实,仅基于输入内容。]
---
决策
--------------
1. [决策文本]
- 上下文:[如果可用,简要上下文]
2. [决策文本]
- 上下文:[如果可用,简要上下文]
[如果在输入中未找到决策,完全省略此部分]
---
行动项
------------
| # | 行动项 | 负责人 | 截止日期 | 优先级 |
| ---- | --------------- | -------- | -------- | --------- |
| 1 | [描述] | [名称] | [日期] | [H/M/L] |
| 2 | [描述] | [名称] | [日期] | [H/M/L] |
[如果输入中未指定负责人/截止日期,标记为"待定"]
[如果未找到行动项,完全省略此部分]
---
开放问题
--------------
1. [提出但未解决的问题]
2. [需要后续跟进的问题]
[如果未找到开放问题,完全省略此部分]
---
后续消息
-----------------
[准备粘贴到电子邮件或聊天中的消息,总结关键结果和下一步。
保持专业和简洁。格式为:]
主题:会议后续 - [主题/日期]
嗨团队,
[1-2 段总结会议、关键决策和行动项]
下一步:
- [行动项 1] - [负责人] 截止 [日期]
- [行动项 2] - [负责人] 截止 [日期]
如有任何问题,请告诉我。
此致,
[发送者占位符]
要做:
不要做:
我在样本文档上运行了 skill(由 Claude Opus 4.5 生成)。这些文档采用 skill 所需的文件夹结构。skill 至少需要一个输入文档来处理。
input_folder/
├── input_documents/ # 必需:要处理的会议工件
│ ├── deployment-freeze-policy.pdf # 假期冻结政策(12 月 23 日 - 1 月 2 日)、值班时间表、例外规则
│ ├── notes.txt # 参与者的手写笔记,包含行动项、决策、关键要点
│ ├── project-budget.xlsx # Q3 预算分配和 5 个项目类别的支出
│ ├── roadmap-presentation.pptx # 2 页演示文稿:标题页 + 项目状态概述(移动、仪表板、API)
│ └── sketch.png # 白板时间线图,显示 Q3/Q4 里程碑和关键决策
├── sample_documents/ # 可选:输出样式/格式参考
│ └── sample-meeting-minutes.docx # 示例会议纪要(Q2 规划),定义语气、结构、长度
└── templates/ # 可选:带预定义章节的空白模板
└── meeting-template.docx # 带摘要、决策、行动、后续占位符的模板
除了这些文档之外,还单独向 skill 提供了会议录音的样本音频文件(.mp3)。这样做是为了避免 Windows 和 Linux 环境之间的文件路径不匹配,因为上传的文件位于 Claude Desktop 的本机 Linux 环境中;而转录 MCP 服务器在 Windows 环境中运行,音频/视频文件使用 fileserver MCP 定位。
在 Claude Desktop 中处理数据的提示:
Process the documents in the uploaded folder using documenting-meetings skill.
In addition to these documents, read one more audio file from local drive C:\Users\h02317\Downloads\meeting_recording.mp3.
skill 按照以下快照所示处理数据,演示整个代理工作流。
该 skill 遵循样本文档 sample-meeting-minutes.docx 在给定模板 meeting-template.docx 上生成输出文档。
以下是生成报告的快照。其长度、风格、格式和语气完全遵循给定的模板和样本文档。
本文中创建的示例 skill 演示了如何将多种格式的多个文档转换为所需格式的结构化报告。
此 skill 可以轻松适应其他用例。
在 Skill.md 中,你可能需要更改 name、description、输入发现和预处理步骤(扫描哪些文件夹,哪些文件类型重要)以及输出构建步骤(章节结构、语气以及最终文件的写入位置/方式)。此外,步骤 7 和步骤 10 也需要修改。
接下来,更新编码大部分"业务规则"的两个参考文件,这样你就不必重写整个工作流。如果你的新用例接受不同的媒体(例如,网络研讨会录音、访谈、客户电话、课堂讲座),请调整 INPUT_FORMATS.md。这是你定义支持的格式、对每种类型做什么以及跳过或标记什么的地方。
如果你的新用例需要不同的交付物(例如,事件报告、销售电话摘要、合规备忘录、项目状态更新),请编辑 OUTPUT_SECTIONS.md。这是你重新定义章节模式、每个章节的含义以及在缺少证据时省略什么的地方。
最后,将 EVALUATION.md 视为你的安全网:每当你更改输入、工具或输出模式时,更新测试用例,以便你可以快速验证 skill 是否仍然正确运行(特别是在缺少文件、部分输入或工具故障的情况下)。
该 skill 可以适应多个用例并以多种方式改进:
Skill、文件系统工具和你的 MCP 工具来运行相同的 skill 包。
更多文章阅读:
第124期:适合你实践的 10 个 LLM 与 RAG 项目
第150期 我如何用Python开发出一款AI工具,赚到了第一笔1000美元
第180期 智能体人工智能(Agentic AI):单智能体系统 vs 多智能体系统
《AI 智能体教程》——如何构建多智能体系统:开发者实用指南
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-01-24
MCP、Skills、SubAgent 到底是啥?简单捋一下
2026-01-24
LLM推理框架:11 款主流大模型推理引擎汇总
2026-01-24
从规则堆砌到价值内化:深度解读 Anthropic 发布的 Claude 新宪法
2026-01-24
Pencil:设计和写代码,以后就全让AI干了
2026-01-24
OpenAI 架构大揭秘:一台 PostgreSQL 撑起了 8 亿用户
2026-01-24
Sam Altman投震撼弹:世界将迎来强大模型,未来一个月Codex重磅更新,网络防御已准备好
2026-01-24
Claude Code 升级: Tasks 取代 Todos
2026-01-23
一套可复制的 Claude Code 配置方案:CLAUDE.md、Rules、Commands、Hooks
2026-01-10
2025-11-19
2025-11-13
2025-11-03
2026-01-01
2025-12-09
2025-11-12
2025-11-21
2025-11-15
2025-10-28
2026-01-23
2026-01-23
2026-01-22
2026-01-22
2026-01-21
2026-01-21
2026-01-12
2026-01-12