インフルエンサーのキャンペーン応募フォームの内容とアカウントの情報から、募集条件とNGジャンルに合うかを判定して、選考リストを作る
インフルエンサーのキャンペーン応募フォームの回答と、応募者が出したインサイトの画面の画像を、募集条件とNGジャンルに照らして条件ごとに判定し、選考リストの1行にします。担当者はそのリストから起用の候補を選びます。
- 生成AI
- ChatGPT/Claude
- 連携・自動化
- Make/n8n/Power Automate/Zapier
- 対象業界
- EC/小売/広告/飲食
- 対象部門
- マーケティング
- 対象業務
- 内容確認・チェック/分類・仕分け
- 主な課題
- 人手が足りない/判断に時間がかかる/確認ミスが多い
- AIで行う処理
- 判定
- 主な効果
- 判断支援/品質標準化/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 担当者がフォームの回答のスプレッドシートを開き、そのキャンペーンの応募を並べる
- 応募ごとに、フォロワー数と地域が募集条件に合うかを見る
- インサイトの画面の画像をドライブで開き、フォロワーの年齢層・性別の割合を読む
- 主なジャンルと自己紹介を読み、NGジャンルに触れていないかを見る
- 過去のPRの企業名を、広告主の競合ブランドの一覧と照らす
- 合いそうな応募者のアカウントを開き、投稿の雰囲気と広告の表示のしかたを見る
- 選考リストに、合う・合わないと理由を書き、広告主への提案の候補を選ぶ
- 自動応募フォームに回答が届くたびに、ワークフローが動く
- 自動そのキャンペーンの募集条件・NGジャンル・競合ブランドの一覧を引く
- 自動インサイトの画面の画像をドライブから取り出す
- 自動AIが条件ごとに、合う・合わない・確かめられないを判定し、根拠を書く
- 自動条件ごとの判定から、候補・要確認・対象外の区分を規則で決める
- 自動選考リストに1件1行で書く
- 人担当者が「候補」と「要確認」の行を開き、アカウントで投稿と数字を確かめる
- 人「要確認」のうち画面の出し直しで済むものは、応募者に連絡する
- 人起用の候補を選び、広告主に提案する
各工程の詳しい説明を読む
- 担当者がフォームの回答のスプレッドシートを開き、そのキャンペーンの応募を並べる
- 応募ごとに、フォロワー数と地域が募集条件に合うかを見る
- インサイトの画面の画像をドライブで開き、フォロワーの年齢層・性別の割合を読む
- 主なジャンルと自己紹介を読み、NGジャンルに触れていないかを見る
- 過去のPRの企業名を、広告主の競合ブランドの一覧と照らす
- 合いそうな応募者のアカウントを開き、投稿の雰囲気と広告の表示のしかたを見る
- 選考リストに、合う・合わないと理由を書き、広告主への提案の候補を選ぶ
(a)応募ごとの確認が終わらない。 2番から5番は判断というより照らし合わせで、1件あたりは数分です。それが1つのキャンペーンで100件来ると、締め切りから提案までの数日がそれで埋まります。
(b)見る条件が担当者でずれる。 フォロワーの層の条件を厳しく見る担当者と、ゆるく見る担当者がいます。同じ応募者が、キャンペーンによって通ったり落ちたりします。 広告主から「なぜこの人が入っていないのか」と聞かれたとき、理由を説明できません。
(c)競合ブランドのPRを見落とす。 過去のPRの企業名はブランド名で書かれることも、会社名で書かれることもあります。競合ブランドの一覧と表記が違うと、照らしても当たりません。 起用が決まってから広告主に指摘されることがあります。
(d)画面が読めないものの扱いが決まっていない。 インサイトの画面が粗くて割合が読めない、年齢層の画面が出されていない、という応募は、担当者によって落とされたり、問い合わせたりします。
- 【自動】 応募フォームに回答が届くたびに、ワークフローが動く
- 【自動】 そのキャンペーンの募集条件・NGジャンル・競合ブランドの一覧を引く
- 【自動】 インサイトの画面の画像をドライブから取り出す
- 【自動】 AIが条件ごとに、合う・合わない・確かめられないを判定し、根拠を書く
- 【自動】 条件ごとの判定から、候補・要確認・対象外の区分を規則で決める
- 【自動】 選考リストに1件1行で書く
- 【人】 担当者が「候補」と「要確認」の行を開き、アカウントで投稿と数字を確かめる
- 【人】 「要確認」のうち画面の出し直しで済むものは、応募者に連絡する
- 【人】 起用の候補を選び、広告主に提案する
7番目が、この設計の分かれ目です。 担当者がアカウントを開くのは「候補」と「要確認」だけで、「対象外」は理由の列を流し見るだけにします。 全件のアカウントを開く設計にすると、時間はほとんど減りません。
5番目を規則で決めているのも、意図してのことです。 条件ごとの判定はAIにさせますが、どの条件が外れたら対象外にするかは、キャンペーンごとに担当者が決めます。 「フォロワー数が少し足りなくても、層が合っていれば候補に残す」といった決め方を、規則の側で変えられます。
02今回想定するシステム構成
応募フォーム(Google フォーム:アカウント・数字・ジャンル・過去のPR・インサイトの画像) ▼【トリガー】Make の Watch Responses Make のシナリオ ├──▶ Google Sheets の Search Rows:キャンペーンの条件表を引く │ 募集条件/NGジャンル/競合ブランド(社名とブランド名の対応) ├──▶ Google Drive の Download a File:インサイトの画面の画像 ▼ Anthropic Claude(Make an API Call、画像+テキスト、構造化出力) │ 条件ごとに meets / not_meets / unverifiable と根拠 ▼ Make ── 規則で区分を決める(候補/要確認/対象外) ▼ Google Sheets の Add a Row:選考リスト ▼ 【担当者】候補・要確認だけアカウントを確かめる → 広告主へ提案
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | Make | Zapier、n8n、Power Automate |
| 生成AI | Claude API(Make の Anthropic Claude アプリ。画像の入力と構造化出力) | OpenAI API |
| 連携 | Google スプレッドシート(条件表・選考リスト) | Microsoft 365 のリスト |
| 受付 | Google フォーム(ファイルのアップロードの質問) | 自社サイトのフォーム |
新しく足すのは、Make のシナリオ1本と、キャンペーンの条件表だけです。 応募フォームと選考リストは今のものを使い、募集条件・NGジャンル・競合ブランドを、文章ではなく表の形で持つのが最初の準備作業です。
生成AIの代替候補に Gemini API を挙げていないのは、応募者に18歳未満が含まれうるためです。 Gemini API の利用規約は、18歳未満が利用する、または利用しうるサービスでの利用を認めていません。応募の段階では年齢を確かめきれないので、外しています。
入口は Make の Google Forms の Watch Responses です。 Google Forms のアプリには、回答を見張る Watch Responses のほか、回答を一覧にする List Responses、1件を取る Get a Response があります。応募が届くたびに1件ずつ処理します。
インサイトの画面は、フォームのファイルのアップロードの質問で受けます。 Google のヘルプでは、この質問に回答するには回答者が Google アカウントにログインする必要があるとされ、ファイルはフォームのオーナーのドライブの新しいフォルダに保存されます。フォームが共有ドライブにあると、この質問形式は使えません。
画像は Google Drive の Download a File で取り出します。 ファイルのIDを指定してダウンロードするモジュールで、取り出した画像を Claude に画像として渡します。
03どうやって実装するのか
処理の起点を決める
応募フォームへの回答が届くたびに、Watch Responses で1件ずつ処理します。 締め切りの後にまとめて処理する設計にはしません。締め切り直後に100件をまとめて流すと、判定の結果を見始めるのが翌日になります。 届くたびに処理しておけば、締め切りの時点で選考リストができています。
フォームは1つにし、最初の質問でキャンペーンを選んでもらいます。 キャンペーンごとにフォームを分けると、Make のシナリオもキャンペーンの数だけ要ります。
| 状態 | 扱い |
|---|---|
| 募集中のキャンペーンへの応募 | 判定して選考リストへ |
| 締め切りを過ぎたキャンペーンへの応募 | 判定せず「締め切り後」として記録 |
| 同じアカウントから同じキャンペーンへの2回目の応募 | 前の行に「再応募」と付け、新しい内容で判定し直す |
締め切りを過ぎた応募を判定しないのは、条件表がその後に書き換わることがあるためです。 次のキャンペーンのために条件を変えた後で古い応募を判定すると、別のキャンペーンの条件で判定した結果が残ります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 応募の回答 | キャンペーン、アカウントのURL、媒体、フォロワー数、主なジャンル、自己紹介、地域、18歳以上か、過去6か月のPRの企業名、広告の表示への同意 | Google フォーム(Watch Responses) |
| インサイトの画面 | フォロワーの年齢層・性別・地域の画面の画像(1〜3枚) | Google ドライブ(Download a File) |
| 募集条件 | フォロワー数の範囲、フォロワーの層、地域、ジャンル、年齢の条件 | キャンペーンの条件表(Search Rows) |
| NGジャンル | 広告主ごとのNGのジャンルと、その説明 | 同上 |
| 競合ブランドの一覧 | 競合の会社名と、その会社のブランド名の対応 | 同上 |
質を決めるのは、競合ブランドの一覧です。 会社名だけの一覧だと、応募者が「○○(ブランド名)のPR」と書いたときに当たりません。会社名とブランド名の対応を表で持ち、両方をAIに渡します。
応募者の氏名と連絡先は、AIに渡しません。 判定に使うのはアカウントの情報と数字だけで、連絡先は選考リストの側で応募のIDと結び付けておきます。
データの取得方法を決める
キャンペーンの条件表は、Search Rows でキャンペーンのIDを絞って1行を引きます。 条件表は1キャンペーン1行で、列に条件を並べます。
| 列 | 例 |
|---|---|
| フォロワー数の範囲 | 10,000〜100,000 |
| フォロワーの層 | 女性が60%以上、25〜34歳が最も多い |
| 地域 | 関東在住 |
| ジャンル | 美容、スキンケア |
| 年齢の条件 | 20歳以上(酒類の広告主のとき) |
| NGジャンル | ギャンブル、成人向け、政治的な発信、医療行為の体験談 |
| 競合ブランド | (会社名:ブランド名の対応表のシート名) |
| 対象外にする条件 | 競合ブランドのPR、NGジャンル、年齢の条件 |
最後の列が、第5章の5番目の規則です。 どの条件が外れたら対象外にするかを、キャンペーンごとにこの列で決めます。 書かれていない条件が外れた応募は、対象外ではなく「要確認」になります。
インサイトの画面は、フォームの回答に入っているファイルのIDで Download a File を呼びます。 画像が複数あれば、1枚ずつ取り出して全部を1回の依頼に入れます。
AIへ渡す前に整形する
- ファイルの形式の確認 … Claude が受け付けるのは JPEG、PNG、GIF、WebP です。それ以外(HEIC など)はフォームの側で受け付けないように設定します
- 画像の大きさの確認 … 1枚あたりの上限は、Claude API に直接渡す場合で base64 にして10MB、縦横は8000×8000ピクセルまでです
- フォロワー数の表記をそろえる … 「1.2万」「12k」「12,000」を数字にそろえます
- 競合ブランドの一覧の展開 … 条件表から、そのキャンペーンの競合の会社名とブランド名を全部引き出します
- 重複の確認 … 同じアカウントのURLで、同じキャンペーンの行が選考リストにあれば「再応募」にします
3番目は、AIに任せずワークフローの側で行います。 数字の比較は規則で行うほうが確実で、AIには「画面の数字と申告の数字が食い違っていないか」だけを見させます。
2番目の上限は、画面の写真を高い解像度のまま出してくる応募者がいるためです。 大きすぎる画像は縮小されて処理されるので、縮小で文字がつぶれないかを最初に数件で確かめます。
AIに処理させる
させるのは、条件ごとに、合う・合わない・確かめられないを判定し、根拠を書くことだけです。
| 見る条件 | 判定の仕方 | 確かめられないときの扱い |
|---|---|---|
| フォロワー数 | 申告の数と、画面に写っている数が食い違っていないか | 画面に数が写っていなければ unverifiable |
| フォロワーの層 | 画面の年齢層・性別の割合が条件に合うか | 年齢層の画面が無い、割合が読めなければ unverifiable |
| 地域 | 申告の地域と、画面の地域の割合 | 地域の画面が無ければ申告だけで判定し、その旨を書く |
| ジャンル | 申告のジャンルと自己紹介が条件のジャンルに合うか | 自己紹介が空なら申告だけで判定 |
| NGジャンル | 自己紹介・ジャンルにNGジャンルに当たる記載があるか | — |
| 競合ブランド | 過去のPRの企業名が、競合の会社名・ブランド名に当たるか | 表記が近いが一致しないものは unverifiable |
| 年齢の条件 | 18歳以上か(酒類のときは20歳以上か)の申告 | 申告が無ければ unverifiable |
| 広告の表示への同意 | フォームの同意の項目 | — |
右端の列が、この構成でいちばん大事な区別です。 not_meets は条件から外れていると読めたもの、unverifiable は材料が足りなくて判定できないものです。前者は対象外の候補、後者は応募者に出し直してもらえば候補になりうる人です。
最後の行は、ステルスマーケティングの規制に関わります。 消費者庁のページでは、2023年10月1日からステルスマーケティングは景品表示法違反となり、広告には企業がインフルエンサー等の第三者に依頼・指示するものも含まれるとされています。規制の対象は広告主である事業者で、だからこそ、広告であることを表示することへの同意を応募の段階で確かめます。
| させないこと | 理由 |
|---|---|
| 起用するかの結論 | 投稿の雰囲気や広告主との相性は担当者が見る |
| 画像が本物かの判定 | 公式ドキュメントで、画像がAIで生成されたかを判断できないとされている |
| 写っている人物の特定 | 画像の人物を名指しすることはできないとされている |
| 数字の補完 | 画面が読めないときに、申告の数で埋めない |
| 外見や容姿による評価 | 募集条件に無い。評価の材料にしない |
2行目が、この構成の前提です。 Claude の公式ドキュメントの制限事項に、画像がAIで生成されたものかを判断できず、尋ねられても誤ることがあるとあります。インサイトの画面が加工されていても、AIは写っている数字をそのまま読みます。だから候補に残った人は、担当者がアカウントで確かめます。
指示内容を固定する
あなたは広告会社のキャスティングの補助です。
インフルエンサーのキャンペーンへの応募が、募集条件に合うかを
条件ごとに判定します。起用するかどうかは判断しません。
【入力】
- 応募の回答:{application}
- インサイトの画面(画像1〜3):添付のとおり
- 募集条件:{conditions}
- NGジャンルとその説明:{ng_genres}
- 競合の会社名とブランド名の一覧:{competitors}
【条件ごとの status の選び方】
- meets ......... 材料から条件に合うと読める
- not_meets ..... 材料から条件に合わないと読める
- unverifiable .. 材料が無い、画像が読めない、表記が近いが一致しないなど、判定できない
迷ったときに meets も not_meets も選ばず、unverifiable にしてください。
【厳守事項】
- 画像に写っている数字や割合は、読めたとおりに写してください。
読めない数字を申告の数で埋めないでください。
- 申告の数と画像の数が食い違うときは、両方を evidence に書いてください。
- 画像が加工されているか、本物かを判断しないでください。
- 画像に写っている人物が誰かを書かないでください。
- 外見や容姿について書かないでください。
- 競合ブランドは、一覧の会社名かブランド名と一致するときだけ not_meets にしてください。
似ているだけのときは unverifiable にし、似ている名前を evidence に書いてください。
- 起用すべきか、候補に残すべきかを書かないでください。
- evidence には、判定の根拠にした回答の文言か、画像から読んだ値を書いてください。
「迷ったら unverifiable」を明記しないと、読めない画面を not_meets にします。 年齢層の画面が無いと「条件の層であることが確かめられない、よって合わない」と書き、出し直せば候補になる人を落とします。
競合ブランドを「一致するときだけ」にしているのは、逆の誤りを防ぐためです。 似た名前のブランドを競合と判定すると、関係の無い会社のPRをした人まで対象外になります。 似ているものは担当者に回します。
出力形式を固定する
Make an API Call で Messages API を呼び、画像のブロックとテキストを1回の依頼に入れ、構造化出力で次の形のJSONを受け取ります。 画像は base64 にして image のブロックで渡します。Claude API の構造化出力は、output_config.format に type: "json_schema" でスキーマを渡す形です。
{
"application_id": "",
"campaign_id": "",
"checks": [
{ "condition": "follower_count",
"status": "meets | not_meets | unverifiable",
"declared": "", "observed": "", "evidence": "" }
],
"image_readable": true,
"notes_for_staff": ""
}
checks には条件の数だけ要素を並べます。condition は follower_count / audience / region / genre / ng_genre / competitor / age / disclosure_consent です。
1つ目の理由は、checks と区分を別の層に置けることです。 checks はAIが埋め、候補・要確認・対象外の区分はワークフローが条件表の「対象外にする条件」の列で決めます。キャンペーンごとに対象外の決め方が変わっても、直すのは条件表だけです。
| 区分 | 決め方 |
|---|---|
| 対象外 | 「対象外にする条件」の列にある条件が not_meets |
| 要確認 | 対象外ではなく、unverifiable が1つでもある、または列に無い条件が not_meets |
| 候補 | すべてが meets |
2つ目は、declared と observed を並べられることです。 申告のフォロワー数と画面に写っている数が並んでいれば、担当者は食い違いのある行だけを開けます。
注意が1つあります。 構造化出力でも、enum の値が大文字小文字だけ違って返ることがあるとされているので、区分を決める比較では大文字小文字を区別しません。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 応募フォーム | Google Forms の Watch Responses | 応募を1件ずつ受け取る |
| ドライブ | Google Drive の Download a File | インサイトの画面の画像 |
| 条件表 | Google Sheets の Search Rows | キャンペーンの条件・NGジャンル・競合ブランド |
| Claude API | Anthropic Claude の Make an API Call(画像+構造化出力) | 条件ごとの判定 |
| 選考リスト | Google Sheets の Add a Row | 1件1行で判定と区分を書く |
応募者への連絡は、この構成からは送りません。 対象外の連絡も、画面の出し直しの依頼も、担当者が選考リストを見てから送ります。判定が誤っていた1件の不採用の連絡は、取り消しが効きません。
Google Forms のアプリには、注意書きがあります。 Make のページでは、Google の OAuth のプロジェクトがテストの状態だと毎週つなぎ直しが要るとされています。自社の Google Cloud のプロジェクトでつなぐときは、公開の状態にしておかないと、ある週に応募が止まります。
人が確認する
担当者が開くのは「候補」と「要確認」の行です。 「対象外」は理由の列を流し見て、明らかな誤りが無いかだけを見ます。
- 「要確認」を先に見る …
unverifiableの理由を読み、画面の出し直しで済むものは応募者に連絡します - 「候補」のアカウントを開く … 画面に写っていた数字が、アカウントの表示と大きく違わないかを確かめます。画像は本物かをAIが見ていないので、ここは省けません
- 投稿の雰囲気と広告の表示のしかたを見る … 過去のPRの投稿に、広告であることが分かる表示があるかを見ます
- 起用の候補を選び、広告主に提案する … 選んだ理由を選考リストに書きます
- 判定を覆したら記録する … どの条件を、どちらに変えたかを残します
2番目を省かないでください。 インサイトの画面は応募者が撮ったもので、この構成はその数字を読んでいるだけです。 広告主に提案する人については、担当者が自分の目で確かめたという記録を残します。
目標は、600件をならして1件2分です。 「候補」と「要確認」が3割前後という想定で、それより多いキャンペーンは、条件表の書き方があいまいです。
例外に対処する
| 起きること | 対応 |
|---|---|
| インサイトの画像が出されていない | 層と数の条件を unverifiable にし「要確認」へ |
| 画像の形式が対応外 | フォームで受け付ける形式を絞る。届いたものは「要確認」へ |
| 画像が粗くて割合が読めない | image_readable を false にし「要確認」へ。出し直しを依頼 |
| 媒体が条件と違う | 「対象外」。理由の列に媒体を書く |
| 競合に似た名前のブランドのPR | unverifiable。担当者が広告主に確かめる |
| 同じアカウントから2回目の応募 | 前の行に「再応募」を付け、新しい内容で判定 |
| 18歳以上かの申告が無い | unverifiable。担当者が確かめるまで候補にしない |
| 締め切り後の応募 | 判定せず記録だけ |
| APIが応答しない・出力が途中で切れた | 選考リストに「未判定」で行を作り、後でやり直す |
上から3行目までが大半を占めます。 どれもAIの問題ではなく、応募フォームの案内の問題です。 「フォロワーの年齢層・性別・地域の3つの画面を出してください」と見本の画像つきで案内すると、この3行は減ります。
記録を残す
- 応募の回答と、インサイトの画面の画像のファイルID
- 判定に使った条件表の内容(そのときのキャンペーンの条件)
- AIが返したJSONの全文と、ワークフローが決めた区分
- 担当者が判定を覆した記録(どの条件を、どちらに変えたか)
- 担当者がアカウントで確かめた日時と、確かめた人
- 起用した人と、広告主に提案したときの理由
2つ目で「そのときの条件」を残すのは、条件表が書き換わるためです。 広告主の要望で途中から層の条件を変えることがあり、当時の条件が残っていないと、なぜこの人が対象外だったかを説明できません。
4つ目は、条件表とプロンプトを直す材料です。 同じ条件で覆す件数が多ければ、その条件の書き方があいまいか、AIの読み方がずれています。
04実装レベルの3段階
最小構成では件数がさばけません。 1件ずつ貼るので、月600件には使えません。確かめるための段階です。 半自動化で、1件6分が3分程度になります。 判定は自動になりますが、区分を担当者が決めるので、全行を読むことになります。本格構成で2分になり、この段階が本記事の想定です。 差が出るのは、区分が規則で決まり、担当者が「対象外」を開かずに済むからです。 段階を飛ばさないでください。 半自動化で1か月分の判定を見ると、どの条件で unverifiable が多いかが分かります。そこから応募フォームの案内と条件表の書き方を直してから、本格構成に進みます。
05工数削減シミュレーション
導入後 600件 × 2分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 化粧品・食品・飲食店などの広告主から、インフルエンサーを使った商品の紹介のキャンペーンを毎月いくつも請け負い、応募フォームで公募して、1つのキャンペーンに数十から百を超える応募が来る広告会社やキャスティングの会社。募集条件(フォロワー数、フォロワーの層、地域、ジャンル)と、広告主ごとのNGジャンルや競合ブランドを、担当者が応募ごとに目で確かめている場合。
- 起用するインフルエンサーを担当者が指名で決めていて、公募をしていない場合。応募が1つのキャンペーンに数件で、担当者がアカウントを開いて見れば足りる場合。募集条件やNGジャンルが文章で決まっておらず、担当者の感覚で選んでいる場合。なお、誰を起用するかの判断、広告主への提案、投稿の内容が景品表示法に照らして適切かの判断は、この構成では代替できません。
07最小構成で試す方法
- 終わったキャンペーンから1つを選び、その応募から30件を取り出す(起用した人、落とした人、迷った人を混ぜる)
- 応募者の氏名と連絡先を消し、そのキャンペーンの条件表を作る
- 手元のAIサービスに、応募の内容とインサイトの画面の画像、条件表を貼り、第7章のプロンプトで判定させる
- 当時の担当者の判断と、条件ごとの判定を並べる
not_meetsとunverifiableの分かれ方が、当時の担当者の感覚と合っているかを聞く
30件は必ずやってください。 シナリオを組む前に、「インサイトの画面から、条件の判定に要る数字が読めるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の判断と条件ごとの判定が合った | シナリオに進む |
読めない画面を not_meets にした | 指示の書き方で直る。構成は有効 |
| 画面が粗くて大半が読めない | 応募フォームの案内が先。 AIの問題ではない |
3行目が出ても失敗ではありません。 担当者も同じ画面を読むのに時間をかけていたということです。見本の画像つきの案内に変えて、次のキャンペーンで同じことを試します。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
読めない画面を not_meets にする | 迷ったら unverifiable と明記する。出し直せば候補になる人を落とさない |
| 似た名前のブランドを競合にする | 一致するときだけ not_meets。似ているものは担当者へ |
| 加工された画面の数字をそのまま信じる | AIは本物かを判断できない。候補はアカウントで確かめる |
| 読めない数字を申告の数で埋める | 画像から読めた値だけを observed に書かせる |
| 起用の結論をAIが書く | 起用すべきかを書かないと明記する |
| 条件表が書き換わり、過去の判定が説明できない | 判定に使った条件を行ごとに残す |
| 毎週つなぎ直しが要る | OAuth のプロジェクトを公開の状態にする |
| 共有ドライブのフォームでアップロードが使えない | フォームをマイドライブに置く |
| 回答者がログインしていない | ファイルのアップロードには Google アカウントでのログインが要る。案内に書く |
| 画像の形式が対応外 | JPEG・PNG・GIF・WebP に絞る |
| 18歳未満の応募者が混ざる | 年齢の申告を確かめるまで候補にしない。Gemini API は使わない |
| 対象外の連絡が自動で飛ぶ | 連絡は担当者が送る。この構成からは送らない |
上の3行が、この構成の失敗のほとんどです。 どれも「材料が足りない、または確かでない」ことを、判定の側で埋めてしまうという同じ問題です。材料の不足は unverifiable として人に回し、確からしさはアカウントで人が確かめる線を守ります。
下から2行目も早く効いてきます。 公募では応募者の年齢を事前に絞れないので、年齢の申告を確かめるまで候補にしません。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 応募者のアカウントの情報、フォロワーの層の割合、過去のPRの企業名、そして選考リストの側に氏名と連絡先です。応募者には18歳未満が含まれることがあります。
- AIに渡す範囲をアカウントの情報と数字までに限る … 氏名と連絡先は渡さず、応募のIDで選考リストと結び付けます
- 18歳未満が含まれうる前提で製品を選ぶ … Gemini API の利用規約は18歳未満が利用しうるサービスでの利用を認めていないため、本構成では Claude API を使います
- 外見で評価しない … 画像に写る人物の容姿は、募集条件に無い限り判定の材料にせず、指示でも禁じます
- 応募者への連絡を自動で送らない … 不採用の連絡も、画面の出し直しの依頼も、担当者が選考リストを見てから送ります
- 広告であることの表示を起用の前提にする … 消費者庁のページでは、規制の対象は広告主である事業者で、企業がインフルエンサーに依頼・指示するものも広告に含まれるとされています。表示への同意を応募の段階で取り、投稿の前の原稿の点検は別に行います
- 選考に使わなかった応募の情報の扱いを決める … 応募者の情報と画像を、キャンペーンが終わった後にいつまで持つかを決め、応募フォームの案内に書きます
誤りが起きた場合のリスクは、条件に合う人を読めない画面のせいで落とすことと、加工された数字の人を広告主に提案することの2つです。 前者は unverifiable を分けることで、後者は候補をアカウントで確かめることで防ぎます。どちらも、AIに確からしさの判断をさせない設計から出ているので、そこだけは守ります。
10まず何から始めるか
1週目:条件表を作る
いま募集中のキャンペーンについて、募集条件・NGジャンル・競合ブランド(会社名とブランド名の対応)・対象外にする条件を表にします。広告主ごとの競合ブランドが分からないものは、担当の営業から広告主に確かめます。
2週目:30件で試す
終わったキャンペーンの応募から30件を選び、手元のAIサービスで条件ごとに判定させます。読めない画面を not_meets にしていないか、似た名前のブランドを競合にしていないかを最優先で見ます。
3週目:応募フォームを直す
フォームに、キャンペーンの選択、インサイトの3つの画面のアップロード(見本の画像つき)、18歳以上かの申告、広告の表示への同意を足します。フォームはマイドライブに置きます。
4週目:応募から選考リストまでをつなぐ
Make で Watch Responses から判定、選考リストへの書き込みまでを作ります。この時点では区分を出さず、条件ごとの判定だけを見ます。
2か月目: 条件表の「対象外にする条件」による区分を足し、担当者が「対象外」を開かずに済むかを確かめます。覆した件数を毎週数えます。3か月目以降: 1件6分が何分になったかを実測し、unverifiable の多い条件について応募フォームの案内を見直します。担当者が開くのが候補と要確認だけになり、広告主に条件ごとの理由で説明できるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| ファイルのアップロードの質問では回答者が Google アカウントにログインする必要があること、ファイルがオーナーのドライブの新しいフォルダに保存されること、共有ドライブのフォームでは使えないこと、形式・数・大きさを作成者が指定できること | Google ドキュメント エディタ ヘルプ: フォームの質問の形式を選択する | 2026-10-08 |
| Google Forms のアプリに Watch Responses・List Responses・Get a Response があること、OAuth のプロジェクトがテストの状態だと毎週つなぎ直しが要ること | Make: Google Forms | 2026-10-08 |
| Download a File がファイルのIDを指定してドライブのファイルをダウンロードすること | Make: Google Drive modules | 2026-10-08 |
| Search Rows の絞り込み、Add a Row が表の一番下に行を足すこと | Make: Google Sheets | 2026-10-08 |
| Anthropic Claude アプリに Create a Prompt と Make an API Call があり、API キーで接続すること | Make: Anthropic Claude | 2026-10-08 |
| 対応する画像の形式(JPEG・PNG・GIF・WebP)、1枚の上限(API に直接渡す場合 base64 で10MB、8000×8000ピクセル)、大きな画像は縮小されること、画像の人物を名指しできないこと、AIで生成された画像かを判断できないこと | Claude Docs: Vision | 2026-10-08 |
構造化出力を output_config.format に type: "json_schema" で指定すること、enum の値が大文字小文字だけ違って返ることがあること | Claude Docs: Structured outputs | 2026-10-08 |
| 2023年10月1日からステルスマーケティングが景品表示法違反となること、広告には企業がインフルエンサー等の第三者に依頼・指示するものも含まれること、規制の対象が広告主である事業者であること | 消費者庁: 令和5年10月1日からステルスマーケティングは景品表示法違反となります | 2026-10-08 |
| Gemini API の利用規約が、18歳未満が利用する、または利用しうるサービスでの利用を認めていないこと | Gemini API Additional Terms of Service | 2026-10-08 |
どの応募者を起用するか、広告の表示が十分かは、広告主と自社の担当者が決めてください。 本記事は公開されている仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1111)についてのご相談はこちらから。
