TasteForge 비디오은(는) 무엇을 하나요?
완전한 독립형 크리에이티브 파이프라인을 위해서는 taste-distillation을 사용한 후 taste-application을 사용하세요. 해당 ECC 스킬은 Python 스크립트를 직접 제공합니다: 참조 측정, 기존 테이크 생성 또는 전달, 등급 조정, 편집, 합성, 검증, 그리고 Blender 및 Resolve로 핸드오프합니다. 해당 흐름을 위해 별도의 비디오 저장소가 필요하지 않습니다. 이 스킬은 ECC의 패키지된 오프라인 엔진과 엄격한 증거 계약을 문서화합니다.
TasteForge는 "이 참조처럼 느껴지게"라는 요청을 반복 가능하고 검사 가능한 워크플로로 변환합니다: 취향 인터뷰, 이를 구조화된 스타일 팩으로 증류, 팩 검증, 측정된 케이던스와 룩을 로컬 미디어에 적용, 그리고 편집 가능한 타임라인 내보내기. 표준 구현은 ECC 내 skills/taste-application/scripts/tasteforge/에 제공되는 tasteforge 패키지입니다. Ito-Markets/ito-video는 패키지된 ECC 엔진을 사용하는 예제 프로젝트입니다.
사용 시기
- 사용자가 푸티지가 생성되기 전에 비디오 취향에 대해 인터뷰를 요청할 때 ("룩에 대해 물어봐줘", "미적 방향에 대해 인터뷰해줘").
- 사용자가 미학을 구조화된 제약 조건으로 증류하기를 원할 때 — 분위기가 아닌 재사용 가능한 스타일 팩 ("이 참조들을 팩으로 만들어줘").
- 사용자가 스타일 팩을 검증하기를 원할 때 (메타데이터가 완전하고, 스키마가 유효하며, 케이던스가 측정되고, 사양이 증류되었는가?).
- 사용자가 로컬 푸티지에 스타일 팩을 적용하기를 원할 때 — 로컬 클립에 대해 팩의 측정된 케이던스로부터 결정론적으로 컷 계획.
- 사용자가 EDL/FCPXML을 내보내기를 원할 때 — DaVinci Resolve / Premiere / Final Cut으로 편집 가능하고 프레임 정확한 핸드오프.
- 사용자가 생성된 미디어 출처 감사를 요청할 때 — 이 팩, 사양 또는 컷이 어디서 왔는지; 로컬에서 측정된 것과 제공자가 생성한 것은 무엇인지; 드라이런된 것은 무엇인지.
- 사용자가 로컬 참조 파일로부터 파일 기반 멀티모달 이미지, 비디오 또는 3D 에셋 출력을 발견하거나 계획하기를 요청할 때, 별도의 매니페스트, 주제 고정 CV 효과 또는 Resolve 효과 레시피를 포함.
- 사용자가 TasteForge, 스타일 팩, flashethereal, 취향 증류, 케이던스/리듬 계획, 멀티모달 발견, 증류/적용 워크플로 또는 비디오용 취향 인터뷰를 언급할 때.
로컬 결정론적 작업 vs 제공자 생성
이 경계는 이 호환성 스킬의 핵심입니다. 이 스킬의 작업은 로컬, 결정론적, 오프라인입니다:
| 작업 | 결정론적? | ECC가 실행 가능? |
|---|---|---|
| 취향 인터뷰 → 프로필 | 예 (오프라인) | 예 |
| 팩 검사 / 스키마에 대한 검증 | 예 | 예 |
| 프로필 (+ 측정된 근거) 증류 → 사양 | 예 (드라이런 의미) | 예 |
| 로컬 미디어에 팩 케이던스 적용 → 보고서 + 타임라인 | 예 | 예 |
| EDL (CMX3600) / FCPXML 1.9 내보내기 | 예 | 예 |
| 출처 / 계통 보고서 | 예 | 예 |
| 스틸 이미지의 비전 모델 증류 | 제공자 생성 | 아니요 |
| 참조-비디오, 이미지-3D, 호스티드 컴포즈 | 제공자 생성 | 아니요 |
ECC에서 제공자 생성은 반드시 실패 폐쇄되어야 합니다. 라이브 Fal(또는 다른 제공자) 호출 — 샷 생성, 소품 메시 발행, 호스티드 VLM 증류 — 은 별도의 검토와 함께 별도의 레인 하에 명시적으로 분리된 승인된 실행이 필요합니다. 이 호환성 레인에서 ECC는 절대 Fal을 호출하지 않고, 어떤 API 키나 다른 자격 증명(FAL_KEY 포함)도 읽지 않으며, 미디어를 업로드하지 않고, 제공자 계정 상태를 변경하지 않습니다. 요청에 제공자 생성이 필요할 때, 해당 경계를 정확히 명시하고, 로컬 부분(인터뷰, 팩 검증, 계획, 내보내기)을 실행하고 중단하세요.
Fal 워크플로가 저장되었다고 절대 주장하지 마세요. Fal 엔드포인트, 모델 ID 또는 드라이런 URL에 대한 로컬 참조(팩 메타데이터 내에 나타남)는 참조 전용입니다: 이는 제공자 측 워크플로가 저장되었거나, 유지되었거나 실행이 승인되었음을 의미하지 않습니다. 오프라인에서 생성된 모든 것은 드라이런/dry_run 의미를 가집니다 — "드라이런 사양" 또는 "결정론적 계획"이라고 말하고, 절대 "모델이 생성함"이라고 말하지 마세요.
표준 구현
- 저장소:
affaan-m/ECC; Python 배포판ecc-tasteforge, 패키지 디렉토리skills/taste-application/scripts/tasteforge/. 추출된 ECC 패키지에서python3 -m pip install ./skills/taste-application/scripts로 설치. 예제 프로젝트Ito-Markets/ito-video는 특정 ECC 커밋을 고정합니다. - CLI:
python3 -m tasteforge <command>—provenance,inspect,validate,interview,distill,apply,export,multimodal.--live플래그는 코드 2와 함께 종료되고 거부합니다. - 스키마가 계약입니다: 취향 프로필, 팩 매니페스트, 등급, 케이던스, 사양, 타임라인 이벤트, 애플리케이션 보고서 (
provider는"none"으로 열거 고정됨;dry_run은true). - 복구된 소스 계통과 의도적 제외는 저장소의
skills/taste-application/SOURCE.md에 있습니다. 머신 읽기 가능 버전은python3 -m tasteforge provenance를 실행하세요.
로컬 결정론적 명령에 대해 설치된 ECC 엔진을 사용하고 JSON을 해석하세요. 패키지된 엔진이 없으면 설치하세요; 로직을 인라인으로 재구성하지 마세요. taste.resolve는 tasteforge.resolve의 호환성 임포트이므로 크리에이티브 스크립트와 예제 프로젝트는 하나의 검증된 Resolve 어댑터를 공유합니다.
python3 -m tasteforge CLI는 설치된 ecc-tasteforge 배포판을 사용합니다. 독립형 taste-distillation 및 taste-application 스크립트는 자체 Python 요구 사항과 함께 ECC의 옵트인 미디어 생성 모듈에 제공됩니다. 두 경로 모두 사용자의 저장소나 미디어를 게시할 필요가 없습니다.
저장된 체크아웃을 재개하기 전에 해당 커밋을 기록하고 로컬 브랜치와 워크트리를 검사하여 나중에 구현 수정을 준비하세요. 표준 패키지의 테스트와 python3 -m tasteforge apply --help를 실행하세요; ECC의 텍스트 및 픽스처 테스트는 선택된 Python 체크아웃이 이 계약을 구현한다는 것을 증명하지 않습니다.
크리에이티브 스킬 체이닝
| 단계 | 소유자 | 검토 가능한 결과 |
|---|---|---|
| 크리에이티브 방향 | taste | 명명된 장르, 참조 관찰, 선택된 룩 및 회피 목록 |
| 증류 및 계획 | tasteforge-video | 측정된 증거, 별도의 장르 사양, 드라이런 매니페스트 및 케이던스 계획 |
| 편집 및 효과 | video-editing, Remotion, Manim 또는 Fusion과 같은 선택된 렌더러 사용 | 적용된 푸티지, 실제 트랙, 편집 가능한 효과 및 타임라인 |
| 선택적 생성 자산 또는 음성 | fal-ai-media 또는 선택된 오디오 워크플로, 자체 승인 하에 | 제공자 영수증 및 검사된 출력 |
| 전달 | 편집 워크플로, 그 다음 요청 시 content-engine | 검토된 정확한 내보내기 및 배포 사본 |
프로젝트에 필요한 단계만 사용하세요. taste 스킬의 과거 angelcore/cloud-trance 팔레트와 비트 문법은 선택적 크리에이티브 예제입니다; 현재 브리핑을 재정의하거나 별도의 번호가 매겨진 장르를 병합해서는 안 됩니다. 3D Cyber Glitch 및 Fluid Sketch를 포함하여 각 장르의 실제 참조를 방향에 사용하세요. TasteForge는 이러한 스킬을 대체하거나 모든 렌더러를 요구하지 않습니다. 3D 재료, 지오메트리, 와이어프레임 동작, 모션 및 구성을 장르 시그니처에 명시적으로 유지하세요. 3D 요청 매니페스트는 에셋에 대한 계획입니다; 메쉬가 아닙니다. 주제 고정 설명자는 추적 요구 사항의 이름을 지정합니다; 주제가 감지되거나 추적되었다는 증거가 아닙니다. CV 효과가 안정적으로 적용되었다고 주장하기 전에 실제 트랙, 트랙 손실 동작 및 렌더링된 주제 프레임을 검사하세요.
워크플로
- 인터뷰 (
interview): 룩 축(팔레트, 그레인, 조명, 초점 거리, 카메라 움직임, 주제 프레이밍, 등급, 분위기 형용사, 회피 목록) 및 별도로 콘텐츠 브리핑에 대한 답변을 수집합니다. 룩과 콘텐츠를 분리하세요; 이를 병합하는 것이 전형적인 실패입니다. - 증류 (
distill): 프로필을 스키마 사양에 오프라인으로 매핑하고, 팩이 제공될 때 팩의 측정된 근거 (흑백점, 대비, 영역별 크로마, 팔레트, 컷 리듬)를 포함합니다. 결과는 드라이런 사양입니다: 결정론적, 제공자"none". - 검증 (
validate/inspect): 스키마에 대해 팩을 확인합니다; 오류 대 경고를 보고합니다 (메타데이터 전용 팩에 스틸 이미지 누락은 오류가 아닌 경고). - 적용 (
apply): 사용자의 로컬 클립에 대해 팩의 측정된 케이던스(시드 기반, 결정론적)에서 샷 지속 시간을 계획합니다; 애플리케이션 보고서 및 프레임 정확한 타임라인 이벤트를 생성합니다. - 내보내기 (
export): 실제 NLE로 가져오기 위해 합리적이고 NTSC-안전한 시간으로 CMX3600 EDL + FCPXML 1.9를 작성합니다. - 감사 (
provenance): 계통을 보고합니다 — 복구된 소스 다이제스트, 생성 기록, 픽스처 출처, 포인터 전용 레코드로서의 제공자 참조.
반복 소스 없이 실제 푸티지 적용
브리핑에 반복 클립이 필요하지 않은 경우, apply --no-repeat --fps를 지원하는 표준 체크아웃을 사용하고 출력 프레임 속도를 명시적으로 설정합니다. 해당 플래그가 없으면, 레거시 라운드 로빈 선택을 조용히 사용하지 않고 구현 격차를 보고합니다. 엄격 모드는 매니페스트 순서로 각 정규화된 소스 경로를 최대 한 번 사용하고 충분하지 않거나 너무 짧은 소스를 거부합니다. 케이던스 계획을 채우기에 충분한 검토된 선택 항목을 준비합니다. 이는 소스 수준의 고유성이며, 동일한 녹음에서 별도의 in/out 범위를 지원하는 것이 아닙니다.
애플리케이션 보고서는 컷 계획입니다. 시각적 샷 순위를 매기거나, 푸티지 등급을 조정하거나, LUT를 적용하거나, 오버레이를 렌더링하거나, Resolve 프로젝트를 가져오지 않습니다. 팩의 측정된 참조 케이던스를 출력 프레임 속도와 분리하여 유지하세요.
내보내기 CLI는 {"clips": [...]}를 예상합니다. 내보내기 전에 애플리케이션의 timeline_events를 clips 아래에 래핑하고, 적용에 사용된 것과 동일한 --fps를 전달하세요; 내보내기의 기본 프레임 속도는 계획을 재확인해서는 안 됩니다. 타임라인을 편집 워크플로에 전달하기 전에 방출된 이벤트 수, 총 프레임, 고유 소스 및 미디어 링크를 확인하세요.
해당 워크플로가 NLE에서 중첩 효과를 적용할 때, 호환 가능한 트랙을 할당하고 요청된 모든 시작, 종료 및 지속 시간을 다시 읽으세요. 반환된 항목이나 성공적인 추가 호출만으로는 예약된 모든 효과가 배치되었음을 증명하지 않습니다; 렌더링 전에 누락되거나, 이동되거나, 잘린 배치를 거부합니다.
파일 기반 멀티모달 계약
로컬 참조가 이미지, 비디오 및 3D 에셋 출력에 대한 드라이런 생성 계획을 구동하면서 장르 구분을 유지해야 할 때 이 경로를 사용하세요:
python3 -m tasteforge multimodal --config workflow.json --out-dir out/multimodal
구성은 번호가 매겨진 장르와 로컬 증거 파일을 지정합니다. 이러한 후보 장르를 하나의 일반적인 미학으로 혼합하지 말고 별도로 유지하세요:
- Flash Ethereal
- 3D Cyber Glitch
- Fluid Sketch
명령은 ffprobe/ffmpeg로 로컬 참조를 측정하고 장르당 하나의 스타일 사양, 별도의 이미지, 비디오 및 3D 에셋 매니페스트, 출처 및 Resolve 효과 레시피를 생성합니다. 효과 일정은 시드 기반 비주기적이어야 합니다. CV 효과는 정확한 추적 손실 정책이 disable_effect_until_track_recovers인 실제 주제 고정이 필요합니다; continue_without_anchor 및 다른 모든 정책은 실패 폐쇄됩니다. 모든 효과는 얼굴과 읽기 가능한 텍스트를 보존하고 장식용 코너 메쉬가 전체 프레임 3D 작업을 대체하는 것을 방지하는 배치 제약 조건을 전달합니다.
반환된 영수증은 번들 경계입니다. 상대 경로, 바이트 크기, SHA-256, 장르, 모달리티, provider_execution:false 및 정확한 참조/시간 출처별로 방출된 모든 증거 아티팩트를 바인딩합니다. 영수증은 provider_calls:0을 정확한 정수(JSON 부울 false는 유효하지 않음), provider_execution:false 및 dry_run:true로 요구합니다. 모든 장르 사양도 명시적 dry_run:true를 요구합니다. Resolve 효과 레시피는 동일한 정확한 정수 provider_calls:0, provider_execution:false 및 dry_run:true를 요구합니다. 모든 모달리티 매니페스트와 모든 중첩 요청은 네 가지 정확한 실패 폐쇄 필드, 즉 정수 provider_calls:0, provider_execution:false, dry_run:true 및 submit:false를 모두 포함해야 합니다; 각 요청은 또한 provider_call_mode:"disabled"를 요구합니다. 누락된 필드는 기본값이 아닌 거부이며, 출력이 작성되기 전에 dry_run:false는 거부되어야 합니다.
타임라인, 증거, 프로브 및 소스 지속 시간 데이터 어디에서나 부울을 유효하지 않은 숫자로 취급하세요. 이러한 모든 숫자 값은 유한한 실수여야 합니다: true, false, NaN, 무한대, 음수 이벤트 시작, 양수가 아닌 지속 시간, 범위를 벗어난 증거 시간 및 선언된 유한 양수 타임라인을 넘어 끝나는 이벤트를 거부합니다. 전체 파일 증거는 명시적 전체 파일 시간 기준을 사용하며 타임스탬프를 발명하지 않습니다.
영수증 참조는 지속 시간 권위입니다. 인용된 SHA-256으로 각 검증된 참조 지속 시간을 키로 지정하세요; 하나의 다이제스트의 중복 발생은 지속 시간에 동의해야 하며 그렇지 않으면 번들이 유효하지 않습니다. 모든 효과 증거 source_duration과 모든 주제 고정 source_duration은 인용된 시간을 포함하는 것뿐만 아니라 해당 다이제스트의 검증된 영수증 지속 시간과 같아야 합니다. 프로브 지속 시간과 모든 프로브 측정값은 바이트 수 및 SHA-256에 사용된 것과 동일한 안정적인 바이트를 설명해야 합니다. 소스가 프로빙 중에 변이되거나 계속 사용 가능한 동안 다르게 재해싱되면, 영수증을 방출하거나 수락하지 않고 실패 폐쇄하세요.
생성 후 항상 번들 검증을 실행하세요. 누락된 이미지, 비디오 또는 3D 에셋 매니페스트는 실패 폐쇄되어야 합니다. 일반화되거나 중복된 장르, 주기적 일정, 고정되지 않은 CV 효과, 누락된 배치 제약 조건, 제공자 실행 플래그, 바인딩되지 않은 출력 파일, 바이트 크기 드리프트 또는 SHA-256 변조는 실패 폐쇄되어야 합니다. 심볼릭 링크인 출력 루트, 중간 파일 또는 아티팩트를 거부하고 특수 파일(FIFO 및 장치 포함)을 거부합니다; 출력은 실제 디렉토리 트리 아래의 일반 파일로 유지되어야 합니다. 로컬 ffmpeg 또는 ffprobe를 사용할 수 없으면 CLI는 Python 추적 없이 바운드된 0이 아닌 로컬 미디어 처리 오류를 반환해야 합니다. 증거를 삭제하거나 검증을 약화시켜 실패한 영수증을 수리하지 마세요.
예제 세션
# ECC 엔진 설치 후; 아래 경로는 프로젝트 입력입니다
python3 -m tasteforge validate stylepacks/flashethereal
python3 -m tasteforge interview --answers answers.json --genre flashetherea
…
[번역을 위해 잘렸습니다]