Communitygithub.com

KKcorps/code-film

1つのHTMLページで、すべてのフレームとサウンドをコードで計算し、画像や映像素材を一切使わずに短編フィルムを制作するスキル。説明動画、ミュージックビデオ、ストーリー、広告、ビジュアルポエムなど、あらゆる種類の作品を、リソグラフ、紙コラージュ、インク、水彩、ピクセル、設計図、砂絵など、あらゆる手作り風のルックで制作可能。

code-film とは?

「code-film」は、AIエージェント(Claude Code、Codexなど)が、画像や映像素材を一切使わずに、1つのHTMLページでアニメーションフィルムを生成するためのスキルです。すべてのフレームとサウンドトラックはコードによって計算され、最終的にMP4ファイルとして出力されます。このスキルは、まず「意図カード」を作成し、29作品からなるギャラリーを審美基準として、完成したフィルムが意図と一致しているかを検証するという、明確なワークフローを提供します。リソグラフプレスを模したフレームエンジン、計算されたスコア、ワンコマンドでのMP4ビルド機能を備え、欠陥チェックやルック・サウンドの検証も行います。また、参考クリップや静止画、HTMLページを分解して分析する機能もあります。ユーザーがアニメーションによる説明動画、コードで描かれたフィルム、ミュージックビデオ、静止画、リソグラフ風や印刷風のルック、または参考作品に合わせたり学んだりしたい場合に使用します。なお、YouTube向けのナレーション付きレッスンは「lesson-film」スキルが対象で、ページ内やドキュメント内のアニメーションダイアグラムは対象外です。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/KKcorps/inkreel/tree/main/skills/code-film

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

コードで描くフィルム

このスキルは、フレーム f を (f, seed) から描画する1つのHTMLページと、同じように計算されたサウンドトラック、そしてMP4を生成します。フィルムのテーマ、見た目、動きはあなたが自由に決められます。このスキルが保持するのは、最初に書き留める「意図」、判断基準となる「審美眼」、そして完成したフィルムが意図を達成したかどうかを示す「チェック」の3つです。

セットアップ

新しいマシンで最初に bash assets/doctor.sh を一度実行してください。Chrome(または CHROME パス)、Node 22以降、ffmpeg、Python 3(numpyとPillow)がインストールされているか確認し、不足があれば修正方法を表示します。

1. 意図を書く

assets/intent.md をページと同じ場所に piece.intent.md としてコピーします。最初に「要点」と「感情」を記入します。つまり、初見の人が一度見た後に何を言えるようになるか、そして終わったときに何を感じるか、です。スケッチが選ばれるまでは残りの部分は空けておきます。なぜなら、最初にカードを書くことでアイデアが固定され、スケッチはそのルックだけを変更できるからです。これにより、元帳フィルムの3つのスケッチが、3つの異なる外見を持つ1つのアイデアになりました。

スケッチが選ばれたら、カードを完成させます。「判定」セクションでは、私たちが従うもの、この主題だけが提供できるポイント、ルックとその理由、テキストの有無と方法、学習元のギャラリーフィルム、そして終わりが始まりにどう応答するかを記述します。「計測」セクションでは、長さ、テンポ、サウンド、ビートを指定します。以降のすべての選択はこのカードに従います。作業中にカードが間違っていることが判明した場合は、カードを変更し、その旨を報告します。

2. ギャラリーで判断する

reference/gallery.md には、Claudeがすべてのフレームをコードで描いた29作品(音楽、説明、ストーリー、実験)と、好まれた作品に共通する特徴が記録されています。

  • すべてのシーンを通して追跡できるものがある。
  • すべての絵が何かを語っている。バリエーションのためだけにあるものはない。
  • 始まった場所で、変化して終わる。
  • 現在地を示すもの(ゲージ、カウンター、時計)がある。
  • ルックは実際の素材であり、その欠点も含めて使用され、このストーリーのために選ばれている。
  • サウンドと映像は一体である。
  • テキストは稀で、大きく、世界の一部である。
  • 視点と温かみがある。
  • アイデアと同じくらい短い。

これらは「判断基準」であり、「ルール」ではありません。カードが理由を説明している場合は、一つを破っても構いません。reference/taste.md には、このスキルの作者であるKartikがスキル構築中に行った修正が記録されています。これは出発点としての味覚であり、あなたのものではありません。ギャラリーと意見が異なる場合は、その旨を述べ、フィルムの対象者に確認します。

3. 成果を検証する

