Google Meet:自动化会议空间与记录 - Openclaw Skills
什么是 Google Meet?
此技能为 Google Meet API 提供了强大的接口,利用托管 OAuth 网关简化身份验证过程。通过利用 Openclaw Skills,开发人员可以绕过手动令牌管理的复杂性,直接与 Google 的会议基础设施进行交互。该技能允许通过安全代理创建持久的会议空间、检索详细的会议记录并管理参与者会话。
无论您是在构建自动调度工具还是内部合规性监控器,此集成都能确保您的应用程序与 Google Meet 无缝交互。通过 Openclaw Skills 集中进行身份验证,您可以专注于构建功能,而不是处理敏感的凭据刷新。
下载入口:https://github.com/openclaw/skills/tree/main/skills/byungkyu/google-meet
安装与下载
1. ClawHub CLI
从源直接安装技能的最快方式。
npx clawhub@latest install google-meet
2. 手动安装
将技能文件夹复制到以下位置之一
全局模式~/.openclaw/skills/
工作区
<project>/skills/
优先级:工作区 > 本地 > 内置
3. 提示词安装
将此提示词复制到 OpenClaw 即可自动安装。
请帮我使用 Clawhub 安装 google-meet。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。
Google Meet 应用场景
- 为日历事件或客户支持工单自动生成唯一的会议链接。
- 以编程方式检索并存档会议转录和录音,用于知识管理。
- 监控会议出席情况和参与者时长,用于计费或绩效跟踪。
- 根据特定触发器或用户角色更新会议访问权限(公开、信任、受限)。
- 开发人员配置 Maton API 密钥,作为 Openclaw Skills 的主要凭据。
- 通过 Maton 控制平面建立一次性 OAuth 连接,以授权 Google Meet 应用程序。
- API 请求被定向到网关 URL,该 URL 镜像了原生 Google Meet API 的结构。
- 网关在将请求转发给 Google 之前,会自动在请求头中注入有效的 OAuth 令牌。
- 关于空间、参与者或录音的实时响应以 JSON 格式返回给客户端。
Google Meet 配置指南
要开始使用此技能,请遵循以下安装和配置步骤:
- 从 maton.ai 的设置仪表板获取您的 API 密钥。
- 设置环境变量:
export MATON_API_KEY="YOUR_API_KEY"
- 为 Google Meet 初始化 OAuth 连接:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'google-meet'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
- 访问返回的 URL 以完成 Google 身份验证流程。
Google Meet 数据架构与分类体系
该技能围绕 Google Meet API 提供的三种主要资源类型组织数据:
| 资源 | 描述 | 主要标识符 |
|---|---|---|
| 空间 (Spaces) | 具有特定访问配置的持久会议室 | name, meetingUri, meetingCode |
| 会议记录 (Conference Records) | 特定会议实例的历史数据 | conferenceRecordId, startTime, endTime |
| 参与者 (Participants) | 个人用户及其特定会话 | participantId, participantSessionId |
| 媒体 (Media) | 相关的录音和转录 | recordingId, transcriptId |
name: google-meet
description: |
Google Meet API integration with managed OAuth. Create meeting spaces, list conference records, and manage meeting participants. Use this skill when users want to interact with Google Meet. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).
compatibility: Requires network access and valid Maton API key
metadata:
author: maton
version: "1.0"
clawdbot:
emoji: ??
requires:
env:
- MATON_API_KEY
Google Meet
Access the Google Meet API with managed OAuth authentication. Create and manage meeting spaces, list conference records, and retrieve participant information.
Quick Start
# Create a meeting space
python <<'EOF'
import urllib.request, os, json
data = json.dumps({}).encode()
req = urllib.request.Request('https://gateway.maton.ai/google-meet/v2/spaces', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Base URL
https://gateway.maton.ai/google-meet/{native-api-path}
Replace {native-api-path} with the actual Google Meet API endpoint path. The gateway proxies requests to meet.googleapis.com and automatically injects your OAuth token.
Authentication
All requests require the Maton API key in the Authorization header:
Authorization: Bearer $MATON_API_KEY
Environment Variable: Set your API key as MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"
Getting Your API Key
- Sign in or create an account at maton.ai
- Go to maton.ai/settings
- Copy your API key
Connection Management
Manage your Google OAuth connections at https://ctrl.maton.ai.
List Connections
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=google-meet&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Create Connection
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'google-meet'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Get Connection
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Response:
{
"connection": {
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=...",
"app": "google-meet",
"metadata": {}
}
}
Open the returned url in a browser to complete OAuth authorization.
Delete Connection
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Specifying Connection
If you have multiple Google Meet connections, specify which one to use with the Maton-Connection header:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({}).encode()
req = urllib.request.Request('https://gateway.maton.ai/google-meet/v2/spaces', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If omitted, the gateway uses the default (oldest) active connection.
API Reference
Spaces
Create Space
POST /google-meet/v2/spaces
Content-Type: application/json
{}
Response:
{
"name": "spaces/abc123",
"meetingUri": "https://meet.google.com/abc-defg-hij",
"meetingCode": "abc-defg-hij",
"config": {
"accessType": "OPEN",
"entryPointAccess": "ALL"
}
}
Get Space
GET /google-meet/v2/spaces/{spaceId}
Update Space
PATCH /google-meet/v2/spaces/{spaceId}
Content-Type: application/json
{
"config": {
"accessType": "TRUSTED"
}
}
End Active Call
POST /google-meet/v2/spaces/{spaceId}:endActiveConference
Conference Records
List Conference Records
GET /google-meet/v2/conferenceRecords
With filter:
GET /google-meet/v2/conferenceRecords?filter=space.name="spaces/abc123"
Get Conference Record
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}
Participants
List Participants
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/participants
Get Participant
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/participants/{participantId}
Participant Sessions
List Participant Sessions
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/participants/{participantId}/participantSessions
Recordings
List Recordings
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/recordings
Get Recording
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/recordings/{recordingId}
Transcripts
List Transcripts
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/transcripts
Get Transcript
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/transcripts/{transcriptId}
List Transcript Entries
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/transcripts/{transcriptId}/entries
Code Examples
JavaScript
// Create a meeting space
const response = await fetch(
'https://gateway.maton.ai/google-meet/v2/spaces',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
},
body: JSON.stringify({})
}
);
const space = await response.json();
console.log(`Meeting URL: ${space.meetingUri}`);
Python
import os
import requests
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'
}
# Create a meeting space
response = requests.post(
'https://gateway.maton.ai/google-meet/v2/spaces',
headers=headers,
json={}
)
space = response.json()
print(f"Meeting URL: {space['meetingUri']}")
Notes
- Spaces are persistent meeting rooms that can be reused
- Conference records are created when a meeting starts and track meeting history
- Access types:
OPEN(anyone with link),TRUSTED(organization members only),RESTRICTED(invited only) - Recordings and transcripts require Google Workspace with recording enabled
- IMPORTANT: When using curl commands, use
curl -gwhen URLs contain brackets to disable glob parsing - IMPORTANT: When piping curl output to
jqor other commands, environment variables like$MATON_API_KEYmay not expand correctly in some shell environments. You may get "Invalid API key" errors when piping.
Error Handling
| Status | Meaning |
|---|---|
| 400 | Missing Google Meet connection |
| 401 | Invalid or missing Maton API key |
| 429 | Rate limited (10 req/sec per account) |
| 4xx/5xx | Passthrough error from Google Meet API |
Troubleshooting: Invalid API Key
When you receive a "Invalid API key" error, ALWAYS follow these steps before concluding there is an issue:
- Check that the
MATON_API_KEYenvironment variable is set:
echo $MATON_API_KEY
- Verify the API key is valid by listing connections:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Troubleshooting: Invalid App Name
- Ensure your URL path starts with
google-meet. For example:
- Correct:
https://gateway.maton.ai/google-meet/v2/spaces - Incorrect:
https://gateway.maton.ai/meet/v2/spaces
Resources
-
08.07
星际战甲2026兽之腹活动有什么
-
08.07
星露谷物语多少钱-星露谷物语价格说明
-
08.07
光遇4月28日季节蜡烛位置一览
-
08.07
名将杀西门豹技能如何
-
08.07
OPERA 陆地表面扰动警报(基于协调的 Landsat Sentinel-2 临时产品,版本 0)
-
08.07
C语言--不同系统,函数的结果可能不一样
-
- 三国百将牌孙坚怎么样 三国百将牌孙坚强度分析
- 08.07
-
-
- 鹅鸭杀侦探如何玩
- 08.07
-
- 吾今有世家如何提亲
- 08.07
-
- 异环合轴玩法攻略 异环合轴如何玩
- 08.07
-
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