# YouTube の解説動画、30秒で45%が離れていた ― 冒頭は問いだけにして答えを山場へ

- 記録: LOG454（ひとり研究所の裏側）
- 公開: 2026/11/6
- 記事のページ: https://pixelstomotors.com/record/youtube-opening-question-first
- サイト: Pixels to Motors（ADAPT DESIGN / 島津 栄一） https://pixelstomotors.com/
- 要約: Pixels to Motors の YouTube 解説動画は、本編2本とも冒頭30秒で45%が離れていた。冒頭を、最初の5秒で問いを出し答えは山場まで取っておく形に変え、配膳ロボットの第3回とショート3本で試す。

> AI が読むための記事の全文です（コード・実行ログを含む）。引用するときは上の「記事のページ」の住所を使ってください。

---

**Pixels to Motors の YouTube の解説動画は、2026年10月8日〜11月4日のアナリティクスで、本編2本とも再生から30秒の時点で55%しか残っておらず、冒頭を「最初の5秒で問いを出し、答えは山場まで取っておき、自己紹介と断り書きを冒頭から外す」形に変えました。** あわせて、4万6千回見られたショートから本編へ来たのが8回だけだったので、答えを言わずに本編へ送るショートを3本作り、時間帯を分けて試します。

この見直しで、次のことが変わりました。

- 動画を作るたびに冒頭の並べ方で迷わなくなった。問い → 数字 → 自己紹介、の順と、作る側の版の日付を声と画面に出さないことを、動画の決まり（video_rules.md）に書いた。配膳ロボットのシリーズ第3回「配膳ロボットを増やしたのに、入口の行列が減らない？」は、この決まりで作った最初の1本
- ショートが「知ってもらう」だけで終わらず、本編へ人を送れるかを、数字で確かめられるようになった。判定は、本編のトラフィックソースの「関連のショート動画」が、これまでの28日で8回から増えるかどうか
- 時間と効果：冒頭の決まりで台本づくりが何分縮むかは測っていない。視聴者が残るようになったかは、第3回（11月23日公開）の30秒の時点の視聴者維持率で、ショートの効き目は11月24〜26日ごろに確かめる。この記事の効果は、どれもまだ見込み

