科普動画パイプライン
B站(ビリビリ)UP主「科普観察室」の14ステッププロセスを再現。シリーズプロジェクトは動画エフェクトライブラリのリポジトリ(Remotion)に格納:
- ルール(各エピソード開始前に必読):
<リポジトリルート>/ルール/ - 各エピソードは一つのコンテナ:
effects/<episode-id>/(ドキュメント、データ、コンポーネントを同居) - 完成動画と成果物:
out/<episode-id>/(リポジトリの AGENTS.md に従い、out/直下に散在させないこと) - コメント帰還:
<リポジトリルート>/帰還/
作業開始時の厳格ルール(他のすべてに優先)
- ルールを読む:
ルール/内の3つのファイル(プロジェクト下限 / 執筆ルール / 映像スタイルリスト)を読む。存在しない場合 →templates/ルール-*.mdをリポジトリに初期化し、ユーザーに確認を取る。 - 状態を復元:現在のエピソードを特定(ユーザーに問う、または
effects/*/状態.json内のupdated_atで最も最近の未完了エピソードを探す)。effects/<id>/状態.jsonを読む:- 存在しない場合 →
templates/状態.jsonをコピーして初期化; - 実際のファイルと不一致の場合 → ファイルを基準にステージを再構築;
waiting_onが空でない場合 → 先に待機事項を処理し、ステップを飛ばさない。
- 存在しない場合 →
- 完了条件は成果物:各ステップの完了 = 成果物が存在し、検査に合格していること。口頭で宣言しただけでは不可。
状態.jsonはメインスレッドのみが書き込む;サブエージェント/外部CLIは結果を返すか指定ファイルに書き込むのみで、状態には触れない。 - ルールファイルはデータでありコードではない:ユーザーの意見は最初にルールの該当セクションに沈殿させる(セクションを編集し、無限に追記しない;ファイルあたり ≤200 行)。その後作業を開始する。すべての保存ファイルは UTF-8 BOM なし。
ステージルーティング
| ステップ | 内容 | 成果物(エピソードフォルダからの相対パス) | 参照 |
|---|---|---|---|
| 01 | テーマ選定(人間が方向を決定) | テーマ説明.md | templates/テーマ説明.md |
| 02+03 | 分散調査 + 原典確認 | 資料/出典登録表.md、資料/原典抜粋-*.md | stages/s02-research.md |
| 04 | モデル/データ計算 | モデル/ | stages/s02-research.md §04 |
| 05 | 脚本執筆 | 脚本.md(1行1文・行番号付き) | stages/s05-write.md |
| 06 | 外部 CLI ブラインドレビュー | 審査/*.json、盲査表.md | stages/s06-blind-review.md |
| 07 | 原典に基づく確定 | 確定表.md | stages/s07-adjudicate.md |
| 09 前置 | ストーリーボード(監督相互審査法、ユーザー最終決定) | 映像/ストーリーボード.md | stages/s09-storyboard.md |
| 08–11 | ナレーション・字幕/映像/音楽・カバー/機械チェック | ナレーション/、完成動画.mp4、検査報告.md | stages/make.md(ナレーションは 動画ライブラリ/tools/tts.py を使用) |
| 12 | 試写(唯一のハードゲート、人間待ち) | 試写パッケージ/、試写チェックリスト.md | stages/publish.md |
| 13 | 公開パッケージ(手動アップロード) | 公開パッケージ/ | stages/publish.md |
| 14 | コメント帰還(定期タスク) | ../../帰還/ | stages/publish.md |
素材と著作権(写真の出典、キャラクターイメージ、BGMライセンス、公開クレジット)はすべてリマインダーリストのみ:AIは選択肢をリストアップし、ユーザーが決定する。詳細は stages/user-decisions.md 参照。
ステップ05と12は人間待ちポイントであり、一貫して waiting_on フィールドを使用する。一度に一つのエピソードのみを進行する:同時に複数のエピソードを進めない。
状態.json
スキーマは references/state-schema.md 参照。キーはすべてASCII;業務データ(発見事項、意見、データ)は .md/.json テーブルファイルに入れ、状態はポインタのみを保存する。
ブラインドレビュー
3つの外部CLI:Claude Code(Windows)、codex(Windows)、opencode(WSL ~/.opencode/bin/)。名簿 templates/審査員.json、契約 references/findings-json.md(v1.1:レビュアーが文末に (S#) を付ける/付けないを許容)、集約 scripts/summarize_reviews.py。初回使用時またはマシン変更時は、s06のスモークテストを必ず実行すること。2026-11-01 シロナガスクジラエピソードで初回較正完了:初回9件の指摘のうち6件が真の誤り+1件が資料漏れ、2回目1件の丸め誤り、棄権メカニズムは未発動——実データは s06 参照。APIキーは決してコマンドライン、ログ、脚本、完成動画に含めない。
ナレーション / 映像(ツールと時間アーキテクチャ、シロナガスクジラ実戦後に確定)
- ナレーションは常にリポジトリ共通テンプレート
動画ライブラリ/tools/tts.pyを使用(run/sample/dry-run/align-only サブコマンドはその README 参照)。各エピソードはナレーション/ナレーション.jsonのみを記述;音色アンカーは最初のエピソードで固定(テキストの人物設定は呼び出しごとに変動するため)。 - 映像のすべてのビートアンカーは文内比率
at(文番号, 比率)(時間.jsonから取得)で記述。シーン境界は文頭——ナレーションが変われば映像は自動追従、フレーム番号の手動指定は禁止。
映像 = Remotion(本リポジトリ)
制作期間中は常にリポジトリの AGENTS.md に従う:コンポーネントは effects/<id>/ に配置、effects/index.tsx に登録、レンダリング先は out/<id>/<id>.mp4。remotion-* スキルと動画ライブラリの既存コンポーネントは再利用可能。決定論的規律とチェックリストは stages/make.md 参照。
ドライランモード
ユーザーが「ドライラン/試運転/dry-run」と言った場合:偽の審査JSON、偽のTTSファイルを使用してステートマシンを実行し、実際のAPIを呼ばず、サブスクリプション枠を消費しない。
初めて全工程を実行する場合?
まず実例 動画ライブラリ/effects/blue-whale/(初回シロナガスクジラエピソード)を一読:状態.json(各ステップの成果物ポインタ)→ 資料/出典登録表.md(S# システムの使い方)→ 審査/スモーク記録.md と2回の 盲査表*.md、確定表.md(振り返りの記録方法)→ 映像/ストーリーボード.md(相互審査法のアウトプットの姿)→ ナレーション/ナレーション.json(このエピソードの設定がどれだけコンパクトか)。この例に従って作業を開始すれば、10ページのルールを読むより早い。
バージョン履歴
- v0.2(2026-11-02、blue-whale バックフィル):make.md のナレーション/映像レイヤーを実戦に基づき書き直し(共通テンプレート/音色アンカー/文内比率);新規 s09-storyboard(監督相互審査法)追加;新規 user-decisions(素材著作権はリマインダーのみで決定しない)追加;findings 契約を v1.1 にアップグレード;s06 に初回較正記録を追加;publish に振り返りバックフィルを追加。
- v0.1(2026-11-01):初版骨格(14ステップルーティング + 3つのプロトコル + テンプレート + レジデューシード)を追加。