filmsmith は何をしますか?
コードを撮影する10の方法。短いテクニカルフィルム(技術デモ、テクニカルレポートや解説、テクニカル製品ローンチ)を、概要から作成します。長さは内容から計算され、画面に人は映りません。モードを選び、そのテンプレートをコピーし、content.js を埋めて、レンダリングします。すべての画像はコードで描かれ、すべての音はコードで合成されます(生成された音楽トラックに差し替え可能)。そのため、フィルムにはシェルコマンドを実行できるコーディングエージェントだけが必要です。このスキルは、センスの理論(基礎)、そこから導き出された10の中核原則(所有者の判断に基づく)、共有のシステム(色、タイポグラフィ、スペース、モーション)、およびそれぞれに1つのビジュアル言語を適用する10のモードに基づいています。
すべてのモードのハウススタイル:機敏で、直接的で、クリーン — ほぼすべてのビートで何かが変化し、各変化は1つの新しい要素をもたらし、視聴者はフィルムを待たされることはありません。そしてクリーンは味気ないことではない:少数の要素がそれぞれ流動的に動き、視線を引きつけます(原則4–6)。
要件
- シェルコマンドを実行できる任意のコーディングエージェント。以下
SKILL_ROOTは、このSKILL.mdが置かれているフォルダです。 - Node 22以降、
ffmpegとffprobeがPATHに含まれていること。new-filmがこれらをチェックし、不足している場合はメッセージを表示して停止します。 - フィルムのセットアップとレンダリング中はネットワークが必要:ピン留めされたgoogle/fontsコミットからのフォントと、npmレジストリからのピン留めされたGSAPビルド(両方ともフィルムフォルダに保存)、
npx [email protected]の初回実行(ヘッドレスChromeもフェッチ)、およびレンダリング時にHyperFramesコンパイラがGoogle Fontsからフォントフェイスをフェッチする可能性があります。オフラインレンダリングは検証されていません。テンプレートがピン留めするhyperframesバージョンを維持してください。フィルム内でアップグレードしないでください。 - 画面上のテキストはこのバージョンでは英語です。ユーザーが中国語や他の文字を要求した場合は、テンプレートがまだ対応していないと伝えてください。
モード
| モード | 中文 | 見た目 | 形式バリアント | 選ぶタイミング |
|---|---|---|---|---|
| thread | 一线 | すべてになる1本の線、カットなし | thread: 均等ルールまたは膨らんだ線 | ビデオ、モーション、レンダリングツールチェーンのショーリール |
| ink | 落墨 | 各ビートで叩きつけられる太いタイポグラフィ、色に開花するインクのドット | typeWidth: 圧縮または拡張されたタイポグラフィ | ネームリビール、ローンチスティング、ワンライナーの主張 |
| plakat | 招贴 | 動くインターナショナルスタイルのポスター、1つのシグナルカラー | form: 正方形または斜めのフィールド | 主張とステップ、および決定者 |
| blueprint | 蓝图 | シートごとに草案される1つの工学図面、琥珀色のスタンプ | linework: インクまたは鉛筆 | 部品と承認のあるシステムとワークフロー |
| phosphor | 荧屏 | 夜のターミナル、1つの蛍光体アクセント、ローンチHUD | screen: CRTラスターまたはフラット | CLIおよび開発者ツール |
| tally | 算筹 | アイテムごとに1つの正方形、チャートからチャートへの再グループ化 | mark: 正方形、ドット、またはアイソタイプグリフ | カウント、シェア、データセットのストーリー |
| trace | 演算 | アルゴリズムの状態を示す暗いライブダイアグラム | stroke: ベクターまたはスケッチ | メカニズムやアルゴリズムの動作方法 |
| morph | 一笔 | 点 → 線 → 面 → 立体 → インターフェース → マークと登る1つのインクシェイプ、カットなし | corners: 丸みまたはカット | 開発者ツールとインターフェース製品:1つのソースがすべての表面になる |
| halftone | 网点 | 2色印刷:マークの一部は静止し、すべての世界がその周りに印刷され、その後マーク全体に引き戻される | dot: 丸、四角、または線スクリーン | モデルと製品ローンチ:いくつかの機能、1つの数字、名前 |
| pulse | 节拍 | クエリとして演じられる質問:ビートごとに1つの単語、1つの色相に沿って反転するグラウンド、答えのための1つのホワイトアウト | aperture: カットまたは丸 | バージョンリリースとベンチマーク回答:1つの測定された結論 |
すべてのモードにはカラープリセット(カード上)と1つの形式バリアントがあり、どちらもcontent.jsで設定されます。デフォルトは以前と同じようにレンダリングされます。各カードには、使用例と実例、および最適なフィットが示されています。2026-10-19より前の名前(thread-reel, ink-beat, swiss-poster, blueprint-drafting, terminal-launch, unit-data, diagram-explainer)はnew-filmでも引き続き機能します。
選択ルールとモードカードの形式:references/modes/README.md。モードは混在しません。テーマ(ナラティブの骨格とフィルムの種類ごとのルール):tech-product-launch (thread、ink、plakat、blueprint、phosphor、morph、halftone、pulse用)、tech-explainer(tallyとtrace用)。
ワークフロー
1. 明確化
ユーザーが既に提供したものはスキップし、残りを質問します。最初にモードを質問します。平易な会話で、一度に最大3つの質問をします。開始を妨げないギャップは、想定してその旨を伝えます。すべてのフィルムは16:9、1920×1080で、横向きの全画面再生用です。縦長や正方形のフィルムを求められた場合は、このスキルでは作成できないと伝えます。
| # | 質問 | 理由 |
|---|---|---|
| 1 | 内容は何ですか?ツール、ステップ付きの主張、システム、名前、リール、数値、メカニズム? | モードを決定します(選択表)。1つ提案し、その理由を述べます。 |
| 2 | 事実はどこから来ますか?(リポジトリ、ドキュメント、データセット、アルゴリズム) | 画面上のすべての事実はそこから来ます。すべての数値は計算されます。 |
| 3 | プラットフォームと、目標の長さ(ある場合)は? | 長さは内容から計算されます(原則5)。目標がある場合は、モードの範囲内でテンポを調整し、シーンをカットまたは追加します。 |
| 4 | どのパレットプリセットを使用しますか? | プリセットのみ。モードカードにリストされています。カスタムの16進数値は不可。 |
| 5 | ハード制約(表示必須、表示禁止、URL、名前)はありますか? | 手戻りを防ぎます。 |
| 6 | 音楽:このエージェントは音楽生成APIを呼び出せますか? | はいの場合、フィルムのテンポに合わせた生成されたBGMが合成されたものと置き換わります(システム)。いいえの場合、合成されたBGMが使用され、引き継ぎ時にその旨が伝えられます。 |
モード、ソース、プリセットが指定され、音楽ソースが特定され、目標の長さ(ある場合)が決まったら完了です。
2. スキャフォールディング
node <SKILL_ROOT>/scripts/new-film.mjs <mode> <film-dir> --palette <id>
これにより、NodeとFFmpegがチェックされ、テンプレートがコピーされ、共有ランタイムがlib/として追加され(lib/VERSIONでスタンプ)、PLAN.mdの骨格が作成され、テンプレートのfonts.jsonにリストされているフォントがピン留めされたgoogle/fontsコミットから、ピン留めされたGSAPビルドがlib/vendor/にダウンロードされます。いずれかが失敗した場合は停止するため、フィルムがフォールバックフォントでレンダリングされたり、CDNに依存したりすることはありません。可変フォントの軸が必要なテンプレートは、fonts.jsonでそれらを宣言します(weightとstretchの範囲、CONTRACT.mdを参照)。次に、モードカードとフォルダのTEMPLATE.mdを完全に読みます。シーンレジストリ、各スロットの文字数制限、および固定された振り付けがそこにあります。モードが提供するすべてのシーンタイプを名前を挙げて言えるようになったら完了です。
3. コンセプトとビート計画
new-filmはPLAN.mdの骨格をフィルムフォルダに書き込みます。content.jsに触れる前に、それを埋めてください。計画なしのフィルムはレンダリングされません(原則10)。
- コンセプト文:「このフィルムでは、[この製品だけが持つ何か]が[モードの特徴的な装置]になる」という形式で、競合テスト:最も近い競合他社を文に含めると、もはや成立しなくなる必要があります。次に、スルーライン(最初から最後のフレームまで視線を導くオブジェクトまたはフレーム)。
- 禁止リスト:モードカードの「出荷時設定」とai-tells.mdから始めます。最も近い参考フィルムに近すぎるものを追加します。
- 最も近い参考作品とモチーフ表:最も近い参考フィルムを指定し、そのフィルムと共有するモチーフをリストします。既知の参考作品があるモードで、半分以上を共有している場合はP1に不合格となります。
- ビート計画:シーンごとに1行 — シーンタイプ、画面上のコピー(プライマリテキストか一瞥テキストか)、事実のソース、このシーンが次になるもの、および音楽が読み取りのためにブレークする、またはキーモーメントのためにドロップする場所。長さは選択されません。シーンを
content.jsに書き込み、npm run fitを実行します。これにより、各シーンの開始、ビート、読み取り必要時間、ターン前のパッド、フレーズ丸めのシェア、およびフィルムの長さが出力され、renders/timing.jsonが書き込まれ、表がPLAN.mdのfitマーカーの間にコピーされます。npm run fitは、PLAN.mdが存在しない場合は停止し、まだ未記入の<!-- fill -->部分がある場合は警告を表示します。
コピーを書く前に、モードのTEMPLATE.mdの長さテーブルを読んでください。各シーンのどのスロットがプライマリテキストとしてカウントされ、それらがどのように入力されるかが示されているため、各状態を発見するのではなく、予算化できます。すべてのシーンタイプがレジストリにあり、すべての文字列がその文字数制限に収まり、すべての数値がそれを計算するコードを指定し、npm run fitがエラーを報告しない場合に完了です。文字数制限は最初のフィルターにすぎません。スロットの幅は隣接するスロットに依存する可能性があるため、ピクセルチェックはステップ4の赤いバナーです。ルールがタイミングAPI 3を宣言しているテンプレートでは、エラーはフィルムが変更の4つの階層(原則5)のいずれかを破っていることを意味します:一度に入力されるプライマリテキストが5単語を超える(主張の場合は8単語、マークされたポーズで読まれる)、ランディング後の保持が2ビートを超える、コンポジションが6秒を超える、4ビート以上の変更なしのギャップ、表現力豊かなトランジションとピークの数や配置が間違っている。長い行を最初に次々に入力されるフレーズに分割し、次に繰り返されるラベルを一瞥テキストにし、次にシーンを分割します。タイプを縮小したり、読み取りの下限を超えて速度を上げたりしないでください。npm run fitが出力するタイミングテーブルの下に、階層の測定値が表示されます。まだAPI 2のテンプレートは、ページ制限(プライマリワード12、ステップの保持は1小節、最後は1.5小節、ページは4小節)を維持し、階層をINFOノートとして表示します。
4. まずは埋めてフレームを確認
content.js(およびモードで使用する場合はdata/やrun.js)を編集します。長さを合わせるためにdurationやシーンのbarsを入力しないでください。次に、アニメーション化する前にキーフレームの静止画をレンダリングして確認します(スクリプトは最初にfitを実行するため、静止画は現在の長さを使用します):
npm run snapshot -- --at <t1>,<t2>,<t3>
静止画の赤いバナーは、テキストがボックスよりも幅が広いスロットを示しています。そのテキストを短くしてください。中核原則またはモード原則に違反するフレームを修正します:25px未満の情報テキスト、読みにくいテキスト、3つ以上のタイプレベル、2つの主人公、2番目のアクセント、クリップまたははみ出したコピー、ai-tells.mdの内容。各キーフレームがモードカードのP0チェックに合格したら完了です。
5. レンダリング
npm run film # fit → audio → check → render, writes renders/film.mp4
npm run checkはエラー0を報告する必要があります。その警告はチェックリストに照らして判断されます。コントラスト警告は、まだ入力中のテキスト(タイピング、フェードイン)で、着地後に1回だけ読まれる場合にのみ許容されます。その他の警告は修正されるか、「既知の問題」にリストされます。サウンドは同じビートグリッド上でcontent.jsに従います。代わりに生成音楽を使用するには、フィルムの調整されたテンポと長さ(renders/timing.json)でレンダリングし、assets/audio/に保存し、content.bed = { file, offset }を設定します(モードのTEMPLATE.mdを参照)。
6. 測定とレビュー
node <SKILL_ROOT>/scripts/check-film.mjs renders/film.mp4 --film-dir .
sh <SKILL_ROOT>/scripts/contact-sheet.sh renders/film.mp4 renders/contact-sheet.jpg 20
check-filmはrenders/timing.jsonを読み込み、それに対してレンダリングを測定します:フォーマットと長さ、ラウドネス(短期および瞬間的なジャンプを含む)、黒フレーム、エリアごとのフラッシュ、ビート上のキーイベント(2フレーム以内、ピクチャーイベントとサウンドオンセット(1フレーム以内に≥ 3 dB))、コンテンツマスク内のシーンごとの静止ストレッチ(グレイン認識ノイズフロアに対する)、ペース(長いほぼ静止ビートの連続なし、フィルムの半分以上がほぼ静止ではない)、ホールドのセトリング、ハンドオフ、等長シーンの連続、および宣言されたイベント(T0ギャップ、T1コンポジション長さ、T2表現力豊かなトランジション、T3ピーク、ホールド長さ)における変更の4つの階層。これらはタイミングAPI 3のテンプレートに対してのみFAILになります。ピクチャーオンセット、大面積変更、および最も大きな瞬間は、それらの横にあるピクセルおよび信号の推定値です。最小テキスト、テキストコントラスト、タイプレベル、アクセントエリア、オクターブバランス、4小節の繰り返し、およびリミッティングは、ピクセルまたは信号の推定値であり、INFOとして報告されます。測定するものがない項目はPASSではなくN/Aを報告します。--jsonは各結果を、それが提供するチェックリスト項目とともに表示します。
次に、references/checklist.mdとモードカードのチェック(ピラミッドの底部からP0、次に上部から判断(フィット、新鮮さ、テクスチャ))を確認します。何かを変更する前に測定します。原因を修正し、再測定します。すべてのP0が合格し、すべてのP1/P2のミスが修正されるか、フィルムのREADMEに「既知の問題」として記載されたら完了です。
7. 引き継ぎ
MP4パス、コンタクトシート、および計画、モードとプリセット、音楽ソース(合成または生成)、コマンド、check-filmレポート、既知の問題を含むREADMEを提供します。誰かが聴いていない限り、「まだ耳で確認されていません」と伝えます。ユーザーの評価を求め、それを日付とともにそのまま引用して返します。ユーザーが利用できない場合は、「評価待ち」と書き、停止します。
メンテナー向け:評価からルールへ
このスキルのソースを保守する人のみ対象。フィルムの作成者はステップ7で停止します。評価はモードカードや原則を直接編集しません。まず、ピラミッドの層に配置し、foundations.mdと照らし合わせて確認します:層1〜2では基準が決定し、層3〜4ではドメインのコンセンサス(理由を記述した逸脱がない限り)、層5〜6では理論が同等に優れていると判断する候補から所有者が選択します。傾向は、2つの一貫した評価の後にルールになります。
…
[翻訳のため省略]