Media > AI活用ユースケース > マーケティング > 競合がYouTubeに公開している動画広告を要約し、訴求・構成・尺・出演者の使い方を比較表にまとめて、広告主への月次の報告に使う

競合がYouTubeに公開している動画広告を要約し、訴求・構成・尺・出演者の使い方を比較表にまとめて、広告主への月次の報告に使う

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

競合がYouTubeのチャンネルに公開した動画広告を毎月拾い、訴求・構成・尺・出演者の使い方を時刻付きで要約します。 広告主の動画と並べた比較表と、月次の報告の下書きにします。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Google Apps Script/Python
対象業界
EC/不動産/小売/広告
対象部門
マーケティング
対象業務
比較検討/要約
主な課題
データ分析に時間がかかる/人手が足りない/属人化している
AIで行う処理
要約
主な効果
判断支援/品質標準化/工数削減
導入難易度
★★☆☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
必須
現在工数
40h/月
AI導入後
12h/月
想定削減
70%
年間削減
336h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 担当者が競合のチャンネルを開き、前回の報告の後に公開された動画を探す
  2. 動画を2〜3回見て、台詞、テロップ、場面の切り替わりをメモする
  3. 訴求の要点、構成、尺、出演者をまとめて、報告用の表に書く
  4. 広告主の動画と並べ、違いを数行にまとめる
  5. 上長が報告のひな形に貼り、広告主に説明する
導入後(After)
  1. 自動毎週月曜に、広告主ごとの競合のチャンネルから新しく公開された動画を拾う
  2. 自動動画の題名・公開日・尺・公開の状態を取り、比べる対象の候補の一覧に足す
  3. 人担当者が一覧を見て、広告の動画に「要約する」を付ける(社長の挨拶や採用の動画などは外す)
  4. 自動AIが動画を見て、訴求・構成・出演者の使い方を、決めた選択肢と根拠の時刻で返す
  5. 自動返ってきた値を比較表に書き、広告主の動画と並べる
  6. 人担当者が根拠の時刻の場面を見て値を確かめ、直す
  7. 自動確かめた値から、月次の報告の下書き(今月の傾向と、広告主の動画との違い)をAIが書く
  8. 人担当者と上長が下書きを直し、報告のひな形に貼る
各工程の詳しい説明を読む
  1. 担当者が競合のチャンネルを開き、前回の報告の後に公開された動画を探す
  2. 動画を2〜3回見て、台詞、テロップ、場面の切り替わりをメモする
  3. 訴求の要点、構成、尺、出演者をまとめて、報告用の表に書く
  4. 広告主の動画と並べ、違いを数行にまとめる
  5. 上長が報告のひな形に貼り、広告主に説明する

(a)見る時間がかかる。 30秒の広告でも、台詞とテロップを書き起こすには何度も止めて見ます。数分の商品紹介になると、1本で30分を超えます。

(b)観点がそろわない。 「訴求」を、ある担当は「価格」と書き、ある担当は「初回限定の値引き」と書きます。同じ動画を見ても、表の値が担当者で変わります。 月をまたいで傾向を見ることができません。

広告主の動画も、報告のたびに見直している。 比べる相手の広告主の動画も、担当者が毎回見直して要約しています。同じ動画を、月が変わるたびに別の言葉で要約していることもあり、(b)のばらつきを大きくしています。

(c)新しい動画の見落とし。 チャンネルを開いて目で探すので、ショート動画の欄に上がった広告を見落とします。 気づいたのが翌月で、報告が1か月遅れることがあります。

  1. 【自動】 毎週月曜に、広告主ごとの競合のチャンネルから新しく公開された動画を拾う
  2. 【自動】 動画の題名・公開日・尺・公開の状態を取り、比べる対象の候補の一覧に足す
  3. 【人】 担当者が一覧を見て、広告の動画に「要約する」を付ける(社長の挨拶や採用の動画などは外す)
  4. 【自動】 AIが動画を見て、訴求・構成・出演者の使い方を、決めた選択肢と根拠の時刻で返す
  5. 【自動】 返ってきた値を比較表に書き、広告主の動画と並べる
  6. 【人】 担当者が根拠の時刻の場面を見て値を確かめ、直す
  7. 【自動】 確かめた値から、月次の報告の下書き(今月の傾向と、広告主の動画との違い)をAIが書く
  8. 【人】 担当者と上長が下書きを直し、報告のひな形に貼る

