Chronicle · Ink (インク巻物)
あなた(これを読んでいるエージェント)が全撮影スタッフです。このスキルは、ステージングされたCLI、ファクトエンジン、コード合成されたシリーズテーマと正確なビートマップ、プロシージャルSFXキット、インク描画キット、HyperFramesレンダラーを提供します。あなたが主張(claims)、ショットリスト(1行キャプション付き)、シーンコード、レビューを記述します。画像、音声、音楽、ビジョン、LLMモデルは一切呼び出されません。唯一のコストはあなた自身のトークンです。
厳格ルール: テキストLLMとツールのみ。 すべての執筆、調査、事実確認、シーンコード、レビューは、このスキルを実行するテキストLLM(例:MiniMax M3.1 flash via SandBase、またはその他のエージェントモデル)によって行われます。ツールは呼び出せます:Web検索とfetch、SandBaseデータAPI、以下のコマンド、FFmpeg。マルチモーダル生成モデルは決して呼び出してはいけません: 画像、動画、TTS/音声、音楽、ビジョンモデル、およびAI生成の画像や音声ファイルは不可。すべてのフレームはあなたが書くシーンコードで描画され、すべての音はエンジンで合成されます。コンタクトシートは数値として、また自分でレンダリングしたフレームとしてレビューされます(ビジョンモデルは使用不可)。マルチモーダルモデルを使用したフィルムはchronicle-inkフィルムとは見なされません。
オプトイン例外: 音楽とナレーション。 ユーザーが明示的に要求した場合のみ、テーマを
music/内のオーディオファイル(music/track.jsonで記述)に置き換えることができます:オープンライセンスの録音(パブリックドメイン、CC0、CC BY 3.0/4.0;NC、ND、SAは不可)、またはSandBase音楽モデル(例:minimax/music/2.6、is_instrumental: true)で生成されたインストゥルメンタル。sandbaseCLIまたはAPIのみ使用可能。画像、キャプション、SFX、その他すべてのルールは上記の通り;エンドカードではトラックをクレジットし、音楽がコードで作られたとは表示しません。references/music-track.mdを参照。同様に、ボイスオーバーも追加できます:各キャプションに1クリップ、SandBase音声モデルから、キャプションをそのまま読み上げます(voice/voice.json、references/voice.md参照)。
スタイルパック
brief.style(またはnew-project.mjs --style)で見た目を選択します;エンジン、事実、チェックは同じです。
| スタイル | 見た目 | パック | 用途 |
|---|---|---|---|
ink(デフォルト) | 中国墨絵巻物、LXGW WenKai、「インクテーマ」 | assets/style-pack.json | 人物、ランドマーク、動物 |
roman | 羊皮紙地図、Cinzel、ソフトDドリアンテーマ | assets/styles/roman/ | 都市、古典的な題材 |
model | 暗いスタジオ内の白い都市模型、歴史を光として投影、地球儀からの飛び込み、フォトカード、「地図テーマ」 | assets/styles/model/ | 都市のライフストーリー:style-model.mdを参照 |
方法は公開されている「Vibe knowledge showcase」レシピに従います:スペックを設定 → ビートに合わせてカット → すべてのキーアクションに音を付ける → セグメントごとにレンダリングし、次に進む前に修正する。
スペック(デフォルト)
| 長さ | seconds 120、150(デフォルト)または180;25~35秒ごとに再フック;4~6 / 5~7 / 6~8 知識ポイント |
| フォーマット | 16:9 1920×1080 @ 30fps(デフォルト)、9:16 1080×1920 オプション |
| 言語 | brief.lang = 任意のBCP-47タグ(デフォルトen;zh-CNはファーストクラス)。1つのスクリプトで複数言語に対応 |
| ナレーション | 音声なし:各ショットに1つの短いキャプション。何の絵かを示し、検証済みの主張に結びつけ、キーワードを強調表示 |
| 音楽 | スタイルのシリーズテーマ(ink: 「Ink Theme」、Dペンタトニック、古琴/簫のような音色)、常に88 BPM、セクションはintro・verse・build・drop・breakdown・build2・drop2・outro;オプションでmusic/track.json(music-track.md) |
| ラウドネス | −14 LUFS統合、≤ −1.5 dBTP(2パス loudnorm) |
| ラベル | 0~3秒に「AI-generated」バッジ、エンドカードにAIGC表記、MP4内にAIGCメタデータ |
Node.js 22+、FFmpeg/ffprobe、Chromeが必要(HyperFrames 0.8.30はnpxで実行;レンダリングは常にCPUパスを使用するため、Canvas出力はどこでも同一)。node scripts/chronicle.mjs doctorを実行。
都市フィルム(主題 city、構造 life)
「すべての都市にはライフストーリーがある」ユースケース:Wikidata上の都市(座標+人口)がcityとしてロックされ、life構造を使用:誕生(川、創設、名前)→成長(市街地が地図上に広がる)→最初の高み → 傷跡(略奪、火災、疫病、戦争)→再生→現在(同じ地図、過去と現在)→余韻(オプションで作者自身の言葉「私とこの街」)。narrative-city.mdを参照。
地図は実在の地理であり、モデルの絵ではありません:
- プロジェクト内に
geo/places.jsonを作成(中心と、Wikidata QIDによる場所、歴史的エリアを近似半径で指定)。node <skill>/scripts/geo.mjs --project <p>を実行。Wikidataから座標を、OpenStreetMapから河川、水域、海岸線、鉄道、現在の主要道路を読み取り(キーレス公開読み取り)、geo/basemap.jsonに出力します。 - インクスタイル:
assets/style/exemplars/city-map.jsをscenes/にコピーし、すべての地図ショットをそのパラメータ(ビュー、エリア、場所、道路、年スタンプ、傷跡)で駆動します。シーンはデータをs.geoとして読み取り、s.kit.cityMap()で描画します;すべてのフレームには「© OpenStreetMap contributors (ODbL)」が付与されます。 - 歴史的範囲は近似です:
cityMapは常に「AI 示意 / AI illustration」とタグ付けします。年スタンプと地図ラベルは、主張またはティア1ソースにある日付と名前のみを表示できます。 - モデルスタイル:
geo/places.jsonにchronologyブロック(カメラ、時代、範囲、城壁、イベント、ランドマーク)を追加。ランドマーク写真をnode <skill>/scripts/photos.mjs --project <p>で取得し、単一のcity-3dシーン(WebGLでの実在の建物と高さ、1つの連続カメラパス)を使用。style-model.mdおよびステップバイステップのcity-film-recipe.md(ローマ、ニューヨーク、バルセロナのサンプル作成方法)を参照。
このマシンが到達できないページ(Wikipediaはしばしばブロックされます):独自のツールで取得し、テキストをそのままプロジェクト内のsources/<n>-<name>.txtに保存します(最初の行にsource: <url>)。以降のすべてのallはそのフォルダを読み取ります;ファイル名はソースIDを安定に保ちます。
クイックスタート
node <skill>/scripts/new-project.mjs --out /abs/films/su-shi --topic "苏轼" --film-lang en
node <skill>/scripts/chronicle.mjs all --project /abs/films/su-shi
all は research → facts → script → timeline → music → scenes → render → check → report を実行し、何かを書かなければならないときに停止します(status: awaiting_…)。プロジェクト内の AGENT_TASK.md を読み、要求されたファイルを書き、all を再度実行します。プロジェクトはスキルフォルダの外に置く必要があります。
クルーの役割
| 役割 | あなたの作業 | コマンド | 読み取り | 書き込み |
|---|---|---|---|---|
| ディレクター | ブリーフの責任者、セグメントループを実行、セグメント完了を判断 | all、render --segment | brief.json、コンタクトシート | work/review.json |
| リサーチャー | 制限なく検索(自身の検索ツール);有用なページを受け渡す | research --add-source <url> / --source-file <file> | Wikidata(QIDロック)、Wikipedia、ティア1サイト | work/research/ |
| ファクトチェッカー | 原子的事実を逐語引用とともに抽出;すべてのキャプションに対して含意関係を回答 | facts、script | ソースチャンク、entail.request.json | work/facts/claims.agent.json、work/script/entail.agent.json |
| 脚本家 | テーマのセクションに基づいてショットリストを作成 | script | script.request.json(計画、主張、ルール) | script.json |
| アート | インクキットでシーンコードを作成;フレームを自己レビュー | scenes | タイムライン、references/style-pack.md、事例 | scenes/<name>.js |
| 作曲家 | 作曲は不要:テーマは固定;アクションごとにSFXティアを選択 | music | brief.seconds | work/music/theme.wav、beatmap.json |
| 編集者 | セグメントと最終フィルムをレンダリング | render | シーン、テーマ、SFXキュー | out/segments/、out/film.mp4 |
| QA | チェックを実行、結合シートを読む、修正または再実行 | check、report | フィルム、タイムライン、ビートマップ、レビュー | work/check.json、out/report.* |
| 地図アニメーター | geo/places.jsonを書き、geoコマンドを実行、city-mapショットを駆動 | node scripts/geo.mjs | Wikidata P625、OpenStreetMap | geo/basemap.json |
ショットリストフィールド(script.json、スキーマ chronicle-script/2)
bars(あるセクションの1~4小節全体。すべてのカットはダウンビート上)・size(wide / medium / close / detail)・camera(hold, push-in, pull-out, pan-left, pan-right, rise, parallax)・transition(cut, ink-bleed, scroll-pan, seal-stamp)・scene + params・description・motion・sfx({ beat, kind, tier, dur_beats })・kind + claims(+ hedge)・caption.<lang>.text + em(キーワード)・kp・rehook。完全な形状とルール:work/script/script.request.json および pipeline.md。
事実が先
researchはトピックを1つのWikidata QIDにロックし、Wikipediaとティア1サイト(CBDB、Britannica、UNESCO、GBIF、博物館)をキーレス公開読み取りで直接読み取ります。どこでも検索して構いませんが、事実がフィルムに入るのはfactsがクロスチェックした後だけです:少なくとも2つの独立した出版社が一致し、少なくとも1つはティア1 →verified;1つのソース →single-source(ヘッジ付きキャプションのみ、最大2つ、イントロやドロップには不可);矛盾 →disputed(「一説には」)。ゴシップサイトは手がかりであって証拠ではありません。- このマシンがサイトに到達できない場合、自身のfetchツールで読み取り、テキストをそのままファイルに保存します(最初の行は
source: <url>)。--source-fileで渡します。 - すべてのキャプション、カード、タイトル、エンドカード行は主張IDを結びつけます;その行内の数字、日付、名前はその主張に含まれている必要があります;引用は検証済みの引用主張が必要です。その後、主張テキストのみから正直に含意関係を回答します。factcheck.mdを参照。
テーマに沿ったストーリー
計画(work/script/plan.json)はテーマのセクションを小節数で示します(150秒:intro 4・verse 12・build 4・drop 8・breakdown 8・build2 4・drop2 8・outro 7;120/180秒は小節境界でセクションを繰り返すかトリム)、再フック小節、知識ポイント範囲。セクションに合わせてストーリーを配置:イントロでフック、バースで起源、ビルドで転換、ドロップで最初のハイライト、ブレイクダウンで代償、ビルド2でサスペンス、ドロップ2で決定的瞬間、アウトロで余韻。主題によってペースは異なります:narrative-person.md、narrative-landmark.md、narrative-animal.md。
キャプション:CJKは1行あたり最大16文字、その他のスクリプトは1行あたり最大9語/42文字、最大2行、数字や日付の中で改行しない、RTLは右から左に配置。キャプションはそのショット内で読める必要があります(CJK 7文字/秒、その他 3.3語/秒)。グリフチェックに失敗すると glyph_missing となり、豆腐の代わりにレンダリングしません。
シーン(最大の品質リスク)
シーン名ごとに scenes/<name>.js を書きます:scene('<name>', function (g, s) { … })。時間 s.t に対して Canvas 2D と s.kit(紙、筆のストローク、にじみ、インクのぼかし、山、水、ボート、東屋、巻物、竹、月、硯、筆、印、梅、雁、ローブのシルエット、テキスト表示、地図ルート、タイムライン、カウントアップ、2.5D layer() パララックス、構図 frame())を使用してフルフレームを描画します。assets/style/exemplars/ から始めます。静的スキャンと実行時に強制されるルール:s.t に対して決定論的(s.kit.rng(seed)、Math.random/Date/timers は不可)、ネットワークなし、DOMやストレージなし。すべてのキーアクションをそのキューに合わせます(s.cue('seal', 0))。そうすることでSFXが発生したフレームに正確に着地します。リアルな顔は描かないでください。Do / Don't リスト:style-pack.md。
ディレクターループ(セグメントごと)
node <skill>/scripts/chronicle.mjs scenes --project <p> # スキャン+プロジェクト
node <skill>/scripts/chronicle.mjs render --project <p> --segment s1 # 最初のオープニング~11秒
# out/segments/s1/sheet.jpg と keyframes/*.jpg を Do/Don't リストと照合、修正、繰り返し
node <skill>/scripts/chronicle.mjs render --project <p> --segment s2 # 次に s3、s4、s5
node <skill>/scripts/chronicle.mjs all --project <p> # 最終決定論的全レンダリング+チェック+レポート
セグメント:s1 intro・s2 verse・s3 build + drop・s4 breakdown + build2・s5 drop2 + outro(または --segment <start>-<end>)。セグメントごとに最大3回のレビューラウンド;各ラウンドを work/review.json に記録:
{ "schema": "chronicle-review/1", "segments": [{ "id": "s1", "rounds": [{ "sheet": "out/segments/s1/sheet.jpg",
"findings": ["タイトルが月と重なっている"], "fixes": ["月を右に移動"], "open_blocking": [] }] }] }
check は、セグメントにラウンドがないか、まだブロッキングとなる finding がある場合、visual_review に失敗します。無人実行の場合、all はフィルム全体を直接レンダリングします;レビュー要件はレポートに表示されます。
出力
out/film.mp4、out/captions.vtt、out/sheet.jpg、out/joins.jpg、out/report.json、out/report.en.html、out/report.zh-CN.html(フィルムの言語に関わらずバイリンガル)。check はLUFSとトゥルーピークを測定し、カットとセクションがダウンビート上にあるか、各SFXのオンセットがアクションから1フレーム以内かを確認します;ミックスが良いかどうかは判断できません—人間が聴く必要があると述べています。
制限
- 存命人物の肖像画は不可;地図は国境や州境を表示しない;GB 45438のAIGCフィールドセットは、標準テキストと照合されるまで
verified: falseのまま(compliance.md)。 - 3つのスタイルパック、各パックに1つのテーマ(またはオプトイントラック)。年カード:
countは省略(0からカウントアップする年は誤った日付のように読める)。 - 都市地図は国境や州境を表示しない;OpenStreetMapレイヤーは都市にクリップされる。
- 事実レキシコン(数字、日付、ヘッジ)は英語と中国語に存在;その他のキャプション言語は英語のルールを使用。
- 参考文献:pipeline.md、music.md、sources-allowlist.md、third-party-notices.md。