売った直後の「どこで開く?」を残さない。AIが作るFAQを3項目で止める見本

売った直後の「どこで開く?」を残さない。AIが作るFAQを3項目で止める見本

購入後に届いたPDFを、どこから開けばよいのか。困るのは商品が壊れたときだけではありません。ダウンロード場所、使える端末、質問先のどれかが抜けるだけで、購入者は次の操作を決められなくなります。

AIにFAQの下書きを頼むと、質問と回答の組はすぐ増えます。ただ、文として自然でも、購入直後に必要な案内がそろうとは限りません。最初の3分の入口。そこで架空のデジタル商品を使い、FAQを3つの観点で機械的に止める見本を作りました。

10月27日の記事「AIに渡す商品企画を「悩み1件」へ絞る」では、AIへ渡す商品企画を悩み1件に絞りました。今回は、その商品を受け取った人が最初に迷う場所へ進みます。実在の商品、購入者、販売実績は使っていません。AIのAPI呼び出しもしていない合成見本です。

回答があるのに、購入者は進めなかった

最初のFAQには「内容に質問があるときは、商品の説明ページをご確認ください」と書きました。答えの形にはなっています。しかし、説明ページへ戻っても質問は解決しません。連絡方法が書かれていないからです。

Etsyのデジタル商品ヘルプでも、購入者は購入履歴のダウンロード操作、ファイル形式、必要なソフトを確認するよう案内されています。販売者に連絡する入口も別にあります。購入後の案内は、商品の中身だけでは完結しません。Etsyの案内を読むと、その分かれ目が見えます。

AIの出力を使うときは、自然な文章を採用する前に、必要な情報を項目へ戻します。Structured OutputsはJSON Schemaに従う形を返せますが、必須項目を決めない限り、購入者が困らない内容までは保証しません。OpenAIのStructured Outputsも、必要なキーと列挙値をスキーマで定義する考え方を示しています。

今回の小さな検査

検査対象はFAQの質問と回答を並べたJSONです。次の3項目のどれかに触れていなければ、終了コード1で止めます。

項目受け入れる語購入者が決めること
受け取りダウンロード、リンクどこでファイルを取るか
利用環境PDF、iPhone、Android、PCどの端末で開けるか
問い合わせ連絡、メール、フォーム困ったときに誰へ送るか

ここで見るのは商品の正しさではありません。初回利用に必要な入口だけ。たとえばPDFと書いてあっても、特定のアプリでしか開けない商品なら、実際の要件を別途確認して語を変えます。

用語

用語この見本での意味
FAQ購入前後に起きやすい質問と回答の組です。
JSON質問と回答を機械で読みやすく保存する書式です。
検査必要な案内があるかを決めた規則で確かめる処理です。
終了コードコマンドの成功と失敗を示す数値です。0は成功、1は不足を表します。

合成FAQを1回止める

空のディレクトリにfaq.jsonとcheck_faq.pyを保存します。最初のfaq.jsonは、問い合わせの回答だけをわざと不足させました。

[
  {
    "question": "購入後、どこからファイルを受け取れますか?",
    "answer": "購入完了画面のリンクからダウンロードできます。"
  },
  {
    "question": "スマートフォンだけで使えますか?",
    "answer": "PDFを開いて使えます。"
  },
  {
    "question": "内容に質問があるときはどうすればよいですか?",
    "answer": "商品の説明ページをご確認ください。"
  }
]

check_faq.pyには次を書きます。辞書のキーが検査項目です。各項目の語が質問と回答をつないだ本文に1つもなければ、不足として集めます。

import json
from pathlib import Path

required = {
    "受け取り": ("ダウンロード", "リンク"),
    "利用環境": ("PDF", "iPhone", "Android", "PC"),
    "問い合わせ": ("連絡", "メール", "フォーム"),
}

faqs = json.loads(Path("faq.json").read_text())
text = "\n".join(faq["question"] + "\n" + faq["answer"] for faq in faqs)
missing = [label for label, words in required.items() if not any(word in text for word in words)]

if missing:
    print("不足: " + "、".join(missing))
    raise SystemExit(1)
print("確認済み: 受け取り、利用環境、問い合わせ")

この見本を作った環境のPythonを確認します。

python3 --version
Python 3.13.5

続けて検査します。問い合わせ先が無いので、意図どおり止まりました。

python3 check_faq.py
不足: 問い合わせ

このときの終了コードは1でした。説明ページへの誘導も案内の一部に見えます。しかし、質問を送る先が決まらないなら、購入者の次の行動は決まりません。答えの形より、次の操作。

回答を直して、もう一度だけ通す

3つ目の回答を、次の1文へ差し替えます。

"answer": "購入時に届くメールの返信先へご連絡ください。"

もう一度、同じコマンドを実行します。

python3 check_faq.py
確認済み: 受け取り、利用環境、問い合わせ

これで問い合わせの入口は入りました。ただし、この検査は「メール」という語を見ただけです。実際に返信を受ける運用があるか、購入時メールに返信先が載るかまでは確かめません。その確認は、販売ページと配信メールを用意した段階で別に行います。

AIへ渡す前に、出力の枠を先に置く

AIへFAQを依頼するときも、自由文だけで頼まず、質問、回答、対象端末、問い合わせ先のように項目を分けます。返答がJSONでも、今回の検査を通す前提なら、どの情報を後から確認すべきかが残ります。

商品仕様
  ↓
AIがFAQの下書きを作る
  ↓
FAQをJSONで保存する
  ↓
受け取り・利用環境・問い合わせを検査する
  ↓
不足を直して販売ページと配信メールへ反映する

「購入後に迷わない」を1つの指示文に押し込むより、必要な入口を名前で持つ方が直しやすいです。項目は増やしすぎません。販売する形式がPDFだけなら、3項目から始めれば十分です。

次に試すなら、実際の販売方法に合わせて検査語を変えます。ZIP形式なら解凍方法、Canvaテンプレートなら編集権限、動画なら再生環境を足します。増やす理由は、一般的に見栄えがよいからではありません。購入後に詰まる場所が変わるからです。

参考資料

この記事をシェア