3番で人が選ぶのは、公式チャンネルには広告でない動画も多いからです。 新商品の発表会、採用の動画、社長の挨拶まで要約すると、比較表が広告でないもので埋まります。題名と尺の一覧を見て選ぶのは、1社あたり1分もかかりません。

6番が、この構成の確認の中心です。 担当者は動画を頭から見直さず、AIが根拠にした時刻の場面だけを開いて、値が合っているかを確かめます。

02今回想定するシステム構成

構成図
広告主ごとの競合のチャンネルの一覧(スプレッドシート)
   ▼【トリガー】毎週月曜の定時の実行
Python
   ├──▶ YouTube Data API ── channels.list → アップロードの再生リスト
   │                       playlistItems.list → 新しい動画
   │                       videos.list → 題名・公開日・尺・公開の状態
   ▼
比べる対象の候補の一覧
   ▼
【担当者が広告の動画に「要約する」を付ける】
   ▼
Python ──▶ Gemini API ── 動画の URL を渡し、訴求・構成・出演者を時刻付きで返す
   ▼
比較表(広告主の動画と並べる)
   ▼
【担当者が時刻の場面を見て確かめる】
   ▼
Gemini API ── 月次の報告の下書き(傾向と違い)
   ▼
【担当者と上長が直す → 広告主へ報告】
役割想定する製品代替候補
処理Gemini API(YouTubeの動画の要約と、比較表からの報告の下書き)Claude API、OpenAI API(YouTube の URL を渡す形は使わず、担当者のメモと題名・概要を要約する形になる)
連携Python(定時の実行、YouTube Data API の呼び出し、比較表への書き込み)Google Apps Script
連携YouTube Data API(channels.list、playlistItems.list、videos.list)-
保管Google スプレッドシート(競合の一覧、候補の一覧、比較表)社内のデータベース

動画を見る土台は、Gemini API がYouTubeの URL を直接受け取れることです。 入力に {"type": "video", "uri": "https://www.youtube.com/watch?v=..."} の形で URL を入れます。公式の説明では、この機能はプレビューで、扱えるのは公開の動画だけとされ、非公開や限定公開の動画は使えません。無料の枠では1日に8時間分までで、有料の枠では動画の長さによる上限はないとされています。Gemini 2.5 以降のモデルでは、1回のリクエストに10本まで入れられます。

動画は、既定では1秒に1コマの割合で見られます。 公式の説明では、速い動きや場面の切り替わりの多い動画では細部を見落とすことがあるとされています。音声も一緒に処理され、場面は MM:SS の形の時刻で指し示せます。

新しい動画の拾い上げは、YouTube Data API で行います。 channels.list でチャンネルのアップロード動画の再生リストを取り、playlistItems.list でその再生リストの動画を取ります。どちらも1回の呼び出しの割り当ては1ユニットで、playlistItems.list は1回に最大50件を返します。尺は videos.list の contentDetails.duration から取ります。 ISO 8601 の形(例:PT15M33S)です。

03どうやって実装するのか

Step1

処理の起点を決める

毎週月曜の朝に、Python のプログラムを定時で動かします。 月次の報告の前にまとめて拾うと、(c)の見落としが月末に一度に見つかり、要約と確認が報告の週に詰まります。週ごとに拾えば、担当者の確認も週に数本ずつで済みます。

