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

使用YouTube Data API添加信息卡片后视频中不显示问题求助

问题分析与解决方案

你的代码存在三个核心问题,导致信息卡片无法生效:

1. 错误的API Part参数

你调用videos.update时仅指定了part: 'snippet',但信息卡片的配置属于contentDetails字段,而非snippet。API会忽略snippet中不存在的字段,因此卡片配置被直接丢弃,只有标题(属于snippet)更新成功。

2. 错误的卡片字段位置与结构

你将cards嵌套在snippet下,不符合YouTube Data API的规范。正确的卡片配置应放在contentDetails中,且字段结构需严格匹配官方定义。

3. 硬编码视频ID

在videos.list查询中你写死了视频ID,应使用传入的videoId参数,避免后续维护问题。


修正后的代码

async function addInfoCardsToVideo(videoId) {
    try {
      // 使用传入的videoId查询视频元数据,同时获取snippet和contentDetails
      const video = await youtube.videos.list({
        part: 'snippet,contentDetails',
        id: videoId,
      });

      // 构建符合API规范的卡片配置
      const updatedContentDetails = {
        ...video.data.items[0].contentDetails,
        cards: {
          cards: [
            {
              type: 'video',
              videoId: 'othervideoid', // 需确保该视频属于同一频道或符合YouTube政策
              timing: {
                startTimeMs: '20000', // 卡片开始显示时间(毫秒)
                durationMs: '5000'     // 卡片持续显示时间(毫秒)
              },
              teaser: {
                title: 'Info Card Title',
                timing: {
                  startTimeMs: '10000', // 预告条开始时间
                  endTimeMs: '30000'     // 预告条结束时间
                }
              }
            }
          ]
        }
      };

      // 更新视频,同时指定snippet和contentDetails部分
      const update = await youtube.videos.update({
        part: 'snippet,contentDetails',
        resource: {
          id: videoId,
          snippet: {
            ...video.data.items[0].snippet,
            localized: {
              ...video.data.items[0].snippet.localized,
            },
            title: 'updated video title'
          },
          contentDetails: updatedContentDetails
        },
      });

      console.log(`Successfully updated video: ${videoId}`);
    } catch (err) {
      console.error(`Error updating video: ${err}`);
    }
  }

addInfoCardsToVideo('myexistingvideoid')

额外注意事项

  • 卡片权限与政策:链接的视频必须属于同一YouTube频道,或符合YouTube的关联内容政策,否则即使API返回成功,卡片也不会在视频中显示。
  • 延迟生效:部分卡片配置可能需要数分钟才能在前端显示,若更新后立即查看未显示,可等待一段时间刷新页面。
  • API权限:确保你的API密钥或OAuth令牌拥有youtube.force-ssl的权限范围,否则无法修改视频的内容详情。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:25:21