大人のためのバトル:子供向けチャンネルをYouTube 24/7の広告から除外する方法は?

背景



プレロール(動画の前の有料動画、5秒後にスキップ可能)が不適切なコンテンツの動画に表示されたため、YouTubeに投稿することを拒否した大手広告主に関する最近のスキャンダルを多くの人が覚えています。 ただし、この記事では、別の問題-子供向けコンテンツについて説明します。 事実、大人の視聴者向けの正しいターゲティング設定を使用しても、子供のチャンネルは膨大な数(最大90%)のインプレッションを受け取ります。 これは、モバイルとデスクトップの両方のデバイス上の「アダルト」アカウントの親が子供向けの漫画を置いているという事実によるものです。 もちろん、広告主は、プリロールを見ているだけの子供に広告予算を使いたくないのです。 実際には効果はありません。 このような動画やチャンネルは、除外キーワードやトピック全体の除外によって除外できますが、長くて難しく、すべてのチャンネルや動画からは遠く除外されます-子供のコンテンツは非常に多様です。 あまり知られていない子供のチャンネルやビデオの多くは、一般的で特徴のない子供の名前や説明が不十分なため、引き続き広告を表示しますが、子供たちはまだ多く視聴しています。 AdWordsスクリプトを使用して、そのようなチャネルの検索と除外を自動化する方法を見つけることにしました。



画像



解決策1



そこで、子供向けのチャンネルを検索するための最初のスクリプトを作成し始めました。 AdWordsでは、独自のJSスクリプトを作成して広告アカウントを管理できます。 これらはGoogle Appsスクリプトに基づいており、主な利点は、Googleドライブ、スプレッドシート、YouTube、アナリティクス、BigQueryなどの他のGoogleサービスとの統合、およびサードパーティAPIを接続する機能です。 それまでは、YouTube Data API v3を使用して、プレースメントとして動画を検索する必要がありました。 これについては、別の記事で説明します。 そのため、子供の動画では名前ではなくタグを組み合わせることを実験的に確立できました。 YouTubeビデオを検索するためのスクリプトをわずかに変更したので、子供の漫画のさまざまなリクエストに対して同様のタグを見つけ、新しいスクリプトでさらに使用できるようにGoogleスプレッドシートに保存しました。 ファイルは公開されていますが、スクリプトを設定する前にGoogleドライブにコピーして、スクリプト内のファイルIDを新しいものに置き換えることをお勧めします。



スクリプトを理解するための重要なポイント:



  1. URL_PERFORMANCE_REPORTから、YouTubeプレースメントへのすべてのリンクと昨日のvideoIdを取得します。



    var report = AdWordsApp.report( 'SELECT Url ' + 'FROM URL_PERFORMANCE_REPORT ' + 'WHERE CampaignName CONTAINS "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]); }
          
          





  2. ループでは、YouTubeリクエストを各ビデオIDとともに送信します。 応答から、ビデオチャネルのタグとIDを取得し、子タグのライブラリとの交差についてすべてのタグを確認します。



     for (var i = 0; i < videoList.length; i++) { var results = YouTube.Videos.list('snippet', {id: videoList[i]}); try { if (results.items[0].snippet !== undefined) { 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; Logger.log("    - " + channelId); break; } else { continue; }; } } } } catch (e) { Logger.log(e); } }
          
          





    ビデオタグのいずれかがライブラリのタグと一致する場合、同じチャネルの別のビデオを介してビデオチャネルIDがまだ追加されていない場合、除外のためにビデオチャネルIDがアレイに送信されます。



  3. すべての動画の確認が完了すると、AdWordsアカウントの除外サイトのリストにすべてのチャンネルを追加するサイクルが開始されます。 スクリプト内の名前と同じ名前のリスト(「ビデオチャネル」だけがあります)を事前に作成する必要があります。 リスト内の除外サイトのリストの制限は65,000です。オーバーフローの問題はないはずです。



     var excludedPlacementList = AdWordsApp.excludedPlacementLists().withCondition('Name = ""').get().next(); for (var d = 0; d < channels.length; d++) { excludedPlacementList.addExcludedPlacement("youtube.com/channel/"+channels[d].toString()); };
          
          