AIの要約は、担当者が「要約する」を付けた時点で動かします。 候補の一覧の列に印が付いたものを、プログラムが30分ごとに拾います。拾い上げと要約を分けるのは、広告でない動画にAIの費用と担当者の確認の時間を使わないためです。

月次の報告の下書きは、担当者が比較表の確認を終えて「報告の下書き」を押したときに作ります。 確かめる前の値で下書きを作ると、誤った値が報告の文章に入ります。

Step2

入力データを集める

データ中身取得元
競合の一覧広告主ごとの競合の社名、チャンネルのハンドルまたはID競合の一覧のシート
動画の情報動画のID、題名、公開日時、尺、公開の状態YouTube Data API
動画そのもの公開の動画の URLGemini API に URL で渡す
比べる軸訴求の選択肢、構成の型、CTAの選択肢、出演者の立場の選択肢軸のシート
広告主の動画の値広告主の動画を同じ軸で要約した値比較表

質を決めるのは、比べる軸の選択肢です。 訴求なら「価格・値引き」「品質・成分」「実績・受賞」「利用者の声」「限定・期間」「手軽さ」のように、広告主の業種ごとに6〜8個を決めます。 選択肢が多すぎると、AIの選び方がばらつき、少なすぎると「その他」ばかりになります。

広告主の動画も、同じ軸で要約しておきます。 比較表の左端に広告主の動画を置くと、「競合は今月3社とも利用者の声で始まり、自社だけが価格で始まっている」のような違いが一目で分かります。

Step3

データの取得方法を決める

取るものどこから何に使うか
アップロードの再生リストchannels.list(part=contentDetails、forHandle または id)新しい動画の取得元
新しい動画のIDplaylistItems.list(playlistId、maxResults=50)前回より後の動画を拾う
題名・公開日時・尺・公開の状態videos.list(part=snippet,contentDetails,status)候補の一覧と、尺の値

前回の実行より後に公開された動画だけを、候補に足します。 snippet.publishedAt は公開された日時で、後から公開に切り替えた動画では、アップロードの日時と違うとされています。前回の実行の日時と比べ、それより後のものを拾います。

status.privacyStatus が public の動画だけを要約の対象にします。 Gemini API に渡せるのは公開の動画だけなので、unlisted(限定公開)の動画は、候補の一覧に「対象外」として残すだけにします。

尺の ISO 8601 の値は、Python で秒に直します。 PT30S なら30秒、PT1M15S なら75秒です。比較表では秒で並べ、15秒以下・30秒前後・60秒以上のように区切って傾向を見ます。

Step4

AIへ渡す前に整形する

  1. 新しい動画の絞り込み … 前回の実行より後に公開され、公開の状態が public のものだけを候補にします
  2. 重複の除外 … 同じ動画が別の再生リストから拾われても、動画のIDで1つにします
  3. 担当者の選別 … 候補の一覧で「要約する」が付いたものだけを次に進めます
  4. 長い動画の扱い … 尺が10分を超える動画は、要約の前に担当者に確かめます。広告ではないことが多いためです
  5. 軸の準備 … その広告主の業種の軸の選択肢を、軸のシートから取り出しておきます
  6. 広告主の動画の要約 … 広告主の新しい動画も、同じ流れと同じ軸で要約し、比較表の左端に置きます。一度確かめた値は、翌月以降は取り直さず使い回します

動画のファイルは、こちらで保存しません。 YouTube のデベロッパーポリシーは、事前の書面の承認なしに、YouTube の映像・音声のコンテンツをダウンロードしたり、コピーを保存したりしないことを求めています。この構成では URL を Gemini API に渡すだけにし、動画を手元に落として静止画や音声に分ける処理は作りません。

4番の10分の区切りは、費用と確認の時間のためでもあります。 公式の説明では、既定の解像度で動画1秒あたりおよそ100トークンかかるとされています。長い商品紹介を誤って要約に回すと、1本で短い広告の何十本分の費用になります。

Step5

AIに処理させる

