Education Video
正確さ・根拠・監査可能性を重視した個別の教育ユニットを作る。
最終出力はナレーション付き動画と配布PDF。両方を同じHTML定義から生成し、語り・紙面・動画の内容を対応させる。
不変条件
資料を先に集める
このスキルは領域知識を持っている前提で動かない。
必ず、
domain / program context → research agenda → sources / source register → Research Closure → content.md → Content IR → Content Freeze → deterministic candidate enumeration → semantic applicability evaluation → Pareto / ablation / sensitivity search → Instruction Freeze → bounded Realization Search → Realization Freeze → communication-plan.json → visual-psychology-plan.json → script / screen / handout language → communication review → visual design → audio/video → visual psychology release review
の順に進む。
content.md が完成・照合されるまで、原稿・スライド・アニメーションを作らない。
映像から考え始めると、見せやすい内容だけが残り、根拠と必要項目が後付けになる。
教材で組織設計を代替しない
設備、承認フロー、人員配置、責任体制、システム制約などの改善課題を、教材本文へ一文足して解決した扱いにしない。
教材へ入れるのは、実在が資料で確認でき、受講者が知る・確認する・利用する必要がある仕組みだけ。
レビューで見つかった教材外の課題は External としてaudit packageへ分離する。
レビューは欠陥を発明しない
問題がなければ PASS を許す。固定件数の指摘を要求しない。
Blocking:誤り、重大な欠落、誤行動につながる表現、画と語りの矛盾などAdvisory:改善するとよいが完成を止めないExternal:教材では解決できない組織・設備・制度上の課題
Blockingがゼロなら次工程へ進める。Advisoryだけで全面巻き戻しをしない。
Single mode / Series mode
Single mode
単発教材として依頼され、上位の研修設計がない場合。
この動画が対象範囲の網羅性を持つ。外部目録または正式な手順・シラバスと照合し、扱う/扱わない/資料不足を明示する。
Series mode
episode-brief.md、coverage-matrix.md、program-content.md、program-manifest.json などが与えられた場合。
references/series-mode.md を先に読む。
episode contractを上位scopeとして扱い、この動画に研修全体の責任を再び背負わせない。
- Primary:この動画で十分に教える
- Prerequisite:既習として扱う
- Callback:指定された範囲だけ短く再提示する
- Explicit exclusions:この動画に無くて正常
coverage上で別unitがPrimaryの項目は、この動画に無いことを欠陥にしない。
ただし資料先行はseries modeでも維持する。親のsource mapとprogram-contentの該当部分を確認し、この動画用 sources.md と content.md を作ってから原稿へ進む。
ユーザーとのやりとり
主題が不明なら聞く。それ以外は利用可能な資料と合理的な既定で着手する。
ユーザーに内部用語や監査手順を必要以上に見せない。
単発動画では対象者の既定を「その主題を初めて扱う人」、尺の既定を約10分とする。series modeではepisode contractの対象者・尺・前提を優先する。
制作手順
1. modeと前提を決める
series artifactsがあればseries mode、それ以外はsingle mode。
対象者、主題、利用場面、利用可能な規程・手順書・帳票・画面・写真を整理する。
完了:modeとscopeが確定した。
2. 正解の根拠を確保する
single modeは references/domain.md に従い domain-profile.md を作る。
- 規範源
- 扱う項目の目録
- 現場の実物
- リスク区分
- 手本・図版供給元
- review-plan
series modeは親成果物を使い、episode contractで参照するcontent id / source idを確定する。研修全体の目録をこの動画用に再作成しない。
完了:この動画で使う根拠の所在が決まった。
3. sources.md を完成させる
references/sources.md に従う。
規範・数値・版・年次・対象条件を原典へ辿れる形にする。社内固有運用は正式な内部資料・実物へ辿る。
「資料収集完了」は、扱う項目が根拠あり/扱わない/資料不足のどれかに分類できる状態を指す。
完了:この動画で使う主張・数値・手順をsourceへ追跡できる。
3A. Research Closureを通す
references/research-closure.md に従い、まず research-agenda.json と source-register.json を作る。次に全agenda item×全research dimensionのskeletonをdeterministicに生成し、追加調査で covered / not_applicable / gap を確定する。
python3 harness/research_closure.py . skeleton
# research-closure.jsonを資料探索結果で埋める
python3 harness/research_closure.py . validate
Blocking gapがある限り content.md を完成扱いにしない。not_applicable は正常であり、probeを教材内容の章・項目へ変換しない。
4. 教材本体 content.md を書く
references/content.md に従う。
尺を気にせず、まず内容を文章として完成させる。
single modeでは目録の対象範囲を満たす。
series modeではepisode contractのPrimaryだけを本体責任として扱う。Prerequisiteを再講義しない。必要なCallbackだけ接続用に書く。
制作中に新しい重要項目を発見した場合、series modeでは勝手に追加せずprogram-level issueとして親設計へ返す。
完了:根拠、行動、条件・例外が成立し、未確認の体制を発明していない。
5. 内容を点検する
references/review.md に従う。
常時:照合 shogo。
条件付き:
consequence:高帰結・規制対象、監査用途、ユーザー指定value:高額カスタム、固有性検収、ユーザー指定
series modeではreviewerへepisode contractとcoverage matrixを渡す。別unitがPrimaryの項目を欠落扱いしない。
完了:Blockingがゼロ。
6. Content IRを作りContent Freezeする
references/instruction-search.md に従い、content.md から content-model.json、knowledge-structure.json、learner-scenarios.json、learning-jobs.json を作る。この段階では教育手法を選ばない。Series modeではepisode contractの instructional_handoff をauthoritative inputとし、Primary責任、knowledge shape、learner scenario、learning jobを再発明しない。
python3 harness/instruction_inputs.py . validate
python3 harness/validate_instruction_handoff.py .
python3 harness/instruction_inputs.py . freeze
python3 harness/instruction_inputs.py . check-freeze
Hard Gate:content-freeze.json がPASSするまでinstruction candidateを作らない。Instructional techniqueの都合でcontentを変更する場合はContent Freezeを破棄して上流へ戻る。
7. Instruction Searchを実行しInstruction Freezeする
references/instruction-operator-library.json は手法使用の命令表ではない。closed laneのreview済み候補をdeterministicに全列挙し、各learning jobに必ず NONE(忠実なbaseline delivery以外の追加介入なし)を含める。
python3 harness/enumerate_instruction_candidates.py .
# prompts/lens-instruction-applicability.md を使って candidate-evaluations.json を全candidate分作る
python3 harness/validate_candidate_evaluations.py .
# project条件に合わせて instruction-search-policy.json を作る。未指定時は tests/instruction-search-policy.example.json を起点にする
python3 harness/instruction_optimizer.py .
python3 harness/instruction_gate.py . check
python3 harness/instruction_gate.py . freeze
python3 harness/instruction_gate.py . check-freeze
候補評価中はwinnerを選ばない。0–4はordinal intervalであり、効果量や確率ではない。optimizerはhard threshold、コスト、Pareto dominance、learner-scenario robustness、ablation、policy sensitivityをdeterministicに比較する。選択した非NONE介入を外しても学習上のrobust lower boundが実質変わらない場合はfreezeをFAILさせる。generic predictionのようにevidence scopeが未確定のoperatorはclosed laneで自動選択しない。
Hard Gate:instruction-freeze.json がPASSするまで、surface realizationを始めない。以後、表現都合でoperator / learning job / evidence-bounded sequenceを変更しない。実現不能なら上流へ戻す。
7B. 未解決の実装変数をRealization Searchで解く
Instruction Planに残った implementation_unknowns を、理論から勝手にdefaultへ変換しない。references/instruction-realization.md に従い、まず全unknownをdeterministic skeletonとして列挙する。wording / duration / visual form等のopen semantic spaceは全探索できると偽らず、enumeration_complete=false のbounded searchとして複数案を比較する。baseline / no-extra案も意味がある限り比較する。
python3 harness/instruction_realization.py . skeleton
# instruction-realization.json の全unknownについて複数のadmissible案を生成・比較し、選択理由を記録する
python3 harness/instruction_realization.py . validate
python3 harness/instruction_realization.py . freeze
python3 harness/instruction_realization.py . check-freeze
Realizationの0–4 scoreはdesign judgmentであり、研究上の効果量・確率ではない。別案にstrictly dominatedされる選択はFAILする。evidence をselection basisにする場合は、その実装変数まで根拠が支えるときだけevidence refを付ける。
Hard Gate:instruction-realization-freeze.json がPASSするまでCommunication Plan / script / TTSへ進まない。Realization Freezeはsurface implementationを確定するだけで、frozen learning responsibilityを再最適化しない。
8. Communication Planを作る
references/communication-quality.md と references/communication-plan.md に従い、content.md から communication-plan.json を作る。
文章を書く前に、各unitについて元の発話機能、文章が本当に必要か、どのチャネルが担うか、修辞的な上限、固定語を決める。text_requirement=optional と text_requirement=none は正常な選択である。optional をbooleanへ潰さず、文字を置かない選択を残す。話題をタイトルへ、事実を教訓へ、説明をcatch copyへ自動変換しない。
node harness/json_schema_validate.mjs assets/schemas/communication-plan.schema.json communication-plan.json
series modeでは episode-contract.json の communication_contract を上位制約として扱う。python3 harness/validate_communication_bundle.py . を実行し、Episode Contract → Communication Plan → Language MapのID / function / text requirement / channel / rhetorical ceiling / exact termが一致するまで先へ進まない。
完了:各communication unitのFunction / Necessity / Channel / Rhetorical ceilingが確定した。
9. Visual Psychology Planを作る
references/design-psychology.md、references/design-psychology-principles.json、references/visual-psychology-plan.md に従い、visual-psychology-plan.json を作る。まずviewer taskとvisual problemを決め、既存hierarchyで十分なら intervention_needed=false として法則を使わない。必要な場合だけprimary principleを1つ、distinctな仕事がある場合だけsupporting principleを1つ選ぶ。
node harness/json_schema_validate.mjs assets/schemas/visual-psychology-plan.schema.json visual-psychology-plan.json
python3 harness/validate_visual_psychology_bundle.py .
# prompts/lens-visual-psychology.md のdesign phaseでレビューを作る
python3 harness/visual_psychology_gate.py . visual-psychology-design-review.json design
series modeでは episode-contract.json の design_psychology を上位制約として扱う。Communication Qualityと衝突する場合は、内容忠実性・必要性・channel role・修辞的比例を優先する。心理法則名を効果の証明に使わない。
Hard Gate:Visual Psychology design reviewが現在のcontent / communication plan / language map / visual planに対してPASSするまで、紙面・図・motion designへ進まない。
10. 原稿に開く
references/narration.md に従い script.md を作る。
内容文書を読み上げ調にせず、耳で追える語りにする。因果には必要な機構を入れ、無条件の保証をしない。
映像や原稿で新しい事実を思いついても直接追加しない。sources.md → content.md に戻る。
series modeでは前回内容の長い要約を置かない。PrerequisiteからPrimaryへ入るための最小callbackだけ使う。
文体、読み上げ、照合を点検する。
script、主要画面文言、PDF見出しを language-map.json v3へ登録する。source_ref / source_function / function_preserved / channel_overlap を持たせ、単なる言い回し一覧にしない。
完了:想定尺に収まり、主要言語がcommunication planへ追跡できる。
11. Communication Quality Gateを通す
prompts/lens-communication.md を使い、communication-plan.json、language-map.json、script、画面文言、PDF見出しを一つのcommunication systemとして6軸レビューする。Naturalnessは最後に判定する。
communication-design-review.json を assets/schemas/communication-review.schema.json に従って保存し、現在inputのSHA-256を記録する。
python3 harness/communication_gate.py . communication-design-review.json design
Hard Gate:6軸+surface naturalnessがPASSし、Blockingがゼロで、Gateが決める必須input(content.md / instruction-plan.json / instruction-freeze.json / instruction-realization.json / instruction-realization-freeze.json / communication-plan.json / language-map.json / script.md、series modeでは episode-contract.json)のhashが現在ファイルと一致するまでTTSへ進まない。FAIL時は「削除 → 役割を戻す → 情報量 → 構造 → 表現」の順で直す。
12. 紙面と動きを設計する
紙面は content.md から組む。原稿は同期の参照であり、紙面の唯一の情報源ではない。
配布PDFだけでも、このユニットが責任を持つ判断・行動を確認できるようにする。
series modeで「PDFだけで読める」は、研修全体を一枚に再掲する意味ではない。
動きは、順序・因果・量の変化・視線位置を運ぶ、または静止画より探索負荷を下げる場合に使う。
同時に動く意味単位は一つ。因果として一体の複数要素は連動してよい。
13. deckを組み、音声前に視覚検証する
harness/deck-skeleton.html の契約に従い deck.html を作る。anim.js をコピーする。
- 場面は
.stage - 画面は時刻
tの純関数 - print modeで配布PDFになる
- 段階表示は必要情報を最終状態に残す
まずsheet/stillsで見切れ・重なり・図の意味を確認する。高い工程である音声・撮影は後にする。
14. 完成物を点検する
lens-final、lens-slide、lens-motion を使う。
series modeではepisode contractを一緒に渡し、scope内で判定する。
final:語りと画の矛盾slide:配布PDFがこのユニットの責任範囲で成立するかmotion:動きが情報伝達に効いているか
完了:Blockingがゼロ。
13. 音声・動画・PDFを生成する
Before TTS, harness/tts.py 自身が communication-design-review.json を再検証する。reviewの欠落・stale・bundle不整合時は prepare / import / run の全入口で音声処理を拒否する。
Do not select a local OS voice in this skill. Route narration through japanese-tts; reuse the same voice-profile.lock.json for the series, and validate it with harness/voice_lock_check.py before rendering.
python3 harness/tts.py prepare script.md
# invoke japanese-tts using tts-job.json and the frozen voice-profile.lock.json
python3 harness/tts.py import script.md
python3 harness/voice_lock_check.py .
node harness/render.mjs deck.html --discover
node harness/render.mjs deck.html --audit
node harness/render.mjs deck.html --all
# prompts/lens-visual-psychology.md のrelease phaseでは最初に完成物だけを直接確認する
python3 harness/visual_psychology_gate.py . visual-psychology-release-review.json release
motions は手で推測せず --discover から導く。timings.js が出たら場面尺は T.sceneList から取る。Visual Psychology release reviewでは法則名を加点せず、attention hierarchy / reading flow / grouping / differentiation / visual-verbal complementarity / restraintを完成MP4/PDF上で判定する。直接確認できない場合はINCOMPLETEとし、納品PASSにしない。
14. 影響範囲だけ再検証する
- source・数値変更:sources → content → script → deck
- content変更:content → communication plan以降
- communication plan変更:script / language map / communication review以降
- script・画面文言・PDF見出し変更:language map / communication review以降
- 紙面だけの修正:deckと完成物
- 読みだけの修正:音声と同期
軽微な修正で全工程を機械的に巻き戻さない。
成果物の分離
learner package
- video.mp4
- handout.pdf
- subtitles.srt
- 必要な参照情報
audit package
- content.md
- sources.md
- communication-plan.json
- language-map.json
- communication-design-review.json
- domain-profile.md または親program参照
- review-manifest.md
- log/
- checklist.md
生ログを受講者向け本文へ混ぜない。
シリーズ制作でやってはいけないこと
- 各動画で研修全体の背景を説明し直す
- 各動画で全目録を満たそうとする
- 「重要だから」でcontract外を追加する
- Explicit exclusionsを欠落として修正する
- 別unitがPrimaryの内容を監査指摘でこの動画へ押し込む
- program-level gapを、その場の動画で吸収してcoverageを壊す
文体
- 標語・決め台詞・煽りを作らない
- 同じ主張を言い換えて繰り返さない
- 進行実況を増やさない
- 日本語の通常表現があるものを不必要に外国語化しない
- 命令だけを並べず、必要な機構や判断対象と結びつける
参照
references/series-mode.md— episode contractを使うシリーズ制作references/domain.md— single modeの領域プロファイルと資料収集ゲートreferences/sources.md— 出典、数値、版references/research-closure.md— content前のResearch Closureと調査probereferences/research-dimensions.json— 全件評価する調査dimensionreferences/instruction-search.md— Content Freeze、候補全列挙、Pareto、ablation、sensitivity、Instruction Freezereferences/instruction-realization.md— strategy選択後に残るopen実装変数のbounded explorationとRealization Freezereferences/instruction-operator-library.json/instruction-evidence-register.json— evidence-bounded operator候補と根拠境界references/content.md— 原稿より前に完成させる教材本体references/communication-quality.md— 6軸Communication Quality Model、review順序、修正順references/design-psychology.md/design-psychology-principles.json— 視覚心理の制御モデルと16法則カタログreferences/visual-psychology-plan.md— scene plan、series contract、release review、A/B運用references/communication-plan.md— script前のFunction / Necessity / Channel契約references/audience-language.md— 最終surface naturalnessと固定語references/narration.md— narration writing and machine-readabilityreferences/voice-lock.md— japanese-tts handoff, Voice Lock, and provenancereferences/visuals.md— 画像・図表references/motion.md— 動きreferences/review.md— review-plan、Blocking / Advisory / Externalreferences/render.md— render harnessharness/— anim.js / render.mjs / tts.py / deck-skeleton.htmlprompts/— レンズプロンプト
Deterministic Typography Toolchain
For final Japanese or complex-script text geometry, use references/typography-toolchain.md. Treat BudouX as semantic break candidate generation and HarfBuzzJS as the final shaping authority. When text geometry is critical, reuse one serialized glyph run across SVG / PDF / Three.js rather than re-measuring independently per renderer.
Deterministic vector and visual QA
For unequal-topology SVG morphs and pixel-level render regression evidence, use harness/path_morph.mjs, harness/visual_diff.mjs, and references/vector-and-visual-qa.md. Keep these technical checks separate from semantic/creative judgment.
Deterministic machine runtime
Use vendored Ajv for machine-readable contract/schema gates and SVGPathCommander for path geometry. Prefer the locked resvg runtime for final static SVG rasterization when its verified binary is provisioned; otherwise keep fallback renderer identity explicit and never silently claim resvg. See references/deterministic-runtime.md.