制作の仕組み
1本の動画は、題材の決定から配信まで7つの工程を経て作られます。 すべてPythonで実装した自社の制作パイプラインで処理され、 各シリーズは決められた時刻に自動で起動します。
1. 題材の決定
シリーズごとに異なる規則で、その日に扱う題材を決めます。 クイズ系は整備済みの問題集から日付をもとに選び、直近の出題と重複しないよう周期を管理します。 物語系は1話1ファイルで管理した台本を順に消化します。 「今日の歴史」のように外部データを使うシリーズでは、Wikipedia日本語版のAPIから取得し、 取得が不完全だった場合は時間をおいて再取得します。
2. 台本の生成
視聴者が最後まで聞ける構成に整えます。具体的には、ひとつの場面が長くなりすぎないよう、 5秒前後で切り替わる単位に分割します。これは実際の視聴維持率データに基づく設計で、 1場面が13秒あったシリーズと5秒だったシリーズでは、維持率に4倍近い差が出ていました。
史実を扱う場合、数値・固有名詞・結末は改変しません。 確認できない事柄を、あたかも事実であるかのように述べることもしません。
3. 音声合成
ローカルで動作するVOICEVOXにより、日本語のナレーション音声を合成します。 シリーズごとに話者と話し方を固定し、聞いただけでどのシリーズか分かるようにしています。 英単語はカタカナへ変換し、アルファベットの棒読みを避けています。
4. 映像の描画
音声の長さを測り、それに合わせて1フレームずつ画像を描画します。 字幕は音声の進行に同期して1文字ずつ表示され、読み上げと文字がずれないようにしています。 資料写真を使う回では、写真を静止させず、緩やかに拡大・移動させています。
シリーズごとに配色・書体・レイアウトを変えており、 一覧に並んだときに見分けがつくようにしています。
5. 音楽
使用する楽曲は、ライセンスを確認したもののみです。 Kevin MacLeod(incompetech.com、Creative Commons: By Attribution 4.0)および Bensound の楽曲を使用し、それぞれが求めるクレジット表記を動画の概要欄へ自動的に挿入します。 出所の不明な音源は使用しません。
6. サムネイル
題材名を大きく配置した16:9の画像を自動生成します。 シリーズごとに配色とバッジを変え、同じシリーズの回が続いても見分けられるよう、 回ごとに背景の色調を変えています。
7. 配信
YouTube Data APIを用いて動画をアップロードし、 タイトル・説明文・タグ・カテゴリ・サムネイルを設定します。 Instagramへは Instagram Graph API を用いてリールとして投稿します。 説明文にはシリーズごとの定型文に加え、その回固有の情報(出題内容・原典など)を含めています。
品質の管理
台本データは投稿前に機械的な検査を通します。 日本語の台本に他言語の文字が混入していないか、 JSONとして正しく読めるか、必要な項目が欠けていないかを確認します。 これは、合成音声が正しく読めない文字列が混入する事故が実際に起きたためです。
配信後は、視聴維持率・視聴時間・登録者の増減を毎日自動で記録し、 シリーズごとの推移を追跡しています。数値が低いシリーズは構成を見直し、 改善の前後で比較できるようスナップショットを保存しています。