動画1本ごとに、次の項目を返させます。

項目答え方判断できないときの扱い
訴求(主・副)軸の選択肢から主を1つ、副を2つまで。根拠の時刻当てはまらなければ other と短い説明
冒頭最初の5秒に何が映り、何が言われるか。商品が初めて映る時刻商品が映らなければ not_shown
展開問題提起・実演・比較・利用者の声などの型の並び。各場面の開始時刻型に当てはまらない場面は other
締めCTAの選択肢(購入・資料請求・来店・検索・アプリ)。表示の時刻呼びかけが無ければ none
出演者の使い方立場(著名人と思われる人物・一般の利用者役・社員・専門家役・アニメ・出演なし)と、話し方(語りかけ・会話・ナレーションのみ)判断できなければ uncertain
画面の文字価格・期間・注釈など、画面に出た主な文字と時刻読めなければ書かない

出演者は「立場」で答えさせ、誰かを当てさせません。 顔から人物の名前を推測させると、誤った名前が比較表と報告に残ります。 名前を書くのは、画面のテロップや題名・概要に名前が出ているときだけにし、その場合も根拠の時刻を付けさせます。

させないこと理由
尺の答えYouTube Data API の値を使う
顔からの人物の特定誤りが残り、人についての推測になる
広告の効果の評価(「よくできている」など)公開の情報からは成果が分からない
競合の表現が法令に触れるかの判断広告主と専門家が判断する
広告主への提案提案は担当者が比較表を見て考える

3行目がいちばん起きやすい失敗です。 AIは要約の最後に「訴求が明確で効果的な広告です」と書きがちで、それが報告に入ると、根拠の無い評価を広告主に伝えることになります。

Step6

指示内容を固定する

あなたは広告代理店のプランニングチームで、競合の動画広告の中身を記録する立場です。
渡した動画を見て聞いて、決めた項目を答えてください。

【この広告主の業種】{industry}
【訴求の選択肢】{appeal_options}
【展開の型の選択肢】{structure_options}
【CTAの選択肢】{cta_options}
【出演者の立場の選択肢】{cast_options}

【答えること】
- 訴求:主を1つ、副を2つまで。それぞれ根拠の場面の時刻(MM:SS)
- 冒頭:最初の5秒に映るものと言われること。商品が初めて映る時刻
- 展開:場面ごとの型と開始の時刻
- 締め:CTAの種類と表示の時刻
- 出演者:立場と話し方
- 画面の文字:価格・期間・注釈など主なものと時刻

【厳守事項】
- 選択肢に当てはまらないときは other を選び、短く説明してください。無理に近いものを選ばないでください。
- すべての答えに、根拠の場面の時刻を付けてください。時刻を付けられない答えは書かないでください。
- 動画の長さ(秒数)を書かないでください。
- 出演者の名前を顔から推測しないでください。画面の文字に名前が出たときだけ、その時刻とあわせて書いてください。
- 広告の出来や効果を評価しないでください。
- 表現が法令に触れるかどうかを書かないでください。

「時刻を付けられない答えは書かない」が、この構成の確認を軽くします。 時刻が付いていれば、担当者はその場面だけを見て確かめられます。時刻の無い答えは、確かめるのに動画を頭から見ることになり、AIを使った意味が薄れます。

「無理に近いものを選ばない」は、軸を育てるための行です。 other の説明が毎月同じ内容で出てくるなら、それは選択肢に足すべき訴求です。other が多い軸は、軸のシートを見直す合図になります。

Step7

出力形式を固定する

構造化出力で、動画1本ごとに次の形のJSONを受け取ります。

