Communitygithub.com

taste-distillation

일련의 참조 비디오에서 재사용 가능한 스타일 팩(컬러 그레이딩 3D LUT, 컷 리듬 샷 길이 분포, 히어로 스틸, 스크린 블렌드 오버레이 플레이트, 생성 모델을 위한 텍스트 스펙)을 측정합니다. 사용자가 참조 영상의 룩을 캡처하고, 반복 가능한 룩을 구축하고, 참조에서 에셋을 생성하거나, 다른 사람의 스타일을 재현하려는 경우 사용합니다.

taste-distillation란 무엇인가요?

Taste-Distillation은 참조 비디오 클립에서 측정 가능한 스타일 데이터를 추출하고 구조화된 스타일 팩으로 만드는 전문 기술입니다. 핵심 통찰은 '프롬프트가 그레이드를 제공할 수 없다. 측정이 제공할 수 있다'는 점입니다. 이 기술은 참조 영상의 휘도 영역별 크로마, 샷 길이 분포, 콘트라스트(표준편차 L*), 배경 비율, 시간적 변동성을 활용한 인터페이스 마스킹 등을 측정합니다. 팩에는 grade.json, cadence.json, look.cube 3D LUT, VLM 설명(spec.json), grounding.txt, 스틸, 플레이트(화면 블렌드 오버레이 에셋), props(GLB 메시), pack.json 매니페스트가 포함됩니다. 이 기술은 Claude Code, Cursor, Codex와 같은 AI 에이전트에서 사용할 수 있으며, 명령줄 도구(mint.py, distill.py)를 통해 실행됩니다. offline 모드(mint.py)는 순수 수치 분석으로 네트워크나 API 키 없이 실행 가능하며, --dry-run 플래그로 지출 없이 계획을 검토할 수 있습니다. 이 기술은 생성 모델에 컬러 지시를 주는 것이 오히려 해롭다는 점을 강조하며, 'Color: none. Render neutral. Grading is applied afterwards.'와 같은 프롬프트를 권장합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/everything-claude-code/tree/main/skills/taste-distillation

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Taste Distillation (맛 추출)

이 독립형 스킬은 scripts/에 구현체를 제공합니다. 생성된 편집 또는 로컬 편집에는 taste-application을 사용하십시오. 각 명명된 장르는 자체 팩에 보관하십시오. Flash Ethereal의 측정값을 Fluid Sketch나 3D Cyber Glitch에 무단으로 재사용해서는 안 됩니다. 측정된 0은 유효한 데이터입니다. 빈 필드와 구별하십시오.

로컬 종속성은 scripts/requirements.txt에 있습니다. 별도로 인증된 제공자 작업에는 scripts/requirements-live.txt, 자격 증명 및 명시적 TASTE_FORGE_ALLOW_LIVE=1이 필요합니다. --dry-run은 자격 증명을 읽거나 작업을 제출하지 않습니다. 로컬 엔드포인트 이름에서 워크플로가 저장되었다고 추론하지 마십시오. 실제 제공자 측 워크플로 또는 요청 증거를 사용하십시오.

참조 비디오를 스타일 팩으로 변환합니다: 나중 단계에서 결정론적으로 사용하는 측정값과 에셋이 포함된 폴더입니다.

활성화 시점

  • "이 클립들의 룩을 캡처해 줘" / "분위기를 추출해 줘" / "이걸 반복 가능하게 만들어 줘"
  • 사용자가 참조 영상을 가지고 있고 LUT, 그레이드, 또는 일치하는 페이싱을 원할 때
  • 장르별로 분류된 룩 라이브러리를 구축할 때
  • 답변이 "프롬프트로 스타일을 설명하세요"가 될 수밖에 없는 모든 요청

핵심 발견

프롬프트는 그레이드를 제공할 수 없습니다. 측정이 제공할 수 있습니다.

