You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过YouTube Analytics API获取分渠道分日的详细观看时长数据

获取YouTube分频道日观看时长数据的解决方案

当前代码仅能获取自身频道的基础日维度分析数据,无法按分频道+日维度拆分观看时长。以下是调整方案:

现有代码

async function getYouTubeAnalyticsData(result: GoogleTokensResult) {
  const params = {
    dimensions: "day",
    startDate: "2023-07-01",
    endDate: "2023-08-02",
    ids: "channel==MINE",
    metrics: "views,estimatedMinutesWatched,averageViewDuration,averageViewPercentage"
  };

  const searchParams = new URLSearchParams(params);

  const response = await fetch(`https://youtubeanalytics.googleapis.com/v2/reports?${searchParams}`, {
    headers: {
      Authorization: `Bearer ${result.access_token}`
    }
  });
  return response.json();
}

当前返回结构

{
  "columnHeaders": [
    {"name": "day", "columnType": "DIMENSION", "dataType": "STRING"},
    {"name": "channel", "columnType": "DIMENSION", "dataType": "STRING"},
    {"name": "views", "columnType": "METRIC", "dataType": "INTEGER"},
    {"name": "estimatedMinutesWatched", "columnType": "METRIC", "dataType": "INTEGER"},
    {"name": "averageViewDuration", "columnType": "METRIC", "dataType": "INTEGER"},
    {"name": "averageViewPercentage", "columnType": "METRIC", "dataType": "FLOAT"}
  ],
  "kind": "youtubeAnalytics#resultTable",
  "rows": [
    ["2023-07-01", "CHANNEL_ID", 27, 39, 87, 11.95],
    [...]
  ]
}

需求示例

期望获取精细化数据:

  • 第1天,用户在A频道观看了100秒,在B频道观看了200秒
  • 第2天,用户在C频道观看了300秒,在D频道观看了400秒

解决方案

1. 调整API请求参数

要获取分频道的日维度数据,需修改dimensions参数为day,channel,同时根据账号类型调整ids参数:

  • 内容所有者账号:使用contentOwner==OWNER_ID可访问旗下所有频道数据
  • 普通用户账号:仅能使用channel==MINE获取自身频道数据

修改后的参数示例:

const params = {
  dimensions: "day,channel", // 新增channel维度实现按频道拆分
  startDate: "2023-07-01",
  endDate: "2023-08-02",
  ids: "contentOwner==YOUR_OWNER_ID", // 替换为实际内容所有者ID
  metrics: "estimatedMinutesWatched" // 仅保留观看时长指标,按需添加其他指标
};

2. 格式化返回数据

将API返回的原始数据转换为直观的按天分组结构:

async function getFormattedYouTubeAnalytics(result: GoogleTokensResult) {
  const params = {
    dimensions: "day,channel",
    startDate: "2023-07-01",
    endDate: "2023-08-02",
    ids: "contentOwner==YOUR_OWNER_ID",
    metrics: "estimatedMinutesWatched"
  };

  const searchParams = new URLSearchParams(params);
  const response = await fetch(`https://youtubeanalytics.googleapis.com/v2/reports?${searchParams}`, {
    headers: {
      Authorization: `Bearer ${result.access_token}`
    }
  });
  const rawData = await response.json();

  // 转换为按天分组的结构,将分钟转为秒
  const formattedData: Record<string, Record<string, number>> = {};
  rawData.rows.forEach(row => {
    const [day, channelId, minutesWatched] = row;
    const secondsWatched = minutesWatched * 60;
    if (!formattedData[day]) {
      formattedData[day] = {};
    }
    formattedData[day][channelId] = secondsWatched;
  });

  return formattedData;
}

转换后输出示例

{
  "2023-07-01": {
    "CHANNEL_A": 100,
    "CHANNEL_B": 200
  },
  "2023-07-02": {
    "CHANNEL_C": 300,
    "CHANNEL_D": 400
  }
}

注意事项

  • 普通用户账号无法获取其他频道的观看数据,需使用内容所有者账号并配置对应权限
  • estimatedMinutesWatched为估算分钟数,需乘以60转换为秒
  • 确保授权范围包含https://www.googleapis.com/auth/youtube.analytics.readonly

内容的提问来源于stack exchange,提问作者Avi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:35:10