Communitygithub.com

taste-distillation

複数のリファレンス動画を測定し、再利用可能なスタイルパック(3D LUTによるカラーグレーディング、カットリズムのショット長分布、静止画、スクリーンブレンド用オーバーレイプレート、生成モデル用テキスト仕様)を作成します。リファレンス映像のルックをキャプチャして再現可能にしたいとき、アセットを生成したいとき、誰かのスタイルを再現したいときに使用します。

taste-distillation とは?

このスキルは、複数のリファレンス動画を解析し、**スタイルパック**(style pack)と呼ばれる一連の測定値とアセットを生成します。スタイルパックには、カラーグレーディング用の3D LUT(.cube)、カットリズムのショット長分布、静止画、スクリーンブレンド用のオーバーレイプレート、そして生成モデル用のテキスト仕様が含まれます。 主な特徴は、**プロンプトによるスタイル記述の限界**を克服することです。実測に基づけば、プロンプトで色味を指定するよりもはるかに正確に、かつ無料でルックを再現できます。測定では、輝度ゾーンごとの色度、平均ではなく中央値とMAD(中央絶対偏差)、コントラストとしてのL*標準偏差、黒背景の割合、インターフェース要素のマスキングなど、実用的な統計量を重視します。また、**Temporal variance** を用いて画面録画に含まれるUIを自動的に除去します。 スキルはオフラインで実行可能な `mint.py`(ネットワーク不要、決定論的)と、1回のVLM呼び出しを行う `distill.py` で構成され、`--dry-run` モードで事前確認も可能です。生成されたパックは、続く `taste-application` スキルで使用されるか、直接カラーリストに渡されます。 対応プラットフォーム: Claude Code, Cursor, Codex など。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/ECC/tree/main/skills/taste-distillation

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

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

ドキュメント

テイスト蒸留 (Taste Distillation)

このスタンドアロンスキルは、実装を scripts/ に含みます。その後の生成またはローカルテイク編集には taste-application を使用してください。各ジャンルは独自のパックにまとめてください。Flash Ethereal の測定値を、Fluid Sketch や 3D Cyber Glitch に黙って再利用してはいけません。測定値がゼロの場合は有効なデータであり、欠落フィールドと区別してください。

ローカル依存関係は scripts/requirements.txt にあります。別途認可されたプロバイダーワークには、scripts/requirements-live.txt、認証情報、および明示的な TASTE_FORGE_ALLOW_LIVE=1 が必要です。--dry-run では認証情報を読み取らず、ジョブも送信しません。ワークフローがローカルエンドポイント名から保存されたと推測しないでください。実際のプロバイダー側のワークフローまたはリクエストの証拠を使用してください。

リファレンス動画をスタイルパックに変換します。これは、後続のステージが決定論的に消費する測定値とアセットのフォルダです。

いつ起動するか

  • 「これらのクリップのルックをキャプチャしたい」「雰囲気を抽出したい」「これを再現可能にしたい」
  • ユーザーがリファレンス映像を持っており、LUT、グレード、またはマッチするペーシングを必要としている
  • ジャンルごとにルックのライブラリを構築している
  • 「スタイルをプロンプトで説明する」が答えになるようなリクエスト

核心的な発見

プロンプトではグレードを提供できません。測定ならできます。

実際の映像で測定しました:エスカレートするカラー指示を使った3回の有料生成では、ミッドトーンa*が +1.9 → +2.8 → +0.3 と変化したのに対し、ターゲットは +24.9 でした。またコントラストは 34.7 のターゲットに対して約19から動きませんでした。同じ映像に測定済みパックを適用すると、色差MAE 1.88、コントラスト 33.7 を1回の決定論的パスで、無料で達成しました。

つまり、分担は次の通りです:モデルはコンテンツ、モーション、照明構造を提供し、パックはルックを提供します。 生成プロンプトに色の単語を入れるのは無駄どころか有害です。お金がかかり、LUTが望むニュートラルベースからレンダリングを遠ざけます。プロンプトに明示的に次のように記述してください:「色:なし。ニュートラルにレンダリング。グレーディングは後で適用されます。」

パックの内容

stylepacks/<genre>/
  grade.json      測定された色統計(下記参照)
  cadence.json    検出されたすべてのショット境界と導出された分布
  look.cube       33^3 LUT、ResolveにノードLUTとして直接ドラッグ可能
  spec.json       VLMによる説明、測定値に基づく
  grounding.txt   VLMに与えられた測定値の事実
  stills/         最長ショットからのフル解像度フレーム(条件付け画像)
  plates/         黒背景に抽出されたスクリーンブレンド用オーバーレイ要素
  props/          ミントされたGLBメッシュ
  pack.json       マニフェスト

実行方法

