activepieces MeetGeek AI 社区组件:从构建命令到 Webhook 触发的会议自动化实现全解
【免费下载链接】activepiecesAI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents项目地址: https://gitcode.com/GitHub_Trending/ac/activepieces
本文以 packages/pieces/community/meetgeek-ai/README.md 为骨架,完整讲解 activepieces 中 MeetGeek AI 社区组件(Piece)的构建方式,并结合组件源码剖析其 API Key 认证机制、六个动作(Action)背后的 MeetGeek REST API 调用链,以及 “New Meeting” Webhook 触发器的配置流程。读完本文后,你可以独立完成该组件的构建、理解其每个动作对应的外部接口,并在自动化工作流中把它接入真实业务流程。
1. 模块定位与包结构
MeetGeek AI 组件位于社区组件目录packages/pieces/community/meetgeek-ai/,是一个标准的 activepieces 社区 Piece 包。其目录结构如下:
- README.md:构建说明(本文主体来源);
- package.json:包名为
@activepieces/piece-meetgeek-ai,版本 0.1.7,声明了对@activepieces/pieces-common、@activepieces/pieces-framework、@activepieces/core-piece-types、@activepieces/core-utils四个 workspace 包的依赖; - src/index.ts:Piece 注册入口,汇总全部动作与触发器;
src/lib/common/:认证定义(auth.ts)、HTTP 客户端(client.ts)、共享属性(props.ts);src/lib/actions/:六个动作实现(获取高亮、会议详情、摘要与 AI 洞察、团队会议列表、转录文本、上传录音);src/lib/triggers/new-meeting.ts:Webhook 触发器实现。
从 index.ts 的注册代码可以看到,该组件通过createPiece声明了以下关键元信息:
displayName: 'Meetgeek',描述为 “AI-powered meeting assistant that automates note-taking, summarization, and insights generation for your meetings”;auth: meetgeekaiAuth:整包共用一个 SecretText 型认证;minimumSupportedRelease: '0.36.1':要求 activepieces 最低版本 0.36.1;categories:同时归入ARTIFICIAL_INTELLIGENCE与COMMUNICATION两个分类,在组件市场中会出现在这两类标签下;actions:注册了getHighlights、getMeetingDetails、getMeetingsSummaryInsights、getTeamMeetings、getTranscript、uploadRecording六个动作;triggers:注册了newMeeting一个 Webhook 触发器。
2. 构建组件库(README 核心内容)
README.md 给出的构建命令是:
turbo run build --filter=@activepieces/piece-meetgeek-ai即在 activepieces 仓库根目录使用 Turborepo 只构建@activepieces/piece-meetgeek-ai这一个包及其依赖。该命令最终会执行 package.json 中定义的build脚本:
"build": "tsc -p tsconfig.lib.json && cp package.json dist/"即先用 tsconfig.lib.json 做 TypeScript 编译,再把package.json复制进dist/产物目录。package.json 中另外定义了两个脚本,供深入开发时使用:
bundle:调用 CLI 工具执行pieces bundle,将组件打包为可分发的 bundle;lint:对src/**/*.ts运行 ESLint。
因此完整的本地开发流程是:修改src/下源码 →turbo run build --filter=@activepieces/piece-meetgeek-ai验证编译 → 需要发布时用bundle脚本产出 bundle。
3. 认证机制:SecretText 型 API Key
该组件采用PieceAuth.SecretText认证(见 auth.ts),字段名为API Key,必填。源码中的description同时是用户在 UI 中看到的指引文档,其中给出了获取密钥的完整路径:
- 在 MeetGeek 应用(app.meetgeek.ai)注册账号;
- 进入Integrations → Public API Card生成 API Key;
- 将密钥粘贴到 activepieces 的连接配置中。
对于服务账号或企业级集成,描述中注明需通过 MeetGeek 官方表单联系团队获取定制方案。认证完成后,密钥以context.auth.secret_text的形式注入每个动作与属性中,这是后续所有请求的凭证来源。
4. HTTP 客户端:统一封装的 API 访问层
所有对外请求都收敛到 client.ts 中的makeRequest函数,该函数基于@activepieces/pieces-common的httpClient.sendRequest实现,核心逻辑为:
- 固定 Base URL 为
https://api.meetgeek.ai/v1; - 请求头固定携带
Content-Type: application/json与Authorization: Bearer <API Key>; - 支持传入请求方法与任意 JSON body;
- 直接返回响应体的
body字段,动作层无需再解包。
这一封装意味着六个动作的差异仅在于 HTTP 方法与 URL 路径,安全头与错误处理统一由客户端保证。
5. 共享属性:会议与团队下拉框
props.ts 定义了两个在动作间复用的下拉属性,体现了 activepieces 框架Property.Dropdown的典型用法:
meetingIdDropdwon(会议下拉框)
options回调先检查auth是否存在,未连接账号时返回disabled: true并提示 “Connect your account first”;- 连接后请求
GET /meetings,若返回的meetings为空则提示 “No meetings found”; - 有数据时以
meeting.title(缺失时回退为meeting_id + timestamp_start_utc)作为显示标签、meeting.meeting_id作为值; - 任何异常都会捕获并降级为 “Failed to load meetings” 的禁用态,避免下拉框直接报错。
teamIdDropdown(团队下拉框)
- 请求
GET /teams,并用Map合并share_access与view_access两组团队,标签分别标注 “(Share Access)”、“(View Access)” 或 “(Share & View Access)”; refreshers: ['auth']声明了当认证变化时自动刷新选项,这是框架的响应式刷新机制。
6. 六个 Action 逐一解析
每个动作均带aiMetadata字段,其中idempotent标记和面向 AI Agent 的描述说明该组件同时被设计为可被 Agent 直接调用的工具集。以下按源码逐一说明(文件均在packages/pieces/community/meetgeek-ai/src/lib/actions/下):
6.1 Get Meeting Details(get-meeting-details.ts)
- 端点:
GET /meetings/{meetingId}; - 输入:
meetingId(下拉框选择); - 返回:会议元数据,包括主持人、参与者、时间戳与来源信息;
aiMetadata标记为只读且幂等,适合 Agent 获取会议上下文而非内容。
6.2 Get Meeting Summary & AI Insights(get-meetings-summary-insights.ts)
- 端点:
GET /meetings/{meetingId}/summary; - 返回 AI 生成的会议摘要与洞察,适合在只需要浓缩概览而非完整转录时使用;
- 只读、幂等。
6.3 Get Highlights(get-highlights.ts)
- 端点:
GET /meetings/{meetingId}/highlights; - 返回某次会议的全部 AI 高亮(key moments);
- 只读、幂等。
6.4 Get Transcript(get-transcript.ts)
- 端点:
GET /meetings/{meetingId}/transcript; - 返回该次会议的完整逐句转录文本;
- 只读、幂等。其
aiMetadata明确提示:当 Agent 需要逐字内容而非摘要/高亮时才应调用此动作。
6.5 Get Team Meetings(get-team-meetings.ts)
- 端点:
GET /teams/{teamId}/meetings; - 输入:
teamId(团队下拉框,即第 5 节的teamIdDropdown); - 返回该团队的历史会议分页列表,
aiMetadata中说明它是 “发现 meeting ID” 的入口型动作,用于向按会议查询的动作提供 ID; - 只读、幂等。
6.6 Upload Recording(upload-recording.ts)
这是唯一写操作,端点为POST /upload,三个参数在源码中有明确注释:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
download_url | ShortText | 是 | 无 | 公开可访问的直链下载地址(如 S3 签名 URL),访问即开始下载 |
language_code | ShortText | 否 | en-US | 录音语言代码,如es-ES、fr-FR |
template_name | ShortText | 否 | General meeting | 分析所用会议模板,如 “Sales call”“Interview” |
实现上,language_code与template_name只有在非空时才会写入请求体(源码中为if (language_code) body.language_code = ...的条件拼装)。该动作的aiMetadata标记idempotent: false,并说明每次调用都会排队一个新的分析任务,完成信号通过 New Meeting Webhook 发出——这一点直接决定了它在流程中的正确用法(见第 7 节)。
7. New Meeting Webhook 触发器
new-meeting.ts 定义了TriggerStrategy.WEBHOOK类型的触发器,语义是:当某次会议(或上传的录音)分析完成、高亮可用时被触发。源码中几个关键实现细节:
- 手动配置模式:
onEnable/onDisable均为空实现,注释写明 “MeetGeek uses manual webhook configuration”,即 Webhook URL 不会由 activepieces 自动注册到 MeetGeek,而是由instruction属性(Markdown 类型)向用户展示配置步骤:复制页面显示的{{webhookUrl}}→ 打开 MeetGeek Integrations 页 → 在 Public API 区域粘贴到Webhook URL字段 → 保存。 - 样例数据:
sampleData给出{ meeting_id: '99e727a1-...', message: 'File analyzed successfully' },用于在流程编辑器中预览负载结构。 - 输出:
run返回[context.payload.body],即把 Webhook 请求体包装为单条输出,其中的meeting_id可直接作为第 6 节各查询动作的入参。
8. 组合成一条可用的自动化链路
结合上述实现,该组件的标准用法是一个闭环:
- 用Upload Recording把外部录音(S3 签名 URL)提交给 MeetGeek,指定语言与模板;
- 以New Meeting触发器监听分析完成事件,拿到
meeting_id; - 用
meeting_id串联Get Meeting Summary & AI Insights、Get Transcript、Get Highlights、Get Meeting Details中需要的动作,把摘要或转录交给后续步骤(如写入 CRM、发送通知、存档); - 需要批量回溯时,用Get Team Meetings按团队枚举历史会议 ID,再逐个查询。
这条链路里唯一的非幂等步骤是上传,其余读取步骤可以安全重试;组件在aiMetadata中对这些语义的显式标注,也意味着同一套动作可以直接被 activepieces 的 Agent/MCP 能力作为工具调用。
9. 小结
MeetGeek AI 组件虽然源码体量不大,却完整展示了 activepieces 社区 Piece 的标准形态:createPiece注册 + 统一SecretText认证 + 单一makeRequest客户端 + 共享Dropdown属性 + 动作/触发器分离,并以aiMetadata声明幂等性供 Agent 消费。构建时执行turbo run build --filter=@activepieces/piece-meetgeek-ai即可验证整个包;如需二次开发,修改src/lib/下对应文件后重新构建并运行lint脚本是最低成本的验证路径。
【免费下载链接】activepiecesAI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents项目地址: https://gitcode.com/GitHub_Trending/ac/activepieces
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考