실제 영상에서 측정된 결과: 세 번의 유료 생성에서 컬러 방향을 점진적으로 조정했을 때 미드톤 a*가 +1.9 → +2.8 → +0.3으로 이동한 반면, 목표는 +24.9였고 콘트라스트는 목표 34.7에 대해 ~19를 벗어나지 않았습니다. 측정된 팩을 동일한 영상에 적용한 결과, 크로마 MAE 1.88과 콘트라스트 33.7을 단 한 번의 결정론적 패스로 무료로 달성했습니다.

따라서 구분은 다음과 같습니다: 모델은 콘텐츠, 모션 및 조명 구조를 제공하고, 팩은 룩을 제공합니다. 생성 프롬프트의 컬러 단어는 쓸모없을 뿐만 아니라 비용을 발생시키고 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는 순수 수치 분석입니다 — 네트워크 없음, 키 없음, 결정론적이므로 팩을 백업 대신 재생성할 수 있습니다.

중요한 측정값

전역이 아닌 휘도 영역별 크로마

색상 정체성은 일반적으로 하나의 휘도 대역에 있습니다. 전역 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*를 마젠타 방향으로 편향시킵니다. 시간적 변동성이 이를 깔끔하게 분리합니다 — 영상은 움직이고 인터페이스는 움직이지 않습니다. 따라서 수동 자르기가 필요 없습니다. 실제 재료에서 이는 약 65%의 픽셀을 유지합니다.

케이던스는 적응형 임계값 필요

올바른 콘텐츠 감지기 임계값은 재료에 따라 다릅니다: 고대비 액션 참조는 30에서도 충분히 강하게 컷을 감지하지만, 분위기 있는 참조는 그 아래에 컷을 숨깁니다. 임계값을 내림차순으로 스윕하고 가장 민감한 설정이 찾는 샷의 ≥90%를 여전히 복구하는 가장 높은 값을 취하십시오. 이는 노이즈보다 실제 컷에 편향됩니다. 터무니없는 컷률(>100/분)을 의미하는 임계값은 거부하십시오. 연속 카메라 움직임은 모든 프레임에서 감지기를 트리거합니다.

전체 스윕을 공유 StatsManager로 한 번의 디코드 패스로 실행하십시오. 기본 버전은 임계값마다 다시 디코드하므로 60fps 소스에서는 초와 분의 차이가 발생합니다.

오버레이 플레이트: 스크린샷이 아닌 에셋

스틸은 전체 프레임입니다. 합성하면 단순히 다른 사진을 위에 올리는 것입니다. 플레이트는 참조의 그래픽 어휘(플레어, 줄무늬, 글리치 조각)를 검정 배경에 추출하여 키잉 없이 화면 블렌드되도록 한 것입니다.

실제 재료에서 발견된 두 가지 함정:

  1. 절대 임계값은 실패합니다. 밝은 참조에서 L>55 AND chroma>12 선택은 프레임의 ~90%를 차지하며 "플레이트"는 그림입니다 — 알아볼 수 있는 얼굴을 포함합니다. 백분위수(~상위 3%) 로 선택하고 프레임의 ~22% 이상을 덮는 플레이트는 거부하십시오.
  2. 밝기가 아닌 분리도로 순위를 매기십시오. "밝고 채도 높은 픽셀의 비율"은 탈색된 프레임을 1위로, 하나의 강렬한 플레어가 있는 검은 프레임(실제 시그니처)을 거의 바닥에 순위를 매깁니다. p99.5(에너지) / 중앙값(에너지) 점수를 사용하십시오.

또한 점수 매기기 전에 마스킹하십시오: 각인된 타이포그래피는 밝고, 채도가 높으며, 대비가 높으므로 마스킹되지 않은 실행은 다른 사람의 타이틀 카드의 완벽한 플레이트를 생성합니다.

VLM 근거 제시

설명을 요청하기 전에 측정값을 시스템 프롬프트에 제공하십시오. 근거가 없으면 VLM은 +24.9 a* 캐스트가 있는 영상에 대해 "뚜렷한 컬러 그레이딩 없음, 중립"이라고 보고합니다. 근거가 있으면 캐스트를 올바르게 설명하고 보조 악센트를 독립적으로 추론합니다.

