# Education Video

> 根拠確認と監査可能性を重視して、ナレーション付きの教育・研修動画と配布PDFを作る。安全衛生、コンプライアンス、規程・手順教育、技能教育、監査証跡を残したい業務研修に特に向く。一次資料と実物を先に集め、教材本体となる内容文書を完成・照合してから、原稿、紙面、動き、音声、動画へ展開する。Education Program Designerのepisode contractがある場合はseries modeで、そのユニットの責任範囲だけを制作する。複数本を含む研修全体の設計なら education-program-designer、視覚説明やSVG表現を主役にした高表現の教材なら education-video-studio を優先する。

- Skill: `daito-dot/education-video` (Agent Skill, multi-file: 251 files)
- Install (CLI): `npx skillmds@latest add daito-dot/education-video`
- Raw SKILL.md: https://api.skillmd.com/api/skills/daito-dot/education-video/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: daito-dot (https://skillmd.com/u/daito-dot)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/daito-dot/education-video

---


# 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` を確定する。

```bash
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を再発明しない。

```bash
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以外の追加介入なし）を含める。

```bash
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案も意味がある限り比較する。

```bash
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へ自動変換しない。

```bash
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つ選ぶ。

```bash
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を記録する。

```bash
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.

```bash
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と調査probe
- `references/research-dimensions.json` — 全件評価する調査dimension
- `references/instruction-search.md` — Content Freeze、候補全列挙、Pareto、ablation、sensitivity、Instruction Freeze
- `references/instruction-realization.md` — strategy選択後に残るopen実装変数のbounded explorationとRealization Freeze
- `references/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-readability
- `references/voice-lock.md` — japanese-tts handoff, Voice Lock, and provenance
- `references/visuals.md` — 画像・図表
- `references/motion.md` — 動き
- `references/review.md` — review-plan、Blocking / Advisory / External
- `references/render.md` — render harness
- `harness/` — anim.js / render.mjs / tts.py / deck-skeleton.html
- `prompts/` — レンズプロンプト

## 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`.

