広告会社が広告主へ請求する前に、媒体ごとの出稿実績・媒体からの請求・契約の手数料率を突き合わせ、請求額の食い違いと請求漏れを洗い出す
広告主へ請求する前に、媒体ごとの出稿実績、媒体からの請求、広告主との契約の手数料率を突き合わせ、請求額を検算します。計算で出た差の1件ずつについて、原因の区分をAIが判定し、食い違いと請求漏れを洗い出します。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Make/n8n/Power Automate/Zapier
- 対象業界
- EC/IT・SaaS/その他/広告
- 対象部門
- 営業/経理
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- データ分析に時間がかかる/属人化している/確認ミスが多い
- AIで行う処理
- 判定
- 主な効果
- 入力漏れ削減/品質標準化/工数削減/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 運用の担当が、各媒体の管理画面から前月の費用をCSVで取り出し、共有フォルダに置く
- 経理の担当が、媒体からの請求の明細(CSV・表)を同じフォルダに集める
- 広告主×媒体ごとに、管理画面の費用と媒体からの請求の額を表に並べる
- 契約の条件の一覧を見て、その広告主の手数料率と計算の方式を確かめる
- 媒体の請求の額から広告主への請求額を電卓と表の計算で出し、販売管理の請求の下書きと比べる
- 差があれば、運用の担当にチャットで理由を聞く
- 理由が分かったものは下書きを直し、分からないものは保留にして上長に相談する
- 人運用の担当と経理の担当が、管理画面の実績と媒体からの請求の明細を、媒体ごとの受付フォルダに置く
- 自動ファイルの追加をきっかけにワークフローが動き、媒体ごとの決まった形に読み込む
- 自動媒体のアカウントIDとキャンペーンIDを、広告主の対応表で社内の広告主コードにそろえる
- 自動広告主×媒体×月で、実績・媒体の請求・請求の下書きの3つを1行に並べる
- 自動契約の条件の表から手数料の決まりを引き、媒体の請求の額から広告主への請求額の見込みを計算する
- 自動3つの差(実績と媒体の請求、見込みと請求の下書き、下書きに行が無いもの)を出す
- 自動許容の範囲を超えた差の1件ずつについて、生成AIが原因の区分を判定し、根拠を書く
- 自動判定の結果を、経理の担当の確認の一覧に並べる
- 人経理の担当が `rate_mismatch`、`base_mismatch`、`unbilled`、`unknown` を先に確かめ、請求の下書きを直す
- 人運用の担当が、判定に運用の確認が要るとされたものに答える
- 人経理の責任者が、直した下書きを確かめて請求書を出す
各工程の詳しい説明を読む
- 運用の担当が、各媒体の管理画面から前月の費用をCSVで取り出し、共有フォルダに置く
- 経理の担当が、媒体からの請求の明細(CSV・表)を同じフォルダに集める
- 広告主×媒体ごとに、管理画面の費用と媒体からの請求の額を表に並べる
- 契約の条件の一覧を見て、その広告主の手数料率と計算の方式を確かめる
- 媒体の請求の額から広告主への請求額を電卓と表の計算で出し、販売管理の請求の下書きと比べる
- 差があれば、運用の担当にチャットで理由を聞く
- 理由が分かったものは下書きを直し、分からないものは保留にして上長に相談する
(a)並べるだけで時間がかかる。 3番目で、媒体ごとに違う形のCSVを、広告主の名前とキャンペーンの名前を手がかりに1行ずつ並べています。媒体の側のアカウント名と、社内の広告主の名前が違うことが、手間の大半です。
(b)手数料の決まりの取り違え。 4番目は、契約の条件の一覧に率は書いてあっても、グロス建てかネット建てか、最低手数料があるかが備考の欄に埋もれています。 グロス建ての広告主にネット建ての計算をすると、手数料の額がずれます。
(c)媒体の調整を食い違いと見てしまう。 運用型の広告では、管理画面の費用と請求の額が、無効なクリックのクレジットや配信の超過のクレジットなどの調整で違うのが普通です。理由を知らない担当者は、毎月同じ差を運用の担当に聞き直しています。
(d)請求漏れが翌月まで分からない。 3番目で並べるのは、販売管理の請求の下書きにある行が起点です。下書きに行の無い媒体は、そもそも並びません。 月の途中で始まったキャンペーンが、翌月の媒体費の支払のときに見つかります。
- 【人】 運用の担当と経理の担当が、管理画面の実績と媒体からの請求の明細を、媒体ごとの受付フォルダに置く
- 【自動】 ファイルの追加をきっかけにワークフローが動き、媒体ごとの決まった形に読み込む
- 【自動】 媒体のアカウントIDとキャンペーンIDを、広告主の対応表で社内の広告主コードにそろえる
- 【自動】 広告主×媒体×月で、実績・媒体の請求・請求の下書きの3つを1行に並べる
- 【自動】 契約の条件の表から手数料の決まりを引き、媒体の請求の額から広告主への請求額の見込みを計算する
- 【自動】 3つの差(実績と媒体の請求、見込みと請求の下書き、下書きに行が無いもの)を出す
- 【自動】 許容の範囲を超えた差の1件ずつについて、生成AIが原因の区分を判定し、根拠を書く
- 【自動】 判定の結果を、経理の担当の確認の一覧に並べる
- 【人】 経理の担当が
rate_mismatch、base_mismatch、unbilled、unknownを先に確かめ、請求の下書きを直す - 【人】 運用の担当が、判定に運用の確認が要るとされたものに答える
- 【人】 経理の責任者が、直した下書きを確かめて請求書を出す
7番目が、この設計の分かれ目です。 差は計算で出ているので、AIには新しい数字を作らせず、出た差に理由の区分を付けることだけをさせます。区分が決まれば、経理の担当は区分ごとにまとめて確かめられます。
請求の下書きは、この構成からは直しません。 9番目で人が直します。請求額を決めるのは経理で、AIは差の理由の見当を付けるところまでです。
10番目で運用の担当に届く質問は、1件に1つです。 「このキャンペーンは〇〇社のものですか」「9月28日に停止しましたか」のように、運用の担当が管理画面を見ればその場で答えられる形にします。これまでのように、経理の担当がチャットで状況を説明するところから始める必要がなくなります。
02今回想定するシステム構成
媒体の管理画面の実績(CSV) 媒体からの請求の明細(CSV・表) ▼【トリガー】媒体ごとの受付フォルダへの追加 Make ├──▶ 媒体ごとのデータ構造で読み込み、列をそろえる ├──▶ 広告主の対応表(媒体のアカウントID → 広告主コード) ├──▶ 契約の条件の表(率・グロス/ネット・最低手数料・調整の扱い) ├──▶ 販売管理の請求の下書き(書き出し) ▼ Make ── 広告主×媒体×月で3つを並べ、見込みと差を計算 ▼ 許容の範囲を超えた差だけ Claude API(Make の Anthropic Claude アプリ「Make an API Call」、構造化出力) │ 原因の区分/根拠のデータ/運用への確認の要否 ▼ Make ── 確認の一覧と、運用の担当への質問 ▼ 【経理の担当が確かめて請求の下書きを直す】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | Make(データ構造による読み込みと、集計・計算のモジュール) | Power Automate、n8n、Zapier |
| 生成AI | Claude API(Make の Anthropic Claude アプリから呼ぶ) | OpenAI API、Gemini API |
| 保管 | 照合の表と判定の記録(データベースの表) | スプレッドシート |
| 通知 | 社内チャット(経理の確認の一覧と、運用の担当への質問) | メール |
販売管理の仕組みには書き込みません。 請求の下書きは書き出したものを読むだけで、直すのも請求書を出すのも、これまでどおり人が販売管理の画面で行います。 最初の準備は、広告主の対応表と、契約の条件の表を作り直すことです。
読み込みの土台は、Make のデータ構造です。 データ構造は、Make の中でやり取りするデータの形を書いたもので、JSON、XML、CSV などの読み込みと書き出しに使われます。 データの見本から自動で作る機能があり、媒体ごとのCSVの見本を1つ入れれば、列の形ができます。 媒体ごとに1つのデータ構造を持ち、その後で共通の列(日付・アカウントID・キャンペーンID・費用・通貨)にそろえます。
生成AIは、Anthropic Claude アプリの「Make an API Call」で呼びます。 同じアプリには、モデルを選んで指示を書くだけの「Simple Text Prompt」と、入力の会話から生成する「Create a Prompt」もあります。判定の結果を決まった形で受け取るために、API を直接呼ぶ「Make an API Call」で、Messages API のリクエストに構造化出力の指定を含める構成を想定します。
構造化出力は、output_config.format に json_schema を指定します。 制約付きのデコードでスキーマに沿った応答を返すとされ、JSONの解析の失敗や、必須の欄の抜けが起きません。 ただし、minimum・maximum のような数値の制約や、文字列の長さの制約は使えません。金額の範囲の確かめは、スキーマではなくワークフローの側で行います。
03どうやって実装するのか
処理の起点を決める
媒体ごとの受付フォルダにファイルが追加されたことを起点にします。 媒体のデータは月初の数日にばらばらに届くので、届いた媒体から順に並べ、3つがそろった広告主×媒体から判定に進めます。 全部がそろうのを待つ形にすると、検算に使える3日が削られます。
もう一つの起点は、月初の第3営業日の朝の定時実行です。 この時点で3つがそろっていない広告主×媒体を一覧にし、どのデータが足りないかを運用と経理の担当に知らせます。Google 広告では、月ごとの請求書による支払の場合、毎月の初めから5営業日以内に請求書がメールで届くとされています。媒体の請求がそろう日を媒体ごとに表に持ち、待つべきものと催促すべきものを分けます。
処理の済んだファイルは、処理済みのフォルダへ移します。 移すのは読み込みが成功したときだけにします。同じ月の同じ媒体のファイルが2回置かれたときは、新しいほうで置き換え、置き換えた記録を残します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 管理画面の実績 | 日付、アカウントID、キャンペーンID・名、費用、通貨 | 各媒体の管理画面からの書き出し |
| 純広告の実績 | 掲載の枠、掲載の期間、表示回数、申込の額 | 媒体社からの報告(表) |
| 媒体からの請求の明細 | 請求の対象月、アカウント、金額、調整の行(クレジット・調整金)、税 | 媒体からの請求のデータ |
| 広告主の対応表 | 媒体ごとのアカウントID・キャンペーンIDと、社内の広告主コード | 運用の担当が持つ表 |
| 契約の条件の表 | 広告主ごとの手数料率、媒体ごとの例外、グロス建て/ネット建て、最低手数料、調整の扱い、特約の文 | 経理と営業で作る表 |
| 請求の下書き | 広告主ごとの請求の行(媒体・対象月・媒体費・手数料・税) | 販売管理の仕組みからの書き出し |
| 前月までの判定の記録 | 前月までに出た差と、その理由と処理 | この構成の保管 |
質を決めるのは、広告主の対応表と契約の条件の表です。 対応表が無ければ、媒体の側のアカウントを広告主にそろえられず、並べる段階で止まります。 契約の条件の表の「調整の扱い」の列は、媒体からのクレジットを広告主に返すのか、手数料の計算の前に引くのかを書く欄で、ここが空だと判定が unknown ばかりになります。
特約の文は、表の列にそのまま入れます。 「動画の媒体は手数料15%」「月の媒体費が50万円未満の月は最低手数料10万円」のような決まりは、列に分けきれないものが必ず残ります。 文のまま持たせ、判定のときにAIに読ませます。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 実績と請求の明細 | 受付フォルダのファイルを、媒体ごとのデータ構造で読む | 広告主×媒体×月の金額 |
| 対応表・契約の条件 | 表の読み取り | 広告主コードへの寄せ、手数料の決まり |
| 請求の下書き | 販売管理の仕組みからの書き出し(毎日夜間) | 検算の相手 |
| 前月までの記録 | 判定の記録の表 | 繰り越した調整、毎月続く差 |
管理画面の実績は、請求の正確な額の代わりにはなりません。 Google 広告のヘルプでは、キャンペーンの画面と請求の画面の費用が違うのは、無効なクリックのクレジット、配信の超過のクレジット、クレジットの調整によるもので、最も正確な費用は請求の画面を見るようにとされています。調整は反映に時間がかかるともされています。この構成では、広告主への請求の基礎を媒体の請求の側に置き、実績は差の理由を確かめる材料に使います。
媒体の請求をキャンペーン別に分けられない場合があります。 Google 広告のヘルプでは、キャンペーンごとに別の明細書を受け取ることはできないとされています。1つの媒体のアカウントに複数の広告主のキャンペーンが同居している場合は、実績の費用の比率で請求を按分する規則を、経理と営業で決めておきます。
AIへ渡す前に整形する
- 列の正規化 … 媒体ごとのデータ構造で読み、日付・アカウントID・キャンペーンID・費用・通貨の共通の列にそろえます
- 金額の正規化 … 桁区切りのカンマ、全角の数字、税込・税抜の混在をそろえます。税込か税抜かは媒体ごとの表で決めます
- 対象月の決定 … 実績は日付で、請求は請求の対象月の欄で月を決めます。請求書の発行日で月を決めないようにします
- 広告主への寄せ … 対応表でアカウントIDとキャンペーンIDから広告主コードを付けます。対応表に無いものは
unmappedにします - 3つの突き合わせ … 広告主×媒体×月の単位で、実績・請求・下書きを1行に並べます。どれか1つでもある組み合わせは、すべて行を作ります
- 見込みの計算 … 契約の条件の表の率と方式で、媒体の請求の額から広告主への請求額の見込みを出します
- 差の判定と絞り込み … 差が許容の範囲(媒体ごとに額と率で決める)を超えたもの、下書きに行が無いものだけを次に回します
5番目の「どれか1つでもあれば行を作る」が、請求漏れを拾う仕組みです。 下書きを起点に並べると、下書きに無いものは並びません。実績か請求のどちらかがあって下書きに無い行が、請求漏れの候補です。
7番目の許容の範囲は、差の種類ごとに分けて持ちます。
| 差の種類 | 許容の範囲(初期値。媒体ごとに調整) |
|---|---|
| 実績と媒体の請求の差 | 運用型は額の3%以内か1,000円以内。純広告は0円(申込の額どおり) |
| 見込みと請求の下書きの差 | 0円。手数料の端数の処理だけは契約の条件の表の決まりで許す |
| 下書きに行が無い | 許容なし。すべて次に回す |
実績と請求の差に幅を持たせるのは、運用型の広告では調整で差が出るのが普通だからです。 一方で、見込みと下書きの差は計算どうしの差なので、1円でも違えば理由があります。
6番目の計算は、ワークフローの側で行います。 ネット建てなら媒体費×(1+率)、グロス建てなら媒体費÷(1-率)のように、方式で式が変わります。この計算をAIにさせると、方式を取り違えたまま、もっともらしい額を書きます。
AIに処理させる
させるのは、計算で出た差の1件ずつについて、原因の区分を1つ選び、根拠になったデータの行と契約の条件の文を示すことです。
| 区分 | 意味 | 判定の手がかり |
|---|---|---|
adjustment | 媒体の調整・クレジットで説明がつく | 請求の明細に調整の行があり、差の額と合う |
timing | 計上月のずれ・期間のずれ | 前月か翌月に同じ額の逆の差がある |
rate_mismatch | 手数料率の取り違え | 下書きの手数料が、別の率で計算した額と合う |
base_mismatch | グロス建て・ネット建ての取り違え | 下書きの額が、もう一方の方式の額と合う |
minimum_fee | 最低手数料の適用・不適用の誤り | 特約に最低手数料があり、媒体費がその基準の前後 |
unbilled | 請求漏れの候補 | 実績か請求があり、下書きに行が無い |
no_contract | 契約に無い媒体 | 契約の条件の表にその媒体の行が無い |
unknown | 上のどれにも決められない | 手がかりが足りない |
AIに渡すのは、その1件の行と、比べるための候補の額です。 「別の率で計算した額」「もう一方の方式の額」は、ワークフローがあらかじめ計算して渡します。 AIは、渡された額のどれが下書きと合うかを見て区分を選ぶだけです。
| させないこと | 理由 |
|---|---|
| 金額の計算 | 方式の取り違えをそのまま計算する。計算はワークフローで行う |
| 請求額の決定 | 経理が決める。区分は直し方の見当まで |
| 契約の解釈の結論 | 特約の文が読み切れないときは unknown にして人へ |
| 広告主・媒体への連絡文 | 請求の話は経理と営業が直接行う |
| 区分を複数つけること | 1件に1つ。迷ったら unknown |
1行目がいちばん大事です。 「グロス建てで計算し直すと〇〇円になります」と書かせると、AIが計算した額が直した後の請求額として使われるおそれがあります。額はワークフローが出したものだけを使います。
指示内容を固定する
あなたは広告会社の経理部で、広告主へ請求する前の検算を担当しています。
渡された1件の差について、原因の区分を1つ選んでください。
渡されたデータと契約の条件だけを使ってください。推測で埋めないでください。
【区分】
adjustment / timing / rate_mismatch / base_mismatch / minimum_fee /
unbilled / no_contract / unknown
【判定の手がかり】
- adjustment:請求の明細に調整・クレジットの行があり、その額で差が説明できる
- timing:前月・翌月の記録に、同じ広告主・媒体で逆向きの差がある
- rate_mismatch:candidate_amounts の「他の率での額」のどれかが下書きの額と一致する
- base_mismatch:candidate_amounts の「もう一方の方式の額」が下書きの額と一致する
- minimum_fee:契約の特約に最低手数料があり、媒体費がその基準の前後にある
- unbilled:実績か媒体の請求があり、下書きの行が無い
- no_contract:契約の条件にその媒体の行が無い
【厳守事項】
- 金額を計算しないでください。比べるのは渡された額どうしだけです。
- 「一致する」は、渡された額が1円の単位まで同じ場合だけです。
近い額を一致として扱わないでください。
- 区分は1つだけ選んでください。2つ以上当てはまりそうなら unknown にしてください。
- evidence には、根拠にしたデータの行の番号と、契約の条件の文をそのまま写してください。
- 契約の特約の文が、この差に当てはまるか読み切れないときは unknown にしてください。
- 請求額をいくらにすべきか、広告主や媒体にどう伝えるかは書かないでください。
- 運用の担当に確かめないと決められない場合は、needs_ops_check を true にし、
ops_question に、運用の担当がその場で答えられる質問を1つ書いてください。
【差の行】{diff_row}
【比べるための候補の額】{candidate_amounts}
【媒体の請求の明細(この広告主・媒体・月)】{invoice_lines}
【契約の条件】{contract_terms}
【前月・翌月の記録】{adjacent_months}
「近い額を一致として扱わない」を明記しないと、端数の差を一致と読みます。 手数料の率の取り違えは、1円の単位で合うかどうかで見分けます。近い額で区分を決めると、別の原因の差が rate_mismatch に紛れます。
「2つ以上当てはまりそうなら unknown」は、確認の順番を守るためです。 調整と計上月のずれが同時に起きている月はあり、AIが片方を選ぶと、もう片方の確認が省かれます。
出力形式を固定する
構造化出力で、次の形のJSONを受け取ります。
{
"diff_id": "2026-09_ADV-0231_MEDIA-07",
"category": "base_mismatch",
"matched_candidate": "gross_basis_amount",
"evidence": [
"請求明細 行3:対象月2026-09 媒体費 1,200,000",
"契約の条件:手数料はグロス建て20%"
],
"needs_ops_check": false,
"ops_question": "",
"confidence_note": ""
}
1つ目の理由は、区分を列挙の値に固定できることです。 スキーマで category を8つの値に限れば、集計と並べ替えがそのまま効きます。 経理の担当は、区分ごとにまとめて確かめられます。
2つ目は、matched_candidate で、どの額と合ったかを機械で確かめられることです。 ワークフローは、AIが選んだ候補の額と下書きの額が本当に一致するかを受け取った後に計算で確かめます。 合っていなければ、区分を unknown に戻して人へ回します。
| 確認の段階 | 対象 | 扱い |
|---|---|---|
| すぐ確かめる | rate_mismatch、base_mismatch、minimum_fee、unbilled | 請求の下書きを直す候補。経理が当日に見る |
| まとめて確かめる | adjustment、timing | 区分ごとに一覧で確かめる。繰り越す調整は記録へ |
| 人が調べる | unknown、no_contract、unmapped | 経理と営業で調べる |
| 運用に聞く | needs_ops_check が true | 運用の担当へ質問を送る |
3つ目は、evidence で確認が速くなることです。 元のCSVを開く前に、どの行と契約のどの文で判定したかを読めます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付フォルダ | Make のトリガー | 媒体ごとのファイルの追加を検知する |
| 対応表・契約の条件 | 表の読み取り | 広告主コードと手数料の決まりを引く |
| 販売管理の仕組み | 書き出しの読み取り | 請求の下書きを引く |
| Claude API | Anthropic Claude アプリの「Make an API Call」 | 差の区分の判定 |
| 照合の表と判定の記録 | データベースの表 | 3つを並べた行と判定、人の処理を残す |
| 社内チャット | 投稿 | 確認の一覧と、運用の担当への質問 |
販売管理の仕組みへは書き込みません。 請求の下書きを直すのは経理の担当です。この構成から請求の額を書き換える経路を作ると、AIの判定の誤りが、そのまま広告主への請求書になります。
人が確認する
人が見るのは、許容の範囲を超えた差だけです。 許容の範囲に収まった行は、件数と合計の額だけを一覧で流し見ます。
- すぐ確かめる区分を先に見る …
rate_mismatch、base_mismatch、minimum_fee、unbilled。契約の条件の表と、契約書の原本を照らして確かめます - 人が調べる区分を見る …
unknownとno_contract。営業の担当に、契約の中身を確かめます - まとめて確かめる区分を流し見る …
adjustmentは請求の明細の調整の行を、timingは前後の月の記録を確かめます - 下書きを直し、記録する … 直した額と、その理由の区分を記録に付けます
1番目で契約書の原本まで見るのは、契約の条件の表が誤っていることがあるからです。 表の率と下書きの率が違うとき、誤っているのが表の側ということも珍しくありません。 表を直したら、同じ広告主の過去の月も見直します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 媒体のCSVの列が変わった | 読み込みに失敗したら、そのファイルは処理済みへ移さず人へ。データ構造を直す |
| 対応表に無いアカウント | unmapped。新しく始めたキャンペーンか、別の広告主のものかを運用の担当が確かめる |
| 1つのアカウントに複数の広告主 | 実績の費用の比率で按分し、按分した印を付ける |
| 媒体の請求が届かない | 第3営業日の一覧に載せ、催促する |
| 外貨の請求 | 換算の日と率を契約の条件の表で決め、換算した印を付ける |
| 前月の調整が当月に載る | timing か adjustment として記録し、元の月に結び付ける |
| 特約の文が読み切れない | unknown。営業の担当に契約を確かめる |
| AIの選んだ候補が計算で一致しない | 区分を unknown に戻して人へ |
| 生成AIが応答しない | 差の行は計算の結果だけで一覧に載せ、区分を空にする |
上から2行目と3行目が、最初の月に集中します。 対応表の整備が追いついていないと、判定の前の段階で止まる行が多く出ます。 判定の精度より先に、対応表を埋めてください。
記録を残す
- 受け取ったファイルと、読み込んだ日時、使ったデータ構造の版
- 広告主×媒体×月で並べた行と、計算した見込みの額、候補の額
- AIの判定の結果(JSONの全文)と、計算で一致を確かめた結果
- そのとき参照した契約の条件の表の内容
- 人が直した額と、その理由の区分
- 毎月続く差の一覧(同じ広告主・媒体で同じ区分が続いているもの)
4つ目で契約の条件の内容を残すのは、表が後から直るためです。 率を直した後に過去の月を見直すとき、当時どの率で検算したかが残っていないと、見直しの範囲が決まりません。
04実装レベルの3段階
最小構成では、並べる作業が減りません。 1件9分の半分近くが残るので、理由の見当付けが当たるかを確かめるための段階です。 半自動化で、並べることと検算が手を離れます。 ここで1件9分の大半が減りますが、差の理由を運用の担当に聞く作業が残ります。本格構成で、理由の区分と質問まで出て、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化を1か月回すと、対応表に無いアカウントと、契約の条件の表の空欄が一覧で分かります。 そこを埋めてから判定を足すほうが、unknown が少なくて済みます。
05工数削減シミュレーション
導入後 400件 × 3分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 検索広告・SNS広告・国内のニュースサイトや業界誌のサイトなど、複数の媒体に広告主の出稿を取り次ぎ、媒体費に手数料を乗せて毎月請求している広告会社。広告主ごとに手数料率や計算の方式(グロス建て・ネット建て)、最低手数料が違い、請求の前の検算が経理と営業の担当者の手作業になっている場合。媒体の管理画面の実績と、媒体からの請求の明細を、CSVや表で取り出せる場合。
- 広告主が数社で、媒体も1〜2つに限られる場合。手数料が全広告主で同じ率で、販売管理の仕組みが自動で請求額を出している場合。媒体からの請求が紙やPDFの書類でしか届かず、明細を表で取り出せない場合(先に読み取りの仕組みが要る)。なお、広告主への請求額の決定、媒体への減額の申し入れ、契約の解釈の最終的な判断は、この構成では代替しません。
07最小構成で試す方法
- 先月の広告主×媒体の組み合わせから30件を選ぶ(うち数件は、請求の後に直したもの・請求漏れが見つかったものを入れる)
- その30件の実績、媒体の請求の明細、請求の下書き、契約の条件を、表に並べる
- 差の出た行について、手元の生成AIのサービスに、行と契約の条件と候補の額(別の率での額、もう一方の方式の額)を貼り付ける
- 「この差の原因を、媒体の調整/計上月のずれ/率の取り違え/グロス・ネットの取り違え/最低手数料/請求漏れ/契約に無い媒体/不明 のどれか1つで答え、根拠の行と契約の文を示してください。金額を計算しないでください」と指示する
- 出てきた区分を、当時の経理の担当が突き止めた理由と突き合わせる
30件は必ずやってください。 ワークフローを組む前に、「計算の結果と契約の条件がそろえば、理由が決まるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時と同じ理由が根拠付きで出た | データ構造と計算のワークフローに進む |
| 金額を計算して理由を決めた | 指示の書き方で直る。構成は有効 |
契約の条件が足りず unknown ばかり | 契約の条件の表の整備が先。 AIの問題ではない |
3行目が出るのは珍しくありません。 特約が備考の欄に埋もれている広告主ほど、ここで止まります。表を直すだけで、手作業の検算も速くなります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 管理画面の費用を請求の基礎にする | 請求の基礎は媒体の請求の側。 実績は理由を確かめる材料 |
| AIが金額を計算して理由を決める | 候補の額はワークフローで出し、計算を禁じる |
| 近い額を一致と読む | 1円の単位で一致と指示し、受け取った後に計算で確かめる |
| 下書きを起点に並べて請求漏れを拾えない | 3つのどれかがあれば行を作る |
| グロス建てとネット建ての式を取り違える | 方式を契約の条件の表の列にし、式を方式で切り替える |
| 媒体のアカウント名で広告主を寄せる | アカウントIDとキャンペーンIDで寄せる |
| 特約が備考に埋もれている | 列に分け、分けきれないものは特約の文として持つ |
| 請求書の発行日で月を決める | 請求の対象月の欄で月を決める |
| 媒体のCSVの形が変わって止まる | 読み込みの失敗を人へ回し、データ構造を直す |
| 判定の結果で下書きを自動で直す | 直すのは経理の担当。 書き込みの経路を作らない |
上の3行が、検算の信頼を決めます。 どれも「差の数字をどこから取るか」の誤りで、AIの判定の精度より先に、計算の土台を決めておく必要があります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 広告主ごとの媒体費、手数料率、契約の特約、請求の額です。手数料率は、広告主ごとに違う取引の条件で、社外に出さない情報です。
- 生成AIに渡す範囲を、1件の差の判定に要るものに限る … 渡すのは、その広告主・媒体・月の行と、その広告主の契約の条件だけです。全広告主の手数料率の一覧を渡さないでください
- 利用する生成AIのサービスで、入力がどう扱われるかを契約の条件で確かめる … 取引の条件を含むためです
- 請求の額を自動で直さない … この構成が出すのは差の理由の見当までです。請求額を決めるのは経理の担当と責任者です
- 契約の解釈をAIに決めさせない … 特約が読み切れないものは
unknownにし、営業の担当が広告主との取り決めを確かめます - 媒体への減額の申し入れは人が行う … 調整の額が足りないと見える場合も、媒体との取り決めと調整の反映の時期を確かめてからにします
- 媒体の管理画面の権限を広げない … 実績の書き出しは運用の担当が行い、ワークフローに管理画面の操作の権限を持たせません。 読み込むのは置かれたファイルだけです
- 判定の記録の閲覧を絞る … 広告主ごとの手数料率と請求の額が並ぶ表です。見られるのは経理と、担当の広告主の営業だけにします
誤りが起きた場合のリスクは、広告主に誤った額を請求することと、請求漏れを見逃すことの2つです。 前者は計算の土台の取り違えで、後者は並べ方の誤りで起きます。どちらもAIの外の設計で守ります。
10まず何から始めるか
1週目:広告主の対応表を作る
運用の担当が持つ情報から、媒体ごとのアカウントID・キャンペーンIDと、社内の広告主コードを1枚の表にします。1つのアカウントに複数の広告主が同居しているものには印を付けます。
2週目:30件で試す
先月の30件を表に並べ、差の出た行を手元の生成AIに貼って理由の区分を出させます。金額を計算していないか、近い額を一致と読んでいないかを最優先で見ます。
3週目:契約の条件の表を作り直す
手数料率、グロス建て・ネット建て、最低手数料、調整の扱いを列に分け、特約の文を添えます。 経理と営業で契約書を読み合わせます。
4週目:読み込みと並べをつなぐ
Make で媒体ごとのデータ構造を作り、受付フォルダから読み込んで、広告主×媒体×月で3つを並べ、差を出すところまで作ります。この時点ではAIを使わず、差の一覧だけを見ます。
2か月目: 差の行に判定を足し、確認の一覧と運用への質問を出します。3か月目以降: 毎月続く差の一覧を見て契約の条件の表を直し、1件9分が何分になったかを実測します。請求漏れの候補が請求の前に毎月確かめられるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| データ構造が Make の中でやり取りするデータの形を書いたもので、JSON・XML・CSV などの読み込みと書き出しに使われること。データの見本から自動で作る機能があること | Make Help Center: Data structures | 2026-10-06 |
| Anthropic Claude アプリに「Simple Text Prompt」「Create a Prompt」「Make an API Call」などのモジュールがあること | Make Apps Documentation: Anthropic Claude | 2026-10-06 |
構造化出力を output_config.format の json_schema で指定すること。制約付きのデコードでスキーマに沿った応答を返すこと。minimum・maximum などの数値の制約、文字列の長さの制約が使えないこと | Claude Platform Docs: Structured outputs | 2026-10-06 |
| キャンペーンの画面と請求の画面の費用の違いが、無効なクリックのクレジット、配信の超過のクレジット、クレジットの調整によること。調整の反映に時間がかかること。最も正確な費用は請求の画面を見ること | Google Ads Help: About cost differences on the Campaigns page and Billing pages | 2026-10-06 |
| 月ごとの請求書による支払で、毎月の初めから5営業日以内に請求書がメールで届くこと。キャンペーンごとに別の明細書を受け取ることはできないこと | Google Ads Help: Get an invoice, statement, or payment receipt | 2026-10-06 |
広告主との契約の手数料の決まり、媒体の調整の扱い、請求額の最終的な決定は、自社の経理と営業、必要に応じて法務で確認してください。 本記事は上記の公開資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0564)についてのご相談はこちらから。