모호한 단어 사용을 금지하십시오 (다양한, 혼합된, 다이나믹한, 일부, 종종, 중립, 또는) — 모델은 "다양한 조명"을 렌더링할 수 없습니다. 프롬프트뿐만 아니라 코드에서도 금지를 강제하십시오: 대략 3번 중 1번의 실행에서 위반되었습니다. 필드별로 다시 질문하고, N번 시도 후 가장 덜 모호한 답변을 유지하십시오. 실패하는 대신.

사용자에게 언급할 가치가 있는 주의사항: 스펙이 측정값에 근거하면 더 이상 이에 대한 독립적인 확인이 아닙니다.

LUT 베이킹 주의사항

  • LUT는 픽셀별 RGB 함수만 인코딩할 수 있습니다. 분포 종속적인 것(히스토그램 매칭, 백분위수 앵커)은 베이킹 전에 상수로 축소되어야 합니다. 그렇지 않으면 영상 대신 균일한 LUT 그리드를 조용히 측정합니다.
  • cv2.cvtColor(LAB2RGB)는 내부적으로 클램핑하므로 이를 사용한 out-of-gamut 테스트는 0%를 보고합니다. Lab→선형 sRGB를 수동으로 변환하십시오. 실제 측정값은 83.3% OOG였습니다.
  • 크로마 전달은 오프셋으로, 아핀(affine)으로 하지 마십시오. 아핀은 소스 σ로 나누어 과도하게 적용됩니다. 실제 영상에서 b*를 목표 -17.5에 대해 +11.6으로 반전시켰습니다. 오프셋은 MAE를 6.23에서 2.13으로 낮췄습니다.
  • 영역 압축(Gamut compression)은 동일한 MAE에 대해 3.8배의 런타임 비용이 들었습니다. 옵트인으로 만드십시오.

안티-패턴

하지 말 것이유
합성 테스트 영상에 대해 튜닝한 프로젝트에서 네 가지 잘못된 결론을 초래했습니다. 실제 영상이 모두 뒤집었습니다.
MAE만 신뢰1.88 MAE가 눈에 띄게 깨진 프레임에서 성공처럼 보였습니다.
크로마에 평균/표준편차 사용오른쪽으로 치우쳐 약 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/claude-api

Anthropic Claude API patterns for Python and TypeScript. Covers Messages API, streaming, tool use, vision, extended thinking, batches, prompt caching, and Claude Agent SDK. Use when building applications with the Claude API or Anthropic SDKs.

affaan-m/everything-claude-code

End-to-end marketing campaign planning and execution. Covers audience research, positioning, campaign angle definition, landing page copy, email sequences, social posts, ad copy, short-form video scripts, and content calendars. Use as the orchestration layer for multi-channel product launches. Use when planning or executing a multi-channel product launch, or producing landing page, email, social, or ad copy.

affaan-m/everything-claude-code

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/everything-claude-code-conventions

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/frontend-design

Create distinctive, production-grade frontend interfaces with high design quality. Use when the user asks to build web components, pages, or applications and the visual direction matters as much as the code quality.

affaan-m/gget

gget CLI and Python workflow for quick genomic database queries, sequence lookup, BLAST-style searches, enrichment checks, and reproducible bioinformatics evidence logs.

affaan-m/literature-review

Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging.

affaan-m/motion-ui

Production-ready UI motion system for React/Next.js. Use when implementing animations, transitions, or motion patterns.

affaan-m/project-guidelines-example

Example project-specific skill template based on a real production application.

affaan-m/pubmed-database

Direct PubMed and NCBI E-utilities search workflows for biomedical literature, MeSH queries, PMID lookup, citation retrieval, and API-backed literature monitoring.

affaan-m/scholar-evaluation

Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback.

affaan-m/uspto-database

USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs.

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.

관련 스킬