記事広告・タイアップ・インフルエンサーの原稿を、ステルスマーケティングの運用基準に照らして「広告」の表示の有無と分かりやすさを判定し、直し案を出す
記事広告やインフルエンサーの投稿の原稿から「広告」「PR」などの表示を探し、その位置・大きさ・文言が分かりやすいかを判定します。不明瞭なものには直し案を付けて、公開前に制作担当へ返します。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- EC/IT・SaaS/小売/広告
- 対象部門
- マーケティング/法務
- 対象業務
- 内容確認・チェック/書類作成
- 主な課題
- 人手が足りない/属人化している/確認ミスが多い
- AIで行う処理
- 判定
- 主な効果
- 品質標準化/属人化解消/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 制作担当が原稿(記事の本文、投稿文、動画の台本とテロップ表)と画像のカンプを共有フォルダに置き、チャットで審査を依頼する
- 審査担当が案件台帳を開き、広告主・依頼の内容・対価や商品提供の有無を確かめる
- 原稿を読み、「広告」「PR」「プロモーション」や「〇〇社から商品の提供を受けて」といった表示を探す
- 表示の位置(冒頭か末尾か)、文字の大きさ、ハッシュタグの中での位置、動画で表示される秒数を確かめる
- 本文中に「個人の感想です」「私が自分で買って」のような、表示と食い違う文が無いかを読む
- 指摘と直し案をスプレッドシートに書き、制作担当へ返す
- 迷うものは法務担当に回す
- 人制作担当が原稿・画像・テロップ表を審査フォルダに置き、案件番号を付ける
- 自動保存をきっかけにスクリプトが動き、案件台帳から広告主・依頼の有無・対価・商品提供を引く
- 自動案件台帳で広告主の関与が「あり」になっていることを確かめる。空欄なら判定に進まず審査担当へ回す
- 自動原稿を本文・ハッシュタグ・画像・テロップに分け、テロップには表示の開始と終了の秒数を付ける
- 自動Claude API が、広告である旨の表示を探し、運用基準の「不明瞭な表示」の型ごとに当たるかを判定する
- 自動表示の秒数やハッシュタグの中での順番など、数えられるものはスクリプトが社内基準と照らす
- 自動型ごとの結果から、`clear` / `needs_fix` / `needs_legal` を規則で決め、直し案を付ける
- 人審査担当が `needs_fix` と `needs_legal` を確かめ、直し案を整えて制作担当へ返す
- 人`needs_legal` のものは法務担当が判断する
- 人`clear` のものは一覧で流し見て承認する
各工程の詳しい説明を読む
- 制作担当が原稿(記事の本文、投稿文、動画の台本とテロップ表)と画像のカンプを共有フォルダに置き、チャットで審査を依頼する
- 審査担当が案件台帳を開き、広告主・依頼の内容・対価や商品提供の有無を確かめる
- 原稿を読み、「広告」「PR」「プロモーション」や「〇〇社から商品の提供を受けて」といった表示を探す
- 表示の位置(冒頭か末尾か)、文字の大きさ、ハッシュタグの中での位置、動画で表示される秒数を確かめる
- 本文中に「個人の感想です」「私が自分で買って」のような、表示と食い違う文が無いかを読む
- 指摘と直し案をスプレッドシートに書き、制作担当へ返す
- 迷うものは法務担当に回す
(a)全文を読まないと見つからない型がある。 冒頭に「PR」と入っていても、文中に「これは第三者として感想を書いています」とあれば、運用基準は分かりにくい表示の例に挙げています。冒頭だけを見て通すと、この型は必ず抜けます。
(b)ハッシュタグの中に埋もれる。 インフルエンサーの投稿文では、20個以上のハッシュタグの真ん中に「#PR」が入っていることがあります。文字としては入っているので、急いでいると合格に見えます。
(c)動画は台本だけでは分からない。 表示がテロップで何秒出るか、冒頭だけか、中間と末尾にもあるかは、台本とテロップ表を突き合わせないと分かりません。担当者によっては、テロップ表を開かずに台本だけで通しています。
(d)指摘の厳しさが人で違う。 同じ「末尾に小さく#ad」でも、ある担当は差し戻し、別の担当は通します。広告主から見ると、同じ代理店なのに案件ごとに言うことが違う状態です。
- 【人】 制作担当が原稿・画像・テロップ表を審査フォルダに置き、案件番号を付ける
- 【自動】 保存をきっかけにスクリプトが動き、案件台帳から広告主・依頼の有無・対価・商品提供を引く
- 【自動】 案件台帳で広告主の関与が「あり」になっていることを確かめる。空欄なら判定に進まず審査担当へ回す
- 【自動】 原稿を本文・ハッシュタグ・画像・テロップに分け、テロップには表示の開始と終了の秒数を付ける
- 【自動】 Claude API が、広告である旨の表示を探し、運用基準の「不明瞭な表示」の型ごとに当たるかを判定する
- 【自動】 表示の秒数やハッシュタグの中での順番など、数えられるものはスクリプトが社内基準と照らす
- 【自動】 型ごとの結果から、
clear/needs_fix/needs_legalを規則で決め、直し案を付ける - 【人】 審査担当が
needs_fixとneeds_legalを確かめ、直し案を整えて制作担当へ返す - 【人】
needs_legalのものは法務担当が判断する - 【人】
clearのものは一覧で流し見て承認する
3番目が、この設計の土台です。 広告主の関与は、AIに原稿から推し量らせません。案件台帳に「依頼あり」「商品提供あり」と書いてある事実を、判定の前提として渡します。 台帳が空欄なら、判定そのものを止めます。
6番目をスクリプトに置いているのも意図してのことです。 「動画の表示が何秒以上なら認識できるか」は運用基準に数値が無く、自社で決める基準です。 AIに秒数の良し悪しを考えさせず、テロップ表の数字と社内基準を機械で比べます。
02今回想定するシステム構成
制作担当(記事・投稿文・動画の台本とテロップ表・画像のカンプ) │ ▼【トリガー】審査フォルダへの保存(案件番号付き) 連携スクリプト(Python) ├──▶ 案件台帳から広告主・依頼・対価・商品提供を引く │ └─ 関与が空欄 → 判定せず審査担当へ ├──▶ 本文/ハッシュタグ/画像/テロップ(秒数付き)に分ける ▼ Claude API ── 広告である旨の表示を探し、不明瞭な型ごとに判定 │ ① 表示が無い ② 部分的 ③ 文中の食い違い ④ 動画で短い・一部だけ │ ⑤ 認識できない文言 ⑥ 末尾だけ ⑦ 小さい・薄い・長文 ⑧ 他の情報に紛れる ▼ 連携スクリプト ── 秒数・ハッシュタグの順番を社内基準と照合、verdict を規則で決める ▼ 審査一覧(スプレッドシート) ▼ 【人】審査担当が needs_fix / needs_legal を確認 → 制作担当へ返す └──▶ 法務担当(needs_legal)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Claude API(表示の検出、不明瞭な型ごとの判定、直し案の下書き) | OpenAI API、Gemini API |
| 連携 | Python(台帳の読み出し、原稿の分解、秒数の照合、一覧への書き込み) | Google Apps Script |
| 原稿の置き場 | 既存の共有フォルダ(Google ドライブ) | SharePoint、Box |
| 審査一覧・案件台帳 | Google スプレッドシート | SharePoint リスト |
案件台帳と共有フォルダは、新しく足すものではありません。 足すのは、台帳に「広告主の関与」の列(依頼の有無、対価、商品提供、イベント招待など)を設けることと、動画の案件でテロップ表に秒数の列を必ず付けてもらうことです。
判定の土台は、Claude API の構造化出力です。 リクエストの output_config.format に type: "json_schema" とスキーマを指定すると、返答がそのスキーマに沿ったJSONになります。型ごとの判定を決まった形で受け取れるので、7番目の規則をスクリプトで書けます。 スキーマでは enum が使え、additionalProperties は false にする決まりです。一方で数値の minimum・maximum や文字数の制約は使えないため、値の範囲の確認はスクリプト側で行います。
画像のカンプも同じ呼び出しで渡せます。 API は JPEG・PNG・GIF・WebP の画像を受け付け、1枚あたり8000×8000ピクセルまで、API への直接の送信では1枚10MB(base64)までです。ただし公式は、低画質・回転・200ピクセル未満の小さな画像では誤りが出ることがあるとしています。 「広告」の文字が小さいかどうかを画像から判定させる以上、カンプは縮小せずに渡します。
03どうやって実装するのか
処理の起点を決める
審査フォルダに原稿が置かれたことを起点にします。 公開日の直前に集中するため、1日1回の定時処理にはしません。夕方にまとめて回すと、直しが翌日になり、公開日に間に合わない原稿が出ます。
フォルダは案件番号ごとに分け、ファイル名に原稿の種類を付けてもらいます(article_、post_、video_script_、telop_、image_)。種類が分からないと、ハッシュタグとして読むべき行を本文として読みます。
処理が終わった原稿は審査済みフォルダへ移します。移すのは判定が一覧に書き込めたときだけです。 審査フォルダに残っている本数が、そのまま未審査の本数になります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 原稿 | 記事本文、投稿文(ハッシュタグを含む)、動画の台本 | 審査フォルダ |
| テロップ表 | テロップの文言、表示の開始秒・終了秒、文字の大きさの指定、動画の全体の長さ | 審査フォルダ |
| 画像 | バナー、投稿画像、記事内の画像のカンプ | 審査フォルダ |
| 案件の情報 | 広告主名、媒体の種類(自社媒体・インフルエンサー・アフィリエイト・媒体社の記事広告)、依頼の有無、対価、商品提供 | 案件台帳 |
| 社内基準 | 表示に使う文言の一覧、置く位置、動画での最短の表示秒数、ハッシュタグの中での順番 | 自社で定める基準書 |
質を決めるのは、下の2つです。 案件の情報が無ければ、そもそも「広告主の表示か」の段を前提にできません。社内基準が無ければ、AIの判定に「どこまでなら分かりやすいか」の物差しがなく、担当者で厳しさが違うという今の問題を、AIがそのまま引き継ぎます。
社内基準の秒数や順番は、運用基準に書かれた数値ではありません。 運用基準は「一般消費者が認識できないほど短い時間」「大量のハッシュタグ」と書くだけで、何秒・何個とは定めていません。数値は法務担当と広告主とで決めたものを、自社の基準として置きます。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 原稿のテキスト | 審査フォルダのファイル | 表示の検出と、文中の食い違いの確認 |
| ハッシュタグの並び | 投稿文の末尾を分解したもの | 表示の位置(何個目か)と、ほかのタグとの並び |
| テロップと秒数 | テロップ表 | 動画での表示の時間と、冒頭・中間・末尾のどこにあるか |
| 画像 | カンプのファイル | 画像内の「広告」「PR」の文字と、周囲との大きさの比較 |
| 関与の事実 | 案件台帳の行(案件番号で引く) | 判定の前提。空欄なら止める |
案件台帳は案件番号で引き、広告主名では引きません。 同じ広告主の案件でも、媒体社が自主的に企画した記事と、広告主が費用を出した記事広告が並ぶことがあります。名前で引くと、関与の事実を別の案件から持ってきてしまいます。
AIへ渡す前に整形する
- 原稿の分解 … 記事は見出し・本文・キャプション・末尾の注記に、投稿文は本文とハッシュタグに分けます
- ハッシュタグの番号付け … 先頭から何個目か、全部で何個かを付けます
- テロップの時間の整理 … 開始秒・終了秒から表示の秒数を出し、動画の長さに対して冒頭・中間・末尾のどこかを付けます
- 画像の確認 … JPEG・PNG・GIF・WebP であること、1枚8000×8000ピクセル・10MB以内であることを確かめます。PDFのカンプは画像に書き出します
- 小さすぎる画像の検知 … 長い辺が200ピクセルに満たない画像は判定に回さず、元のカンプを求めます
- 関与の事実の確認 … 案件台帳の「依頼の有無」「対価」「商品提供」が空欄なら、ここで止めます
- 既判定の検知 … 同じ案件番号・同じファイルの直しの版なら、前回の判定と一緒に渡します
3番目を軽く見ないでください。 運用基準は、長い動画で冒頭以外(中間・末尾)にだけ表示する場合も、認識しにくい例に挙げています。秒数と位置は、テロップ表から数字で出せるものなので、AIに読ませる前に出しておきます。
7番目は、直しの往復を短くするためです。 前回どこを指摘したかが分かれば、AIは同じ箇所が直ったかを先に見られます。
AIに処理させる
させるのは、原稿の中から広告である旨の表示を探し、運用基準の「不明瞭な方法」の型ごとに当たるかを判定して、根拠の箇所と直し案を書き出すことだけです。
| 型 | 判定の仕方 | 判断できないときの扱い |
|---|---|---|
| 表示が無い | 「広告」「宣伝」「プロモーション」「PR」や、提供を受けた旨の文が見当たらない | 画像が読めなければ unknown |
| 部分的な表示 | 複数の投稿や記事の一部にだけ表示がある | 原稿の一部しか届いていなければ unknown |
| 文中の食い違い | 表示がある一方で「第三者としての感想」「自分で買った」などの文がある | 文意が取れなければ unknown |
| 動画で短い・一部だけ | テロップ表の秒数と位置(数値の判定はスクリプト) | テロップ表が無ければ unknown |
| 認識できない文言 | 社内基準の一覧に無い略語・造語での表示 | 一覧に無い語は unknown |
| 末尾だけ | 表示が本文の最後や、追記の位置にしか無い | ― |
| 小さい・薄い・長文 | 周囲の文字と比べて小さい、色が薄い、長文の中に入っている | 画像が粗ければ unknown |
| 他の情報に紛れる | 大量のハッシュタグの中に埋もれている(数はスクリプトが数える) | ― |
右端の列が、この構成の安全装置です。 判断がつかないものを「問題なし」に倒さず、unknown として人に回します。
| させないこと | 理由 |
|---|---|
| 広告主の関与があるかの判断 | 契約と依頼の事実で決まる。案件台帳から渡す |
| ステルスマーケティングに当たるかの結論 | 最終的な判断は法務担当と広告主が行う |
| 表示の秒数やタグの数の良し悪しの判断 | 社内基準の数値でスクリプトが比べる |
| 表現の誇大さの評価 | 別の点検(UC-0047)の範囲 |
| 投稿者の文体そのものの書き換え | 直し案は表示の追加と位置の変更に限る |
1行目がいちばん起きやすい失敗です。 投稿文が自然な口調だと、AIは「自主的な感想に見える」と書きたがります。見え方の話と関与の事実の話を混ぜると、依頼した案件が通ります。
指示内容を固定する
あなたは広告会社の審査担当として、公開前の原稿を点検します。
この原稿は、広告主が表示内容の決定に関与した案件です(案件台帳の記録による)。
関与があるかどうかは判断しないでください。前提として扱ってください。
【点検すること】
原稿の中で、広告主の表示であることが一般消費者に分かるかを、次の8つの型ごとに判定してください。
1. no_disclosure ........ 広告である旨の表示が見当たらない
2. partial .............. 一部の箇所・一部の投稿にしか表示がない
3. contradiction ........ 表示がある一方で、第三者の感想・自分で購入した等の文がある
4. video_timing ......... 動画で、表示が短い/冒頭以外にしか無い(秒数は【テロップの集計】を使う)
5. unclear_wording ...... 【表示に使う文言の一覧】に無い語で表示している
6. end_only ............. 表示が末尾や追記の位置にしか無い
7. low_visibility ....... 周囲より小さい・薄い色・長文の中に入っている
8. buried ............... ハッシュタグなど他の情報に紛れている(個数は【タグの集計】を使う)
【result の選び方】
- hit ....... その型に当たる
- not_hit ... その型に当たらない
- unknown ... 原稿・画像・テロップ表が足りず判断できない
迷ったときに not_hit を選ばないでください。
【厳守事項】
- 原稿に書かれていない事実を補わないでください。画像が読めないときは unknown です。
- 「#PR」などの文字があることを、分かりやすいことの根拠にしないでください。
位置・大きさ・周囲との関係で判定してください。
- 秒数や個数を自分で数え直さないでください。集計の値をそのまま使ってください。
- ステルスマーケティングに当たるか、違反かどうかは書かないでください。
- evidence には、根拠にした原稿の文字列をそのまま写し、location に場所を書いてください。
- fix には、表示の追加・位置の変更・食い違う文の削除だけを書いてください。
投稿者の言い回しや商品の説明は書き換えないでください。
- 表示に使う語は【表示に使う文言の一覧】から選んでください。
【媒体の種類】{media_type}
【表示に使う文言の一覧】{approved_terms}
【タグの集計】{hashtag_stats}
【テロップの集計】{telop_stats}
【前回の指摘】{previous_findings}
【原稿】{manuscript}
冒頭で「関与は前提」と書いているのが、いちばん効く1行です。 これが無いと、自然な口調の投稿文に「自主的な感想と考えられる」と書き、判定の前提ごと崩します。
「文字があることを根拠にしない」を明記しないと、型8は当たりません。 タグの20個目に「#PR」があれば、何も言わなければ「表示あり」で終わります。
出力形式を固定する
次の形のJSONで受け取ります。
{
"case_id": "",
"file": "",
"media_type": "article | influencer_post | video | affiliate",
"disclosures_found": [
{ "text": "", "location": "", "kind": "word | sentence | telop | image" }
],
"checks": [
{ "type": "no_disclosure", "result": "hit | not_hit | unknown",
"evidence": "", "location": "", "fix": "" }
],
"verdict": "clear | needs_fix | needs_legal",
"notes_for_reviewer": ""
}
checks には8つの型を1つずつ並べます。verdict はAIに出させず、スクリプトが checks から規則で埋めます。
1つ目の理由は、判定と結論を別の層に置けることです。 checks はAIが埋め、verdict はスクリプトが決めます。社内基準が変わっても、直すのは規則だけです。
| 条件 | verdict |
|---|---|
8つの型がすべて not_hit | clear |
hit が1つ以上、unknown なし | needs_fix |
unknown が1つ以上 | needs_legal(審査担当が先に見て、資料が足りないだけなら差し戻す) |
no_disclosure が hit で、媒体がインフルエンサー・アフィリエイト | needs_legal |
2つ目は、構造化出力で形が保証されることです。 result を enum にしておけば、「おおむね問題なし」のような中間の言葉が返りません。一覧の並べ替えと件数の集計が、そのままできます。
3つ目は、evidence と location で確認が速くなることです。 審査担当は原稿を頭から読み直さず、指摘の箇所だけを開きます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 審査フォルダ | 連携スクリプトの監視 | 原稿の保存を検知する |
| 案件台帳 | スプレッドシートの読み取り | 関与の事実と媒体の種類を引く |
| Claude API | API呼び出し(構造化出力) | 8つの型の判定と直し案 |
| 審査一覧 | スプレッドシートへの追記 | 判定・根拠・直し案・verdict |
| 社内チャット | 通知 | needs_fix と needs_legal を審査担当へ知らせる |
原稿のファイルは書き換えません。 直し案は審査一覧に書くだけで、原稿に反映するのは制作担当です。 自動で書き換えると、投稿者の言葉に代理店が手を入れたことになり、別の問題を生みます。
案件台帳も読み取りだけです。 関与の列が空欄でも、スクリプトは埋めません。埋めるのは営業担当で、契約の内容を確かめてからです。
人が確認する
人が開くのは needs_fix と needs_legal です。 clear は一覧で媒体と案件名を流し見て承認します。全件を読み直す設計にすると、第10章の20.0時間には収まりません。
needs_legalを先に見る … 多くは、テロップ表や画像が足りないだけです。資料不足なら制作担当に差し戻し、本当に迷うものだけを法務担当へ回しますneeds_fixの根拠を確かめる …evidenceとlocationを開き、指摘が原稿どおりかを確かめます- 直し案を整える … 投稿者に送る文面は人が整えます。言い回しは投稿者に任せ、表示の位置と文言だけを指定します
- 判定を覆したら記録する … どの型を、どちらに変えたかを残します
clear の流し見も省かないでください。 毎週数件を抜き出して全文を読み、AIが not_hit にした型が本当に当たらないかを確かめます。 ここで見つかった取りこぼしが、指示の直しの材料になります。
目標は、240件をならして1件5分です。 直しが要るものが3割前後という想定で、それより多い月は、社内基準が投稿者に伝わっていないか、テロップ表が付いていない案件が増えています。
例外に対処する
| 起きること | 対応 |
|---|---|
| 案件台帳の関与の列が空欄 | 判定に進まない。営業担当に契約内容の確認を依頼 |
| 動画の台本だけでテロップ表が無い | video_timing を unknown にして、テロップ表を求める |
| 画像が200ピクセル未満・粗い | 判定に回さず、元のカンプを求める |
| 画像が8000×8000ピクセル・10MBを超える | 分割するか圧縮して再投入。文字が読める画質は残す |
| 媒体社が自主的に企画した記事だと申告された | 運用基準は通常は事業者の表示にならないとする一方、正常な商慣習を超える謝礼などがあれば別。法務担当へ |
| 広告主自身の公式アカウントの投稿 | 運用基準は事業者の表示であることが明らかな例に挙げる。判定を省き、記録だけ残す |
| 原稿が外国語 | 判定は行うが、unclear_wording は外国語の表示の一覧で別に見る |
| API が応答しない・形が崩れる | 審査フォルダに残し、再実行。審査済みに移すのは書き込めたときだけ |
上の3行が大半を占めます。 どれもAIの問題ではなく、案件の情報と制作資料のそろい方の問題です。 判定の精度を上げるより、資料の出し方を決めるほうが効きます。
5行目と6行目は、運用基準そのものが分けている場合です。 対象から外れる表示を機械的に clear にすると、例外の条件(謝礼の多寡など)を見ないまま通すことになるので、省く場合も記録を残し、迷うものは人に回します。
記録を残す
- 原稿の各版と、届いた日時・制作担当・投稿者
- 判定に渡した入力(分解した本文、タグの集計、テロップの集計、画像)
- Claude API が返したJSONの全文と、スクリプトが決めた
verdict - そのとき使った社内基準の版と、案件台帳の関与の列の内容
- 人が判定を覆した記録 … どの型を、どちらに変えたか、理由
- 制作担当へ返した直し案と、直った版との対応
- 公開された最終版と、公開日
4つ目を残すのは、社内基準も台帳も後から変わるためです。 基準の秒数を変えたあとに「なぜこの動画を通したのか」と聞かれたとき、当時の基準が残っていないと答えられません。
最後の2行は、広告主に説明するための記録です。 運用基準は広告主を規制の対象としているので、広告主から審査の経緯を求められたときに、どの版に何を指摘し、どう直ったかを出せるようにしておきます。
04実装レベルの3段階
最小構成では本数がさばけません。 1本ずつ貼るので、240件には使えません。判定がそろうかを確かめる段階です。 半自動化で、1件15分が8分程度になります。 判定は自動になりますが、案件台帳の確認と、直し案の整理が手作業で残ります。本格構成で5分になり、この段階が本記事の想定です。 差が大きいのは、関与の確認と、needs_fix の振り分けが1件ずつの手作業だからです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、テロップ表が付かない制作チームと、社内基準に無い文言を使いがちな投稿者が分かります。そこを直してから本格構成に進むほうが、unknown が減ります。
05工数削減シミュレーション
導入後 240件 × 5分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 広告主の依頼で記事広告、タイアップ記事、インフルエンサーの投稿、アフィリエイトの原稿を毎月まとまった本数制作する広告会社・PR会社。表示の点検が担当者の経験に頼っていて、人によって指摘の厳しさが違う場合。動画の台本やテロップの表示秒数を制作側で管理できる場合。
- 原稿が月に数本で、法務担当が全件を読める場合。広告主自身の公式サイトや公式アカウントの投稿だけを扱い、第三者の表示に見える原稿が無い場合。なお、ある表示がステルスマーケティングに当たるかどうかの最終的な判断と、広告主の関与の有無の認定は、この構成では代替できません。
07最小構成で試す方法
- 先月審査した原稿から30本を選ぶ(うち数本は、差し戻したものと、迷って法務に回したものを入れる)
- その30本について、当時の指摘と直し案を審査一覧から取り出す
- 社内基準を1枚にまとめる(表示に使う文言、置く位置、動画での最短の秒数、タグの中での順番)
- 手元のAIサービスの画面に、社内基準と原稿を1本ずつ貼り付ける
- 「この原稿は広告主の依頼による。関与は判断しない。8つの型ごとに当たるか、当たらないか、判断できないかを答え、根拠の文字列を写す」と指示する
- 出てきた判定を、当時の指摘と突き合わせる
30本は必ずやってください。 スクリプトを組む前に、「型に分ければ判定がそろうのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の指摘と同じ型が出た | 連携スクリプトとAPIの組み込みに進む |
| 関与について意見を書いた | 指示の書き方で直る。構成は有効 |
| 動画やタグの判定がばらつく | 秒数と個数を先に数えて渡す設計が必要。 AIの問題ではない |
3行目が出るのはふつうです。 画面に貼るだけでは、テロップの秒数をAIに数えさせることになります。集計をスクリプトに移すと、ここは安定します。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 自然な口調の投稿を「自主的な感想」と書く | 関与は案件台帳の事実として渡し、判断させない |
「#PR」があるだけで not_hit になる | 位置・大きさ・周囲との関係で判定させ、文字の存在を根拠にさせない |
| 動画の秒数の判定がばらつく | テロップ表から秒数をスクリプトで出し、AIに数えさせない |
| 冒頭の表示と文中の「感想です」の食い違いを見落とす | 全文を渡し、型3を独立に判定させる |
| 画像の小さな文字を読み違える | 200ピクセル未満は判定に回さない。カンプは元の大きさで渡す |
| 直し案が投稿者の文を書き換える | 表示の追加と位置の変更だけに限ると指示する |
| 社内基準に無い略語で表示している | 文言の一覧を渡し、一覧に無い語は unknown |
| 媒体社の自主企画を一律に対象外にする | 謝礼の多寡などの例外があるため、法務担当へ回す |
| 案件台帳の関与の列が埋まらない | 判定を止める。営業担当の入力を審査の前提にする |
| 判定の基準を審査担当だけで決める | 法務担当と決め、広告主にも共有する |
上の2行が、この構成の失敗のほとんどです。 どちらも「それらしく見える」ことを根拠にしてしまう失敗です。関与は事実で、分かりやすさは位置と大きさで判定する、という線を指示に書いてあるかどうかで決まります。
下の2行も早く効いてきます。 台帳が埋まらないと判定が止まり、基準が審査担当だけのものだと、広告主に説明できない指摘が出ます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 公開前の広告原稿、広告主名と案件の内容、対価や商品提供の条件、インフルエンサーの名前とアカウントです。
- 公開前の原稿は機密として扱う … 新商品の発売前の情報が含まれます。API の利用規約とデータの扱いを、広告主との守秘義務の範囲と照らしてから使います
- 対価の金額をAIに渡さない … 判定に要るのは「対価があるか」という事実だけです。金額や契約条件は台帳に残し、プロンプトには入れません
- この構成はステルスマーケティングに当たるかの判断を代替しません … 規制の対象は広告主です。最終的な判断は広告主と法務担当が行い、この構成が出すのは表示の見え方の判定だけです
- インフルエンサーの個人情報を必要以上に渡さない … 判定に要るのは原稿と媒体の種類です。本名や連絡先は渡しません
- 直し案を自動で送らない … 投稿者とのやり取りは関係に直接ひびきます。送るのは審査担当が整えた文面だけです
- 社内基準の変更を記録する … 基準を変えると過去の判定の意味が変わります。版を付けて残します
誤りが起きた場合のリスクは、不明瞭な表示を通してしまうことと、問題のない原稿を差し戻して公開を遅らせることの2つです。 前者は unknown を not_hit に倒すと起き、後者は社内基準が厳しすぎると起きます。前者は設計で防ぎ、後者は法務担当と基準を見直して調整します。
10まず何から始めるか
1週目:社内基準を1枚にする
表示に使う文言(「広告」「PR」「プロモーション」「〇〇社から提供を受けて投稿しています」など)、置く位置、動画での最短の表示秒数、ハッシュタグの中での順番を、法務担当と決めて1枚にします。 運用基準に数値は無いので、ここは自社の判断です。
2週目:30本で試す
先月の原稿から30本を選び、手元のAIサービスで8つの型を判定させます。当時の指摘と突き合わせ、関与について意見を書いていないか、「#PR」の存在だけで通していないかを最優先で見ます。
3週目:案件台帳と制作資料の出し方を決める
案件台帳に関与の列を足し、営業担当が埋める運用にします。動画の案件では、テロップ表に秒数の列を必ず付けてもらいます。
4週目:集計と判定をつなぐ
スクリプトで原稿を分解し、タグとテロップを集計して Claude API に渡し、結果を審査一覧に書き出すところまで作ります。この時点では verdict を出さず、checks の一覧だけを見ます。
2か月目: 審査フォルダの監視と案件台帳の確認を足し、verdict を出します。needs_fix と needs_legal の件数を毎週数えます。3か月目以降: 直し案の下書きを足し、1件15分が何分になったかを実測します。指摘の型ごとの件数を広告主と共有し、表示の入れ方を制作の最初から決められるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 令和5年10月1日からステルスマーケティングが景品表示法違反となること。規制の対象が商品・サービスを供給する事業者(広告主)で、依頼を受けたインフルエンサー等の第三者は対象とならないこと。広告には企業がインフルエンサー等に依頼・指示するものも含まれること | 消費者庁: ステルスマーケティング | 2026-10-07 |
| 告示が令和5年内閣府告示第19号であること。事業者の表示とされるのは表示内容の決定に関与した場合で、対価には金銭・物品のほかイベント招待等も含まれること。媒体事業者の自主的な企画は通常は事業者の表示にならないが、正常な商慣習を超える謝礼等がある場合は考慮要素となること。不明瞭な方法の例(部分的な表示、冒頭の「広告」と文中の「第三者としての感想」、動画で短時間・冒頭以外のみ、認識できない文言、末尾、小さい文字、長文・薄い色、大量のハッシュタグへの埋没)。明瞭な例(「広告」「宣伝」「プロモーション」「PR」、提供を受けた旨の文章)と、これらの文言でも明瞭と認められない場合があること。事業者自身のSNSアカウントの表示は対象外とされること | 消費者庁: 「一般消費者が事業者の表示であることを判別することが困難である表示」の運用基準(令和5年3月28日 消費者庁長官決定) | 2026-10-07 |
構造化出力が output_config.format の type: "json_schema" で指定できること。enum が使え、additionalProperties は false に限られ、数値の minimum・maximum や文字数の制約は使えないこと | Claude API Docs: Structured outputs | 2026-10-07 |
| 画像の形式が JPEG・PNG・GIF・WebP であること。1枚の最大が8000×8000ピクセル、API への直接送信で10MB(base64)であること。低画質・回転・200ピクセル未満の小さな画像では誤りが出ることがあること。画像の大きさに応じてトークンを消費すること | Claude API Docs: Vision | 2026-10-07 |
ある表示がステルスマーケティングに当たるかの判断は、広告主と法務担当で行ってください。 本記事は消費者庁のページと運用基準で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0742)についてのご相談はこちらから。