{
  "video_id": "",
  "appeal": { "main": "price | quality | track_record | testimonial | limited | ease | other",
              "main_time": "00:03", "sub": [ { "value": "", "time": "" } ],
              "other_note": "" },
  "opening": { "first_5s": "", "product_first_seen": "00:02 | not_shown" },
  "structure": [ { "type": "problem | demo | comparison | testimonial | offer | other",
                   "start": "00:00" } ],
  "cta": { "type": "purchase | inquiry | visit | search | app | none", "time": "" },
  "cast": { "role": "celebrity_like | user_role | employee | expert_role | animation | none | uncertain",
            "speech": "address | dialogue | narration_only", "name_from_caption": "", "time": "" },
  "on_screen_text": [ { "text": "", "time": "" } ]
}

選択肢を enum にして、軸の値をそろえます。 Gemini API の構造化出力は、/v1beta/interactions の response_format に mime_type: "application/json" とスキーマを入れて指定します。公式のページは、スキーマに合ったJSONでも値が正しいとは限らないので、アプリケーションの側で確かめるよう案内しています。Python では、時刻が MM:SS の形で、動画の尺(videos.list の値)を超えていないかを確かめます。尺を超える時刻があれば、その答えは「時刻が合わない」として担当者に回します。

比較表には、1本を1行にして次のように並べます。

社動画(公開日)尺訴求(主)商品が映る展開CTA出演者
広告主春の新商品(4/2)30秒価格・値引き(00:03)00:01実演→値引き検索ナレーションのみ
競合A初回限定(4/10)15秒利用者の声(00:00)00:08利用者の声→値引き購入一般の利用者役・語りかけ

尺の列だけは YouTube Data API の値です。 それ以外の列にはAIの値と根拠の時刻が入り、担当者が確かめた列には印が付きます。

月次の報告の下書きは、確かめ終えた比較表だけを Gemini API に渡し、「今月の競合の傾向」「広告主の動画との違い」を、比較表の値だけを根拠に3〜5点で書かせます。 比較表に無いことを書かない、評価や提案を書かない、と指示します。

Step8

システムへ連携する

つなぎ先方式内容
競合の一覧・候補の一覧・比較表Python からスプレッドシートへの読み書き競合の読み取り、候補の追加、値の書き込み
YouTube Data APIPython からの呼び出し(APIキー)新しい動画と、題名・公開日時・尺・公開の状態
Gemini APIPython からの HTTP 呼び出し(動画は URL で渡す)動画の要約と、報告の下書き
報告のひな形担当者が下書きを貼る広告主への報告

広告主へは、この構成から何も送りません。 報告の下書きは比較表の隣のシートに書き、担当者と上長が直してから、ひな形に貼ります。

APIキーは、プログラムの外の設定に置き、コードに書きません。 YouTube Data API のキーと Gemini API のキーは、別のものにしておきます。

Step9

人が確認する

すべての動画の値を、担当者が確かめてから比較表を確定させます。 見る順番を決めておきます。

  1. 「時刻が合わない」と other を先に見る … 時刻の場面を開き、値を直すか、other の説明を確かめます
  2. 訴求(主)と商品が映る時刻を見る … 報告でいちばん使う値なので、全件の時刻の場面を確かめます
  3. 出演者の欄を見る … 名前が入っているものは、画面の文字の時刻を開いて、本当に名前が出ているかを確かめます
  4. 報告の下書きを比較表と照らす … 比較表に無いことが書かれていないかを見ます

3番を省かないでください。 人物の名前の誤りは、広告主への報告を通じて社外に出ます。 名前の根拠が画面の文字に無いときは、名前を消して立場だけにします。

目標は、80本をならして1本9分です。 15秒の広告なら、時刻の場面を数か所見るだけで数分です。確かめる場面が多い長めの動画で時間を使います。

担当者が値を直したら、直した軸と直す前の値を記録します。 同じ軸で直しが続くなら、選択肢の言葉があいまいか、選択肢どうしが重なっています。例えば「限定・期間」と「価格・値引き」が同じ動画で取り違えられるなら、どちらを優先するかの決まりを軸のシートに書き、指示にも足します。 直しの記録は、担当者ごとの観点の違いをそろえる材料にもなります。

