Wispr Flow Notetaker与Claude集成:基于MCP协议的会议记录自动化实践
最近在尝试将会议记录自动化整理时,发现了一个痛点:会议录音或笔记的整理工作繁琐耗时,而AI助手虽然强大,却需要手动复制粘贴内容,流程割裂。Wispr Flow推出的Notetaker功能,恰好解决了这个问题,它能将会议记录无缝、自动地发送到Claude进行分析和总结,极大地提升了知识管理和团队协作的效率。本文将为你详细拆解Wispr Flow Notetaker的完整使用流程,从核心概念、环境搭建、配置连接到实战应用,并深入探讨其背后的MCP协议原理,让你不仅能快速上手,还能理解其技术架构,打造属于自己的AI工作流。
1. 背景与核心概念:什么是Wispr Flow与Notetaker?
在深入实操之前,我们有必要厘清几个核心概念,这有助于理解整个工具链的定位和价值。
Wispr Flow 是一个专注于提升个人与团队生产力的自动化工作流平台。你可以将它理解为一个更智能、更专注于特定场景(如会议、阅读、写作)的“IFTTT”或“Zapier”。它通过连接不同的应用和服务,在特定事件触发时自动执行一系列操作,从而减少重复性劳动。
Notetaker 是Wispr Flow平台上的一个具体功能或“技能”。它的核心职责是充当一个智能的会议记录中转站。它能够捕获你在其他应用(如Zoom、Teams、甚至本地录音软件)中产生的会议音频、转录文本或笔记,并按照预设的规则,自动将其发送至指定的AI助手进行处理。
Claude 是由Anthropic公司开发的大型语言模型助手,以其强大的推理能力、长上下文支持和安全性著称。在会议记录场景中,Claude可以承担总结纪要、提取行动项、分析讨论要点、生成待办清单等任务。
那么, Notetaker如何将记录“直通”Claude? 这里就引出了一个关键的技术协议: MCP 。
MCP 是 Model Context Protocol 的缩写,你可以将它理解为AI助手(如Claude)与外部工具、数据源和服务进行安全、标准化通信的“桥梁”或“插件协议”。它定义了AI如何发现、调用外部能力。通过MCP,Claude可以直接读取数据库、调用搜索引擎、操作文件系统,或者——正如本文主题——接收来自Wispr Flow Notetaker的会议记录。
简单来说,流程是这样的:会议发生 → Notetaker捕获记录 → 通过MCP协议 → 将记录作为上下文提供给Claude → Claude处理并输出结构化结果。
2. 环境准备与版本说明
为了完成整个“会议记录直通Claude”的流程,我们需要准备两个主要的环境: Claude的运行环境 和 Wispr Flow的配置环境 。
2.1 Claude 环境准备
目前,能支持MCP协议、允许连接外部工具的主流Claude客户端是 Claude Desktop 和 Claude Code 。
- Claude Desktop : 官方推出的桌面应用程序,提供了最完整的Claude体验,并支持通过配置添加MCP服务器。
- Claude Code : 集成在VS Code编辑器中的插件,允许开发者在编码时直接使用Claude,同样支持MCP。
本文将以 Claude Desktop (Mac版) 为例进行演示 ,因为其配置界面相对直观。请确保你已安装并可以正常使用Claude Desktop。
版本参考 :
- 操作系统 : macOS (本文基于macOS Sonoma,但流程在较新版本上通用)
- Claude Desktop : 版本 >= 1.5.0 (较早版本可能不支持或MCP配置方式不同)
- Wispr Flow : 你需要拥有Wispr Flow的账户并开通相应权限。
2.2 项目结构与思路
我们的目标不是开发,而是配置。因此“项目结构”在这里指的是配置文件的逻辑结构:
- Claude Desktop配置 :用于告诉Claude如何连接Wispr Flow的MCP服务器。
- Wispr Flow工作流配置 :用于创建触发条件和定义发送给Claude的内容。
3. 核心原理与配置拆解:MCP协议
理解MCP是灵活配置和排查问题的关键。我们不必深究其网络细节,但需要掌握几个核心概念。
3.1 MCP 的核心组件
- MCP 服务器 : 提供特定能力的后端服务。例如,Wispr Flow会作为一个MCP服务器,它提供“发送笔记内容”的能力。一个搜索工具也可以是MCP服务器,提供“搜索网络”的能力。
- MCP 客户端 : 消费这些能力的AI应用。Claude Desktop就是一个MCP客户端。
- 协议通信 : 客户端和服务器通过标准化的JSON-RPC消息进行通信,定义了一系列标准操作,如
tools/list(列出可用工具)、tools/call(调用某个工具)。
3.2 在Claude Desktop中配置MCP服务器
这是连接Wispr Flow与Claude的核心步骤。Claude Desktop通过一个配置文件来声明需要连接的MCP服务器。
配置文件位置 : 在macOS上,Claude Desktop的MCP配置文件通常位于: ~/Library/Application Support/Claude/claude_desktop_config.json
如果该文件或目录不存在,你需要手动创建。
配置内容详解 : 下面是一个基础的配置示例,它添加了一个“记事本”MCP服务器(原理与Wispr Flow类似):
{
"mcpServers": {
"fs": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/你的用户名/Documents/notes"
]
},
"wispr-flow-notetaker": {
"command": "node",
"args": [
"/path/to/wispr-flow-mcp-server/index.js"
],
"env": {
"WISPR_API_KEY": "your_wispr_api_key_here"
}
}
}
}
参数逐行解释 :
"mcpServers": 顶级对象,包含所有要配置的服务器。"wispr-flow-notetaker": 你为这个服务器起的任意名称,方便识别。"command": 启动MCP服务器所需的命令。通常是node(对于JS/TS服务器)、python或一个可执行文件路径。"args": 传递给命令的参数。这里指向Wispr Flow官方提供的MCP服务器入口文件。 注意 :你需要根据Wispr Flow官方文档获取确切的服务器脚本或安装方式,/path/to/需要替换为实际路径。"env": 环境变量。这里通常需要配置你的Wispr Flow API密钥,用于身份认证。your_wispr_api_key_here需要替换为你在Wispr Flow账户中生成的真实API Key。
重要提示 : 截至本文撰写时,Wispr Flow官方可能尚未提供开箱即用的标准MCP服务器。上述配置是一个 原理性示例 。实际使用时,你可能需要通过Wispr Flow的Webhook功能、或等待其官方发布MCP服务器实现。配置的核心思想是:在 claude_desktop_config.json 中声明一个服务器,该服务器有能力将外部事件(新笔记)转化为Claude可读的上下文。
3.3 配置生效与验证
- 创建或修改
claude_desktop_config.json文件。 - 完全关闭并重启Claude Desktop 。MCP配置仅在启动时加载。
- 重启后,在Claude Desktop的对话界面,你应该能看到新的工具可用。通常Claude会主动说“我有哪些工具可用”,或者你可以尝试询问:“你现在可以使用哪些工具?”
- 如果配置成功,Claude的回复中应该包含你配置的服务器所提供的工具,例如“读取笔记”、“发送会议摘要”等(具体名称取决于服务器实现)。
4. 完整实战案例:构建会议记录自动化流水线
由于Wispr Flow Notetaker的MCP集成可能处于演进中,我们以一个更通用、可实现的模拟场景来演示完整流程: 利用Wispr Flow的自动化能力,将会议转录文本通过Webhook发送,并由一个自定义脚本转发给Claude API进行处理。
这个方案更底层,但更灵活,且不依赖特定的MCP服务器实现。
4.1 场景与架构设计
假设我们使用 Otter.ai 进行会议录音和自动转录。我们希望:Otter.ai生成转录文本 → 触发Wispr Flow工作流 → Wispr Flow将文本发送到我们的自定义服务器 → 服务器调用Claude API生成摘要 → 将摘要保存到Notion或发回Slack。
技术栈 :
- 触发器:Otter.ai (Webhook)
- 自动化平台:Wispr Flow
- 处理中间件:一个简单的Node.js/Express服务器 (或使用Serverless Function)
- AI处理:Claude API
- 输出端:Notion/Slack/Email
4.2 步骤一:创建Wispr Flow工作流
- 登录Wispr Flow ,进入工作流创建界面。
- 选择触发器 : 选择“Webhook”作为触发器。Wispr Flow会为你生成一个唯一的Webhook URL(例如
https://hooks.wisprflow.com/trigger/your_unique_id)。复制这个URL。 - 配置Otter.ai : 登录Otter.ai,进入其集成或自动化设置(通常叫“Integrations”或“Workflows”)。添加一个新的Zapier/Make或Webhook集成,将上一步复制的Wispr Flow Webhook URL填入。设置触发条件为“当新转录完成时”。这样,每次Otter.ai处理好录音,就会把转录文本POST到你的Wispr Flow Webhook。
- 在Wispr Flow中设计动作 : 回到Wispr Flow,在触发器后添加一个“HTTP Request”动作。
- 方法 : POST
- URL : 你的自定义中间件服务器的地址(例如
https://your-server.com/process-meeting)。 - Headers :
{ "Content-Type": "application/json", "Authorization": "Bearer YOUR_SERVER_SECRET_KEY" } - Body : 选择“JSON”,并构建一个包含会议信息的JSON体。你可以使用Wispr Flow提供的动态变量,如
{{trigger.body}}来获取Otter.ai发来的完整数据,或者提取特定字段。{ "transcript": "{{trigger.body.transcript_text}}", "meeting_title": "{{trigger.body.meeting_title}}", "source": "otter.ai" }
- 保存并启用工作流 。
4.3 步骤二:搭建自定义中间件服务器
我们使用Node.js和Express快速搭建一个接收Webhook、调用Claude API的服务器。
项目初始化与依赖安装 :
mkdir meeting-processor && cd meeting-processor
npm init -y
npm install express axios dotenv
创建服务器文件 server.js :
// server.js
require(‘dotenv’).config();
const express = require(‘express’);
const axios = require(‘axios’);
const app = express();
const port = process.env.PORT || 3000;
// 中间件:解析JSON请求体
app.use(express.json());
// 简单的身份验证中间件
const authenticate = (req, res, next) => {
const authHeader = req.headers[‘authorization’];
const token = authHeader && authHeader.split(‘ ‘)[1]; // Bearer TOKEN
if (token === process.env.SERVER_SECRET_KEY) {
next();
} else {
res.status(403).json({ error: ‘Forbidden’ });
}
};
// 处理会议转录的端点
app.post(‘/process-meeting’, authenticate, async (req, res) => {
try {
const { transcript, meeting_title } = req.body;
if (!transcript) {
return res.status(400).json({ error: ‘Missing transcript’ });
}
console.log(`Processing meeting: ${meeting_title}`);
// 1. 调用Claude API进行总结
const claudeSummary = await summarizeWithClaude(transcript, meeting_title);
// 2. 这里可以添加其他操作,如保存到数据库、发送到Notion等
// await saveToNotion(claudeSummary, meeting_title);
// 3. 响应Wispr Flow(可选)
res.json({
success: true,
message: ‘Meeting processed successfully’,
summary: claudeSummary // 可以选择不返回,取决于是否需要Wispr Flow后续动作
});
} catch (error) {
console.error(‘Error processing meeting:’, error);
res.status(500).json({ error: ‘Internal server error’ });
}
});
// 调用Claude API的函数
async function summarizeWithClaude(transcript, title) {
const apiKey = process.env.CLAUDE_API_KEY;
const apiUrl = ‘https://api.anthropic.com/v1/messages’;
// 构建一个提示词,让Claude总结会议
const prompt = `请分析以下会议转录文本,并生成一份结构化摘要:
会议主题:${title}
转录内容:
${transcript}
请提供:
1. 会议核心讨论要点(分条列出)。
2. 明确的行动项(谁,做什么,何时)。
3. 待决议题或需要跟进的事项。
4. 总体情绪或氛围(可选)。`;
const requestBody = {
model: ‘claude-3-5-sonnet-20241022’, // 使用适合的模型
max_tokens: 1500,
messages: [
{
role: ‘user’,
content: prompt
}
]
};
const response = await axios.post(apiUrl, requestBody, {
headers: {
‘Content-Type’: ‘application/json’,
‘x-api-key’: apiKey,
‘anthropic-version’: ‘2023-06-01’
}
});
// 提取Claude的回复内容
return response.data.content[0].text;
}
app.listen(port, () => {
console.log(`Meeting processor server listening on port ${port}`);
});
创建环境变量文件 .env :
PORT=3000
SERVER_SECRET_KEY=your_super_secret_key_here
CLAUDE_API_KEY=your_anthropic_claude_api_key_here
# NOTION_API_KEY=...
# NOTION_DATABASE_ID=...
4.4 步骤三:部署与测试
- 运行服务器 :
node server.js。为了生产环境,建议使用pm2或部署到Vercel/Heroku/Railway等平台。 - 获取公网地址 : 本地开发可使用 ngrok 或 localhost.run 将本地
localhost:3000暴露为一个公网URL(如https://abc123.ngrok.io)。将这个URL填入到步骤4.2中Wispr Flow的“HTTP Request”动作的URL里。 - 模拟触发 : 在Otter.ai中手动触发一次测试,或者使用Postman直接向你的Wispr Flow Webhook URL发送一个模拟的JSON请求。
- 观察日志 : 查看你的服务器控制台和Wispr Flow的执行日志,确认数据流是否通畅。
- 验证结果 : 检查Claude API的调用是否成功,并查看生成的摘要内容。
4.5 步骤四:扩展 - 将结果发送到Notion
为了让流程更闭环,我们可以在 summarizeWithClaude 函数调用后,添加保存到Notion的步骤。
安装Notion SDK : npm install @notionhq/client
在 server.js 中添加函数 :
const { Client } = require(‘@notionhq/client’);
async function saveToNotion(summary, title) {
const notion = new Client({ auth: process.env.NOTION_API_KEY });
const databaseId = process.env.NOTION_DATABASE_ID;
const response = await notion.pages.create({
parent: { database_id: databaseId },
properties: {
‘Title’: {
title: [
{
text: {
content: `会议摘要: ${title} - ${new Date().toLocaleDateString()}`
}
}
]
},
‘Status’: {
select: {
name: ‘已处理’
}
}
},
children: [
{
object: ‘block’,
type: ‘paragraph’,
paragraph: {
rich_text: [
{
type: ‘text’,
text: {
content: summary
}
}
]
}
}
]
});
console.log(‘Summary saved to Notion:’, response.id);
}
然后在 /process-meeting 端点中,取消注释 // await saveToNotion(claudeSummary, meeting_title); 这行。
至此,一个完整的、由Wispr Flow驱动的“会议记录直通AI处理并归档”的自动化流水线就搭建完成了。它虽然没有直接使用Notetaker的MCP集成,但实现了相同的核心价值,且更具可控性和扩展性。
5. 常见问题与排查思路
在配置和使用此类AI自动化流程时,你可能会遇到以下问题:
| 问题现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
| Claude Desktop 不显示新工具 | 1. MCP配置文件路径或格式错误。 2. MCP服务器启动命令失败。 3. Claude Desktop未重启。 |
1. 检查 claude_desktop_config.json 的JSON语法,确保无错误。 2. 在终端手动运行配置中的 command 和 args ,看服务器能否独立启动。 3. 彻底退出并重启Claude Desktop 。 |
| Wispr Flow 工作流未触发 | 1. Webhook URL未正确配置到触发源(如Otter.ai)。 2. 触发源发送的数据格式不符合预期。 |
1. 在Wispr Flow中检查Webhook触发器的历史记录,看是否有请求进入。 2. 使用Postman模拟触发源,向Webhook URL发送请求,检查Wispr Flow是否收到并解析成功。 |
| 自定义服务器收不到请求 | 1. 服务器未运行或端口被占用。 2. 公网隧道(ngrok)断开或地址变更。 3. Wispr Flow的HTTP请求动作配置错误(URL、Method)。 4. 防火墙或网络策略阻止。 |
1. 检查服务器进程状态和日志。 2. 确认ngrok地址是否更新到Wispr Flow。 3. 检查Wispr Flow动作配置的URL、Header、Body。 4. 在服务器本地使用 curl 测试端点是否可访问。 |
| Claude API 调用失败 | 1. API Key错误或过期。 2. 请求体格式不符合API要求。 3. 超过速率限制或额度不足。 |
1. 检查 .env 文件中的 CLAUDE_API_KEY 。 2. 对照Anthropic官方API文档,检查 model 、 messages 结构、请求头(尤其是 anthropic-version )是否正确。 3. 查看API返回的错误信息,通常会很明确。 |
| 会议转录文本过长导致处理失败 | Claude API有上下文令牌限制。 | 1. 在发送给Claude前,先对文本进行预处理(如截断、分段总结)。 2. 使用支持更长上下文的模型(如 claude-3-5-sonnet )。 3. 在Wispr Flow中先使用其内置的文本处理动作进行摘要,再发送给Claude进行精炼。 |
| 流程延迟高 | 1. 网络延迟。 2. Claude API响应慢。 3. 中间件服务器性能瓶颈。 |
1. 将中间件服务器部署在离你用户群近的区域。 2. 考虑使用Claude的异步API或流式响应。 3. 对于非实时场景,可以将任务推入队列(如Redis),异步处理。 |
6. 最佳实践与工程建议
将AI自动化流程用于生产环境,需要考虑稳定性、安全性和可维护性。
-
安全性第一
- API密钥管理 : 永远不要将API密钥硬编码在代码中。使用环境变量(
.env文件)或专业的密钥管理服务(如AWS Secrets Manager, HashiCorp Vault)。 - Webhook验证 : 在自定义服务器端,验证请求是否真正来自Wispr Flow(通过验证签名或Token)。上述示例中的
authenticate中间件是一个简单示例,生产环境应使用更安全的机制。 - 最小权限原则 : 为Wispr Flow、Claude API等创建仅具备必要权限的API密钥或访问令牌。
- API密钥管理 : 永远不要将API密钥硬编码在代码中。使用环境变量(
-
错误处理与重试
- 健壮的错误处理 : 如示例代码所示,使用
try-catch包裹核心逻辑,并返回清晰的错误信息。记录详细的日志,方便排查。 - 实现重试机制 : 网络调用(如调用Claude API)可能失败。实现指数退避的重试逻辑,对于非关键任务,可以失败后存入死信队列人工处理。
- 设置超时 : 为HTTP请求设置合理的超时时间,避免进程长时间挂起。
- 健壮的错误处理 : 如示例代码所示,使用
-
可观测性与监控
- 记录关键日志 : 记录每个会议的处理开始时间、结束时间、Claude API调用耗时、是否成功等。
- 添加监控告警 : 如果处理失败率超过阈值,或流程长时间无新任务,应触发告警(发送邮件、Slack消息等)。
- 在Wispr Flow中利用其内置的流程运行历史 ,快速定位失败步骤。
-
性能与成本优化
- 内容预处理 : 在发送给Claude前,先过滤掉无关内容(如长时间的静默、寒暄语),或进行压缩总结,以节省令牌消耗。
- 缓存策略 : 如果频繁处理相似会议,可以考虑缓存类似的摘要模板或结果。
- 模型选择 : 根据任务复杂度选择合适的Claude模型。对于简单的摘要,
claude-3-haiku可能更经济;对于复杂的分析,再使用claude-3-5-sonnet。
-
维护与迭代
- 配置外部化 : 将提示词模板、模型名称、处理规则等抽离为配置文件,无需修改代码即可调整AI行为。
- 版本控制 : 将自定义服务器代码、Wispr Flow工作流配置(如果支持导出)纳入Git版本管理。
- 定期审查 : 定期检查Claude生成的摘要质量,优化提示词。同时关注Wispr Flow和Claude API的更新,及时调整集成方式。
通过本文的拆解,你应该已经掌握了从概念到实战,将会议记录通过Wispr Flow自动化处理并连接至Claude的核心方法。无论是等待官方的MCP集成,还是采用自定义Webhook的灵活方案,其核心思想都是构建一个高效、可靠的“数据管道”,让AI能力无缝嵌入你的工作流。
更多推荐



所有评论(0)