以 AI 机器人身份加入视频会议,提供语音、虚拟形象与屏幕共享四种模式。
文档
google-docs
试用通过托管 OAuth 调用 Google Docs API,实现文档创建、读写与样式管理。
它能做什么
通过统一的 Bearer Token 端点代理到 docs.googleapis.com,OAuth 全程托管。支持创建文档、批量更新文本、插入与删除内容、占位符批量替换、文字样式设置、插入表格与分页符,并可管理多个 OAuth 连接。所有写入操作都需要用户明确确认,速率限制为每账户每秒 10 次。
什么时候用它
- 用一行命令或一次 HTTP 请求按标题创建新 Google 文档
- 在指定的 1-based 索引位置向已有文档插入或追加文本
- 通过 batchUpdate 给一段文本统一应用加粗、字号等样式
- 管理多个 Google Docs OAuth 连接,并按需指定发起请求的账户
技能文档
Google Docs
Access the Google Docs API with managed OAuth authentication. Create documents, insert and format text, and manage document content.
Quick Start
CLI:
maton google-docs document view DOC_ID
maton api '/google-docs/v1/documents/{documentId}'
Python:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/google-docs/v1/documents/{documentId}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Base URL
https://api.maton.ai/google-docs/{native-api-path}
Maton proxies requests to docs.googleapis.com and automatically injects your OAuth token.
Installation
NPM:
npm install -g @maton/cli
Homebrew:
brew install maton-ai/cli/maton
Authentication
CLI:
maton login # Opens browser for API key
maton login --interactive # Skip browser, paste API key directly
maton whoami # Show current auth state
Manual:
- Sign in or create an account at maton.ai
- Go to maton.ai/settings
- Copy your API key
- Set your API key as
MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"
Connection Management
Manage your Google OAuth connections at https://api.maton.ai.
List Connections
CLI:
maton connection list google-docs --status ACTIVE
maton api -X GET /connections -f app=google-docs -f status=ACTIVE
Python:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections?app=google-docs&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
CLI:
maton connection create google-docs
maton api /connections -f app=google-docs
Python:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'google-docs'}).encode()
req = urllib.request.Request('https://api.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
CLI:
maton connection view {connection_id}
maton api /connections/{connection_id}
Python:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.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": "{connection_id}",
"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-docs",
"metadata": {}
}
}
Open the returned url in a browser to complete OAuth authorization.
Delete Connection
CLI:
maton connection delete {connection_id}
maton api -X DELETE /connections/{connection_id}
Python:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.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 Docs connections, specify which one to use:
CLI:
maton google-docs document view DOC_ID --connection {connection_id}
maton api /google-docs/v1/documents/{documentId} --connection {connection_id}
Python:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/google-docs/v1/documents/{documentId}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '{connection_id}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If you have multiple connections, always specify the connection to ensure requests go to the intended account.
Security & Permissions
- Access is scoped to documents, content, formatting, and document metadata within the connected Google Docs account.
- All write operations require explicit user approval. Before executing any create, update, or delete call, confirm the target resource and intended effect with the user.
API Reference
Get Document
GET /google-docs/v1/documents/{documentId}
Example:
maton google-docs document view DOC_ID # human-readable summary (id, title, revision)
maton google-docs document view DOC_ID --json # full document payload (body, styles, etc.)
Create Document
POST /google-docs/v1/documents
Content-Type: application/json
{
"title": "New Document"
}
Example:
maton google-docs document create --title 'New Document'
Batch Update Document
POST /google-docs/v1/documents/{documentId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"insertText": {
"location": {"index": 1},
"text": "Hello, World!"
}
}
]
}
Example:
maton google-docs document write DOC_ID --text 'Hello, World!'
Common batchUpdate Requests
Insert Text
{
"insertText": {
"location": {"index": 1},
"text": "Text to insert"
}
}
Delete Content
{
"deleteContentRange": {
"range": {
"startIndex": 1,
"endIndex": 10
}
}
}
Replace All Text
{
"replaceAllText": {
"containsText": {
"text": "{{placeholder}}",
"matchCase": true
},
"replaceText": "replacement value"
}
}
Insert Table
{
"insertTable": {
"location": {"index": 1},
"rows": 3,
"columns": 3
}
}
Update Text Style
{
"updateTextStyle": {
"range": {
"startIndex": 1,
"endIndex": 10
},
"textStyle": {
"bold": true,
"fontSize": {"magnitude": 14, "unit": "PT"}
},
"fields": "bold,fontSize"
}
}
Insert Page Break
{
"insertPageBreak": {
"location": {"index": 1}
}
}
Code Examples
CLI
# Create a new document
maton google-docs document create --title 'Sprint notes'
# View a document
maton google-docs document view DOC_ID
# Write text to a document
maton google-docs document write DOC_ID --text 'Hello!'
JavaScript
// Create document
const response = await fetch(
'https://api.maton.ai/google-docs/v1/documents',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
},
body: JSON.stringify({ title: 'New Document' })
}
);
// Insert text
await fetch(
`https://api.maton.ai/google-docs/v1/documents/${docId}:batchUpdate`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
},
body: JSON.stringify({
requests: [{ insertText: { location: { index: 1 }, text: 'Hello!' } }]
})
}
);
Python
import os
import requests
# Create document
response = requests.post(
'https://api.maton.ai/google-docs/v1/documents',
headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
json={'title': 'New Document'}
)
Notes
- Index positions are 1-based (document starts at index 1)
- Use
endOfSegmentLocationto append at end - Multiple requests in batchUpdate are applied atomically
- Get document first to find correct indices for updates
- The
fieldsparameter in style updates uses field mask syntax - IMPORTANT: When using curl commands, use
curl -gwhen URLs contain brackets (fields[],sort[],records[]) 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 Docs connection |
| 401 | Invalid or missing Maton API key |
| 429 | Rate limited (10 req/sec per account) |
| 4xx/5xx | Passthrough error from Google Docs API |
Troubleshooting: API Key Issues
CLI:
- Check your auth state:
maton whoami
- Verify the API key is valid by listing connections:
maton connection list
Manual:
- 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://api.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-docs. For example:
- Correct:
https://api.maton.ai/google-docs/v1/documents/{documentId} - Incorrect:
https://api.maton.ai/docs/v1/documents/{documentId}
Resources
常见问题
- 需要自己处理 OAuth 令牌吗?
- 不需要。完成一次 Google Docs 连接授权后,平台会自动将 OAuth 令牌注入到每个请求中。
- 速率限制是多少?
- 每个账户每秒最多 10 次请求,超出后会返回 429 状态码。
- batchUpdate 里的索引是 0-based 还是 1-based?
- 是 1-based,新建文档从索引 1 开始计数。
相关技能
把自然语言描述转为结构化 JSON,并由 mcp-diagram-generator MCP 服务生成 Draw.io、Mermaid 或 Excalidraw 图表文件。
在本地磁盘以分类纯 Markdown 文件保存需要长期留存的事实,与智能体内置记忆并存。
诊断生产力系统反复失效的根因,给出最小干预——容量测算、瓶颈定位、可靠的本地记录。
从 AdMapix API 拉取广告创意、应用、榜单和收入预估等数据,原样返回结构化 JSON。
编写、调试与调优 Playwright 测试,涵盖定位器策略、追踪诊断与 CI 友好的超时配置。
byungkyu 的更多技能
浏览全部技能通过托管 OAuth 访问 Microsoft Graph Excel 接口,读写 OneDrive 中的工作簿、工作表、区域、表格与图表。
通过 OAuth 认证网关管理 Stripe 客户、订阅、发票、产品、价格和支付。
通过托管 OAuth 的统一网关读写 Google Sheets 数据。
通过托管 OAuth 代理访问 YouTube Data API v3,搜索与管理视频、播放列表、频道、订阅和评论。
通过托管 OAuth 代理调用 WooCommerce REST API,管理商品、订单、客户、优惠券、物流、税务等数据。
通过托管 OAuth 认证,访问并管理 ClickUp 工作区、空间、文件夹、清单与任务等数据。