python mint.py --genre <name> --refs a.mov b.mov c.mov     # オフライン、APIキー不要
python distill.py --genre <name>                            # VLM呼び出し1回

mint.py は純粋な数値分析です。ネットワークなし、キー不要、決定論的なので、バックアップの代わりにパックを再生成できます。

重要な測定項目

色度は輝度ゾーンごとに、グローバルではない

カラーのアイデンティティは通常、1つの輝度帯にあります。グローバルなa*/b*オフセットは、数学的にスプリットトーニングを表現できません。ゾーン内で色度を測定します(L* エッジ [0,15,35,55,75,100])。

実際の特徴:L25でバイオレット(a +24.9、b* −17.5)、両端はほぼニュートラル。最も暗いゾーンと最も明るいゾーンのみを報告すると、「均一なキャスト」と誤認されます — 常に全曲線を出力してください。

中央値 + MAD、平均 + 標準偏差ではない

実際のリファレンスセットにおける色度は強い右歪みを持ちます。ある測定リールでは、ミッドトーン色度の平均は36.9、中央値は17.5でした。そのため、平均ベースのLUTは素材が正当化するよりも約3倍強い色を押し出しました。

コントラストはstd(L*)、白マイナス黒ではない

白−黒レンジはほぼ全ての実際の映像で約100であり、何も識別しません。

背景シェアは第一級の統計量

L*10未満のピクセルの割合を記録します。分布のモーメントではこれを捉えられません。クリップは正しい平均、標準偏差、色度を持ちながら、黒がグレーに持ち上げられている可能性があります。これはまさに、あるグレードがMAE 1.88 / コントラスト 33.7 をスコアしながら、実際のフレームが濁った紫色の混乱だった理由です。

測定前にインターフェースをマスクする

画面録画されたリファレンスには、静的な家具(レターボックスバー、ステータスバー、いいねアイコン、キャプションテキスト)が含まれます。これらはすべて、あたかもルックであるかのように統計に反映されます。黒バーはシャドウの重みを膨らませ、赤いハートはa*をマゼンタに歪めます。時間的分散(Temporal variance) がこれらをきれいに分離します — 映像は動き、インターフェースは動きません。そのため、手動で調整されたクロップは不要です。実際の素材では、これにより約65%のピクセルが保持されます。

カデンスには適応的閾値が必要

適切なコンテンツ検出器の閾値は素材に依存します。ハイコントラストのアクションリファレンスは30でも十分にカットを検出しますが、ムーディーなものはカットを隠してしまいます。閾値を降下させながら、最も感度の高い設定で見つかるショットの90%以上をまだ回復する最も高い閾値を採用します。これにより、ノイズではなく実際のカットに偏ります。異常なカット率(>100/分)を示す閾値は拒否します。連続的なカメラ移動は検出器を毎フレーム誤作動させます。

スイープ全体を共有のStatsManagerで1回のデコードパスで実行します。ナイーブなバージョンは閾値ごとに再デコードするため、60fpsソースでは秒と分の違いになります。

オーバーレイプレート:スクリーンショットではなくアセット

静止画はフレーム全体です。コンポジットしても別の画像を重ねるだけです。プレートは、リファレンスのグラフィック語彙(フレア、ストリーク、グリッチフラグメント)を黒背景に抽出したもので、キーイングなしでスクリーンブレンドできます。

実際の素材で遭遇した2つの落とし穴:

  1. 絶対閾値は失敗する。 明るいリファレンスでは L>55 AND chroma>12 の選択がフレームの約90%を占め、「プレート」は画像そのものになります。認識可能な顔も含みます。パーセンタイル(〜上位3%) で選択し、フレームの約22%以上を覆うプレートは拒否してください。
  2. 明るさではなく、分離度でランク付けする。 「明るく飽和したピクセルの割合」では、色あせたフレームが上位に、実際の特徴である黒背景に1つの強いフレアがあるフレームは下位になります。p99.5(エネルギー) / median(エネルギー) でスコアリングします。

また、スコアリング前にマスクします。焼き付きタイポグラフィは明るく、飽和しており、ハイコントラストです。マスクなしで実行すると、他人のタイトルカードの完璧なプレートが生成されます。

VLMのグラウンディング

説明を要求する前に、測定値をシステムプロンプトにフィードします。グラウンディングされていないVLMは、+24.9のa*キャストがある映像に対して「カラーグレーディングなし、ニュートラル」と報告します。グラウンディングされると、キャストを正しく説明し、二次的なアクセントを独立して推測します。

回避語(varied, mixed, dynamic, some, often, neutral, or)を禁止します — モデルは「変化する照明」をレンダリングできません。コードで禁止を強制し、プロンプトだけに頼らないでください。 おおよそ3回に1回の実行で違反が発生しました。フィールドごとに再質問し、N回の試行後、最も曖昧でない回答を保持します。失敗するよりも良いです。

