分析レポート

リールの勝ち型 — 定義・因数分解・実装への反映

参照リールから何を取り出し、どう言語化し、それがシステムのどこに入ったか。実装ランブックの姉妹編です。

対象: P1(多言語テキスト)× Phase 0 / 分析は人手、成果物のみDBへ

01

全体像 — 分析はシステムの外、成果物だけが中に入る

CLAUDE.md の「P1でやらないこと」に成果分析が含まれるため、この工程は人手で回します。接点は prompt_template の1行だけです。

HUMAN / アナログ SYSTEM / P1 参照リール3〜12本 因数分解固定スキーマ 勝ち型7項目に言語化 prompt_templateDBの1行 生成4言語ループ output共有ファイル ギャップを測って型を更新 — 1周でP1に間に合う。Phase 0 中は月1回まわす —
Fig.1 — 分析ループと P1 の境界
02

「勝ち筋のあるリール」の定義

他人のインサイトは取得できないため、可視の数値だけで判定します。同一アカウント内で比較することで、フォロワー層とジャンルを定数化しています。

判定式 当たり率 = そのリールのいいね数 直近20本のいいね中央値 再生数は非公開のことが多く、いいね数が最も安定して取れる代理指標 HIT ≥ 3.0 勝ち型の抽出元 各アカウント2本 MISS ≤ 0.5 対照群 各アカウント2本
Fig.2 — hit / miss の判定基準

伸びたリールだけを見ても、伸びた理由は分からない

  • hit だけ10本並べても、共通点が「勝因」なのか「そのジャンルなら全部そう」なのか区別できません
  • 同一アカウントの miss と対にすることで、変数が投稿の作りだけに絞られます。ここが最も安く効きます
03

因数分解のスキーマ — A面とB面を分ける

P1の出力はテキストのみです。テキストで再現できる層(A面)と撮影・編集の層(B面)を最初に分離しないと、ギャップ表が「動画が作れていない」で埋まり使えなくなります。

SEC 0291621 フック 展開 CTA A面 — LLMが書く テロップ 読み上げ キャプション 15字以内 13字 × 2行 13字 × 2行 保存を促す 話し言葉・1文を長めに(字幕の連結にしない) 1行目に数字 / ハッシュタグ12個(地名4・ジャンル5・大3) B面 — 人が撮る・編む カット 1.8秒ごとに切り替え 肉声ナレーション + BGM(音源名・使用リール数を控える) B面は shooting_guide.md へ分離 — システムは触らない
Fig.3 — 1本のリールを分解したときの層構造

分解の原則

  • 観測値だけを埋める。読み取れない項目は空欄にし、推測で補わない
  • 同じスキーマを、後で自分の出力にもかける。だから項目を固定する
04

分解して分かったこと

hit群と miss群で値が分かれた項目だけを採用します。差が出なかった項目が判明することにも価値があります — そこに労力を割かなくてよいと分かるからです。

差が出た項目 採用

冒頭が問いかけ
hit 6/6
1/6
冒頭が15字以内
hit 5/6
2/6
末尾にCTAあり
hit 6/6
2/6
キャプション1行目に数字
hit 4/6

緑=hit群 / 灰=miss群。n=6+6

差が出なかった項目 不採用

  • テロップのフォント・色 — hit / miss ともにばらつく
  • BGMがトレンド音源か — hit にも非トレンドが混在
  • 尺の長短 — 15〜40秒に散らばり傾向なし
  • 絵文字の数 — 差なし

これらは指示に書かない

  • 根拠のない項目をテンプレに混ぜると、次に検証できなくなります
05

言語化した勝ち型 — 7項目

01 / hook
15文字以内の問いかけ
店名から始めない
02 / structure
4幕
0-2 / 2-9 / 9-16 / 16-21秒
03 / subtitle
1行13字・1画面2行
言語ごとに上限が変わる
04 / voice
話し言葉・1文長め
字幕の連結にしない
05 / caption
1行目に数字
価格・年数・本数など
06 / cta
末尾で保存を促す
プロフィール誘導より先
07 / hashtag
12個前後
地名4・ジャンル5・大3
— / 保留
n<3 の傾向
仮説として別記。指示に入れない
06

実装への反映 — 7項目がどこに入ったか

設計制約1(構成パターンをコードに書かない)を守っていたため、大半はDBの1行の書き換えで済みます

勝ち型 7項目 01 hook 02 structure 03 subtitle 04 voice 05 caption 06 cta 07 hashtag 置き場所 prompt_template.body DBの1行。コード変更なし・再デプロイなし・即差し替え可 → 01 hook / 04 voice / 05 caption / 06 cta / 07 hashtag 5 / 7 項目 構造化出力スキーマ beats を持つ形に変更=コードを触る → 02 structure / 1項目 language テーブル subtitle_max_chars の値を更新 → 03 subtitle / 1項目
Fig.4 — 勝ち型から実装への写像
07

ギャップ表 — 現行出力と勝ち型の差

項目勝ち型現行出力判定手当ての置き場所
hook.chars15字以内34字不一致prompt_template.body
hook.type問いかけ断言(店名始まり)不一致prompt_template.body
structure.beats4幕2幕不一致構造化出力スキーマ(要コード変更)
subtitle.max_chars13字26字不一致language テーブルの値
caption.first_line数字を含む形容詞始まり不一致prompt_template.body
cta.action保存を促すなし不一致prompt_template.body
glossary 表記辞書どおり辞書どおり一致手当て不要
voice / display 分離文体が別字幕の連結部分prompt_template.body

8項目中6項目は、コードを触らずに直る

  • 設計制約1(構成パターンをコードに書かない)を守っていたことの、これが具体的な見返りです
  • コード変更が要るのは structure.beats のみ。ここだけ計画→承認→実装の手順を踏みます
08

P1の範囲との関係

システムに入れたもの

  • prompt_template の本文(勝ち型5項目)
  • language.subtitle_max_chars の値
  • 構造化出力の beats(1箇所のみコード変更)

入れなかったもの

  • 分解ツール・成果分析機能 — P1の「やらないこと」
  • B面(カット割り・BGM)の指示 — 撮影ガイドとして人手側へ
  • n<3 の仮説 — 検証できるまで保留

次の更新は、自分の投稿が10本たまり hit / miss を自分のアカウント内で判定できるようになった時点です。そのとき差し替えるのは、原則 prompt_template の1行だけで済みます。