制作物に使った画像・フォント・音源のライセンス条件を、公開前に根拠付きで確かめる
制作物に使った画像・フォント・音源について、ライセンス文書から該当する条文を引き当て、原文の引用付きで示します。担当者の作業は、条文を探して読むことから、示された条文で判断することに変わります。
- 利用ツール
- Amazon Kendra/Azure AI/ChatGPT/Claude/Gemini/Make/n8n/OpenSearch/Power Automate
- 対象業界
- EC/IT・SaaS/小売/広告/教育
- 対象部門
- マーケティング/知財
- 対象業務
- 内容確認・チェック/情報検索
- 主な課題
- 属人化している/情報が見つからない/確認ミスが多い
- AIで行う処理
- 検索(RAG)
- 主な効果
- 属人化解消/工数削減/検索時間短縮
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 公開予定日の1週間前ごろ、マーケティングから知財へ「これを出してよいか」と確認が来る
- 知財の担当者が制作データを開き、使われている画像・書体・音源を目で拾う
- それぞれの素材の取得元と、誰が入れたかを制作担当に聞く
- 提供元のサイトで利用規約またはライセンスのページを探す。購入時のメールや管理画面の履歴も探す
- 該当しそうな条文を読み、商用利用の可否、媒体、部数、掲載期間、地域、クレジット表記、改変や二次配布の扱いを書き出す
- 制作物の使い方(どの媒体に、何部、いつまで、どこで出すか)を入稿票とメールから確かめる
- 条文の条件と使い方を並べ、範囲に収まっているかを判断してマーケティングへ返す
- 外注先が作った制作物では、2番と3番が成立しないため、外注先へ素材の一覧を問い合わせる
- 人入稿票に、掲載媒体・部数・掲載期間・地域・改変・二次配布の予定を書く
- 自動公開予定日の10営業日前に、素材台帳からその制作物の素材の行を集める
- 自動記録が無い素材、提供元または購入区分が空の行を `no_record` に分ける
- 自動提供元・購入区分・使い方の言葉で検索基盤に問い合わせ、条文の候補を取る
- 自動1回目の呼び出しで、候補から該当する条文を選ばせ、原文をそのまま引用させる
- 自動2回目の呼び出しで、引用した条文と使い方を決まった形のJSONに整えさせる
- 自動区分(`within` / `check` / `not_found` / `no_record`)を機械の規則で付ける
- 自動制作物ごとに、条文の引用と確認が要る点をまとめた一覧を作る
- 人知財・法務が `check` / `not_found` / `no_record` のものだけを開いて判断する
- 人差し替え・追加購入・問い合わせのどれにするかを決め、素材台帳へ書き戻す
- 人`within` のものは一覧で条文の引用を流し見て、公開の手続きに回す
各工程の詳しい説明を読む
- 公開予定日の1週間前ごろ、マーケティングから知財へ「これを出してよいか」と確認が来る
- 知財の担当者が制作データを開き、使われている画像・書体・音源を目で拾う
- それぞれの素材の取得元と、誰が入れたかを制作担当に聞く
- 提供元のサイトで利用規約またはライセンスのページを探す。購入時のメールや管理画面の履歴も探す
- 該当しそうな条文を読み、商用利用の可否、媒体、部数、掲載期間、地域、クレジット表記、改変や二次配布の扱いを書き出す
- 制作物の使い方(どの媒体に、何部、いつまで、どこで出すか)を入稿票とメールから確かめる
- 条文の条件と使い方を並べ、範囲に収まっているかを判断してマーケティングへ返す
- 外注先が作った制作物では、2番と3番が成立しないため、外注先へ素材の一覧を問い合わせる
(a)探している時間のほうが、読んでいる時間より長い。 条文そのものは数行です。時間がかかるのは、どの提供元の、どの版の、どの条文を見ればよいかを突き止めるまでです。購入区分で適用される条文が変わる提供元もあり、「どのプランで買ったか」を購入履歴から掘り起こすところから始まります。
(b)外注先が使った素材は、記録そのものが無い。 納品されたデータに何が入っているかは開いても分かりません。問い合わせて返事を待つ間に公開予定日が近づき、 急ぐ月は確認しないまま出る制作物が生まれます。
(c)規約は改定される。 買ったときの条文と今サイトに載っている条文が同じとは限らず、今のページを読んで判断すると当時の条件を見落とします。
(d)担当者によって見る条文が変わる。 同じ写真の同じ使い方でも、部数の条文を見る人と媒体の条文を見る人がいます。点検の中身が人に依存します。
- 【人】 入稿票に、掲載媒体・部数・掲載期間・地域・改変・二次配布の予定を書く
- 【自動】 公開予定日の10営業日前に、素材台帳からその制作物の素材の行を集める
- 【自動】 記録が無い素材、提供元または購入区分が空の行を
no_recordに分ける - 【自動】 提供元・購入区分・使い方の言葉で検索基盤に問い合わせ、条文の候補を取る
- 【自動】 1回目の呼び出しで、候補から該当する条文を選ばせ、原文をそのまま引用させる
- 【自動】 2回目の呼び出しで、引用した条文と使い方を決まった形のJSONに整えさせる
- 【自動】 区分(
within/check/not_found/no_record)を機械の規則で付ける - 【自動】 制作物ごとに、条文の引用と確認が要る点をまとめた一覧を作る
- 【人】 知財・法務が
check/not_found/no_recordのものだけを開いて判断する - 【人】 差し替え・追加購入・問い合わせのどれにするかを決め、素材台帳へ書き戻す
- 【人】
withinのものは一覧で条文の引用を流し見て、公開の手続きに回す
9番目が、この設計の分かれ目です。人が開くのは全件ではありません。 食い違いが出なかったものは一覧で流し見て終わりにし、確認が要るものと条文が見つからなかったものだけに時間を使います。 全件を開く設計にすると、22.5時間はほとんど減りません。
7番目を機械の規則に置いているのも、意図してのことです。 条文を選んで引用することはAIにさせますが、その条文で範囲に収まるかという判断は規則と人の側に残します。 読み方は自社の方針で変わるからです。2番目が「10営業日前」なのは、直すときのためです。 食い違えば差し替えか、上位の購入区分への切り替えか、提供元への問い合わせが要り、3日前ではどれも間に合いません。
02今回想定するシステム構成
公開予定の制作物(広告・Webページ・カタログ・動画・展示パネル) │ 入稿票から 媒体/部数/掲載期間/地域/改変・二次配布 を取る ▼【トリガー】公開予定日の10営業日前/入稿票が「校了」に変わったとき n8n ── 素材台帳を引く(制作物ID → 素材ID・提供元・購入区分・取得日) │ 記録が無い素材・購入区分が空の素材は no_record としてここで人へ ▼ Azure AI Search ── ライセンス文書から条文の候補を取り出す │ 利用規約/購入時の条件/個別契約書/書体の使用許諾/音源の許諾 │ 全文検索とベクトル検索を1つの要求で走らせ、上位を再ランクする ▼ Claude API(1回目:引用を有効にする)── 条文を選び、原文を引用する ▼ Claude API(2回目:構造化出力)── 引用と使い方を決まった形に整える ▼ 区分(within / check / not_found / no_record)を規則で付ける ▼ 【知財・法務が check・not_found・no_record だけを開いて判断する】 └──▶ 素材台帳へ点検日と条文・版を書き戻す/差し替え・追加購入
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | n8n | Make、Power Automate |
| 検索基盤 | Azure AI Search | Amazon Kendra、OpenSearch |
| 処理 | Claude API | OpenAI API、Gemini API |
素材台帳と入稿票は、この表に入れていません。 新しく選ぶ製品ではなく、この構成を載せる前に社内で用意するものだからです。台帳はスプレッドシートでも構いません。
検索基盤に載せるのは、条文そのものです。 ハイブリッド検索は、フルテキストクエリとベクタークエリの両方に対して構成された1つのクエリ要求で、両方を並列で実行し、逆ランク融合(RRF)で結果をマージするとされています。探し方が2通りあるためです。 「再配布」「クレジット表記」のような規約の用語は全文検索が強く、「カタログを3万部刷る」といった業務の言い回しはベクトル検索が強い。公開ドキュメントも、専門用語や日付、人の名前のクエリではキーワード検索が強いと述べています。
その上にセマンティックランカーを重ねます。 初期の結果に二次のランク付けを追加する機能で、上位50件までが再ランクの対象になり、各ドキュメントに @search.rerankerScore(範囲は4から0)が付きます。このランカーは新しい文字列を作りません。 キャプションと回答は常に索引からの逐語的なテキストで、新しいコンテンツを作成または構成する生成AIモデルは含まれないと明記されています。探す工程で文面が変わっては、引用の意味がありません。
03どうやって実装するのか
処理の起点を決める
公開予定日の10営業日前に動かします。 入稿票の公開予定日を毎日見て、10営業日前にあたる制作物を拾います。加えて、状態が「校了」に変わったときにも動かします。 校了で素材が確定するためです。
素材が入るたびに動かす設計にはしません。 制作の途中では素材が入れ替わります。点検の単位は素材ではなく、制作物です。 同じ写真でも、Web広告に使うのとカタログに3万部刷るのとでは見る条文が変わります。1回の起動で1つの制作物を処理し、素材の行ごとに繰り返します。
処理が終わった制作物は、台帳の点検状態を「済」にします。変えるのは最後まで成功したときだけです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 素材の行 | 制作物ID、素材ID、種類、提供元、購入区分、取得日、入れた人(自社/外注先) | 素材台帳 |
| 制作物での使い方 | 掲載媒体、部数・再生数、掲載期間、地域、改変の有無、二次配布の予定 | 入稿票 |
| 条文の候補 | 利用規約、購入時の条件、個別契約書、書体・音源の使用許諾。条・項の番号と版 | 検索基盤 |
| 提供元の対応表 | 提供元名の表記ゆれ、購入区分の呼び名と社内の呼び方の対応 | 自社で用意する一覧 |
質を決めるのは、上の2つです。 購入区分が空なら条文が絞れず、使い方の6項目が空なら条文と並べる相手がいません。どちらもAIの精度ではなく、記録の有無の問題です。
使い方の情報は、素材側からは取れません。 写真そのものに「何部刷るか」は書かれていないからです。この6項目は制作物の側にしかなく、入稿票から取るしかありません。 「入れた人」を持つのは、どの外注先との取り決めを先に直すべきかを数字で見るためです。
データの取得方法を決める
ライセンス文書は、提供元ごとに1つの塊としては載せません。条・項の単位に分けて索引に入れます。 引用して返す単位が条文だからです。規約全体を1件として載せると返るのも規約全体になり、担当者が結局その中から該当箇所を探すことになります。 それでは第4章の①が減りません。仕様の面でも同じで、要約モデルは1件あたり最大2,000トークンを受け取るため、長すぎる文字列はトリミングされます。
索引に持たせるのは、条文の本文のほか、提供元、文書の名前、版、発効日、条・項の番号、購入区分です。 版と発効日を持たせるのは、規約が改定されるためです。 取得日より後の版しか無ければ、今の版で判断せず、そう書いて人に回します。
検索の語は3つを組み合わせます。 提供元の名前、購入区分の呼び名、使い方の言葉です。使い方の言葉は入稿票の6項目からそのまま作り、「印刷物 30000部 6か月 国内 改変なし」のような文字列にします。業務の言い回しのままでよいのは、ベクトル検索の側が拾うからです。 「商用利用」「業として」「営利目的」のような言い換えはシノニムマップに持たせます。インデックスのフィールドに関連付け、セマンティックランカーの構成に含めると、再ランク処理中に自動的に適用されるとされています。
AIへ渡す前に整形する
- 台帳の行の検査 … 提供元と購入区分が入っているかを見ます。空なら検索を始めず、
no_recordとして人へ回します - 使い方の6項目の検査 … 空の項目を記録します。その項目について
withinを出さないようにするためです - 提供元名の正規化 … 対応表を引き、表記ゆれを索引側の表記にそろえます
- 文書の版の選択 … 取得日以前に発効した最新の版を選びます。無ければその旨を持ったまま次へ進みます
- 検索語の組み立て … 提供元、購入区分、使い方の言葉を1つの文字列にします
- 候補の切り落とし … 再ランクのスコアで並べ、下位を落とします。ただししきい値は細かくしすぎません
- 生成AIの出力の切り分け … 素材の種類が「生成AIの出力」の行は、別の区分として分けます
6番目には注意書きがあります。 @search.rerankerScore の分布は条件やランク付けモデルの更新によって変動しうるため、しきい値を細かくしすぎないよう述べられています。「2.8未満を捨てる」のような線引きは、ある日から結果が変わります。 7番目は生成AIで作った素材を他と混ぜないためで、自動で結論を出さず必ず人に回します。
AIに処理させる
させるのは3つです。該当する条文を選び、その原文を引用し、条文の条件と使い方を並べて確認が要る点を挙げることです。
| 見るもの | 並べる相手 | 判断できないときの扱い |
|---|---|---|
| 商用利用の可否 | (条文の条件をそのまま) | 候補に無ければ not_found |
| 媒体・地域の制限 | 入稿票の媒体と地域 | どちらかが空なら check |
| 部数・再生数の上限と掲載期間 | 入稿票の部数、取得日と掲載期間 | どちらかが空なら check |
| クレジット表記、改変・二次配布 | (表記の指定を引用)、入稿票の改変・二次配布 | 条文が抽象的なら check |
| AI学習への利用の可否 | (該当条文があれば引用) | 触れた条文が無ければ not_found |
右端の列が、この構成の要です。 check は「条文はあるが決められない」、not_found は「関係する条文が候補に無い」で、前者は人が読んで決めるもの、後者は索引の側を疑うものです。混ぜると、探せていないだけの素材が「問題なし」に紛れます。
| させないこと | 理由 |
|---|---|
| 使ってよい/だめ、適法か違法か、規約が有効かの結論 | 権利の範囲に収まるかの判断は知財・法務が行う |
| 候補に無い条文の作成 | それらしい条文が1行出るほうが、何も出ないより危険 |
| 条文の言い換え・要約での提示 | 引用は原文のまま。読みやすく直させない |
| 空欄の項目の推定と、生成AIの出力についての結論 | 「たぶん通常の部数」と埋めさせない。生成AIの出力は必ず人へ |
2行目がいちばん起きやすい失敗です。 条文が取れなかったときに規約に普通ありそうな内容を1行作って返し、担当者にはそれが引用に見えます。 引用を機能として組むのは、ここを防ぐためです。
指示内容を固定する
あなたは、制作物に使った素材のライセンス条文を探す担当です。
法的な結論を出す立場ではありません。出すのは該当する条文と、
人が確かめるべき点までです。
【この素材】提供元:{source_name}/購入区分:{purchase_tier}/取得日:{acquired_on}
種類:{asset_type}(画像/書体/音源/イラスト/地図/生成AIの出力)
【使い方】媒体:{media}/部数・再生数:{print_run}/掲載期間:{period}
地域:{region}/改変:{modified}/二次配布:{redistribution}
【条文の候補】{clause_candidates}
(各候補に、文書の名前、版、発効日、条・項の番号が付いています)
【やること】
1. 候補のうち、上の使い方に関係する条文だけを選ぶ。
2. 選んだ条文を原文のまま引用する。要約も言い換えもしない。
3. その条文が何を定めているかを、条件として1行で書く。
4. その条件と上の使い方を並べ、次のどれかを付ける。
within .... 条文の条件と使い方が食い違っていない
check ..... 条文はあるが情報が足りない、または条文だけでは決められない
not_found . 候補の中に、この使い方に関係する条文が無い
5. 人が確かめるべき点を、確認事項として箇条書きで書く。
【厳守事項】
- 候補の中に無い条文を書かないでください。それらしい条文を作らないでください。
見つからなければ not_found とし、何を探したかを書いてください。
- 「使ってよい」「使ってはいけない」と書かないでください。適法か違法かも、
規約が有効かどうかも書かないでください。判断するのは知財・法務です。
- 引用は原文のままにし、読みやすく直さないでください。条・項の番号と版は、
候補に付いているものをそのまま写してください。
- 使い方の6項目に空欄があるときは、その項目について within を選ばず、
check にして足りない項目の名前を確認事項に書いてください。
- 素材の種類が「生成AIの出力」のとき、および取得日より後に発効した版の
条文しか候補に無いときは、必ず check にしてください。
- 迷ったときに within を選ばないでください。
「候補の中に無い条文を書かない」を最初に置いています。 これを書かないと、候補が薄いときほど規約に普通ありそうな文を作って埋め、しかも、それらしく書かれます。 禁じるのは、候補の外から持ってくることそのものです。
「迷ったときに within を選ばない」を最後に置いているのも意図があります。 4つの区分のうち within だけが人の目を通らずに進むからです。迷いの寄せ先を check にしないと、判断がつかなかったものが黙って公開に進みます。
出力形式を固定する
呼び出しを2回に分けます。引用と構造化出力を同時に使えないためです。 公開ドキュメントは、引用を有効にしたドキュメントと output_config.format を同時に指定すると、APIは400エラーを返すと明記しています。
1回目は、引用を有効にして条文を選ばせます。 各ドキュメントに citations.enabled=true を設定します(要求内のすべてで有効か、すべてで無効かのどちらかです)。条文はカスタムコンテンツとして渡します。平文とPDFは文の単位に自動で分割されますが、カスタムコンテンツは追加の分割をしないためです。条・項で意味が閉じた条文を文で割られると、引用が半分になります。返る cited_text は出力トークンに数えられません。
2回目は、構造化出力で形を整えます。 output_config.format の type に json_schema を指定し、オブジェクトでは additionalProperties を false にします。enum が使えるので、 区分を4つに固定できます。
{
"creative_id": "", "asset_id": "", "source_name": "", "purchase_tier": "",
"asset_type": "image | font | audio | illustration | map | ai_output",
"usage": { "media": [""], "print_run": 0, "period": "", "region": "",
"modified": false, "redistribution": false },
"clauses": [
{ "topic": "commercial | media_region | print_run | period | credit | modification | ai_training",
"document_title": "", "doc_version": "", "clause_ref": "",
"cited_text": "", "condition": "", "verdict": "within | check | not_found" }
],
"open_points": [""],
"overall": "within | check | not_found | no_record"
}
clauses の verdict はAIが付け、overall はワークフローが規則で決めます。 層を分けておくと、方針が変わったときに直すのは規則だけで済みます。規則は単純で、記録が無いか購入区分が空なら no_record、not_found が1つでもあれば not_found、check があれば check(ai_output は常にここ)、すべて within で6項目に空が無いときだけ within です。
なお、数値や文字列の長さの制約(minimum、maxLength など)はサポートされていません。 print_run に上限を持たせられないため、部数の比較はワークフロー側で行います。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 入稿票 | 読み取り | 公開予定日、状態、使い方の6項目 |
| 素材台帳 | 読み取りと書き戻し | 素材の行を取り、点検日・参照した条文・版を書き戻す |
| 検索基盤 | API呼び出し | 条文の候補と再ランクのスコア |
| Claude API(1回目) | API呼び出し | 該当する条文の選択と原文の引用 |
| Claude API(2回目) | API呼び出し | 引用の結果を決まった形のJSONに整える |
| 確認用の一覧 | 書き込み | 制作物ごとの条文の引用と確認事項 |
公開を管理するシステムへは書き込みません。 点検の結果で公開を自動で止めたり通したりすると、条文が見つからなかっただけの素材で公開が止まり、逆に探せていないものが黙って通ります。 公開の可否は人が決め、提供元への問い合わせも文面の下書きまでにします。
素材台帳への書き戻しは、点検の記録だけです。 素材の行そのものは書き換えません。購入区分が空だったときに、AIが推定した区分で埋めないということです。
人が確認する
人が開くのは check / not_found / no_record のものだけです。 within のものは一覧で流し見ます。全件を開く設計では、第10章の7.5時間に収まりません。
no_recordを先に見る … 外注先が入れたものが大半で、外注先へ一覧を求めるか制作担当に聞きますnot_foundを次に見る … 索引に載っていないのか、探し方が合っていないのかを分けますcheckの条文を読む … 引用された原文を読み、使い方と並べて判断します。ここが知財・法務の本来の仕事です- 生成AIの出力を確かめる … 提供元とプランを確かめ、出力の扱いを個別に見ます
- 区分を覆したら記録する … どの素材の、どの条文を、どちらに変えたかを残します
3番目の時間を削らないでください。 狙いは判断を速くすることではなく、判断の前の探す時間を無くすことです。目標は150件をならして1件3分、開くのは2割5分前後という想定で、それより多い月は台帳の記録か索引の範囲が足りていません。
例外に対処する
| 起きること | 対応 |
|---|---|
| 台帳に素材の記録が無い | no_record。外注先へ一覧を求め、発注時の取り決めを見直す |
| 提供元または購入区分が空 | no_record。推定で埋めず、購入履歴から人が埋める |
| 条文の候補が0件 | not_found。それらしい条文を作らせず、 索引に規約があるかを先に見る |
| 取得日以前の版が索引に無い/提供元のサービスが終了 | 今の版で判断せず check。取得時に保存した控えがあればそれを使う |
| 使い方の6項目に空がある | その項目について within を出さず、入稿票へ差し戻す |
| 素材の種類が生成AIの出力 | 常に check。提供元とプランごとに人が見る |
| 同じ素材が複数の制作物に使われる | 制作物ごとに点検する。 使い方が違えば見る条文も変わる |
| 検索基盤が応答しない・処理が止まる | 点検状態を「未」のまま残し、エラーワークフローで通知する |
n8n では、ワークフローごとに Workflow Settings でエラーワークフローを設定できます。 エラートリガーノードから始めるワークフローで、失敗したワークフローとエラーの詳細(実行ID、実行のURL、エラーメッセージ、失敗したノード、ワークフローのIDと名前)を受け取ります。ただし手動実行ではテストできず、自動のワークフローが失敗したときだけ動きます。 execution.id と execution.url は実行がデータベースに保存されている必要があります。 意図的に止めたい条件は、Stop and Error ノードで失敗させて同じ仕組みに寄せます。
記録を残す
- 素材台帳の行の写し(提供元、購入区分、取得日、入れた人)と点検した日時
- 引用した条文の全文(
cited_text)と、文書の名前・版・発効日・条項の番号 - 検索基盤に投げた語と、返ってきた候補の並び(
@search.rerankerScoreを含む) - AIが付けた
verdict、規則が付けたoverall、人が区分を覆した記録 - 提供元別・外注先別の
no_recordとnot_foundの発生率
2つ目が、この構成でいちばん重要なログです。 後日、提供元や第三者から問い合わせが来たときに、「公開の時点で、この版のこの条文を見て判断した」と示せるかどうかが変わります。今の規約を見せても、当時の条件の説明にはなりません。
最後の行は、取り決めを見直す材料です。 特定の外注先だけ no_record が高いなら、素材一覧の提出を発注書に書き込む相手がそこだと分かります。
04実装レベルの3段階
本記事が想定するのは半自動化の段階です。 最小構成では月150点に使えません。本格構成まで進めるかは、台帳を誰が維持するかで決まります。 半自動化で、1件9分が3分になります。 探す4分と読む3分が、引用を確かめる時間に置き換わります。残るのは、条文を読んで判断する仕事そのものです。 本格構成まで進めてもこの3分は変わらず、増えるのは台帳の精度で、no_record の件数が減る形で効いてきます。 段階を飛ばさないでください。 半自動化の一覧を2か月見ると、not_found の多い提供元と no_record の多い外注先が分かります。そこを直してから進むほうが、台帳を作り込む範囲を絞れます。
05工数削減シミュレーション
導入後 150件 × 3分 ÷ 60 = 7.5 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 広告、Webサイト、カタログ、動画、展示会のパネルなどを毎月まとめて公開していて、そこに使う外部の素材が月に100点を超える企業。素材の購入や契約が複数の提供元にまたがり、条文を読める担当が知財に1〜2名しかいない場合。制作の一部を外注していて、外注先が何を使ったかを発注時に取り決められる関係がある場合。すでに素材台帳があるか、これから作る意思がある場合。
- 使う素材が自社で撮影・制作したものだけで、外部から買った素材がほとんど無い場合。提供元が1社に統一されていて、社内向けに使い方の早見表が作られている場合。制作物が月に数点で、素材も数点しかない場合は目視で足ります。素材台帳を作る予定が無い場合は、この構成は動きません。台帳づくりが先です。
07最小構成で試す方法
- 先月公開した制作物から3点を選び、使われている素材20点を書き出す(うち数点は出どころが分からないものを入れる)
- その20点について、当時どこで条文を探し、何分かかったかを聞き取る
- 提供元の規約のうち、該当しそうなページをテキストにして用意する
- 手元のAIサービスに規約のテキストを貼り、使い方(媒体・部数・期間・地域・改変・二次配布)を書いて、「この使い方に関係する条文を原文のまま引用してください。使ってよいかは書かないでください。関係する条文が無ければ『見つからない』と書いてください」と指示する
- 返ってきた引用が、規約の本文にそのまま存在するかを1つずつ確かめる
5番目を必ずやってください。 確かめるのは判断の正しさではなく、引用が本物かどうかです。原文に無い文が混ざるなら、条文を条単位で渡すか、引用を機能として組みます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の担当者が見た条文と同じものが引用された | 検索基盤への取り込みに進む |
| 引用が原文と少し違う、または原文に無い | 引用を機能として組む理由がここで分かる |
| 出どころ不明の素材で「見つからない」と返った | 狙いどおり。 台帳の整備が先だと確認できた |
3行目は失敗ではありません。 出どころが分からない素材について何も出ないのが正しい姿で、それが月に何点あるかを数えるのが、この試行のもう一つの目的です。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 素材台帳が無いまま作り始める | この構成は台帳の上に載る。 上位の提供元から先に埋め、台帳づくりを工程に入れる |
| 外注先が使った素材が分からない | 発注書と業務委託契約に、納品時の素材一覧の提出を書き込む。 素材名・提供元・購入区分・取得日を様式にする |
| 候補に無い条文が引用として返る | カスタムコンテンツで条単位に渡し、引用を機能として組む。 原文との一致を後段で確かめる |
| 規約全体を1件で索引に載せた/取得日より後の版で判断した | 条・項に分けて載せ直し、版と発効日を持たせる。当時の版が無ければ check |
| 使い方の6項目が入稿票に無い | 媒体・部数・期間・地域・改変・二次配布の欄を先に足す |
| 購入区分が空のまま進む | 推定で埋めず no_record。購入履歴から人が埋める |
| 生成AIで作った素材が台帳に載らない | 素材の種類に区分を作り、下絵や背景でも台帳に書くことを制作担当へ周知する |
| 引用と構造化出力を1回で要求する | 400エラーになる。 呼び出しを2回に分ける |
| 点検の結果で公開を自動で止める | 止めない。 条文が見つからなかっただけで公開が止まる |
| 条文の読み方を知財だけで決める | 何を確認が要る点とするかを、マーケティングと外注先の窓口も交えて決める |
上の2行が、この構成が動かない理由のほとんどです。 どちらも台帳の話で、AIの精度とは関係がありません。台帳が半分しか埋まっていなければ、半分は no_record で人に回ります。 それでも構わないという合意を先に取っておくほうが、途中でやめずに済みます。外注先との取り決めは、次の発注から様式を付ける形で始められます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 素材の購入履歴(どの提供元から、どの購入区分で買ったか)、公開前の制作物の使い方(どの媒体に、いつ、何部出すか)、外注先との契約の内容、提供元との個別契約書の本文です。
- 公開前の販促計画が外に出る経路を先に決める … 使い方の6項目には、未公開のキャンペーンの時期と規模がそのまま入ります。 「来月から3か月、国内で3万部」は計画そのものです
- 個別契約書を索引に載せる範囲を絞る … 個別契約には単価や最低保証など、使い方と関係のない条項も入っています。 載せるのは使い方の条件に関わる条文だけにできます
- 法的な結論をAIに出させず、
not_foundを問題無しと読み替えない …not_foundは「探せていない」という意味です。withinに混ぜると、索引に規約を載せ忘れた提供元の素材が、すべて問題なしとして通ります - 生成AIで作った素材は、別の扱いにする … 出力の扱いは提供元のプランで分かれます。どのプランで作ったかを台帳に記録し、人が個別に見ます
- 引用した条文と版を、公開の記録として残す … 後日の問い合わせに答えられるかは、当時どの版のどの条文を見たかが残っているかで決まります
- 外注先の情報の扱いを取り決める … 受け取る素材一覧には、その外注先がどの提供元とどう契約しているかが含まれます。 自社の点検以外に使わないことを、提出を求める際に決めます
誤りが起きた場合のリスクは、条文を引き当てられないまま公開することと、見つからないだけの素材を公開前に止めることの2つです。 前者は not_found を within に混ぜると起き、後者は点検の結果で公開を自動で止めると起きます。
10まず何から始めるか
1週目:素材台帳の枠を作り、上位の提供元から埋める
制作物ID、素材ID、素材の種類、提供元、購入区分、取得日、入れた人(自社/外注先)の7列を持つ表を作ります。全部を一度に埋める必要はありません。 点数の多い提供元から順に、直近3か月の制作物の素材を埋めます。ここで埋められない素材の数が、no_record の見込みです。
2週目:入稿票に6つの欄を足し、20点で試す
入稿票に、掲載媒体・部数・掲載期間・地域・改変の有無・二次配布の予定の欄を足します。あわせて素材20点で第8章の手順を試し、返ってきた引用が原文にそのまま存在するかを1つずつ確かめます。
3週目:外注先との取り決めを書き換える
発注書と業務委託契約に、納品時の素材一覧の提出を書き込みます。 素材名、提供元、購入区分、取得日を書く様式を1枚作り、次の発注から付けます。あわせて、生成AIで作った素材も台帳に書くことを制作担当に周知します。
4週目:規約を条単位に分けて検索基盤に載せる
点数の多い提供元から、利用規約と購入時の条件を条・項に分けて索引に入れます。条文の本文のほか、提供元・文書の名前・版・発効日・条項の番号・購入区分を持たせます。 この時点では区分を出さず、条文が引けるかだけを見ます。
2か月目: ワークフローから2回の呼び出しをつなぎ、制作物ごとの一覧を出します。3か月目以降: 区分を出して運用に載せ、1件9分が何分になったかを実測します。提供元別の not_found と外注先別の no_record が下がった時点で、この構成は形になります。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| ハイブリッド検索が1つの要求で全文検索とベクター検索を並列に実行し、RRFで結果をマージすること | Microsoft Learn: ハイブリッド検索の概要 | 2026-09-23 |
セマンティックランカーが初期結果に二次のランク付けを加え、上位50件のみが再ランクに進むこと。要約モデルが1件あたり最大2,000トークンを受け取ること。@search.rerankerScore の範囲が4から0で分布が変動しうること。キャプションが逐語的で生成AIモデルを含まないこと。シノニムマップが自動で適用されること | Microsoft Learn: セマンティック ランキングの概要 | 2026-09-23 |
引用が citations.enabled=true で有効になり、要求内の全ドキュメントで有効か無効かのどちらかであること。平文とPDFは文の単位で自動分割され、カスタムコンテンツは分割されないこと。cited_text が出力トークンに数えられず、構造化出力と同時に指定すると400エラーになること | Claude Docs: Citations | 2026-09-23 |
構造化出力が output_config.format で json_schema を指定し、additionalProperties を false にする必要があること。enum が使え、数値と文字列の制約はサポートされないこと | Claude Docs: Structured outputs | 2026-09-23 |
エラートリガーノードが、別のワークフローの失敗時に実行ID・実行のURL・エラーメッセージ・失敗したノードを受け取ること。execution.id が実行のデータベース保存を必要とし、手動実行ではテストできないこと。Workflow Settings で設定でき再利用できること。Stop and Error ノードで意図的に失敗させられること | n8n: Error Trigger node<br>n8n: Handle errors gracefully | 2026-09-23 |
権利の範囲に収まるかの判断は、知財・法務の担当者と、必要に応じて外部の専門家が行ってください。 著作権法の解釈や個別の規約の効力については述べていません。
実装ステータス:構成例。 公開仕様に基づく設計であり、当社で構築・検証したものではありません。工数はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0192)についてのご相談はこちらから。