Step10

例外に対処する

起きること対応
動画が限定公開・非公開要約の対象にしない。候補の一覧に「対象外」と残す
拾った後に動画が非公開・削除になった要約の前なら失敗するので「取得不可」と書く。要約の後なら、自社が書いた値は比較表に残し「現在非公開」と印を付ける
チャンネルのハンドルが変わったchannels.list で見つからなければ、競合の一覧に「要確認」を付ける
時刻が尺を超える答え「時刻が合わない」として担当者に回す
選択肢にない値が返るスキーマで弾かれる。再試行を1回、再び外れれば担当者に回す
無料の枠の1日の上限に当たる翌日に回す。業務で使うときは有料の枠を前提にする
外国語の広告画面の文字と台詞を日本語で要約させ、原文の文字は on_screen_text に原文のまま残す

1行目と2行目は、YouTube の側の事情で毎月起きます。 広告は配信の期間が終わると非公開にされることがあり、要約した後に見られなくなった動画の値は、比較表に残すかどうかを決めておきます。 この構成では、要約の値(自社が書いた記録)は残し、動画の情報(題名・再生回数など)は次の項のとおり扱います。

Step11

記録を残す

  • 候補の一覧(動画のID、拾った日、担当者の選別)
  • AIに渡した指示と、返ってきたJSON
  • 担当者が直した値と、直す前の値
  • 確定した比較表と、報告の下書き・確定版
  • other の説明の一覧(軸の見直しの材料)

YouTube Data API から取った値の保存には、決まりがあります。 デベロッパーポリシーでは、API から取ったデータの多くについて、保存は30日を超えないこととされ、30日を過ぎたら削除するか取り直すことが求められています。題名や公開日時など、API から取った値は月ごとに取り直し、取り直せないものは消します。 比較表には、動画のIDと、自社が書いた要約の値を残します。

再生回数は、比較表に入れません。 再生回数は広告の配信の量で大きく変わり、中身の比較とは別の話だからです。

04実装レベルの3段階

最小構成:手元の生成AIに URL を貼り、決めた軸で要約させる / 動画1本ごとの要約
半自動化:上記+Python から Gemini API を呼び、構造化出力で比較表に書き込む / 要約と比較表への記入
本格構成:上記+YouTube Data API で新しい動画を毎週拾い、尺を入れ、報告の下書きまで作る / 拾い上げから報告の下書きまで

最小構成では、①の見る時間が大きく減ります。 ただし、新しい動画を探すことと表への転記は手作業のままです。 半自動化で、1本30分が15分程度になります。 比較表には値が並びますが、動画を探す作業と尺の確認、報告の文章は手作業で残ります。本格構成で9分になり、この段階が本記事の想定です。 差が大きいのは、(c)の見落としが無くなり、報告の下書きが比較表から作られるからです。 段階を飛ばさないでください。 半自動化の1か月で other が多い軸と、時刻のずれやすい動画の種類が分かります。軸を直してから拾い上げを自動にするほうが、比較表の手直しが減ります。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
3 名
月間件数
80 件
1件あたり現在時間
30 分
1件あたり導入後時間
9 分
現在  80件 × 30分 ÷ 60 = 40 時間/月
導入後 80件 × 9分 ÷ 60 = 12 時間/月
月間削減時間
28h
削減率
70%
年間削減時間
336h
年間金額換算(時間単価3,500円)
118万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 動画広告を扱う広告代理店・制作会社で、広告主ごとに競合の動画広告を毎月見て、訴求や構成の傾向を報告書にまとめている場合。通販・小売・不動産など、競合が自社のYouTubeチャンネルに広告の動画を公開している業種の広告主を多く担当している場合。見る人によって要約の観点がばらつき、報告の質が担当者で変わっている場合。
向いていない
  1. 競合の動画広告がチャンネルに公開されず、配信面でしか見られない場合(限定公開や非公開の動画は扱えません)。見る競合の動画が月に数本で、担当者が見て足りる場合。広告の効果(再生回数あたりの成果など)の比較が目的の場合(公開の情報からは分かりません)。なお、どの訴求を自社の広告に採り入れるかの判断と、競合の表現が法令に触れるかの判断は、この構成では代替できません。

