YouTube
2026-03-24
新闻来源:网淘吧
围观:55
电脑广告
手机广告
购买adidas上京东官方旗舰店。
YouTube
通过托管的 OAuth 身份验证访问 YouTube Data API v3。搜索视频、管理播放列表、获取频道信息,以及与评论和订阅功能进行交互。
快速开始
# 搜索视频
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/youtube/youtube/v3/search?part=snippet&q=coding+tutorial&type=video&maxResults=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
基础 URL
https://gateway.maton.ai/youtube/{原生API路径}
将{原生API路径}替换为实际的 YouTube Data API 端点路径。网关会将请求代理到www.googleapis.com并自动注入您的 OAuth 令牌。
身份验证
所有请求都要求在 Authorization 头部中包含 Maton API 密钥:
Authorization: Bearer $MATON_API_KEY
环境变量:将您的 API 密钥设置为MATON_API_KEY:
export MATON_API_KEY="您的API密钥"
获取您的 API 密钥
- 请登录或在以下地址创建账户:maton.ai
- 前往maton.ai/settings
- 复制您的 API 密钥
连接管理
请在以下网址管理您的 Google OAuth 连接https://ctrl.maton.ai。
列出连接
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=youtube&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
创建连接
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'youtube'}).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
获取连接
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
响应:
{
"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": "youtube",
"metadata": {}
}
}
在浏览器中打开返回的url以完成 OAuth 授权。
删除连接
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
指定连接
如果您有多个YouTube连接,请通过Maton-Connection请求头指定要使用哪一个:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/youtube/youtube/v3/channels?part=snippet&mine=true')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
如果省略,网关将使用默认(最早创建的)活跃连接。
API 参考
搜索
搜索视频、频道或播放列表
GET /youtube/youtube/v3/search
查询参数:
part- 必需参数:snippetq- 搜索查询词type- 按类型筛选:video、channel、playlistmaxResults- 每页结果数(1-50,默认为5)order- 排序方式:date、rating、relevance、title、viewCountpublishedAfter- 按发布日期筛选(RFC 3339格式)publishedBefore- 按发布日期筛选(RFC 3339格式)channelId- 按频道筛选videoDuration- 视频时长筛选:short(小于4分钟),中等(4-20分钟),长(大于20分钟)pageToken- 分页令牌
示例:
curl -s -X GET "https://gateway.maton.ai/youtube/youtube/v3/search?part=snippet&q=machine+learning&type=video&maxResults=10&order=viewCount" -H "Authorization: Bearer $MATON_API_KEY"
响应:
{
"kind": "youtube#searchListResponse",
"nextPageToken": "CAUQAA",
"pageInfo": {
"totalResults": 1000000,
"resultsPerPage": 10
},
"items": [
{
"kind": "youtube#searchResult",
"id": {
"kind": "youtube#video",
"videoId": "abc123xyz"
},
"snippet": {
"publishedAt": "2024-01-15T10:00:00Z",
"channelId": "UCxyz123",
"title": "机器学习教程",
"description": "学习机器学习基础...",
"thumbnails": {
"default": {"url": "https://i.ytimg.com/vi/abc123xyz/default.jpg"}
},
"channelTitle": "科技频道"
}
}
]
}
视频
获取视频详情
GET /youtube/youtube/v3/videos?part=snippet,statistics,contentDetails&id={videoId}
可用部分:
snippet- 标题、描述、缩略图、频道信息statistics- 观看次数、点赞数、评论数contentDetails- 时长、尺寸、清晰度状态- 上传状态、隐私状态播放器- 嵌入播放器 HTML
示例:
curl -s -X GET "https://gateway.maton.ai/youtube/youtube/v3/videos?part=snippet,statistics&id=dQw4w9WgXcQ" -H "Authorization: Bearer $MATON_API_KEY"
获取我的视频(已上传)
GET /youtube/youtube/v3/search?part=snippet&forMine=true&type=video&maxResults=25
评价视频(点赞/点踩)
POST /youtube/youtube/v3/videos/rate?id={videoId}&rating=like
评分值:点赞,点踩,无
获取热门视频
GET /youtube/youtube/v3/videos?part=snippet,statistics&chart=mostPopular®ionCode=US&maxResults=10
获取视频分类
GET /youtube/youtube/v3/videoCategories?part=snippet®ionCode=US
频道
获取频道详情
GET /youtube/youtube/v3/channels?part=snippet,statistics,contentDetails&id={channelId}
获取我的频道
GET /youtube/youtube/v3/channels?part=snippet,statistics,contentDetails&mine=true
响应:
{
"items": [
{
"id": "UCxyz123",
"snippet": {
"title": "我的频道",
"description": "频道描述",
"customUrl": "@mychannel",
"publishedAt": "2020-01-01T00:00:00Z",
"thumbnails": {...}
},
"statistics": {
"viewCount": "1000000",
"subscriberCount": "50000",
"videoCount": "100"
},
"contentDetails": {
"relatedPlaylists": {
"uploads": "UUxyz123"
}
}
}
]
}
通过用户名获取频道
GET /youtube/youtube/v3/channels?part=snippet,statistics&forUsername={username}
播放列表
列出我的播放列表
GET /youtube/youtube/v3/playlists?part=snippet,contentDetails&mine=true&maxResults=25
获取播放列表
GET /youtube/youtube/v3/playlists?part=snippet,contentDetails&id={playlistId}
创建播放列表
POST /youtube/youtube/v3/playlists?part=snippet,status
Content-Type: application/json
{
"snippet": {
"title": "我的新播放列表",
"description": "视频合集",
"defaultLanguage": "en"
},
"status": {
"privacyStatus": "private"
}
}
隐私状态值:公开、私密、不公开
更新播放列表
PUT /youtube/youtube/v3/playlists?part=snippet,status
Content-Type: application/json
{
"id": "PLxyz123",
"snippet": {
"title": "更新后的播放列表标题",
"description": "更新后的描述"
},
"status": {
"privacyStatus": "public"
}
}
删除播放列表
DELETE /youtube/youtube/v3/playlists?id={playlistId}
播放列表项目
列出播放列表项目
GET /youtube/youtube/v3/playlistItems?part=snippet,contentDetails&playlistId={playlistId}&maxResults=50
添加视频到播放列表
POST /youtube/youtube/v3/playlistItems?part=snippet
Content-Type: application/json
{
"snippet": {
"playlistId": "PLxyz123",
"resourceId": {
"kind": "youtube#video",
"videoId": "abc123xyz"
},
"position": 0
}
}
从播放列表中移除
DELETE /youtube/youtube/v3/playlistItems?id={playlistItemId}
订阅
列出我的订阅
GET /youtube/youtube/v3/subscriptions?part=snippet&mine=true&maxResults=50
检查对频道的订阅状态
GET /youtube/youtube/v3/subscriptions?part=snippet&mine=true&forChannelId={channelId}
订阅频道
POST /youtube/youtube/v3/subscriptions?part=snippet
Content-Type: application/json
{
"snippet": {
"resourceId": {
"kind": "youtube#channel",
"channelId": "UCxyz123"
}
}
}
取消订阅
DELETE /youtube/youtube/v3/subscriptions?id={subscriptionId}
评论
列出视频评论
GET /youtube/youtube/v3/commentThreads?part=snippet,replies&videoId={videoId}&maxResults=100
为视频添加评论
POST /youtube/youtube/v3/commentThreads?part=snippet
Content-Type: application/json
{
"snippet": {
"videoId": "abc123xyz",
"topLevelComment": {
"snippet": {
"textOriginal": "视频很棒!"
}
}
}
}
回复评论
POST /youtube/youtube/v3/comments?part=snippet
Content-Type: application/json
{
"snippet": {
"parentId": "comment123",
"textOriginal": "感谢您的评论!"
}
}
删除评论
DELETE /youtube/youtube/v3/comments?id={commentId}
代码示例
JavaScript
const headers = {
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
};
// 搜索视频
const results = await fetch(
'https://gateway.maton.ai/youtube/youtube/v3/search?part=snippet&q=tutorial&type=video&maxResults=10',
{ headers }
).then(r => r.json());
// 获取视频详情
const video = await fetch(
'https://gateway.maton.ai/youtube/youtube/v3/videos?part=snippet,statistics&id=dQw4w9WgXcQ',
{ headers }
).then(r => r.json());
// 创建播放列表
await fetch(
'https://gateway.maton.ai/youtube/youtube/v3/playlists?part=snippet,status',
{
method: 'POST',
headers: { ...headers, 'Content-Type': 'application/json' },
body: JSON.stringify({
snippet: { title: '我的播放列表', description: '我喜欢的视频' },
status: { privacyStatus: 'private' }
})
}
);
Python
import os
import requests
headers = {'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}
# 搜索视频
results = requests.get(
'https://gateway.maton.ai/youtube/youtube/v3/search',
headers=headers,
params={'part': 'snippet', 'q': 'tutorial', 'type': 'video', 'maxResults': 10}
).json()
# 获取视频详情
video = requests.get(
'https://gateway.maton.ai/youtube/youtube/v3/videos',
headers=headers,
params={'part': 'snippet,statistics', 'id': 'dQw4w9WgXcQ'}
).json()
# 创建播放列表
response = requests.post(
'https://gateway.maton.ai/youtube/youtube/v3/playlists?part=snippet,status',
headers=headers,
json={
'snippet': {'title': '我的播放列表', 'description': '我喜欢的视频'},
'status': {'privacyStatus': 'private'}
}
)
注意事项
- 视频ID为11个字符(例如,
dQw4w9WgXcQ) - 频道ID以
UC开头(例如,UCxyz123) - 播放列表ID以
PL(用户)或UU(上传) - 使用
pageToken用于对大型结果集进行分页 - 这个
部分参数是必需的,用于决定返回什么数据 - 配额消耗因端点而异——搜索操作消耗高(100单位),读取操作消耗低(1单位)
- 某些写入操作需要进行频道验证
- 重要提示:使用curl命令时,如果URL包含方括号(
fields[]、sort[]、records[]),请使用curl -g以禁用通配符解析 - 重要提示:当将curl输出通过管道传递给
jq或其他命令时,环境变量如$MATON_API_KEY在某些shell环境中可能无法正确展开。通过管道传输时,您可能会收到“无效的API密钥”错误。
错误处理
| 状态码 | 含义 |
|---|---|
| 400 | 缺少YouTube连接或请求无效 |
| 401 | Maton API密钥无效或缺失 |
| 403 | 禁止访问 - 配额超限或权限不足 |
| 404 | 未找到视频、频道或播放列表 |
| 429 | 请求频率受限(每个账户每秒10次请求) |
| 4xx/5xx | 来自YouTube API的直传错误 |
故障排除:API密钥问题
- 请检查
MATON_API_KEY环境变量是否已设置:
echo $MATON_API_KEY
- 通过列出连接来验证API密钥是否有效:
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
故障排除:无效的应用名称
- 请确保您的URL路径以
youtube开头。例如:
- 正确示例:
https://gateway.maton.ai/youtube/youtube/v3/search - 错误示例:
https://gateway.maton.ai/v3/search
资源
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Clawdhub
下一篇:Apple Notes


微信扫一扫,打赏作者吧~