免费POC, 零成本试错
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


我要投稿

构建 Claude Skill 实现知识提取与报告生成

发布日期:2026-01-24 08:45:25 浏览次数: 1517
作者:AI拉呱-洞察AI技术前沿

微信搜一搜,关注“AI拉呱-洞察AI技术前沿”

推荐语

Claude Skill + MCP 强强联手,轻松实现多格式文档知识提取与报告自动化,大幅提升工作效率!

核心内容:
1. 如何搭建转录 MCP 服务器处理音视频输入
2. 创建会议文档 Claude Skill 实现信息提取与整合
3. 灵活修改 Skill 适配法律、HR、采购等不同业务场景

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家



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

概述

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

目录

  • • 创建转录 MCP 服务器
  • • 创建会议文档 Claude Skill
  • • 在样本数据上运行 Skill
  • • 为其他用例修改 Skill
  • • 潜在扩展

背景

组织和知识工作者经常面临通过分析分散在多个文档和格式中的信息来编写结构化报告的任务。

这些文档通常包括 PowerPoint 演示文稿、PDF、Excel 表格、会议录音、电子邮件、网络链接和其他非结构化或半结构化来源

例如:

  • • 法律团队可能需要审查来自多个利益相关者的文档以准备合同或合规报告
  • • 项目经理可能需要将研讨会材料、笔记和录音整合成包含决策、行动项和后续跟进的结构化摘要
  • • 采购团队经常将供应商文档编译成标准化评估报告
  • • HR 团队将简历、面试笔记和反馈综合成候选人评估

在所有这些用例中,任务都是相同的:从不同来源提取相关信息并以清晰的结构呈现

当输出必须遵循固定模板时,任务变得更加费力和耗时,要求报告遵守预定义的布局、章节名称、顺序和术语。

输入数据的多样性进一步增加了复杂性。文本文档、电子表格、扫描文件、手写笔记、草图/图表和音频/视频录音各自需要不同的处理。

因此,尽管这个过程是常规和重复的,但编译单个报告可能需要几个小时,甚至几天的手工工作。

这些是 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 服务器来转录音频/视频文件。这个 MCP 服务器将在 Claude Skill 中用作工具。

如果你的数据不包含音频/视频文件,则无需在 PC 上设置此 MCP 服务器。在这种情况下,请继续下一节"创建 Claude Skill"。

按照以下步骤使用 gaik[transcriber] 包创建转录 MCP 服务器。

阶段 1:项目设置

首先,安装 Claude Desktop 并使用你的 Anthropic 凭据登录。需要 Claude Desktop 才能连接到转录 MCP 服务器。

安装 Node.jsnpx / 文件系统服务器需要)。

创建项目目录:

mkdir transcription-mcp
cd
 transcription-mcp

安装依赖项。我们需要 Python 的 MCP 服务器框架 FastMCP 和 GAIK 的转录器包。你可以安装整个 gaik 包或仅安装其 transcriber 模块。

pip install fastmcp gaik[transcriber]

阶段 2:编写 MCP 服务器代码

创建 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:

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

添加 .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。

阶段 3:配置 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 在你的系统上读/写本地文件。

将以下内容粘贴到 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:\\"

      ]

    }

  }

}

阶段 4:测试和调试

关闭 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

创建会议文档 Claude Skill

我们现在生成一个 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** 服务器(用于转录音频/视频录音)

工作流程包括以下步骤:

步骤 0 — 收集上下文

询问(仅在未提供时):

  • • 会议标题或目的(可选)
  • • 所需的输出格式(默认为 Markdown)
  • • 任何特殊关注点:"仅行动项"、"仅决策"、"面向客户的摘要"等

步骤 1 — 验证输入文件夹结构和功能

如果用户未指定输入文件夹路径,请询问它并确认它包含 input_documents/(必需)。

使用文件系统 MCP 工具列出:

  • • <input_folder>
  • • <input_folder>\input_documents(必需)
  • • <input_folder>\templates(可选)
  • • <input_folder>\sample_documents(可选)

如果 input_documents/ 缺失或为空,停止并要求用户在那里添加会议工件。

步骤 2 — 清点输入文件

从 input_documents/ 创建快速清单:

  • • 录音(音频/视频)
  • • 图像(手写笔记、图表)
  • • 文本文档(议程、会议纪要草稿、电子邮件等)
  • • PDF / 幻灯片

步骤 3 — 转录录音(gaik-transcriber MCP 工具)

对于每个音频/视频文件,调用:

  • • gaik-transcriber:transcribe_audio
    • • file_path:录音的完整路径
    • • enhanced:默认为 false(仅当用户要求增强质量时才为 true)

步骤 4 - 图像(手写笔记、图表、草图、图形)

对于每个图像文件(.jpg、.jpeg、.png、.gif、.webp、.bmp、.tiff):

  1. 1. 解释图像内容(手写笔记、图表、图形)
  2. 2. 创建捕获所有相关信息的文本描述

步骤 5 - 笔记

直接读取文件(.txt、.md、.rtf)。
使用 /mnt/skills/public/docx/SKILL.md 读取/写入 .docx 文件。

步骤 6 — 补充文档(.pdf、.pptx、.xlsx、.docx)

目标:从补充文档中提取相关信息,而不使用临时解析代码,也不使用 Windows/Linux 路径不匹配。

如果补充文件在 Claude Desktop 中上传/附加:

  • • 使用相应的内置 skill:
    • • .pdf → PDF skill
    • • .pptx → PPTX skill
    • • .xlsx → XLSX skill
    • • .docx → DOCX skill

步骤 7:融合信息

