AIに渡す商品企画を「悩み1件」へ絞る。2件で止めた小さな検査

AIに渡す商品企画を「悩み1件」へ絞る。2件で止めた小さな検査

「平日の献立が決まらない」と「買い物リストを作れない」を、同じテンプレートで解決する企画を考えます。近い悩みに見えますが、AIへ渡す依頼としては2件です。出力の優先順位が決まらず、どちらにも浅い説明になりそうでした。

個人でデジタル商品を作るとき、AIは企画文、見出し、利用手順の下書きを速く出せます。でも、最初の依頼が広いままでは、生成を何度やり直しても商品がぼやけます。そこで、モデルへ渡す前の企画をJSONに分け、扱う悩みが1件でなければ止める見本を作りました。

10月21日の記事では、プロンプト集の本文、入力例、変更履歴の版をそろえる確認をしました。今回はその前段です。版を管理する前に、AIへ何を作らせるかを小さく決めます。

先に「誰の何を変えるか」を決めます

ここで扱うのは、実在の商品や販売実績ではありません。週末の献立テンプレートを想定した合成見本です。AIへリクエストは送っていません。

企画に必要な要素を4つだけ置きます。

  • product: 渡す商品の名前です。
  • target_user: 使う人です。
  • problems: 解決したい悩みの一覧です。
  • outcome: 使った後にできる状態です。

problemsを複数にすると、商品が必ず悪くなるわけではありません。ただ、最初の1商品で何を確かめるかは曖昧になります。献立案を作る機能と、買い物を最適化する機能では、必要な入力も評価方法も違います。

私は、AIに「献立テンプレートを作って」とだけ渡す案をやめました。購入者、悩み、終わった状態を先に短く決めたほうが、出力に足りない前提を見つけやすいためです。

[商品企画 JSON]
        |
        v
[悩みが1件かを確認] -- 2件以上 --> [HOLD: 人が企画を絞る]
        |
        v
[AIへの依頼文と商品下書き]

2つの悩みを入れたら、下書きの前で止まりました

Python 3.13.5で、空の一時ディレクトリにcheck_brief.pyとbrief.jsonを置きました。検査は企画を自動で書き換えません。足りない項目か、複数の悩みを表示して終了コード2で止まるだけです。

import json
from pathlib import Path

brief = json.loads(Path("brief.json").read_text(encoding="utf-8"))
required = ("product", "target_user", "problems", "outcome")
missing = [key for key in required if not brief.get(key)]
if missing:
    print("HOLD missing=" + ",".join(missing))
    raise SystemExit(2)

problems = brief["problems"]
if not isinstance(problems, list):
    print("HOLD problems_type=list_required")
    raise SystemExit(2)

print("product=" + brief["product"])
print("target_user=" + brief["target_user"])
print("problems=" + str(len(problems)))
if len(problems) != 1:
    print("HOLD one_problem_required")
    raise SystemExit(2)
print("OK outcome=" + brief["outcome"])

最初のbrief.jsonには、関連する2件を入れました。

{
  "product": "週末の献立テンプレート",
  "target_user": "平日に夕食を決める時間がない人",
  "problems": [
    "平日の献立を決められない",
    "買い物リストを作れない"
  ],
  "outcome": "週末に5日分の献立候補を決められる"
}
mkdir -p "$TMPDIR/hibanas-brief-single-problem"
cd "$TMPDIR/hibanas-brief-single-problem"
python3 --version
python3 check_brief.py
Python 3.13.5
product=週末の献立テンプレート
target_user=平日に夕食を決める時間がない人
problems=2
HOLD one_problem_required

この実行は終了コード2でした。ここでAIに出力させず、どちらの悩みを最初に扱うかへ戻ります。検査が「買い物リストを削る」と決めるべきではありません。商品の範囲、価格、次に作る商品は、作り手が決めることです。

機械の役目はここまでです。

この検査が出す表示

状態表示人が決めること
悩みが2件HOLD one_problem_required最初の商品で扱う悩みを1件に選びます
必須項目が空HOLD missing=...商品名、対象者、悩み、到達点を埋めます
problemsが配列でないHOLD problems_type=list_required複数候補を区別できる形へ直します

1件へ直して、次の依頼へ渡せる形にしました

今回は「買い物リストを作れない」を別の企画へ残し、最初の悩みを「平日の献立を決められない」にします。同じ検査をもう一度実行しました。

python3 - <<'PY'
import json
from pathlib import Path
p = Path("brief.json")
brief = json.loads(p.read_text(encoding="utf-8"))
brief["problems"] = ["平日の献立を決められない"]
p.write_text(json.dumps(brief, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
PY
python3 check_brief.py
printf 'exit=%s\n' "$?"
product=週末の献立テンプレート
target_user=平日に夕食を決める時間がない人
problems=1
OK outcome=週末に5日分の献立候補を決められる
exit=0

OKは、商品が売れることや、AIの出力が正しいことを示しません。今回決めた4項目があり、悩みが1件であることだけを示します。それでも、商品説明、プロンプト、テンプレートのどれを書くとしても、最初の依頼が同じ企画を指す状態になります。

AIの出力形式や制約を明示すると、意図した形の出力を得やすくなります。企画の悩みを1件にするのは、その前に依頼の目的を狭くする作業です。モデルへ渡す文を長くする前に、何を解く商品かを1行で言えるかを見ます。

1商品目で守る境界

この検査は、対象者の困り方が本当に存在すること、価格が妥当なこと、テンプレートが役に立つことまでは判定しません。購入者インタビュー、公開後の問い合わせ、返金条件は別に確認が必要です。

また、1件に絞ることが、商品を小さくし続けるルールではありません。最初のテンプレートで使い方が伝わったあとに、買い物リストを別商品や次の版として足す判断もできます。ここで止めたいのは、初稿の時点で2つの価値を混ぜ、どちらを確認したいのか分からなくなる状態です。

AIで個人向けの商品を作るとき、生成結果の出来だけを比べがちです。その前に、企画を1件の悩みまで書ける形にします。人が決める範囲を残し、AIには決まった範囲の下書きを頼みます。この順番なら、やり直す場所も短くなります。

用語

用語この見本での意味
商品企画商品名、対象者、悩み、到達点をまとめた小さなJSONです
悩み商品が最初に扱う、購入者側の具体的な困りごとです
到達点商品を使った後に、対象者ができる状態です
HOLD自動で先へ進めず、人が企画を見直す表示です

出典

この記事をシェア