3月中旬,一些主要的广告商离开了YouTube,因为他们的预播放广告(付费视频在主要内容播放之前显示,可以在5秒后跳过)被放置在具有攻击性内容的视频中。然而,在这篇文章中,我们想谈谈另一个重要的话题——在儿童内容中无意识地展示预卷。
问题在于,即使针对成人受众进行了正确的定位设置,大量的印象(在某些情况下高达90%)还是给了儿童频道。这是因为父母在他们的设备上使用“成人”账户,包括移动设备和桌面设备,向他们的孩子播放卡通和教育视频。
当然,广告商不想把预算花在只看预告片的孩子身上,因为这对销售几乎没有影响。这样的视频和频道可以使用负面关键词排除,但费时费力,不会排除所有的频道和视频。
许多不受欢迎的儿童频道和视频继续播放片前广告,因为它们有一个常见的、幼稚的名字,或者没有足够的描述,但它们仍然被许多儿童观看。有一种方法可以使用AdWords脚本自动搜索和排除这些频道,如下所示。
问题解决方案
谷歌AdWords允许您在JS上创建自己的脚本来管理您的广告帐户。它们基于谷歌Apps Scripts,它们的主要优势是与其他谷歌服务集成,如谷歌Drive, Spreadsheets, YouTube, Analytics, BigQuery等,以及与第三方api一起工作的能力。例如,您可以使用YouTube Data API v3来查找广告位置的视频。
事实证明,儿童视频不是按名字而是按标签组合的。在修改了YouTube视频搜索的脚本后,发现了英语,俄语和乌克兰语的各种儿童视频的类似标签,并将其保存在谷歌电子表格中以供以后使用。该文件是公开的,但建议在设置脚本之前复制该文件并将其保存在谷歌驱动器上,并用新的文件id替换脚本中的文件id。
重要的细节
我们从URL_PERFORMANCE_REPORT中获得所有YouTube位置和视频oid的链接:
var report = AdWordsApp。报告(‘SELECT Url ‘ + ‘FROMURL_PERFORMANCE_REPORT ‘ + ‘WHERE CampaignName包含’ Video ‘ ‘ + ‘DURING YESTERDAY‘);Var rows = report.rows();while (rows.hasNext()) {var row = rows.next();var videoId = row[‘Url‘].toString().replace(‘www.youtube.com/video/‘,‘‘);videoIdList.push ([videoId]);}
请求被发送到YouTube,每个视频id在循环中。检查响应中得到的标签和视频频道id是否与收集的库中的任何内容相匹配:
For (var I = 0;i < videoList.length;i++) {var结果= youtube .视频。list(‘snippet‘, {id: videoList[i]});尝试{if (results.items[0])。==未定义){var channelId = results.items[0].snippet.channelId;Var tags = results.items[0].snippet.tags;if (uniqueChannel[channelId] !== true){for (var k = 0;K < tags.length;k++) {if (tagsObj[tags[k]] !== undefined) {channels.push([channelId]);uniqueChannel[channelId] = true;log(“添加到扩展库- ” + channelId);打破;} else{继续;};}}}} catch (e) {Logger.log(e);}}
如果任何视频标签与库中的标签匹配,则视频通道的ID将被发送到数组进行排除(如果它尚未通过来自同一通道的另一个视频添加)。
一旦所有的视频都被检查,运行循环,将所有的频道添加到排除网站列表到你的AdWords帐户。需要提前创建一个名称与脚本中相同的列表(这里是“Video_channels”)。排除名单的限制是6.5万个,所以应该不会出现过多的问题。”
var excludedPlacementList = AdWordsApp.excludedPlacementLists()。withCondition(‘Name = “Video_Channels“‘).get().next();对于(var d = 0;D < channels.length;d++) {excludedPlacementList.addExcludedPlacement(“youtube.com/channel/“+channels[d].toString());};
问题发生
上面提供的解决方案似乎可以正常工作,但仍然发生了一些问题。在使用此脚本时,我们面临以下问题。由于AdWords有30分钟的限制,该脚本无法处理前一天的所有视频。因此,没有添加新的例外。
此外,有必要尽可能多地添加视频,以便通过针对正确的受众来节省预算。不幸的是,即使在例外列表中添加了视频,根据我们的经验,它们也没有立即开始工作。谷歌技术支持估计需要2天,通常更短。因此,如果您有脚本收集的通道列表,建议您提前将其添加到例外列表中。
解决方案
每小时运行一次脚本似乎是合理的,并且不检查以前检查过的视频,否则脚本将在一天中达到30分钟的限制。这个解决方案是使用这个脚本设计的。与脚本的第一个版本相比,它有点复杂,但结果非常好。
我们添加了将带有已检查内容的文本文件保存到谷歌Drive的功能。选中内容的id被登记在文件中,然后将它们与新id进行比较。比较是使用来自开源的Undercode.js库的差异方法进行的。
作为输出,我们得到了最后一个小时的专有新videoId数组,我们根据脚本第一个版本中开发的方案检查标记的出现情况。脚本完成后,我们将当天的所有视频添加到同一个文本文件中。
设置脚本
指定要在谷歌驱动器上创建的文件的名称:var dataFile = “videoIds.txt“;如果没有这样的文件,它将自动创建。
选择您想要检查的活动:‘WHERE CampaignName CONTAINS “(视频)”AWQL语法在AdWords帮助中提供。
替换b谷歌Spreadsheet中的文件id: var Spreadsheet = SpreadsheetApp.openById(‘ 11pmgc70yle88npi47hwb6w36y8yjw2n2cdxxlgdk120 ‘);
在AdWords界面中,创建排除位置的一般列表:var excludedPlacementList = AdWordsApp.excludedPlacementLists()。withCondition(‘Name = “Video_channels“‘).get().next();并插入其名称而不是“Video_channels”。
在扩展api中启用YouTube。在第一个视图之后,在谷歌开发者控制台中启用YouTube API。该链接将出现在错误日志中。
为脚本操作设置“每小时”时间表。
瞧!
最后的评论
因此,我们创建了一个脚本,可以在不超过时间限制的情况下,每小时检查一次含有儿童视频内容的YouTube频道。您还可以通过向电子表格文件添加新标记来为任何主题定制脚本。更新后的脚本代码张贴在这里。欢迎您的提问和建议。
请记住,有时带有其他内容的视频频道也在例外列表中,但这种情况很少发生。这主要有两个原因。频道所有者共享儿童内容以及其他类型的内容。有时,视频频道也可能使用错误的标签来扩大他们的受众。
根据我们的观察,在你开始使用脚本后,观看率(VTR,观看通过率)将显著下降,因为成年人比儿童更频繁地按下“跳过”按钮,但这样,你的广告将显示给相关受众。
使用脚本并将广告放置在正确的频道上!