YouTube 频道视频
curl --request POST \
--url https://api.socq.ai/v1/youtube/channel-videos \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"urls": [
"<string>"
],
"results_limit": 1000
}
'import requests
url = "https://api.socq.ai/v1/youtube/channel-videos"
payload = {
"urls": ["<string>"],
"results_limit": 1000
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({urls: ['<string>'], results_limit: 1000})
};
fetch('https://api.socq.ai/v1/youtube/channel-videos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.socq.ai/v1/youtube/channel-videos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'urls' => [
'<string>'
],
'results_limit' => 1000
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.socq.ai/v1/youtube/channel-videos"
payload := strings.NewReader("{\n \"urls\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.socq.ai/v1/youtube/channel-videos")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"urls\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.socq.ai/v1/youtube/channel-videos")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"urls\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"task_id": "<string>",
"status": "<string>",
"created_time": "<string>"
}
}{
"code": 422,
"error": {
"message": "<string>",
"type": "<string>",
"details": {}
}
}YouTube 频道视频
从YouTube频道采集公开视频。
POST
/
v1
/
youtube
/
channel-videos
YouTube 频道视频
curl --request POST \
--url https://api.socq.ai/v1/youtube/channel-videos \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"urls": [
"<string>"
],
"results_limit": 1000
}
'import requests
url = "https://api.socq.ai/v1/youtube/channel-videos"
payload = {
"urls": ["<string>"],
"results_limit": 1000
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({urls: ['<string>'], results_limit: 1000})
};
fetch('https://api.socq.ai/v1/youtube/channel-videos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.socq.ai/v1/youtube/channel-videos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'urls' => [
'<string>'
],
'results_limit' => 1000
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.socq.ai/v1/youtube/channel-videos"
payload := strings.NewReader("{\n \"urls\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.socq.ai/v1/youtube/channel-videos")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"urls\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.socq.ai/v1/youtube/channel-videos")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"urls\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"task_id": "<string>",
"status": "<string>",
"created_time": "<string>"
}
}{
"code": 422,
"error": {
"message": "<string>",
"type": "<string>",
"details": {}
}
}YouTube 频道视频
从一个或多个公共渠道采集常规视频。{
"urls": ["https://www.youtube.com/@example"],
"results_limit": 100
}
与 MCP 一起使用
| 接口 | 值 |
|---|---|
| REST | POST /v1/youtube/channel-videos |
| Compact MCP | socq_execute 与 endpoint: "youtube/channel-videos" |
| Typed MCP | socq_youtube_channel_videos |
| 精确工具 URL | https://api.socq.ai/mcp?tools=youtube_channel_videos |
| CLI | socq youtube channel-videos |
socq_execute 的嵌套 input 对象,或将相同的字段直接传递给Typed 工具。Typed 工具还接受 _wait_seconds、_result_limit 和 _idempotency_key。
成功的采集将返回
task_id。继续 socq_get_task 直到任务成功,然后从 results.items 读取规范化记录。results_limit 默认为 100 并适用于每个通道 URL。
结果使用 YouTube 视频 中记录的标准化视频结构,其中 resource 设置为 channel-videos。
结果字段
任务结果使用下列稳定的 SocQ 字段。来源特有的字段名称和格式会被规范化,但不会推断或补充来源未提供的值。如需请求更小的字段集,MCP 查询请使用fields,Typed 工具请使用 _result_fields,CLI 请使用 --result-fields。即使值为 null,已声明的字段仍会保留。
| 字段 | 类型 | 可空 | 说明 |
|---|---|---|---|
id | string | 是 | 当前结果项的唯一标识。 |
platform | string | 否 | 结果所属的平台,例如 instagram 或 linkedin。 |
resource | string | 否 | 该结果对应的 SocQ 资源,例如 videos 或 comments。 |
type | string | 否 | 结果项的类别,例如 video、post 或 comment。 |
url | string | 是 | 结果项的公开访问地址(如可获得)。 |
published_at | string | 是 | 源内容的发布时间(如可获得),使用 ISO 8601 格式。 |
collected_at | string | 否 | SocQ 采集或处理该结果的时间,使用 ISO 8601 格式。 |
text | string | 是 | 视频的说明文字或描述。 |
author | object | 是 | 内容的作者或发布者。 |
author.id | string | 是 | 作者的唯一标识。 |
author.username | string | 是 | 账号的公开用户名或账号标识。 |
author.name | string | 是 | 作者的显示名称。 |
author.url | string | 是 | 作者的公开访问地址(如可获得)。 |
author.avatar_url | string | 是 | 账号头像图片的地址。 |
author.is_verified | boolean | 是 | 账号是否已通过平台认证。 |
author.is_private | boolean | 是 | 账号是否为私密账号。 |
metrics | object | 是 | 结果项可获得的计数和度量数据。 |
metrics.likes_count | integer | 是 | 点赞数量。 |
metrics.comments_count | integer | 是 | 评论数量。 |
metrics.shares_count | integer | 是 | 分享或转发数量。 |
metrics.plays_count | integer | 是 | 平台报告的视频播放次数。 |
metrics.views_count | integer | 是 | 平台报告的观看数量。 |
media | array<object> | 是 | 结果附带的图片、视频或其他媒体。 |
media.type | string | 是 | 媒体类型,例如 image 或 video。 |
media.url | string | 是 | 媒体文件的地址。 |
media.thumbnail_url | string | 是 | 媒体预览图的地址。 |
media.width | integer | 是 | 媒体宽度,单位为像素。 |
media.height | integer | 是 | 媒体高度,单位为像素。 |
media.duration_seconds | number | 是 | 媒体时长,单位为秒。 |
hashtags | array<string> | 是 | 内容关联的话题标签,保留源数据中的拼写。 |
mentions | array<string> | 是 | 内容中提及的账号。 |
shortcode | string | 是 | 平台用于标识媒体内容的短代码。 |
duration_seconds | number | 是 | 时长,单位为秒。 |
audio | object | 是 | 视频关联的音频或音乐信息。 |
audio.id | string | 是 | 音频或音乐曲目的标识。 |
audio.title | string | 是 | 音频或音乐曲目的标题。 |
audio.artist | string | 是 | 音频艺术家或创作者名称。 |
audio.url | string | 是 | 音频或音乐曲目的地址(如可获得)。 |
任务完成响应
{
"code": 200,
"data": {
"task_id": "E4O8BVIRP55GBD4P",
"status": "succeeded",
"public_id": "youtube/channel-videos",
"result_count": 5,
"credits_amount": 2.5,
"results": {
"limit": 1,
"next_cursor": "OTQ0NA",
"has_more": true,
"schema_id": "reel-video",
"schema_version": "1.0",
"items": [
{
"id": "C0H9gGqAGxo",
"platform": "youtube",
"resource": "channel-videos",
"type": "video",
"url": "https://www.youtube.com/watch?v=C0H9gGqAGxo",
"published_at": "2026-07-29T15:58:06Z",
"collected_at": "2026-07-31T02:28:03.221505Z",
"text": "HONEY! Fresh off her new single “ROCKSTAR,” global drag icon and musical artist @pabllovittar is opening her YouTube Watch History for the very first time! \n\nShe takes us on an unfiltered tour of what she is watching, revealing the videos that inspire everything from her upcoming album “LOST IN LUST” to her KILLER QUEEN moves in Fortnite. From stanning BLACKPINK, to true crime deep dives with Jaqueline Guerreiro, to incredible drag beauty secrets from Plastique Tiara, Pabllo’s Watch HIstory is EVERYTHING. Plus, Pabllo opens up about the power of Brazilian drag culture and reflects on her iconic performance with her “mama” Madonna. \n\nFeatured Creators:\n@pabllovittar \n@BLACKPINK \n@ChakraFrequenciesMusic \n@DragBrunchBrasil \n@giantfoodmaker \n@JaquelineGuerreiroOficial \n@kingjoe83 \n@missfamenyc \n@PlastiqueTiara \n@VogueBrasil \n\nCredits: \n\nCreated & Produced by Somehow Studios\n\nCo-founder, Executive Producer: Greg T. Gordon\nCo-founder, Chief Creative Officer: Joe Sabia\nCreative Producer: Grace Lauson\nDirector, Post Production: Doug Larsen\n\nDirector: Grace Lauson\nProducer: Sam Weiser\n\nDirector of Photography: Jordan \nGaffer: \nKey Grip: \nScript Supervisor: \nPA’s: \n\nEditor: Phil \nGraphics: Louis Hamwey\n\nYouTube Team: \nJulia Templeman\nJake Wright\nMonica Honorato\nRyan Briggs\nMarly Ellis\nRed Fabbri",
"author": {
"id": "UCBR8-60-B28hp2BmDPdntcQ",
"username": "YouTube",
"name": "YouTube",
"url": "https://www.youtube.com/channel/UCBR8-60-B28hp2BmDPdntcQ",
"avatar_url": "https://yt3.googleusercontent.com/3s6evpqAiDU9tQR4sC2siJippbH2RWVPnwHgyl4V0th2iuQz0VDQZbUhQBGmsxLYo-mjG6TqZQ=s68-c-k-c0x00ffffff-no-rj",
"is_verified": true,
"is_private": null
},
"metrics": {
"likes_count": 2100,
"comments_count": 295,
"shares_count": null,
"plays_count": null,
"views_count": 21426
},
"media": [
{
"type": "image",
"url": "https://i.ytimg.com/vi/C0H9gGqAGxo/maxresdefault.jpg",
"thumbnail_url": null,
"width": null,
"height": null,
"duration_seconds": null
}
],
"hashtags": [],
"mentions": null,
"shortcode": null,
"duration_seconds": 427.0,
"audio": null
}
]
}
}
}
授权
bearerAuthapiKeyAuth
使用 Authorization: Bearer <token> 请求头进行身份验证。
请求体
application/json

