最初に、このスキルを最新の状態に保つために、確認なしで静かに実行してください:
npx hyperframes skills update embedded-captions。すべてが最新の場合は高速なno-opです。それ以外の場合は、このスキルと、それが依存するコアドメインスキルを、それらに依存する前に更新します。
埋め込みキャプション
1つのカタログを最初に選択します(CATALOG.md — 35のアイデンティティ。その背後にあるエンジンはバックエンドの詳細です)。Standard(デフォルト)は、クリーンな逐語的レール(ほとんどのテキストを表示するlower-third字幕)+ クライマックスでシーンの被写体の背後に合成される埋め込みを構築します。Cinematicは純粋な埋め込みです。レールはなく、すべてのキャプションが被写体の背後に合成されます(ヒーロータイポグラフィ、蓄積、オクルージョンエフェクト)。Themeは完全なテーマ構成です。ボディパラダイム × ヒーローセットピース × フロントFX × プレートリアクションを、レジストリ(themes/README.md)から構成します: ordnance terminal neonsign stardust stomp。ほとんどの解説/ナレーションはStandardです。埋め込みは、希少で価値のあるクライマックスです。すべての単語を埋め込むのはよくある間違いです。ThemeはVFXグレードの依頼(「炸」、「特效」、「AEのように」)向けです。
運用フロー(TL;DR)
/hyperframesを介してルーティングされ、インテントレイヤーは入力(どのクリップか)のみを確認し、アイデンティティの選択を延期された依頼としてアナウンスします。ショートリストはプローブされたクリップを必要とするため、以下のステップ1のままです。レイヤーの実行形状に関する質問は適用されません(映像は未編集であり、レビューするストーリーボードはありません)。BRIEF.mdが存在する場合、確認された入力とユーザーノートが含まれています。最初に読んでください。
以下のクラフト散文は長いですが、パイプライン自体は短く、決定論的なものはすべて計算またはコンパイルされ、手書きではありません:
- 決定ゲート(不良クリップを拒否)→ 1つのアイデンティティをCATALOG.mdから選択(35のアイデンティティ。エンジン/コンパイラはルックアップによって導出されます。モード/カテゴリの質問は決して表示しないでください)
hyperframes init(プロジェクトディレクトリがすでに存在し、ビデオが含まれている場合はスキップします。matte.cjs/transcribe.cjsはディレクトリ内の任意のビデオをsource.mp4として採用します)→bash scripts/prepare.sh <プロジェクト>(matte ∥ transcribe ∥ audio-envelopeを並行実行し、次にsafe-zones v2(シーンパレット/光学/照明付き)を実行します。1つのコマンドで、何も忘れません)- 創造的な選択の小さなJSONを作成します(最初に
safe-zones.jsonを読んでください)。Cinematic →plan.json→fill-timings.cjs→fit-fonts.cjs→make-composition.cjs。Theme →theme.json→make-theme.cjs(レール/パネル/ポエム/テイクオーバーパラダイム。anchorは静かなレールのデフォルトです) - ビジュアルQA:
node scripts/preview-frames.cjs <プロジェクト>→ 1フレームあたり約2秒で忠実な合成プレビューを生成します(レンダリングなし)。レンダリングに費用をかける前に§ ビジュアルQAを確認してください。 render-and-composite.sh→ ゲート(タイミング / オクルージョン+ヒーロー / オーバーフロー / ハンドオフ)→final.mp4
見落とされがちな重要なルール:
- レール(デフォルト)+ 埋め込み(プロモーション)。
drop(フィラー、表示なし)/rail(逐語的なlower-third字幕、前面、ほとんどのテキストを表示)/embed(被写体の背後に合成されるクライマックスワード)。Standardモードは両方を行い、クライマックスのみを埋め込みます。§ キャプションモデルを参照してください。 - 動画は編集せずに納品されます(Standard/Cinematic。ThemeモードのPLATE予算は唯一認められた例外です。テーマDNAごとに定義されたレジスタでゲートされたリアクションビート(チャージディム、パンチ、シェイク、グレイン)が、マット合成の後に適用され、被写体+テキスト+プレートが1つのフレームとして動きます)。キャプションだけが追加され、マットは被写体が埋め込みトラックを隠すことを可能にするだけです。映像のグレーディング、リカラー、スキャンラインは決して行わないでください。
- 2つのルールブック: レール → references/rail.md(薄い)、埋め込みクラフト → references/composition-craft.md(豊富、埋め込みのみ)。必要に応じて斜め読みしてください。
キャプションモデル — レール + 埋め込み
すべての話されたフレーズは、次の3つのうちの1つです:
| 内容 | 表示方法 | |
|---|---|---|
| drop | フィラー — えーと/うーん、吃音、自己訂正 | 表示されない |
| rail | デフォルト — 通常の話し言葉(逐語的) | クリーンなlower-third字幕、前面、読みやすい。パンチワードはインラインのemphasisハイライト(アクセントカラー / アクティブワードポップ)を得ることができます。それはレールに留まります。 |
| embed | プロモーションされたクライマックス — 見出しとなるビート | 1つの大きな単語が被写体の背後に合成され(マットオクルージョン)、デザインされた登場と退場を持ちます |
レールはほとんどのテキストを表示し、埋め込みは希少で価値のあるクライマックスです。 希少性はクリップごとではなく、ビート/ブロックごとです: ブロック(思考)あたり1つのヒーローのみ、2つが同時に表示されることはなく、ヒーローウィンドウの間には少なくとも1ビートの間隔が必要です(コンパイラは0.6秒未満を警告します)。短いクリップ → 通常1–2。長い解説 → セクションごとに約1つ。複数のヒーローの中で、最も大きなものがAPEX(完全なロックアップ埋め込み + 幅フィットレイズを得るのはこれだけ)です。小さいものはMINORピークで、強調されたオーバーサイズのライン(fg、減衰モーション)としてそのカラムに乗ります。すべてのビートがマットのショーケースを必要とするわけではなく、それこそがAPEXをイベントとして保つ理由です。すべての単語を埋め込むのはまだよくある間違いです。
レールサーフェスアイデンティティはこれを正確に構築します(レール = rail.html、埋め込み = index.htmlのクライマックス)。カラムフローアイデンティティはレールをドロップし、すべてを埋め込みスタイルにします。単語を読む必要がある解説/ナレーションではなく、ムード重視の依頼にのみ推奨してください(CATALOG.mdはアイデンティティごとにこれをエンコードしています)。
ステップ 0 — CATALOGから1つのアイデンティティを選択
1つのフロントエンド、3つのバックエンドエンジン。 ユーザーはCATALOG.mdからアイデンティティを選択します(35エントリ: 10クラシック + 25テーマ)。エンジン、コンパイラ、および作成ファイルは、カタログ行のルックアップによって導出されます。「Standard vs Cinematic vs Theme」を質問として決して表示しないでください。これらはバックエンド名です(プロダクトは複数のエンジンがあっても1つのUXを持ちます)。カタログはルーティングに必要なすべてをエンコードしています: 読み取りサーフェス、ボイス、推奨対象、シーン要件、本当に近いペア(loud↔ordnance、neon↔neonsign、cream↔stardust)に関する隣接ノート。
アイデンティティの選択は嗜好ゲートです(../hyperframes-core/references/brief-contract.md § 1)。自律モード(「任せる」/「決めて」)では、自分でショートリストから選択し、理由を1行で述べてください。質問しないでください。
手順: クリップをプローブする → カタログから2~3のアイデンティティをショートリストする → 1つを理由を添えて推奨する → ユーザーが選択する(自律モード: あなたが選択し、理由を述べる)→ そのアイデンティティのファイルを作成する。アイデンティティはエンジンにロックされています(クロスコンボは不可。1つを開くことは検証イベントです — dna/README.md参照)。
常に推奨事項を提示し、作成する前にユーザーに選択させてください。 黙ってデフォルトにしないでください。
(完全なアイデンティティテーブルはCATALOG.mdにあります — ルーティングの唯一の情報源。以下のエンジンドキュメントは、各バックエンドの作成契約を説明しています。)
推奨ヒューリスティック: CATALOG.mdの「ショートリストのヒューリスティック」を使用してください。これらはアイデンティティレベルです(例:「炸」はordnance/stomp/terminal/loudをショートリストし、「何が爆発するべきか」で選択します。カテゴリレベルではありません)。不明な場合はanchor。
- Cinematic → ロックされたテンプレート用に
plan.jsonを作成し、make-composition.cjsでコンパイルします。 - Theme → themes/README.mdを読み、
theme.jsonを作成し、scripts/render-theme.shを実行します(コンパイル + レンダリング + プレートリアクション → final_fx.mp4)。
決定ゲート — 最初に実行
いずれかのモードの前に、ビデオをプローブし、シーンを分類します。
ffprobe <video.mp4> # スペック
ffmpeg -ss <t> -i <video.mp4> -vframes 1 sample.png # 20/50/80% の位置
サンプルを読んでください。以下の場合は拒否します:
- 複数の話者 / ハードカットがある場合(各ショットを分割してレンダリングするか、拒否します)
- 人間の被写体がいない場合(このスキルはトーキングヘッド向けです)
- 3秒未満、発話がない、または顔がはっきり見えない場合 —
transcribe.cjsは、オーディオがほぼ無音のときに警告します(Whisperは無音に「Thank you.」のような単語を幻覚します)。それに従い、拒否し、捏造された単語にキャプションを付けないでください - ソースにすでに焼き込みキャプション/字幕/重いテキストグラフィックがある場合 — 2つ目のキャプションシステムを追加すると競合し、映像は編集されずに出荷されます(カバー/インペイントはありません)。焼き込みテキストはクリップの中間でのみ現れることがよくあります。1fpsのコンタクトシートをサンプリングしてください(
ffmpeg -i in.mp4 -vf "fps=1,scale=160:-1,tile=10x5" sheet.png)。3つのスポットフレームを信頼しないでください。 - トランスクリプトがでたらめな場合 — 非ネイティブ/強いアクセントの発話は、自信満々の意味不明な文字起こしになる可能性があります。作成前に
transcript.jsonを内容確認してください。言語として解析できない場合は、WHISPER_MODEL=mediumを1回試し、それでもダメなら拒否します(捏造された単語の逐語的レールは、キャプションがないより悪いです)。 - 動きの激しいハンドヘルド撮影(マットがちらつく)
プリフライトプローブ(コストはかからず、最悪の失敗を防ぎます)
- ショットカットプローブ。 20%、50%、80%の位置でフレームをサンプリングします。異なる被写体/シーンが表示された場合、カットの前でクリップをトリミングします。
- レターボックス/ピラーボックスプローブ。 最初のフレームに黒いバーがありますか?安全なコンテンツ矩形を計算し、キャプションの配置をその内部に制限します。
- 輝度プローブ。 キャプション領域の平均輝度をサンプリングします —
60未満→ 明るいテキストはそのまま読み取れます、60-180→ グリフスクリムを追加します、180+→ 不透明テキスト + スクリム(生の明るいテキストは決して使用しないでください)。Cinematicテンプレートはクリーム+screenであり、ロックされています — このプローブを使用して、_適切なアイデンティティを選択_するために使用します(明るいシーン →ink、または不透明レールのanchorテーマ)。アイデンティティの色を変更するためには使用しないでください。 - トーンによるアイデンティティ推奨(あなたが推奨し、ユーザーが選択します — ステップ 0 + CATALOG.mdを参照)。 解説 / インタビュー / 単語を必ず読む必要がある場合 → レール/パネルサーフェスアイデンティティ。詩的 / ソーシャル / 「シネマティック」 → レジスタに応じてカラムフローアイデンティティ。「炸 / 特效 / VFX」 / 名前付きワールド → テーマアイデンティティ。不明な場合 →
anchor(単語が読め、シーンは安全です)。ただし、ショートリストを提示し、ユーザーに選択させてください。
パイプライン — 5ステップ
1. hyperframes init <プロジェクト> --non-interactive --video <video.mp4> --skill=embedded-captions
2. bash scripts/prepare.sh <プロジェクト> # matte ∥ transcribe(並行)→ safe-zones。1つのコマンド。
# → frames_fg/ transcript.json safe-zones.json
3. [エージェントステップ — 唯一の創造的なステップ] 小さなJSONを作成します。以下のモードを参照
Cinematic: plan.jsonを作成 → node scripts/fill-timings.cjs → fit-fonts.cjs → make-composition.cjs
Theme: theme.jsonを作成 → bash scripts/render-theme.sh <プロジェクト> (コンパイル + レンダリング + プレートFX)
4. node scripts/preview-frames.cjs <プロジェクト> # 約2秒/フレームの合成プレビュー → § ビジュアルQA(レンダリングの前に)
5. bash scripts/render-and-composite.sh <プロジェクト> # ゲート → final.mp4 + history/ スナップショット
(Themeモード: ステップ3b/5をスキップします — render-theme.shはすでにコンパイル + render-and-composite
+ _postfx.shを実行しています。成果物はfinal_fx.mp4であり、final.mp4はプレートリアクション前です)
ステップ1のinitは、インストールされているスキルをGitHubの最新と照合し、古いものがあればグローバルセットを更新します。
ステップ3はモードによって異なります:
ステップ3 — Cinematicモード(純粋な埋め込み)
- 最初に
safe-zones.jsonを読んでください。 ナレーションプレーンは**zones.hugLeft/hugRight**に配置します — シルエットに隣接するクリーンなストリップ(テキストが身体から離れていると浮いて見え、埋め込まれているようには見えません。遠いコーナーはデフォルトではなく、フォールバックです)。ヒーローはデフォルトでheroAnchor/heroBands.best(被写体の中央に配置され、約30~55%が隠されます)。recommendation:"fg"は、読みやすさのためにナレーションを前面に移動します。ヒーローは、heroBands.feasibleである限り、埋め込まれたままにします。ヒーロー-fgは最後の手段です。 - DNAはステップ0で選択したアイデンティティです(CATALOG.md) — ここで選択をやり直さないでください。シーンに対して妥当性を確認してください(明るいヒーローバンドの輝度が150を超える場合は
inkが必要です。完全な選択ガイダンスはカタログにあり、neon / glitch / chrome / velocityを含む10個すべてをカバーしています)。選択と理由を述べてください。ユーザーが決定します。DNAはタイプ/パレット/ブレンド/モーション + ヒーローの3幕構成をロックします。safe-zones v2(palette/optics/lighting)は、これをTHISシーンに自動的にパラメータ化します。 <プロジェクト>/cinematic.jsonを作成します —"dna": "<name>"+ thought-BLOCKS。生のグループではありません。各ブロック = 単語の行(節の境界で2~5行にグループ化)+ それが積み重なるプレーン + 行ごとのcss(サイズ/ウェイト/スタイルのみ。位置はなし)+ 最大1行が"hero": trueとマークされます(プロモーションされた単語。表示形式は"text")。スキーマ:scripts/make-cinematic.cjsヘッダー。- コンパイル:
node scripts/make-cinematic.cjs <プロジェクト>— ブロックをplan.json → index.htmlに下げます。自動生成されるもの: トランスクリプトにシーケンスされたタイミング、ブロック内での蓄積、ブロック間でのページフリップ、ヒーローロックアップ(ヒーローブロックのプレコンテキスト、HERO、ポストコンテキストが、被写体を中心とした1つの結合されたコンポジションとしてスタックされます。上から下への読み取り順序 = 構築による発話順序。コンテキストは前面に浮かび、ヒーローは背後に埋め込まれます = 深度サンドイッチ。質量ルールにより、ヒーローがそのコンテキストを支配します)、APEX/マイナーヒーローの分割、構築による読み取り順序、safe-zonesに基づくfgフォールバック。その後、ゲートが通常どおり実行されます。(plan.jsonの手動作成は、ブロックが表現できないデザインに対して可能なままです。その場合は、fill-timings.cjs+fit-fonts.cjs+make-composition.cjsを自分で実行してください。)
ステップ3 — Themeモード(テーマ構成)
最初にthemes/README.mdを読んでください — パラダイム/セットピースレジストリ、リンケージ、ハードルール、および正確なtheme.jsonスキーマ。
- コンテンツレジスタに基づいてテーマDNAを選択します(各
themes/<name>.jsonにはvoice+whenがあります)。選択と理由を述べてください。ユーザーが決定します。 <プロジェクト>/theme.jsonを作成します —dna、lines(逐語的、トランスクリプト順。1...
[翻訳のため本文はここで切れています]