将所有处理的输入合并到一个具有清晰分隔符的合并文本块中:

=== 转录:<filename> ===
<转录内容>

=== 手写笔记:<filename> ===
<解释内容>

=== 数字笔记:<filename> ===
<笔记内容>

=== 图表/图形:<filename> ===
<图表/图形描述>

=== 补充:<filename> ===
<提取内容>

步骤 8:检查模板和样本文档

检查专用子文件夹中的模板和样本:

模板(<input_folder>/templates/):

  • • 查找具有预定义结构(标题、章节、徽标)的空白 .docx 文件
  • • 如果存在多个文件,使用找到的第一个 .docx 文件

样本(<input_folder>/sample documents/):

  • • 查找定义所需样式、格式、语气和长度的 .docx 或 .pdf 文件
  • • 如果存在多个文件,使用找到的第一个文档

如果找到:

  • • 对于模板:复制它并填写内容(不修改结构)
  • • 对于样本:严格遵循其格式、样式、语气和长度

步骤 9:生成交付物

在创建文档之前阅读 docx skill:

view /mnt/skills/public/docx/SKILL.md

然后遵循 docx skill 的"创建新 Word 文档"工作流来生成输出。

如果提供了模板: 复制模板并根据模板结构填写章节。

如果没有模板: 使用下面的输出格式创建新文档。

步骤 10:保存和呈现

  1. 1. 将文档保存到 input_documents 文件夹
  2. 2. 使用 present_files 与用户共享

输出格式(灵活 - 如果提供模板/样本则调整)

当没有提供模板或样本时,使用此结构:

会议摘要
===============
日期:[提取或推断的日期]
参与者:[如果可从输入中识别]
持续时间:[如果可用]
---
执行摘要
-----------------
[2-4 段简明的会议摘要,涵盖讨论的主要主题、
关键点和整体结果。保持事实,仅基于输入内容。]
---
决策
--------------
1. [决策文本]
   - 上下文:[如果可用,简要上下文]

2. [决策文本]
   - 上下文:[如果可用,简要上下文]

[如果在输入中未找到决策,完全省略此部分]
---
行动项
------------
| #    | 行动项     | 负责人    | 截止日期 | 优先级  |
| ---- | --------------- | -------- | -------- | --------- |
| 1    | [描述] | [名称] | [日期] | [H/M/L] |
| 2    | [描述] | [名称] | [日期] | [H/M/L] |

[如果输入中未指定负责人/截止日期,标记为"待定"]
[如果未找到行动项,完全省略此部分]
---
开放问题
--------------
1. [提出但未解决的问题]
2. [需要后续跟进的问题]

[如果未找到开放问题,完全省略此部分]
---
后续消息
-----------------
[准备粘贴到电子邮件或聊天中的消息,总结关键结果和下一步。
保持专业和简洁。格式为:]

主题:会议后续 - [主题/日期]

嗨团队,

[1-2 段总结会议、关键决策和行动项]

下一步:
- [行动项 1] - [负责人] 截止 [日期]
- [行动项 2] - [负责人] 截止 [日期]

如有任何问题,请告诉我。

此致,
[发送者占位符]

护栏

要做:

  • • 忠实地从提供的输入中提取信息
  • • 将不确定的信息标记为"待定"或"从录音中不清楚"
  • • 保留输入中的原始术语和名称
  • • 提供模板/样本格式时严格遵循
  • • 如果输入中不存在相关信息,则省略章节

不要做:

  • • 发明或虚构输入中不存在的任何信息
  • • 添加源材料中未提到的行动项、决策或参与者
  • • 对未明确说明的日期、负责人或截止日期进行假设
  • • 如果信息不在输入中,则在交付物中包含章节

在样本数据上运行 Skill

我在样本文档上运行了 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 可以轻松适应其他用例。

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

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

如果你的新用例需要不同的交付物(例如,事件报告、销售电话摘要、合规备忘录、项目状态更新),请编辑 OUTPUT_SECTIONS.md。这是你重新定义章节模式、每个章节的含义以及在缺少证据时省略什么的地方。

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

潜在扩展

该 skill 可以适应多个用例并以多种方式改进:

  • • 使用 Claude Agent SDK 将 skill 转变为应用程序工作流,通过 SDK 代理以编程方式调用 Skill、文件系统工具和你的 MCP 工具来运行相同的 skill 包。
  • • 扩展 skill 以实现生成-修订-更正工作流,在该工作流中检查生成的报告,如果需要则进行更正。这可能会发生多轮,直到报告通过验证标准。
  • • 探索其他用例,例如针对模板的简历分析和改进、来自客户+公司文档的销售提案,或从内部政策和证据文件综合的合规文档。

 






更多文章阅读


第137期 快速学习人工智能的5本最佳书籍

第124期:适合你实践的 10 个 LLM 与 RAG 项目

2025年AI工具集合汇总,你值得收藏!

2025年最全的LLM提示词编写指南!你值得收藏!

第150期 我如何用Python开发出一款AI工具,赚到了第一笔1000美元

第180期 智能体人工智能(Agentic AI):单智能体系统 vs 多智能体系统

《AI 智能体教程》——如何构建多智能体系统:开发者实用指南


作者介绍,🤖 大厂 P8级别 资深算法研究员 / 某双一流硕导🎖️ 政府领军创新人才 | 资深 AI 实战家

专注于 AI 前沿技术洞察与技术脉络梳理。主张“从算法深度到应用价值”的闭环思考。在这里,分享硬核干货与 AI 效率工具。💡 关注我一起交流,在 AI 浪潮中迭代成长💡 




53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询