07最小構成で試す方法

  1. 先月の報告で扱った競合の動画から10本を選ぶ(15秒の短い広告と、数分の商品紹介を両方入れる)
  2. 手元の Gemini アプリに動画の URL を貼る
  3. 「この動画広告の訴求を次の選択肢から主1つ・副2つまで選び、根拠の場面の時刻を付けてください。冒頭の5秒、展開、締めの呼びかけ、出演者の立場も時刻付きで答えてください。出演者の名前は推測しないでください」と指示する
  4. 当時の担当者の要約と比べ、時刻の場面を開いて確かめる

時刻の場面を必ず開いてください。 確かめたいのは、AIの値が合っているかと、時刻が場面を正しく指しているかです。同じ10本を、別の担当者にも同じ軸で要約してもらうと、AIと人、人と人のずれが並べて見えます。 人どうしのずれが大きい軸は、AIより先に軸の言葉を直す必要があります。

出てきた内容判断
当時の要約と同じ訴求が出て、時刻も場面と合うYouTube Data API とのつなぎに進む
選択肢に無理に当てはめるother を許す指示で直る。構成は有効
短い広告で場面の切り替わりを落とすコマの割合の問題。 短い広告の扱いを先に考える

3行目は、既定で1秒に1コマという見方から来ます。 YouTube の URL で processing の設定(コマの割合など)が使えるかは公式の例に無いため、まず試し、足りなければ短い広告は担当者が見る運用に残します。

08実装時につまずきやすいポイント

問題対策
要約が自由文で比べられない軸を選択肢にし、enum で受ける
選択肢に無理に当てはめるother と説明を許し、other の多い軸を見直す
尺をAIが答える尺は contentDetails.duration から取り、指示でも禁じる
時刻が場面と合わない尺を超える時刻を検査し、場面を開いて確かめる
出演者の名前を顔から推測する立場で答えさせ、名前は画面の文字に出たときだけ
限定公開の動画を渡そうとするprivacyStatus が public のものだけを対象にする
広告でない動画まで要約する担当者が候補の一覧で選ぶ
短い広告の場面の切り替わりを落とす既定は1秒に1コマ。足りなければ短い広告は人が見る
APIの値を長く保存する30日を超えない。月ごとに取り直すか消す
動画をダウンロードして処理したくなるデベロッパーポリシーが求める承認なしには行わない。URLで渡す

上の2行が、この構成の価値を決めます。 比較表が比べられる形になるかどうかは、AIの賢さではなく軸の作り方で決まります。

下の2行は、YouTube の決まりに関わります。 便利だからと動画を落として処理する形に変えないでください。動画を落とせば他社の生成AIでも同じことができそうに見えますが、それはこの構成の前提を外れます。 代替候補の生成AIを使うときも、扱えるのは決まりの範囲で手に入る文字の情報(題名・概要など)までだと考えてください。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 競合が公開している動画の URL と、YouTube Data API から取った動画の情報、自社が書いた要約の値と報告です。個人の情報は、動画に映る出演者を除いて扱いません。

  1. 出演者を特定しない … 顔から人物の名前を推測させません。名前は画面の文字に出たときだけ、時刻とあわせて記録します
  2. 公開の動画だけを扱う … Gemini API に渡せるのは公開の動画だけです。限定公開の URL を何らかの経路で入手しても、使いません
  3. 動画を保存しない … YouTube のデベロッパーポリシーは、事前の書面の承認なしに映像・音声のコンテンツをダウンロード・保存しないことを求めています
  4. API の値の保存期間を守る … API から取ったデータの多くは、保存が30日を超えないこととされています。比較表に残すのは、自社が書いた要約の値と動画のIDにします
  5. 有料の利用枠で使う … Gemini API の規約では、無料の枠(Unpaid Services)に送った内容は製品の改善に使われることがあるとされています。広告主の名前や企画に触れる報告の下書きを作るので、有料の枠(Paid Services)を前提にします
  6. 競合の表現を流用しない … 比較表は傾向を見るためのものです。競合の台詞やコピーを、そのまま自社の企画に使わないでください
  7. 報告に評価と法令の判断を入れない … 競合の広告の出来や、表現が法令に触れるかは、この構成が出すものではありません

