通过托管 OAuth 访问 Microsoft Graph Excel 接口,读写 OneDrive 中的工作簿、工作表、区域、表格与图表。
文档
google-search-console
试用通过托管 OAuth 代理接入 Google Search Console,查询搜索分析数据、管理 sitemap 并查看站点表现。
它能做什么
通过 api.maton.ai 访问 Google Search Console API,平台会自动注入 Google OAuth 令牌并把请求转发到 www.googleapis.com。每次调用都需带上 MATON_API_KEY 作为 Bearer 令牌,如果绑定了多个 Google 账号,可通过 Maton-Connection 头指定目标账号。技能封装了 webmasters/v3 接口:列出站点、按维度(query、page、country、device、date)查询 searchAnalytics 数据(指标包含 clicks、impressions、ctr、position),以及 sitemap 的列出、提交与删除。所有写操作和新 OAuth 连接在执行前都必须经过用户明确确认。
什么时候用它
- 按 query、page、country、device 或 date 维度查询搜索分析
- 拉取指定站点的点击、展示量、CTR 和平均排名报表
- 为 Search Console 站点提交、列出或删除 sitemap
- 通过 Maton connections 接口管理多个 Google Search Console OAuth 连接
技能文档
Google Search Console
Access the Google Search Console API with managed OAuth authentication. Query search analytics, manage sitemaps, and monitor site performance in Google Search.
Quick Start
# List sites
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/google-search-console/webmasters/v3/sites')
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-search-console/{native-api-path}
Maton proxies requests to www.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://api.maton.ai.
List Connections
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections?app=google-search-console&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-search-console'}).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
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-search-console",
"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://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 Search Console connections, specify which one to use with the Maton-Connection header:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/google-search-console/webmasters/v3/sites')
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 include this header to ensure requests go to the intended account.
Security & Permissions
- Access is scoped to search performance, URL inspection, and sitemaps within the connected Google Search Console 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
Sites
GET /google-search-console/webmasters/v3/sites
GET /google-search-console/webmasters/v3/sites/{siteUrl}
Note: Site URL must be URL-encoded (e.g., https%3A%2F%2Fexample.com%2F)
Search Analytics
POST /google-search-console/webmasters/v3/sites/{siteUrl}/searchAnalytics/query
Content-Type: application/json
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"dimensions": ["query"],
"rowLimit": 100
}
Sitemaps
GET /google-search-console/webmasters/v3/sites/{siteUrl}/sitemaps
PUT /google-search-console/webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}
DELETE /google-search-console/webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}
Search Analytics Examples
Top Queries
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"dimensions": ["query"],
"rowLimit": 25
}
Top Pages
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"dimensions": ["page"],
"rowLimit": 25
}
Device Breakdown
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"dimensions": ["device"],
"rowLimit": 10
}
Daily Performance
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"dimensions": ["date"],
"rowLimit": 31
}
Filtered Query
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"dimensions": ["query"],
"dimensionFilterGroups": [{
"filters": [{
"dimension": "query",
"operator": "contains",
"expression": "keyword"
}]
}],
"rowLimit": 100
}
Dimensions
query- Search querypage- Page URLcountry- Country codedevice- DESKTOP, MOBILE, TABLETdate- Date
Metrics (returned automatically)
clicks- Number of clicksimpressions- Number of impressionsctr- Click-through rateposition- Average position
Code Examples
JavaScript
const response = await fetch(
'https://api.maton.ai/google-search-console/webmasters/v3/sites/https%3A%2F%2Fexample.com/searchAnalytics/query',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
},
body: JSON.stringify({
startDate: '2024-01-01',
endDate: '2024-01-31',
dimensions: ['query'],
rowLimit: 25
})
}
);
Python
import os
import requests
from urllib.parse import quote
site_url = quote('https://example.com', safe='')
response = requests.post(
f'https://api.maton.ai/google-search-console/webmasters/v3/sites/{site_url}/searchAnalytics/query',
headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
json={
'startDate': '2024-01-01',
'endDate': '2024-01-31',
'dimensions': ['query'],
'rowLimit': 25
}
)
Notes
- Site URLs must be URL-encoded in the path
- Date range limited to 16 months
- Maximum 25,000 rows per request
- Use
startRowfor pagination - Data has 2-3 day delay
- 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 Search Console connection |
| 401 | Invalid or missing Maton API key |
| 429 | Rate limited (10 req/sec per account) |
| 4xx/5xx | Passthrough error from Search Console API |
Troubleshooting: API Key Issues
- 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-search-console. For example:
- Correct:
https://api.maton.ai/google-search-console/webmasters/v3/sites - Incorrect:
https://api.maton.ai/webmasters/v3/sites
Resources
相关技能
以 AI 机器人身份加入视频会议,提供语音、虚拟形象与屏幕共享四种模式。
从 AdMapix API 拉取广告创意、应用、榜单和收入预估等数据,原样返回结构化 JSON。
为自然搜索排名提供站点审计、内容撰写与竞品分析。
在本地磁盘以分类纯 Markdown 文件保存需要长期留存的事实,与智能体内置记忆并存。
按用户明确指令,在得到大脑(Get笔记)中保存、搜索并管理笔记与知识库。
byungkyu 的更多技能
浏览全部技能通过托管 OAuth 访问 Microsoft Graph Excel 接口,读写 OneDrive 中的工作簿、工作表、区域、表格与图表。
通过托管的 OAuth GraphQL 接口查询与管理 Linear 的 issue、项目、团队、周期、标签和评论。
通过 OAuth 认证网关管理 Stripe 客户、订阅、发票、产品、价格和支付。
通过托管 OAuth 代理访问 YouTube Data API v3,搜索与管理视频、播放列表、频道、订阅和评论。
通过托管 OAuth 代理调用 WooCommerce REST API,管理商品、订单、客户、优惠券、物流、税务等数据。
通过托管 OAuth 认证,访问并管理 ClickUp 工作区、空间、文件夹、清单与任务等数据。