きっかけは、YouTube Studio のアナリティクスを本編だけに絞って見直したことです。チャンネル（[@PixelstoMotors](https://www.youtube.com/@PixelstoMotors)）でいちばん見られた「ジャングリア沖縄の赤字89億円、AIとロボットで埋められるか勝手に試算してみた」は、最初の30秒で700億円・100万人・100億円・89億円と数字を4つ並べ、問いが出たのは0:33でした。そのあと自己紹介と断り書きが1分以上続き、2:04で結論を言った直後に、残っていた人がもう一段減っていました。見る人は、何を確かめる回なのかが分かる前に離れ、答えを聞いたところでも離れていた、と読めます。

ショートのほうも、同じ28日で4万6千回見られていたのに、本編へ来たのは8回だけでした。これまでのショートは答えまで入れていたので、本編を見る理由がありませんでした。10月27日の LOG394 で「再生数を追うのをやめ、ロボットの導入を考える人に届ける」と決めたあと、その人たちを本編につなぐ入口が、冒頭とショートの両方で開いていなかったことになります。

| やったこと | なぜ | 結果 |
|---|---|---|
| 本編の視聴者維持率とトラフィックソースを読み直した | どこで人が離れ、どこから来ているかを確かめるため | 2本とも0:30で55%。3分を過ぎた人は最後近くまで残る。ショートから本編へは8回 |
| 冒頭の決まりを4つ、video_rules.md に足した | 次の動画から同じ並べ方で作るため | 問いは最初の5秒・答えは山場・自己紹介と断り書きは冒頭から外す・版の日付は出さない |
| 入口テストのショートを3本作った | ショートから本編へ人を送れるかを試すため | 12〜21秒。答えを言わず「答えは、下のリンクの本編で。」で終える。11/10〜12 に時間帯を分けて出す |
| 配膳ロボットの第3回を、この決まりで作った | 決まりを実際の1本に当てはめるため | 問いは0:00、答えは9:17。11月23日 19:30 に公開予約 |

YouTube の動画は、ロボットの導入を考える人に、このサイトの研究を知ってもらう窓です。導入シミュレーションの試算は、別のページでも試せます。

[配膳ロボットの導入前シミュレーション](https://pixelstomotors.com/serving-robot-one-less-staff)


## 作業ログ ― YouTube の本編の視聴者維持率と、来た道を読み直す

ここから下は作業ログです。数字は YouTube Studio の画面から読み取ったもので、本編が少ない（グラフが出たのは2本）ため、傾向として扱います。効果として書く数字は、測った値ではなく見込みです。

### 視聴者維持率は、動画のどこで人が離れたかを示すグラフ

[視聴者維持率](https://support.google.com/youtube/answer/9314415?hl=ja)は、YouTube Studio で動画ごとに出る、再生の何秒目に何%の人がまだ見ていたかを示すグラフです。動画を開いて「エンゲージメント」のタブを押すと出ます。視聴が少ない動画では、YouTube がグラフを出しません。

| 言葉 | この記事での意味 |
|---|---|
| 視聴者維持率 | ある秒数の時点で、再生を始めた人のうち何%がまだ見ているか |
| 平均視聴時間 | 1回の再生で平均何秒見られたか |
| トラフィックソース | 見た人がどこから来たか（YouTube 検索・ブラウジング・関連動画・ショートのフィードなど） |
| 関連のショート動画 | ショートの画面に付けた本編へのリンクから、本編へ来た回数 |

このプロジェクトでは、10月27日に「再生数と登録者数は判断に使わない」と決め、代わりにクリック率・30秒の時点の視聴者維持率・平均視聴率・シリーズの次の回に進む割合を見ることにしています（LOG394）。

### 本編2本は、どちらも0:30で55%しか残っていなかった

視聴者維持率のグラフが出たのは、次の2本でした。

| 動画 | 長さ | 0:30 | 3:00 | 最後 | 平均視聴 |
|---|---|---|---|---|---|
| ジャングリア沖縄の赤字89億円、AIとロボットで埋められるか勝手に試算してみた | 10分28秒 | 55% | 約30% | 15〜20% | 3分弱（長さの24〜27%） |
| 人型ロボットの出荷は4倍。ロボットにも「ChatGPTの瞬間」は来たのか | 12分30秒 | 55% | 約30% | 15〜20% | 3分弱（長さの24〜27%） |

「ロボットが事故を起こしたら」の回は視聴が少なく、グラフが出ませんでした。

2本とも、最初の30秒で45%が離れ、3分を過ぎて残った人は、ほとんどが最後近くまで見ていました。中身でつかめている人はいるのに、入口で半分近くを落としている形です。

### ジャングリアの回は、問いが0:33、結論のあとにもう一段落ちた

いちばん見られたジャングリアの回の冒頭を、維持率のグラフと並べて見ました。

| 時間 | 画面と声 | 維持率の動き |
|---|---|---|
| 0:00〜0:30 | 700億円・100万人・100億円・89億円と、数字を4つ並べる | 30秒で55%まで減る |
| 0:33 | 問い（ロボットにしたら、赤字は埋まるのか）がやっと出る | ― |
| 0:46〜2:00 | 自己紹介と断り書きが1分以上続く | じわじわ減る |
| 2:04 | 結論（約87億円で、少し届かない）を言う | ― |
| 2:30〜2:50 | 結論のあとの説明 | 45%から33%へ、もう一段落ちる |

[図解: LOG454_opening_timeline.html](https://pixelstomotors.com/embeds/LOG454_opening_timeline.html)

数字を先に並べたのは、「答えか数字を最初に出す」と決めていたからでした（10月27日の C 節）。ところが見る人には、何を確かめる回か分からないまま数字が続き、答えを聞いたら見る理由がなくなっていた、と読めます。

なお、10月27日の C 節に書いた「一番伸びた回でも平均57秒（約9%）」は、チャンネル全体の一覧を書き出した数字から出したもので、動画ごとの画面（平均2分50秒・27%）と食い違っていました。動画ごとの画面を正にすると決まりに書き添えました。

### 本編の来た道と、ショートからは8回だったこと

同じ期間（10月8日〜11月4日）のトラフィックソースです。

| 何を見たか | 数字 |
|---|---|
| チャンネル全体の視聴 | 49,386回。うち93%がショートのフィード |
| 登録の増加 | 23人。うち20人がショート経由 |
| ショートから本編へ | 8回 |
| 本編（788回）の来た道 | YouTube 検索 286・ブラウジング 279・関連動画 111・チャンネルページ 37・外部 28 |
| 検索と関連動画から来た人の平均視聴 | 3分前後 |
| 検索の言葉 | 66%がジャングリア関連（打ち間違いも含む）。フィジカルAI で探して本編に来た人はほぼいない（ショート込みで57回・平均13秒） |
| 外部（ショート込み60回）の内訳 | X 7・LinkedIn 4・Google 検索 3・前の Studio のサイト 2 |

ショートは登録を連れてくるのに、本編へはほとんど人を送っていませんでした。SNS から YouTube へもほぼ流れていません（LinkedIn は動画を直接上げているので、LinkedIn の中で見られた分は YouTube に出ません）。検索から来る人は、会社名・施設名・出来事の名前で探しています。


## 作業ログ ― 冒頭の決まりを4つ、video_rules.md に足す

### 決めた4つ：問いは5秒以内・答えは山場・断り書きは後ろ・版の日付は出さない

分析をもとに、次の3つを video_rules.md の C 節に足しました。どの型（解説回・謎解きの型・考察回）にも当てはめ、1節の型の時間の目安と食い違うときは、こちらを正にします。

1. 最初の5秒で問いを出す。 数字を並べる前に、何を確かめる回かを1文で言う
2. 答えは山場まで取っておく。 冒頭で言うのは問いと、答えの方向を消す予告まで
3. 自己紹介と断り書きを冒頭から外す。 断り書きはその数字が出る場面に回し、自己紹介は短くするか問いのあとへ移す

- ねらい：何を確かめる回かを最初に分かってもらい、答えを聞くまで見る理由を残す
- 変わったこと：「答えか数字を最初に出す」（C 節）と「先に結論を言う」（1節の型）をやめ、問い → 数字 → 自己紹介の順にした
- 見込める効果：30秒の時点の維持率が55%より上がる見込み。第3回の公開後に、同じ画面で確かめる（測った値ではない）

4つ目は、第3回の確認用の動画を見たときに足しました。声と画面に「11月3日の版」「10月末の版」のような、シミュレーションの版の日付が出ていたためです。

> これ、動画の中で11月3日でーとかあるけど、動画見るユーザーに必要な情報か？おかしくないか？

版の日付は作る側の都合で、見る人には要らない情報でした。どの版の数字かは概要欄の「この動画で扱う範囲」に書き、声で断るのは、見る人が数字を読み違えるとき（本物の店の数字ではない、など）だけにしました。第3回では、日付を言っていた5つの文の声を作り直しました。

### video_rules.md の C 節「冒頭の作り方」（足した全文）

```text
### 冒頭の作り方（アナリティクス 2026-10-08〜11-04 で見直した・2026-11-06 エイイチの指示）

本編の視聴者維持率（動画ごとのアナリティクスのエンゲージメントの画面）と、本編だけに絞ったトラフィックソースを見て決めた。全部の型（解説回・謎解きの型・考察回）に当てはめる。1節の型の時間の目安と食い違うときは、こちらを正にする。

1. **最初の5秒で問いを出す。** 数字を並べる前に、何を確かめる回かを1文で言う（例: 「ロボットにしたら、ジャングリア沖縄の赤字は埋まるのか」）。数字は問いのあとに出す
2. **答えは山場まで取っておく。** 冒頭で言うのは問いと、答えの方向を消す予告まで。結論そのものは言わない（1-4 の謎解きの型で決めた読み方を、全部の型に広げた）
3. **自己紹介と断り書きを冒頭から外す。** 断り書き（この数字は足さない・予測ではない・誰の判断かは話さない など）は、その数字が出てくる場面に回す。自己紹介は短くするか、問いのあとへ移す

4. **作る側の版の日付は、声と画面に出さない。** 「11月3日の版」「10月末の版」「11月2日の夜」のような、シミュレーションや試算の版の日付は、見る人に要らない情報（2026-11-06 エイイチの指摘「動画の中で11月3日でーとかあるけど、動画見るユーザーに必要な情報か？おかしくないか？」）。版の違い・どの版の数字かは、概要欄の「この動画で扱う範囲」に書く。声で断るのは、見る人が数字を読み違えるときだけ（本物の店の数字ではない、など）

**根拠（2本の視聴者維持率・本数が少ないので傾向として扱う）**
- 「ジャングリア沖縄の赤字」（10分28秒）と「人型ロボットの出荷は4倍」（12分30秒）は、どちらも0:30の時点で55%しか残っていなかった（最初の30秒で45%が離れた）。3分を過ぎて残った人は、ほとんどが最後近くまで見ていた（3分で約30%・最後で15〜20%）。平均視聴は2本とも3分弱（長さの24〜27%）
- ジャングリアの回の0:00〜0:30は、700億円・100万人・100億円・89億円と数字を4つ並べ、問いが出たのは0:33だった。0:46〜2:00は自己紹介と断り書きが1分以上続き、じわじわ減った。2:04で結論（約87億円で少し届かない）を言ったあと、2:30〜2:50で45%から33%へもう一段落ちた
- 「ロボットが事故を起こしたら」は視聴が少なく、YouTube が維持率のグラフを出さなかった
- 「決めた理由」の「一番伸びた回でも平均57秒（約9%）」は、チャンネル全体の一覧を書き出した数字から出したもので、動画ごとの画面（平均2分50秒・27%）と食い違う。動画ごとの画面を正にする

**ほかに分かったこと（同じ期間）**
- 視聴49,386回のうち93%がショートのフィード。登録の増加23人のうち20人がショート経由。ショートから本編へ来たのは8回だけで、ショートは本編への入口になっていない
- 本編（788回）の来た道は、YouTube 検索286・ブラウジング279・関連動画111・チャンネルページ37・外部28。検索と関連動画から来た人は平均3分前後見ていた
- 検索の66%はジャングリア関連の言葉（打ち間違いも含む）。フィジカルAI で探して本編に来た人はほぼいなかった（ショート込みで57回・平均13秒）。題名には世間で探される会社名・施設名・出来事を先に置く
- 外部60回（ショート込み）のうち、名前が出たのは X 7・LinkedIn 4・Google 検索 3・前の Studio のサイト 2。SNS から YouTube へはほぼ流れていない（LinkedIn は動画を直接上げているので、LinkedIn の中で見られた分は YouTube に出ない）
```

### video_rules.md の更新履歴（この作業で足した3行）

```text
- 2026-11-06（104回目）: C節「冒頭の作り方」に4つ目を足した。作る側の版の日付（11月3日の版・10月末の版など）は声と画面に出さず、概要欄に書く（配膳ロボット第3回「入口の待ちが減らない」の確認用でエイイチが指摘。5文の声を作り直した）

- 2026-11-06（103回目）: 9-5「入口テストのショート」を足した。「何台入れたら店は変わる」（配膳ロボットのシリーズ第1回）の本編へ送るショートを3本作った（1台だと遅い 15.6秒・増やすほど 20.5秒・1人減らせる 12.2秒）。答えを言わず、問いと数字で止め、ハコブくんの声「答えは、下のリンクの本編で。」と「↓ 下のリンクから」で本編へ送る。投稿は本編の公開（11/9）のあと、11/10 12:30・11/11 19:30・11/12 22:00 に分けて時間帯も試す。9-1 の「答えまで入れる」に、入口のショートは 9-5 で試している、と書き添えた

- 2026-11-06（102回目）: C節に「冒頭の作り方」を足した（エイイチの指示）。最初の5秒で問いを出す・答えは山場まで取っておく・自己紹介と断り書きを冒頭から外す、の3つ。根拠は 2026-10-08〜11-04 のアナリティクス（本編2本とも0:30で55%しか残らない・ジャングリアの回は結論を言った直後にもう一段落ちた・ショートから本編へは8回・検索の66%はジャングリア関連の言葉・SNS から YouTube へはほぼ流れない）。C節の「冒頭30秒: 答えか数字を最初に出す」と、1節の型の「先に結論を言う」を改め、自己紹介は問いのあとへ移すか短くするにした。「決めた理由」の平均57秒は一覧の書き出しの数字で、動画ごとの画面（2分50秒）を正にすると書いた
```


## 作業ログ ― 答えを言わない入口テストのショートを3本作る

### ショートは問いと数字で止め、「答えは、下のリンクの本編で。」で終える

入口テストのショートは、配膳ロボットのシリーズ第1回「配膳ロボット1台だと、料理が遅くなる？ ファミレスで0〜6台を試算」（[本編](https://www.youtube.com/watch?v=Ayq0zDZcaWo)・11月9日 19:30 公開）へ送る3本です。本編の文から、問いと数字の文を1〜2つだけ使い、答えの文は入れていません。最後の場面は大きな問いと「答えは本編で」「↓ 下のリンクから」で、ハコブくんの声「答えは、下のリンクの本編で。」を、このショートのために作って足しました。

![入口テストのショート1本目「配膳ロボット1台で、料理が遅くなる？」の最初と最後のコマ。最後は「なぜ？ 答えは本編で ↓ 下のリンクから」で終わる](https://pixelstomotors.com/media/LOG454_02_short_entry_test.png)

| ショート | 長さ | 使った本編の文 | 最後の問い | 公開 |
|---|---|---|---|---|
| 1 配膳ロボット1台で、料理が遅くなった？ | 15.6秒 | 21 なぜ遅くなるのか → 41 58秒が2分12秒に → 85 | なぜ？ | 11/10（火）12:30 |
| 2 配膳ロボット、増やすほど店は良くなる？ | 20.5秒 | 3 増やすほど良くなる？ → 4 0台から6台まで試した → 85 | 結果は？ | 11/11（水）19:30 |
| 3 配膳ロボットを入れたら、スタッフを1人減らせる？ | 12.2秒 | 22 減らせる台数はあるのか → 53 2人だとロボットなしで28.3分 → 85 | 1台？3台？6台？ | 11/12（木）22:00 |

時間帯を昼・夜・遅い夜に分けたのは、過去のショートを公開した時刻で比べると、7〜8時台は視聴が少なく、12時台と19時台が多かったためです（中身と日がばらばらなので参考）。3本とも中身が違うので、時間帯の差は参考として見ます。

- ねらい：ショートを見た人が、答えを知るために本編を開く理由を残す
- 変わったこと：これまでのショートは答えまで入れていた（9-1）。入口テストの3本は答えを言わず、関連動画に本編を必ず付ける
- 見込める効果：本編のトラフィックソースの「関連のショート動画」が、28日で8回より増える見込み。各ショートの公開から2週間後（11月24〜26日ごろ）に確かめ、効いたら本編を出すたびにこの型で1〜3本作る

### video_rules.md の 9-5「入口テストのショート」（足した全文）

```text
### 9-5. 入口テストのショート（2026-11-06「何台入れたら店は変わる」で3本・エイイチ「3本くらい作ってみていいよ」）

ショートから本編へ人が来るかを試す型。10/8〜11/4 は、ショートが4万6千回見られたのに、本編へ来たのは8回だった（C節「冒頭の作り方」の根拠）。今までのショートは 9-1 のとおり答えまで入れていたので、本編を見る理由がなかった、と見立てた。

- **答えは言わない。** 本編の問いの文と、数字の文を1〜2つだけ使い、答えの文（本編のフックの結論・章の答え）は入れない。最後の場面は、大きな問い（なぜ？・結果は？・1台？3台？6台？）＋「答えは本編で」＋「↓ 下のリンクから」
- **最後に声で送る。** ハコブくんの声「答えは、下のリンクの本編で。」を足した（このショートのために作った文。本編の narration.py にはないので、本編の tts/ に 085.wav と index.json の1行を手で足してから書き出す。作業フォルダの README.md）
- 長さは12〜21秒（30秒より短くした。最初の5秒で問いを出す）。図・背景の映像・字幕の作りは 9-2 と同じ（assemble_short2.py・BGV）。部品は `何台入れたら店は変わる/ショート/_common.py`（背景の置き場所・CTA()）
- 投稿: 本編の公開後に出し、関連動画に本編を必ず付ける。時間帯も分けて試す（12:30・19:30・22:00。エイイチ「時間別に投稿して試す」）。過去のショートを公開した時刻で比べると、7〜8時台は視聴が少なく、12時台と19時台が多かった（中身と日がばらばらなので参考）
- 判定は各ショートの公開から2週間後: 本編のトラフィックソースの「関連のショート動画」が8回より増えたか。あわせて「視聴された割合」。3本とも中身が違うので、時間帯の差は参考として見る。効いたら、本編を出すたびにこの型で1〜3本作る
```

### ショートの共通部品 _common.py

```python
# 入口テストのショート（2026-11-06）の共通部品。答えは言わず、本編へ送る（video_rules 9-5）
import os as _os
_here = _os.path.dirname(_os.path.abspath(__file__))
_BG_CANDS = [_os.environ.get("P2M_BG", ""),
             _os.path.expanduser("~/mnt/KIOXIA/r2r2r-data/videos/何台入れたら店は変わる/_取り込み/背景"),
             "/Volumes/KIOXIA/r2r2r-data/videos/何台入れたら店は変わる/_取り込み/背景",
             "/home/claude/v/bgsrc/背景"]
BGDIR = next((c for c in _BG_CANDS if c and _os.path.isdir(c)), _BG_CANDS[2])
CAP_U = "背景：Unity で建てた仮のファミレス（数字はパソコンの中の試算）"
SIM = "パソコンの中の試算・35卓のファミレス・40回の平均"


def bg(name, ss=0, cx=0.5, cy=0.5, h=1.0):
    return dict(file=_os.path.join(BGDIR, name), ss=ss, cx=cx, cy=cy, h=h, veil=0, cap=CAP_U)


def TOP(inner, pad=60):
    return f'<div class="fig c" style="justify-content:flex-start;padding-top:{pad}px">{inner}</div>'


def BIG(t, size, cls=""):
    return f'<div class="bleed {cls}" style="font-size:{size}px;font-weight:900;line-height:.95;letter-spacing:-.04em">{t}</div>'


def CTA(big_html):
    """最後の場面: 大きな問い＋「答えは本編で」＋下のリンクを指す矢印"""
    return TOP(big_html + '<div class="mid" style="margin-top:36px">答えは<span class="red">本編</span>で</div>'
               '<div class="sm" style="margin-top:28px">↓ 下のリンクから</div>')
```

### ショート1 01_1台だと遅い/short.py

```python
# 入口テスト①「配膳ロボット1台で、料理が遅くなる？」本編の答え（なぜ遅いか）は言わずに本編へ送る（2026-11-06）
# 本編の文番号: 21 なぜ遅くなるのか → 41 58秒が2分12秒に → 85 答えは、下のリンクの本編で（このショートのために作った声）
# -*- coding: utf-8 -*-
import os as _os, sys as _sys
_here = _os.path.dirname(_os.path.abspath(__file__))
for _c in (_os.environ.get("P2M_BASE", ""), _os.path.join(_here, "..", "..", "..", "_制作ベース")):
    if _c and _os.path.exists(_os.path.join(_c, "short_kit.py")):
        _sys.path.insert(0, _c); break
_sys.path.insert(0, _os.path.join(_here, ".."))
from short_kit import *
from _common import *
SRC = _os.path.join(_here, "..", "..")

HEAD = '配膳ロボット1台で、<br><span class="red">料理が遅くなる？</span>'
SEGS = [
    dict(i=21, scene="q", pause=0.3, face="surprise"),
    dict(i=41, scene="num", pause=0.4),
    dict(i=85, scene="cta", pause=1.0, face="smile"),
]
_N1 = '<div class="sm">料理ができてから卓まで</div>' + BIG('なし <span class="blue">58秒</span>', 150)
_N2 = _N1 + BIG('1台 <span class="red">2分12秒</span>', 135)
VS = {
    "q": [dict(at=0, m="slam", html=TOP('<div class="sm muted">ロボットを1台入れたら</div>' + BIG("料理が", 190) + BIG("遅くなった", 175, "red")))],
    "num": [dict(at=0, m="pop", html=TOP(_N1 + f'<div class="src" style="margin-top:20px">{SIM}</div>')),
            dict(at='0+4.0', m="slam", html=TOP(_N2 + f'<div class="src" style="margin-top:20px">{SIM}</div>')),
            dict(at='0+6.2', m="slam", html=TOP(_N2 + BIG("倍以上！", 150, "red")))],
    "cta": [dict(at=0, m="slam", html=CTA(BIG("なぜ？", 290, "red")))],
}
BGV = {
    "q": bg("fv-oblique.mp4", ss=2, cx=0.5, h=1.0),
    "num": bg("LOG364_v4_run4_robots_back_and_forth.mp4", ss=4, cx=0.42, h=0.9),
    "cta": bg("top-pass.mp4", ss=3, cx=0.45, h=0.95),
}
```

### ショート1 01_1台だと遅い/sound.py

```python
# ショートの音（本編と同じ BGM・場面が替わる音。章の音は使わない）。assemble_short*.py が読む（video_rules.md 9-3）
BGM = [dict(file="sound/bgm_明るいB_2.mp3", start=0, end=None, level=-23, gap=-16, fade_in=0.3, fade_out=1.2)]
SE = []
SCENE_SE = dict(file="se_rise", level=-6, offset=-0.15)
```

### ショート2 02_増やすほど/short.py

```python
# 入口テスト②「ロボットを増やすほど、店は良くなる？」本編の答え（何台で変わるか）は言わずに本編へ送る（2026-11-06）
# 本編の文番号: 3 増やせば増やすほど良くなる？ → 4 0台から6台まで試した → 85 答えは、下のリンクの本編で
# -*- coding: utf-8 -*-
import os as _os, sys as _sys
_here = _os.path.dirname(_os.path.abspath(__file__))
for _c in (_os.environ.get("P2M_BASE", ""), _os.path.join(_here, "..", "..", "..", "_制作ベース")):
    if _c and _os.path.exists(_os.path.join(_c, "short_kit.py")):
        _sys.path.insert(0, _c); break
_sys.path.insert(0, _os.path.join(_here, ".."))
from short_kit import *
from _common import *
SRC = _os.path.join(_here, "..", "..")

HEAD = 'ロボットを増やすほど、<br><span class="red">店は良くなる？</span>'
SEGS = [
    dict(i=3, scene="q", pause=0.3),
    dict(i=4, scene="try", pause=0.4),
    dict(i=85, scene="cta", pause=1.0, face="smile"),
]
VS = {
    "q": [dict(at=0, m="slam", html=TOP(BIG("2台", 260))),
          dict(at='0+1.1', m="slam", html=TOP(BIG("3台", 260))),
          dict(at='0+2.3', m="slam", html=TOP(BIG('<span class="red">6台</span>', 300))),
          dict(at='0+3.6', m="pop", html=TOP('<div class="mid">増やすほど</div>' + BIG("良くなる？", 170, "red")))],
    "try": [dict(at=0, m="pop", html=TOP('<div class="sm">混む2時間を、パソコンで再現</div>' + BIG('0台<span class="red">→</span>6台', 180)
                                         + '<div class="mid" style="margin-top:20px">1台ずつ増やした</div>'
                                         + f'<div class="src" style="margin-top:20px">{SIM}</div>'))],
    "cta": [dict(at=0, m="slam", html=CTA(BIG("結果は？", 230, "red")))],
}
BGV = {
    "q": bg("LOG357_v1_stage2_oblique.mp4", ss=6, cx=0.5, h=1.0),
    "try": bg("top-busy.mp4", ss=2, cx=0.45, h=0.95),
    "cta": bg("fv-oblique.mp4", ss=10, cx=0.55, h=1.0),
}
```

### ショート2 02_増やすほど/sound.py

```python
# ショートの音（本編と同じ BGM・場面が替わる音。章の音は使わない）。assemble_short*.py が読む（video_rules.md 9-3）
BGM = [dict(file="sound/bgm_明るいB_2.mp3", start=0, end=None, level=-23, gap=-16, fade_in=0.3, fade_out=1.2)]
SE = []
SCENE_SE = dict(file="se_rise", level=-6, offset=-0.15)
```

### ショート3 03_1人減らせる/short.py

```python
# 入口テスト③「ロボットを入れたら、1人減らせる？」本編の答え（何台でも回らなかった）は言わずに本編へ送る（2026-11-06）
# 本編の文番号: 22 人を減らせる台数は、あるのか → 53 2人にするとロボットなしで28.3分 → 85 答えは、下のリンクの本編で
# -*- coding: utf-8 -*-
import os as _os, sys as _sys
_here = _os.path.dirname(_os.path.abspath(__file__))
for _c in (_os.environ.get("P2M_BASE", ""), _os.path.join(_here, "..", "..", "..", "_制作ベース")):
    if _c and _os.path.exists(_os.path.join(_c, "short_kit.py")):
        _sys.path.insert(0, _c); break
_sys.path.insert(0, _os.path.join(_here, ".."))
from short_kit import *
from _common import *
SRC = _os.path.join(_here, "..", "..")

HEAD = 'ロボットを入れたら、<br><span class="red">1人減らせる？</span>'
SEGS = [
    dict(i=22, scene="q", pause=0.3, face="think"),
    dict(i=53, scene="num", pause=0.4),
    dict(i=85, scene="cta", pause=1.0, face="smile"),
]
VS = {
    "q": [dict(at=0, m="slam", html=TOP(BIG("1人", 300, "red") + BIG("減らせる？", 165)))],
    "num": [dict(at=0, m="pop", html=TOP('<div class="sm">スタッフ3人 → 2人</div><div class="sm" style="margin-top:12px">ロボットなしで、席に着くまで</div>')),
            dict(at='0+3.0', m="slam", html=TOP('<div class="sm">スタッフ3人 → 2人</div><div class="sm" style="margin-top:12px">ロボットなしで、席に着くまで</div>'
                                                 + BIG("28.3分", 230, "red") + f'<div class="src" style="margin-top:20px">{SIM}</div>'))],
    "cta": [dict(at=0, m="slam", html=TOP(BIG("1台？", 200))),
            dict(at='0+0.6', m="slam", html=TOP(BIG("1台？3台？", 170))),
            dict(at='0+1.2', m="slam", html=CTA(BIG('1台？3台？<span class="red">6台？</span>', 112)))],
}
BGV = {
    "q": bg("LOG364_v3_run3_people_and_robots.mp4", ss=8, cx=0.42, h=0.9),
    "num": bg("top-busy.mp4", ss=8, cx=0.45, h=0.95),
    "cta": bg("LOG357_v1_stage2_oblique.mp4", ss=20, cx=0.5, h=1.0),
}
```

### ショート3 03_1人減らせる/sound.py

```python
# ショートの音（本編と同じ BGM・場面が替わる音。章の音は使わない）。assemble_short*.py が読む（video_rules.md 9-3）
BGM = [dict(file="sound/bgm_明るいB_2.mp3", start=0, end=None, level=-23, gap=-16, fade_in=0.3, fade_out=1.2)]
SE = []
SCENE_SE = dict(file="se_rise", level=-6, offset=-0.15)
```

### 書き出しのログ（3本）

```text
=== 01_1台だと遅い/log.txt
長さ 15.6秒
重なり 0 件。図の段 5 枚
BGM 1本・効果音 2個 → mix.wav
    3.15秒  文001  se_rise  -6dB  「料理ができてから卓に着くまで。ロ」
   11.78秒  文002  se_rise  -6dB  「答えは、下のリンクの本編で。」
frames 467 = 15.6s  out.mp4 3.7MB
=== 02_増やすほど/log.txt
長さ 20.5秒
重なり 0 件。図の段 6 枚
BGM 1本・効果音 2個 → mix.wav
    7.62秒  文001  se_rise  -6dB  「そこで、ファミレスの混む時間帯の」
   16.68秒  文002  se_rise  -6dB  「答えは、下のリンクの本編で。」
frames 614 = 20.5s  out.mp4 3.9MB
=== 03_1人減らせる/log.txt
長さ 12.2秒
重なり 0 件。図の段 6 枚
BGM 1本・効果音 2個 → mix.wav
    2.62秒  文001  se_rise  -6dB  「スタッフを2人にすると、ロボット」
    8.38秒  文002  se_rise  -6dB  「答えは、下のリンクの本編で。」
frames 365 = 12.2s  out.mp4 2.6MB
```

### ショートのフォルダの README.md

```text
# 何台入れたら店は変わる ― ショート（入口テスト・2026-11-06）

本編の答えを言わずに、問いと数字で止めて本編へ送るショート3本（video_rules 9-5）。

- 01_1台だと遅い: 本編の文 21 → 41 → 85
- 02_増やすほど: 本編の文 3 → 4 → 85
- 03_1人減らせる: 本編の文 22 → 53 → 85
- 文 85「答えは、下のリンクの本編で。」はこのショートのために作った声（voice_eleven/ハコブ_入口/試し_01.mp3）。本編の narration.py にはない。書き出す前に、本編の tts/ に 085.wav と index.json の1行を足す（tts_import.py では入らない）
- 共通の部品は _common.py（背景の映像の置き場所・最後の場面 CTA()）
- 背景の映像は KIOXIA の videos/何台入れたら店は変わる/_取り込み/背景/
- 書き出し: 各フォルダで python3 ../../../_制作ベース/assemble_short2.py（--render で一覧だけ）
- 上げるものは KIOXIA の videos/何台入れたら店は変わる/ショート/
```

### ショートのタイトル・説明文・投稿のしかた（ショート_タイトルと説明文.txt）

```text
入口テストのショート 3本（2026-11-06 作成）
本編: 配膳ロボット1台だと、料理が遅くなる？ ファミレスで0〜6台を試算
本編の URL: https://www.youtube.com/watch?v=Ayq0zDZcaWo （11/9 19:30 公開予約）

ねらい: ショートから本編へ人が来るかを試す。今までのショートは答えまで入れていたので、本編を見る理由がなかった（10/8〜11/4 でショートから本編へは8回）。この3本は答えを言わず、問いと数字で止め、下の関連動画のリンクへ送る。
あわせて、投稿の時間帯も分けて試す（昼・夜・遅い夜）。

投稿のしかた（3本とも同じ）
・本編の公開（11/9 19:30）のあとに出す
・YouTube Studio のショートの編集画面で、関連動画に本編を選ぶ（これがないとテストにならない）
・字幕ファイルは上げない（焼き込み済み）

判定（各ショートの公開から2週間後・11/24〜26 ごろ）
・本編のアナリティクス → トラフィックソース → 関連のショート動画 の回数（今までは28日で8回）
・各ショートの「視聴された割合（スワイプされなかった割合）」と、時間帯ごとの視聴回数
・3本とも中身が違うので、時間帯の差は参考として見る


==============================
ショート1_1台だと遅い_版1.mp4（15.6秒）
予約: 11/10（火）12:30

タイトル:
配膳ロボット1台で、料理が遅くなった？ ファミレスで試算

説明文:
料理ができてから卓に着くまで、ロボットなしで58秒。1台入れたら2分12秒に延びました。なぜでしょう？
答えは本編で：配膳ロボット1台だと、料理が遅くなる？ ファミレスで0〜6台を試算
https://www.youtube.com/watch?v=Ayq0zDZcaWo

数字はパソコンの中の試算（35卓のファミレス・40回の平均）。背景は Unity で建てた仮のファミレスです。
ナレーションは AI 音声（ElevenLabs）です。
#配膳ロボット #ファミレス #フィジカルAI


==============================
ショート2_増やすほど_版1.mp4（20.5秒）
予約: 11/11（水）19:30

タイトル:
配膳ロボット、増やすほど店は良くなる？ 0台から6台で試算

説明文:
ファミレスの混む2時間をパソコンの中で再現して、配膳ロボットを0台から6台まで1台ずつ増やしてみました。結果は本編で。
配膳ロボット1台だと、料理が遅くなる？ ファミレスで0〜6台を試算
https://www.youtube.com/watch?v=Ayq0zDZcaWo

数字はパソコンの中の試算（35卓のファミレス・40回の平均）。背景は Unity で建てた仮のファミレスです。
ナレーションは AI 音声（ElevenLabs）です。
#配膳ロボット #ファミレス #フィジカルAI


==============================
ショート3_1人減らせる_版1.mp4（12.2秒）
予約: 11/12（木）22:00

タイトル:
配膳ロボットを入れたら、スタッフを1人減らせる？

説明文:
ファミレスのスタッフを3人から2人にすると、ロボットなしでは席に着くまで28.3分。では、配膳ロボットを何台入れたら1人減らせるのか。答えは本編で。
配膳ロボット1台だと、料理が遅くなる？ ファミレスで0〜6台を試算
https://www.youtube.com/watch?v=Ayq0zDZcaWo

数字はパソコンの中の試算（35卓のファミレス・40回の平均）。背景は Unity で建てた仮のファミレスです。
ナレーションは AI 音声（ElevenLabs）です。
#配膳ロボット #ファミレス #フィジカルAI
```


## 作業ログ ― 配膳ロボットの第3回を、冒頭の決まりで作る

### 第3回は0:00で問いを出し、答えは9:17まで言わない

配膳ロボットのシリーズ第3回「配膳ロボットを増やしたのに、入口の行列が減らない？ ファミレスを3Dで再現したら」（10分33秒）は、図面から作った仮のファミレスを、パソコンの試算と、人とロボットが歩く3Dの店（Unity）で回して比べた回です。謎解きの型で作り、冒頭は決まりのとおりに並べました。

![配膳ロボットのシリーズ第3回の0:02。最初の文で「配膳ロボットを増やしたのに、入口の待ちが減らない？」という問いを出している](https://pixelstomotors.com/media/LOG454_01_opening_question.png)

| 時間 | 中身 | 決まりとの対応 |
|---|---|---|
| 0:00 | 問い「配膳ロボットを増やしたのに、入口で待つお客さんが、思ったほど減らない。なぜでしょう。」 | 最初の5秒で問い |
| 0:06〜0:48 | 数字（試算では4.1分→1.1分、3Dの店では3.9分→2.5分、28卓の店では10.8分→18.0分）と、仮のファミレスだという断り | 数字は問いのあと。断りは数字の場面で1文だけ |
| 0:53〜1:41 | 作り手の紹介と、番組の名前 | 自己紹介は問いと数字のあと |
| 2:16 | 予告「今日の犯人は、ロボットの足の速さではありません」 | 答えの方向を1つ消すだけ |
| 9:17 | 答え「止まるたびに人の手。片付けと案内が後回し」 | 答えは山場まで取っておく |

![第3回の9:22。今日の謎の答えのカード「止まるたびに人の手／片付けと案内が後回し」](https://pixelstomotors.com/media/LOG454_03_answer_card.png)

第3回の確認では、答えのカードの文字が枠からはみ出していたので、2つの文を並べる形から、大きな2行の形（104px）に変えて書き出し直しました。版の日付を消した5つの文は、声を作り直しています。公開は、第2回（11月16日 19:30）の1週間後の11月23日 19:30 に予約しました。

### 第3回の冒頭の文（narration.py の 0〜21 番）

```text
000 hook_q surprise 「配膳ロボットを増やしたのに、入口で待つお客さんが、思ったほど減らない。なぜでしょう。」 間0.35
001 hook_num base 「42卓のファミレス。パソコンの試算では、ロボットを2台入れると、｜お客さんが店に来てから席に着くまでの時間が、4.1分から1.1分に縮みました。」 間0.35
002 hook_num2 surprise 「ところが、同じ店を3Dで建てて、人とロボットを歩かせると、3.9分が2.5分。｜縮み方は、試算の半分足らずでした。」 間0.35
003 hook_num3 doubt 「もっと狭い28卓の店では、2台目を入れたら、かえって延びました。10.8分が、18.0分に。｜試算でも少し延びますが、3Dの店では、7分も延びたんです。」 間0.35
004 hook_src base 「どちらも、この番組で作った、仮のファミレスでの話です。本物の店で測った数字では、ありません。」 間0.35
005 hook_joke trouble 「ちなみにハコブくんも、病院の廊下で、よく立ち止まっています。」 間0.35
006 ei_intro smile 「ここで、もう1人紹介させてください。この番組を作っている、エイイチです。」 間0.35
007 ei_react think 「この結果を見たエイイチは、こう話していました。」 間0.35
008 ei_react think 「どこに原因があるのか、よく調べないといけないなと思ったな。」 間0.8
009 hook_q2 doubt 「ロボットは、料理を運ぶのは得意です。それなのに、なぜ、入口のお客さんが、思ったほど減らないのか。｜この謎を、今日は3つの手がかりで解いていきます。」 間1.2
010 title smile 「Pixels to Motors。案内役のハコブくんです。」 間0.35
011 title base 「この番組では、フィジカルAIのニュースや実機の記録から、現場で使える形を考えます。」 間0.35
012 title_eiichi smile 「エイイチは、本業のデザイナーをしながら、ロボティクスの研究と開発をしています。｜その中で分かったことと、そこから考えた見立てを、ハコブくんがお伝えします。」 間1.2
013 question base 「今日の謎は、これです。配膳ロボットを増やしたのに、入口で待つお客さんが、なぜ思ったほど減らないのか。」 間0.35
014 define base 「ここで言う入口で待つ時間は、お客さんが店に来てから、席に案内されて座るまでの時間です。｜第1回で、席に着くまでの時間、と呼んだものと同じです。」 間0.35
015 define2 base 「今日の店は、第1回と第2回の、35卓の店ではありません。図面から作った、仮のファミレス6つです。｜同じ店を、パソコンの試算と、3Dの店の、2つの道具で回して比べました。」 間0.35
016 teaser wink 「先に言っておくと、今日の犯人は、ロボットの足の速さではありません。」 間1.2
017 hayatochiri joy 「とはいえ、ハコブくんは最初、こう考えました。3Dの店のロボットは、足が遅いんだ。」 間0.35
018 hayatochiri2 trouble 「……でも、3Dの店のロボットが走る速さは、秒速0.57メートルほど。試算の0.5メートルより、少し速いくらいです。｜足の速さでは、説明できません。」 間1.2
019 promise_cards base 「謎を解く前に、約束を1つ。今日の話は、出どころを、画面の左上に札で出します。」 間0.35
020 promise_cards smile 「エイイチの記録、公開されている実物の店の動画、そしてエイイチの見立て。｜どこまで信じるかは、札を見て決めてください。」 間0.35
021 promise_fair base 「それから、3Dの店も、シミュレーションです。作りの間違いを見つけては、直し続けています。」 間1.2
```

### 第3回の書き出しのログ（文ごとの開始時間）

```text
BGM 1本・効果音 55個 → mix.wav
    6.25秒  文001  se_rise  -6dB  「42卓のファミレス。パソコンの試」
   17.85秒  文002  se_rise  -6dB  「ところが、同じ店を3Dで建てて、」
   28.28秒  文003  se_rise  -6dB  「もっと狭い28卓の店では、2台目」
   41.32秒  文004  se_rise  -6dB  「どちらも、この番組で作った、仮の」
   48.95秒  文005  se_rise  -6dB  「ちなみにハコブくんも、病院の廊下」
   53.52秒  文006  se_rise  -6dB  「ここで、もう1人紹介させてくださ」
   67.22秒  文009  se_rise  -6dB  「ロボットは、料理を運ぶのは得意で」
   79.47秒  文010  se_chapter_glock  -8dB  「Pixels to Motors」
  101.87秒  文013  se_chapter_marimba  -8dB  「今日の謎は、これです。配膳ロボッ」
  110.05秒  文014  se_rise  -6dB  「ここで言う入口で待つ時間は、お客」
  121.55秒  文015  se_rise  -6dB  「今日の店は、第1回と第2回の、3」
  136.35秒  文016  se_rise  -6dB  「先に言っておくと、今日の犯人は、」
  142.22秒  文017  se_rise  -6dB  「とはいえ、ハコブくんは最初、こう」
  149.28秒  文018  se_rise  -6dB  「……でも、3Dの店のロボットが走」
  162.75秒  文019  se_rise  -6dB  「謎を解く前に、約束を1つ。今日の」
  179.35秒  文021  se_rise  -6dB  「それから、3Dの店も、シミュレー」
  186.82秒  文022  se_rise  -6dB  「たとえを1つだけ置かせてください」
  192.35秒  文023  se_rise  -6dB  「運ぶのは早い。でも、困ると立ち止」
  201.12秒  文024  se_rise  -6dB  「今日の配膳ロボットは、この新人。」
  209.55秒  文025  se_rise  -6dB  「3つの手がかりを見ていきます。｜」
  229.77秒  文027  se_chapter_marimba  -8dB  「1つ目の手がかり、新人が立ち止ま」
  241.02秒  文029  se_rise  -6dB  「3Dの6店で数えると、スタッフが」
  255.98秒  文030  se_rise  -6dB  「ただし、3Dの店の助けと、試算の」
  265.15秒  文031  se_rise  -6dB  「ハコブくんは思いました。止まるの」
  270.72秒  文032  se_rise  -6dB  「……半分は当たりです。1台のとき」
  282.77秒  文033  se_chapter_marimba  -8dB  「2つ目の手がかり、新人どうしの鉢」
  287.15秒  文034  se_rise  -6dB  「6店とも、ロボットの待機場所を、」
  302.82秒  文035  se_rise  -6dB  「待機場所の1台分の幅は、この番組」
  319.72秒  文036  se_rise  -6dB  「狭い所で2台が向かい合うと、どち」
  330.88秒  文037  se_rise  -6dB  「9分。ハコブくんなら、その間に、」
  336.45秒  文038  se_rise  -6dB  「実物の店はどうか。ロボットどうし」
  349.45秒  文039  se_rise  -6dB  「そこで3Dの店も、30秒動けなけ」
  357.57秒  文040  se_chapter_marimba  -8dB  「ここで、現場の証人を呼びます。昔」
  408.53秒  文047  se_chapter_marimba  -8dB  「3つ目の手がかり、先輩が止める仕」
  421.78秒  文049  se_rise  -6dB  「28卓の店にロボットを2台入れる」
  437.75秒  文050  se_rise  -6dB  「空いた卓を片付けないと、次のお客」
  445.98秒  文051  se_rise  -6dB  「ハコブくんは思いました。だったら」
  450.68秒  文052  se_rise  -6dB  「……2台目を足すと、鉢合わせが増」
  468.40秒  文053  se_chapter_marimba  -8dB  「さて、3つの手がかりがそろいまし」
  473.32秒  文054  se_rise  -6dB  「配膳ロボットを増やしても、入口で」
  482.68秒  文055  se_rise  -6dB  「試算は、その回数を100往復に1」
  500.58秒  文056  se_rise  -6dB  「人が助けに行くあいだ、片付けと案」
  510.42秒  文057  se_rise  -6dB  「ただし、試算は、まだこの数字に直」
  526.65秒  文058  se_rise  -6dB  「新人は、悪くありません。困ったと」
  536.30秒  文059  se_chapter_marimba  -8dB  「ここからは、エイイチの見立てです」
  539.02秒  文060  se_rise  -6dB  「店は、人を中心に作られている。ロ」
  546.52秒  文061  se_rise  -6dB  「エイイチは、ロボットの道の選び方」
  556.73秒  文062  se_chapter_marimba  -8dB  「では、今日の謎に答えます。」
  578.02秒  文064  se_rise  -6dB  「次に、配膳ロボットのいる店に行っ」
  582.45秒  文065  se_rise  -6dB  「1つ目、ロボットが止まったとき、」
  587.92秒  文066  se_rise  -6dB  「2つ目、ロボットが待っている場所」
  593.22秒  文067  se_rise  -6dB  「3つ目、ロボットが止まっているあ」
  598.45秒  文068  se_rise  -6dB  「ハコブくんも、廊下で止まったとき」
  607.88秒  文069  se_rise  -6dB  「この試算は、サイトのシリーズのペ」
  617.03秒  文070  se_chapter_marimba  -8dB  「この動画が役に立ったら、高評価と」
ハコブくんの口を止める文: [8, 42, 44, 45, 60]
frames 18990 = 633.0s  確認用 24.5MB (crf 29)
```

### 次に確かめること

| いつ | 何を | 何と比べる |
|---|---|---|
| 11月9日 19:30 以降 | 第1回の公開と、ショート3本の関連動画の設定 | ― |
| 11月24〜26日ごろ | 第1回のトラフィックソースの「関連のショート動画」と、各ショートの視聴された割合 | これまでの28日で8回 |
| 11月23日の公開から1〜2週間 | 第3回の0:30の時点の視聴者維持率 | ジャングリアの回・人型ロボットの回の55% |

**冒頭で答えを言わないことと、ショートで答えを言わないことは、同じ判断です。** どちらも、見る人が次の数秒・次の1本を見る理由を残すためで、効いたかは上の3つの数字で確かめます。