誤りが起きた場合のリスクは、誤った値や人物の名前が、広告主への報告を通じて社外に出ることです。時刻の根拠、担当者の確認、名前を推測させない指示の3つで、そこを守ります。

10まず何から始めるか

1週目:軸の選択肢を決める

担当の広告主の業種ごとに、訴求、展開の型、CTA、出演者の立場の選択肢を6〜8個ずつ決めます。過去の報告で使ってきた言葉を持ち寄って、同じ意味のものをまとめます。

2週目:10本で試す

先月の動画から10本を選び、手元の生成AIに URL を貼って、決めた軸で要約させます。時刻の場面を開いて、値と時刻が合っているかを最優先で見ます。

3週目:競合の一覧を作る

広告主ごとの競合のチャンネルのハンドルを、シートにまとめます。広告主の動画も同じ軸で要約し、比較表の左端に置きます。

4週目:Python で拾い上げと要約をつなぐ

YouTube Data API で新しい動画を拾い、候補の一覧に足し、「要約する」が付いたものを Gemini API に渡して比較表に書くところまで作ります。この時点では報告の下書きを作らず、比較表の値を確かめます。

2か月目: 報告の下書きを足し、other の説明を毎週見て軸を直します。3か月目以降: 1本30分が何分になったかを実測します。3か月分の比較表から、競合ごとの訴求の傾向を広告主に説明できるようになった時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-14/最終更新:2026-10-14
確認した内容情報源確認日
YouTube の URL を {"type": "video", "uri": ...} で渡せること。プレビューで、公開の動画だけを扱えること。無料の枠は1日8時間分まで、有料の枠は長さの上限がないこと。Gemini 2.5 以降は1回に10本まで。既定で1秒に1コマで、速い動きを見落とすことがあること。MM:SS で時刻を指せること。既定の解像度で1秒あたりおよそ100トークン(高い解像度でおよそ300)であること。料金と上限が変わりうることGoogle AI for Developers: Video understanding2026-10-14
構造化出力を /v1beta/interactions の response_format で指定し、enum が使えること。値はアプリケーションで確かめるよう案内されていることGoogle AI for Developers: Structured outputs2026-10-14
無料の枠に送った内容が製品の改善に使われうること。有料の枠ではプロンプトと回答を製品の改善に使わないことGemini API Additional Terms of Service2026-10-14
channels.list が id または forHandle で引け、割り当てが1ユニットであること。contentDetails にアップロード動画の情報があることYouTube Data API: Channels: list2026-10-14
playlistItems.list の割り当てが1ユニットで、maxResults が0〜50であることYouTube Data API: PlaylistItems: list2026-10-14
contentDetails.duration が ISO 8601 の形であること。snippet.publishedAt が公開の日時で、アップロードの日時と違うことがあること。status.privacyStatus が private・public・unlisted であることYouTube Data API: Videos2026-10-14
事前の書面の承認なしに YouTube の映像・音声のコンテンツをダウンロード・保存しないこと。API から取ったデータの多くは保存が30日を超えず、過ぎたら削除するか取り直すことYouTube API Services: Developer Policies2026-10-14

競合の表現が法令に触れるかは、広告主と専門家が判断してください。 本記事は各製品の公式ページで確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-1493)についてのご相談はこちらから。

AI活用について相談する
目次