納品ノートには、以下の3つのレイヤーすべてを報告します。

  • 欠陥はビルドをブロックする。 ページはパース、実行、毎回同じフレームを描画します。カットでフレームが点滅したり飛び出したりしません。ミックスは -28 ~ -8 dBFS の間に収まり、クリッピングしません。check.py、seamcheck.py、verify.py、build.sh がこれらを強制します。
  • 意図が計測される。 python3 assets/verify.py piece.mp4 は、カードの「計測」セクションをチェックします。不一致がある場合は、フィルムまたはカードのいずれかが間違っています。どちらかを修正し、その旨を報告します。
  • 視聴テストはあなたの責任である。 すべての数字を満たしていても、依然として品質が悪いことがあります。verify.py が出力する5つの質問に答えてください。初心者として語り直す、すべてのタイルに名前を付ける、音を消して見る、ギャラリーフィルムと並べて見る、最後のフレームを評価する。

lookcheck.py と soundcheck.py は決してブロックしません。テンポ、色、同期、ビートを説明し、あなたはそれらをカードと照らし合わせて読みます。

ワークフロー

各ステップには報告行があり、どのように行ったかを言わずにチェックを入れることはできません。

  1. 参考資料が共有された場合、まずそれを分解する。 クリップ、静止画、HTMLページのいずれでも構いません。reference/references.md を読んでください。それがどの形式か、何をするものか、どのギャップが埋められそうか、何を取り入れて何を残すかを報告します。
  2. 要点と感情を書く。 この2行だけです。報告します。
  3. 最も近いギャラリーフィルムを2~3本通して見る。 それぞれから何を取り入れ、何をコピーしないかを報告します。
  4. 3つの異なるストーリーを静止画としてスケッチする。 それぞれが異なる出来事であり、1行で語られ、同じアイデアを3つのルックで表現したものではありません。少なくとも1つは、図ではなく、視聴者が住める世界であるべきです。それぞれを、エンジンとプリント仕上げで完成時のルックで描画します。ワイヤーフレームでは決して描きません。スケッチは欠陥チェックをスキップしますが、技巧はスキップしません。assets/sketchcheck.py は、平坦なスケッチや、承認済みフレームを --refs で渡した場合にコピーと判断したスケッチを不合格にします。対象者に見せて、選んでもらうか、混ぜてもらいます。各ストーリーのラインを報告します。その後、カードを完成させます。
  5. 言葉があれば、それを書く。 1つの声で書かれた1段落を、コードの前に、piece.chain.txt として保存します。reference/story.md の「声のように読める言葉」を読んでください。段落とその接続比率を報告します。
  6. 計画を立てる。 ビートを順番に、各絵が何を意味するかを1行で、現在地を示すもの、そしてエンディングを記述します。計画を報告します。計画は契約ではありません。
  7. ページを構築する。 assets/engine.html から始めるか、以下の契約に従って独自のページを書きます。各シーンを結合する前に単独で確認します。見直して描き直したものを報告します。
  8. サウンドを作る。 最初に TUNE と SECTIONS でメロディを書き、次にストーリーの転換点となる4~8のアクセントを書きます。または、独自の piece.score.py、ページが生成する piece.wav、または無音を使うこともできます。score.py が出力する楽譜と、なぜサウンドがカードに適合するかを報告します。
  9. ビルドする。 assets/build.sh piece.html out.mp4 を実行します。先頭に ROUGH=1 を付けると、早期に見せるためのドラフトが作成されます。数値を報告します。
  10. 検証する。 3つのレイヤーすべてを報告します。
  11. 新しいファイルとして納品する。 最後のビルドを上書きしないでください。

1つのフィルムに2つのルック

フィルムは、リソグラフシーンとインクの元帳のように、2つのレンダラー間でカットすることができます。2つ目のレンダラーには独自のスコープを与え、プレートオプション { raw: (ctx, u, f, size) => {} } でそのアクトを描画し、そのカットを EXTRA_CUTS に配置します。assets/examples/parcel42-day/ がまさにこれを行っています。また、これはワークフロー全体の標準的な実例でもあるため、そのREADMEを読み、方法については参照しても、ルックをコピーしてはいけません。

ページ契約

この契約を満たすページは、ビルドと検証が行われます。const FPS = n を設定します。?capture=1 モードでは、window.__frames にフレーム数を設定し、window.__render(f) が毎回同じ方法でフレーム f を描画し、タイトルを capture ready N に設定します。スクリプトの最初の行は、エラーを document.title に書き込み、クラッシュが空白ページのように見えるのを防ぎます。

エンジン上に構築されたページは、?play=1、?f=N、?grid=1、?scene=id、?cuts=1 もサポートし、score.py は plate() からそれらのアクトを読み取ります。

ファイル