ユーザーに述べるべき注意点:仕様が測定値にグラウンディングされると、それらに対する独立したチェックではなくなります。

LUTベイキングの落とし穴

  • LUTはピクセル単位のRGB関数のみをエンコードできます。分布に依存するもの(ヒストグラムマッチング、パーセンタイルアンカー)は、ベイクする前に定数に削減する必要があります。さもないと、映像ではなく均一なLUTグリッドを静かに測定します。
  • cv2.cvtColor(LAB2RGB) は内部でクランプするため、これを使用して色域外テストを行うと0%と報告されます。Lab→線形sRGBは手動で変換してください。実際の測定では83.3%が色域外でした。
  • 色度の転送はオフセットで行い、アフィンでは行わないでください。アフィンはソースのσで除算し、オーバーシュートします。実際の映像ではb*を+11.6に反転させ、ターゲットは−17.5でした。オフセットによりMAEは6.23から2.13に改善されました。
  • 色域圧縮は、同一のMAEに対して3.8倍の実行時間がかかりました。オプトインにしてください。

アンチパターン

しないこと理由
合成テスト映像で調整する1つのプロジェクトで4つの誤った結論を招き、実際の映像ですべてが覆された
MAEだけを信頼するMAE 1.88は、視覚的に壊れたフレームで成功のように見えた
色度に平均/標準偏差を使用する右歪み; 約3倍強く押し出す
エンドポイントゾーンのみを比較する両端は構造的にほぼニュートラル
ルックを説明して終了する仕様はコンテンツと構造用、パックはルック用

ハンドオフ

パックがインターフェースです。一旦パックが存在すれば、taste-application スキルを使用して生成・アセンブルするか、look.cube を直接カラーリストに渡します。

バンドルされたコード

このスキルの scripts/ は、疑似コードではなく、動作する実装です。プロジェクト固有の前提はありません。任意のリファレンス動画をポイントするだけでパックを生成します。

pip install -r scripts/requirements.txt
export FAL_KEY=...            # fal を呼び出すステージでのみ必要

すべてのネットワーク呼び出しは、TASTE_FORGE_DRY_RUN=1 または --dry-run でスタブ化されるため、お金をかけずに計画、プロンプト、トラックレイアウト、マニフェストを検査できます。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/content-engine

Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.

affaan-m/ECC

Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.

affaan-m/fal-ai-media

Unified media generation via fal.ai MCP — image, video, and audio. Covers text-to-image (Nano Banana), text/image-to-video (Seedance, Kling, Veo 3), text-to-speech (CSM-1B), and video-to-audio (ThinkSound). Use when the user wants to generate images, videos, or audio with AI.

affaan-m/manim-video

日本語翻訳:このファイルは manim-video 用の日本語翻訳が必要です

affaan-m/remotion-video-creation

Remotion のベストプラクティス - React で動画を作成する。3D、アニメーション、音声、字幕、チャート、トランジションなどをカバーするドメイン固有の29のルール。

affaan-m/video-editing

AI-assisted video editing workflows for cutting, structuring, and augmenting real footage. Covers the full pipeline from raw capture through FFmpeg, Remotion, ElevenLabs, fal.ai, and final polish in Descript or CapCut. Use when the user wants to edit video, cut footage, create vlogs, or build video content.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

agent-self-evaluation

Use after completing any non-trivial task. The agent self-rates its output on 5 axes — accuracy, completeness, clarity, actionability, conciseness — with concrete evidence per criterion. Produces a structured 1-5 scorecard with specific improvement suggestions.

agent-sort

Build an evidence-backed ECC install plan for a specific repo by sorting skills, commands, rules, hooks, and extras into DAILY vs LIBRARY buckets using parallel repo-aware review passes. Use when ECC should be trimmed to what a project actually needs instead of loading the full bundle.

ai-first-engineering

Engineering operating model for teams where AI agents generate a large share of implementation output. Use when setting team process, review gates, or ownership rules for a codebase largely written by agents.

ai-regression-testing

Regression testing strategies for AI-assisted development. Sandbox-mode API testing without database dependencies, automated bug-check workflows, and patterns to catch AI blind spots where the same model writes and reviews code. Use when adding regression coverage to AI-assisted code, or when the same model both wrote and reviewed a change.

android-clean-architecture

Clean Architecture patterns for Android and Kotlin Multiplatform projects — module structure, dependency rules, UseCases, Repositories, and data layer patterns. Use when structuring modules, layers, or data flow in an Android or KMP project.

angular-developer

Generates Angular code and provides architectural guidance. Trigger when creating projects, components, or services, or for best practices on reactivity (signals, linkedSignal, resource), forms, dependency injection, routing, SSR, accessibility (ARIA), animations, styling (component styles, Tailwind CSS), testing, or CLI tooling.

関連スキル