最初のスクリプトオプションの使用に関する問題



かなりシンプルで効果的なソリューションですが、結局のところ、すべてがそれほど単純ではありません。 このスクリプトを使用すると、次の問題が発生しました:リーチビデオキャンペーンの起動時に、スクリプトが昨日すべてのビデオを処理できませんでした-時間制限30分(AdWords内部制限)に達し、新しい例外を追加しませんでした。 さらに、最大限の費用を節約するために、動画をできるだけ頻繁にすばやく追加することをお勧めします。 残念ながら、除外リストに動画を追加した後でも、経験上、すぐに行動を開始することはありません。 Googleの技術サポートでは、最大2日間(通常、以前の観察によると)話します。



したがって、別のページのファイルには、スクリプトの操作中に蓄積されたチャネルのリストが既にあります。事前に例外に追加することをお勧めします。



決定2



オートメーションのファンである友人とスクリプトの最初のバージョンをテストした後私はあなたが1時間ごとにチェックする必要があり、以前にチェックされたビデオをチェックする必要がないことに気付きました。そうしないと、スクリプトは正午までに30分の制限に達し始めます。 レートを1時間ごとに変更するという別のスクリプトから決定が下されました。重要なのは、このようなソリューションへのリンクです。 すべてが最初のバージョンに比べて少し複雑でしたが、結果は素晴らしいものでした。 Googleドライブで確認済みの動画をtxtファイルに保存する機能を追加しました。今日のすべてのIDは1時間ごとに新しいレポートと比較するためにそこに記録されます。 無料のUnderscore.jsライブラリの差分メソッドを使用して比較が行われます。



 var videoList = _.difference(videoIdList, data);
      
      





出力では、最後の1時間だけの新しいvideoIdの配列を取得します。これは、タグの出現に関する最初のスクリプトのスキームに従ってチェックします。 そして、スクリプトの最後に、今日のすべてのビデオを同じtxtファイルに追加します。



スクリプトのセットアップ



  1. Googleドライブで作成するファイルの名前を入力してください



     var dataFile = "videoIds.txt";
          
          





    そのようなファイルがまだない場合は、自動的に作成されます。



  2. テストするキャンペーンを選択します。



     'WHERE CampaignName CONTAINS "(Video)"
          
          





    AWQL構文はAdWordsヘルプにあります。



  3. GoogleスプレッドシートファイルのIDを自分のものに置き換えます



     var spreadsheet = SpreadsheetApp.openById('11PMGc70yLE88Npi47Hwb6W36Y8yjw2N2CdXXLgdK12o');
          
          





  4. AdWordsインターフェースで、除外されたプレースメントの一般的なリストを作成します



     var excludedPlacementList = AdWordsApp.excludedPlacementLists().withCondition('Name = ""').get().next();
          
          





    「ビデオチャンネル」の代わりにその名前を貼り付けます。



  5. YouTubeの高度なAPIで有効にします。



  6. 最初のビューの後、Google Developers ConsoleでYouTube APIを有効にします。 リンクはエラーログに記録されます。



  7. スクリプト「毎時」のスケジュールを設定します。


できた!



ファイナル



その結果、子供のチャンネルを1時間ごとにチェックし、制限時間に達しないスクリプトを取得しました。 他の有用性から、スプレッドシートファイルに新しいタグを追加することにより、任意の件名でスクリプトをカスタマイズできます。 更新されたスクリプトのコードはこちらに投稿されています 。 質問や提案に喜んでお答えします。



アダルトチャンネルも例外に陥ることがありますが、これはめったに起こりません。 2つの理由が考えられます-チャンネルの所有者が大人だけでなく子供向けの動画を入れるか、意図的に子供向けのタグを使用して視聴者をtheし、拡大するかのいずれかです。 観察によれば、スクリプトの使用を開始すると、大人が子供よりもスキップボタンを押す頻度が高くなるため、ビュースルーレート(VTR)が大幅に低下します。



適切なチャネルで使用して投稿してください!



All Articles