ファイル説明
assets/intent.md意図カードのテンプレート
assets/engine.htmlオプションの開始点:フレームグリッド、アクトとショット、シーンライブラリ、ムーブ、リソグラフプレス、手書きペン、3つのデモワールド
assets/score.pyページのビートグリッド上で計算されたスコア、作品ごとのキー、ハーモニー、キット、スイング、エンディングを含む
assets/build.shゲート、キャプチャ、シーム、スコア、エンコード、計測、検証を1つのコマンドで実行
assets/verify.pyフィルムとその意図カードの比較、ラウドネスとクリッピングのチェック、視聴テストの質問
assets/check.pyページゲート:パース、エラーハンドラ、モード、グリッド、レンダリング
assets/seamcheck.pyフラッシュ、カットからの飛び出し、ムーブ内のジャーク、ドリフトする固定アンカーをチェック
assets/sketchcheck.pyストリースケッチ:平坦でない、承認済みフレームのコピーでない(--refs)、禁止ワールドでない(--world)、スタブが残っていないことをチェック
assets/lookcheck.py、assets/soundcheck.py映像とサウンドの測定値。カードとギャラリーと照らし合わせて読む
assets/printcheck.pyフレームが印刷されたように見えるか、計算されたように見えるかを、参照画像と比較してチェック。ワイドフレームを中央で正方形にクロップ
assets/refpage.mjsHTMLページである参照を分解:そのパレット、マーク、レイヤー、オーディオキットを描画中に抽出し、クリップチェックが機能するようにMP4も生成
assets/capture.mjsCDP経由のフレームキャプチャ。build.shが呼び出す
assets/capture-range.mjs、assets/capture-par.sh任意の幅と高さで、複数のChromeで同時にキャプチャ。16:9および1分以上の場合に使用
assets/doctor.shこのマシンの準備状態を確認:Chrome、Node 22+、ffmpeg、numpy、Pillow
assets/examples/parcel42-day/承認されたフィルムのソースと、その構築方法に関するREADME
assets/example-print-still.htmlリソグラフ仕上げのモデル

いつ何を読むか

各ファイルは1回の呼び出しで全体を読んでください。Codexの実行では、出力制限のもとで1回の呼び出しで3~4個のスキルファイルを読んでいました。その結果、gallery.mdの半分を含む、読み取りの途中から約13,000トークンを気づかずに失っていました。読み取り中にトークンが切り詰められたと表示された場合は、そのファイルを単独でもう一度読んでください。

  • 意図カードの前、および何かを表示する前に、reference/gallery.md、次に reference/taste.md を読む。
  • 参照クリップ、静止画、HTMLページが共有されたときに、reference/references.md を読む。
  • ストーリーを計画したり、キャプションを書いたりするときに、reference/story.md を読む。
  • 映像とサウンドが同じビートグリッドを共有するときに、reference/time.md を読む。
  • トランジションやカメラを計画するときに、reference/moves.md を読む。
  • ルックがリソグラフまたは印刷風のときに、reference/press.md を読む。さらにテクスチャを調整する前に reference/surface.md を読む。
  • 手書きを追加するときに、reference/hand.md を読む。
  • サウンドを作るときに、reference/sound.md を読む。
  • ビルドするときに、reference/export.md を読む。
  • フィルムが1分を超えるときに、reference/export.md の最後を読む。
  • フィルムがYouTube向けのナレーション付きレッスンの場合は、このスキルをベースにした lesson-film スキルを使用する。
  • トラップ:これまでにこのスキルが破綻したすべての方法を、フェーズごとのチェックリストとして。カードとスケッチの前、および何かを表示する前に reference/traps-story.md。ページを構築する前に reference/traps-page.md。ムーブ、カメラ、ビートグリッドを計画するときに reference/traps-motion.md。ルックが印刷風のときに reference/traps-print.md。サウンドを作るときに reference/traps-sound.md。最初の完全ビルドの前に reference/traps-build.md。

このスキルの変更

意図と判断を述べ、結果が意図と一致するか確認します。あるフィルムのスタイルをルールにしてはいけません。そうすると、すべての作品が1つの参照のコピーになってしまいます。教訓はそれを所有する1つのファイルに記述し、他のすべてのファイルはそこを1行で指すようにします。誰かが承認した新しいフィルムは、なぜ機能するかの理由とともに、ギャラリーの「私たちの作品」セクションに追加します。

借用と謝辞

フラットフィルプラスクリップ仕上げモデル、および wob、crayon、hatch、grain、dotScreen、scribble の形状は、alesha-pro(MIT、github.com/alesha-pro/tools)による hand-drawn-canvas-animation スキルから来ています。テクスチャはグラデーションではなく仕上げであり、シェイプの塗りつぶしとアウトラインが決して一致してはならないというそのルールが、このスキルの印刷ルックを実現可能にしたものです。

良い状態とは

初心者が一度見て語り直すことができ、その語りが要点の行と一致すること。コンタクトシートのすべてのタイルが、何かを意味する絵であること。ギャラリーフィルムの隣に置くことができ、そのコピーではないこと。最後のフレームで終わること。欠陥がゼロで、カードが一致し、そしてあなたがとにかく見たこと。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル