seam-craft

작성자: heygen-com

하이퍼프레임스 런치 비디오에서 장면 간 시임(seam)에 대한 렌더 정확성 원칙 — 마스터 타임라인에서 전환이 올바르게 합성되기 위한 전제 조건. 마스터 타임라인 / index.html을 조립할 때, 컷 또는 크로스페이드 시임에서 흰색 플래시가 나타날 때(특히 어두운 필름에서), 전환 불투명도 딥(dip)이 비쳐 보이는 이유를 추론할 때, 또는 겹치는 장면 래퍼가 블렌딩되는 렌더 측 메커니즘을 검증할 때 로드합니다. 불투명한 스테이지 그라운드(#root...)를 다룹니다.

npx skills add https://github.com/heygen-com/hyperframes --skill seam-craft

Seam Craft — render prerequisites for scene-to-scene transitions

This is the render-correctness doctrine for PLV scene-to-scene seams: the prerequisites and master-timeline mechanics that make any transition composite correctly, independent of which specific transition is chosen. The per-transition catalog (crossfade, push-slide, zoom-through, cut-the-curve, …) lives in the transition registry — this page is the doctrine that sits underneath all of them.

The transitions this doctrine governs are Tier-B-ready: pure transform / opacity / filter on the two scene clip wrappers (#el-<sid>), no injected overlay DOM, no per-scene cooperation. Overlay families (staggered blocks, blinds, light leak, grid dissolve, page burn) and shader transitions are deferred to later phases.

Stage ground prerequisite (white-flash guard)

Several templates open a window where the two wrappers' summed opacity < 1 (the cut-the-curve mid-window cut, zoom-through's 0.15 floor, plain crossfade's power-curve dip). Whatever is BEHIND the wrappers shows through during that window. If the assembled index.html #root has no opaque background, the renderer composites the dip over its default white page → a white flash at every seam, glaring on dark films (observed on two Spotify runs before the fix). The assembler must paint the stage: #root { background: var(--canvas-deep, var(--canvas, #000)) }assemble-index.mjs now emits this; any other consumer of these templates owns the same guarantee.

How the injector applies a transition

At a break boundary between scene i (from) and scene i+1 (to), the injector:

  1. Extends #el-<from> wrapper data-duration by duration_s (holds its final frame — verified: core/src/runtime/init.ts:1393-1410 external-slot branch).
  2. Pulls #el-<to> wrapper data-start earlier by duration_s (creates the overlap window).
  3. Reassigns all clip data-track-index as a 0/1 ping-pong so the two overlapping wrappers never share a track (same-track overlap is illegal — core/src/lint/rules/composition.ts). Higher track composites on top.
  4. Stamps the gsap_template into window.__timelines["main"] at T = overlap-start.

Verified by prototype render (2026-05-31): the master-timeline wrapper tween is seeked and rendered (no double-seek with the sub-comp's own paused timeline — the runtime drives them independently), the extended wrapper holds scene i's final frame, and the higher-track incoming wrapper composites over + blends with the outgoing one.

Template placeholders

The injector substitutes these tokens in each gsap_template line:

TokenMeaning
__OLD__"#el-<from>" — outgoing clip wrapper selector (quoted)
__NEW__"#el-<to>" — incoming clip wrapper selector (quoted)
__T__overlap-start time in seconds (master clock)
__DUR__duration_s for this boundary
__DX__horizontal travel for directional types: -1920 (LEFT) / 1920 (RIGHT)
__DY__vertical travel: -1080 (UP) / 1080 (DOWN)
__ORIGIN_OUT__ / __ORIGIN_IN__transformOrigin pair for squeeze

filter / scaleX / transformOrigin are lint-clean on the master timeline (verified: core/src/lint/rules/gsap.ts has no per-property whitelist and scopes its checks to data-composition-id ranges; the x/y/scale/rotation/opacity whitelist is a scene-worker prompt rule only — it does not bind index.html).

heygen-com의 다른 스킬

hyperframes-audio
heygen-com
Use when audio already placed in a HyperFrames composition needs to be mixed: a music bed that fights a voiceover (voiceover carve), effects on a track (EQ, compressor, limiter, gate, saturation, delay, reverb, chorus, phaser, bitcrush), or automation envelopes drawn on a track's volume or any effect parameter. Don't use for sourcing or generating audio — finding BGM, SFX, or making a voiceover is `/media-use`. Don't use for clip timing or track layout, which is `/hyperframes-core`.
hyperframes-cli
heygen-com
HyperFrames CLI 개발 루프
developmenttestingapi
hyperframes-animation
heygen-com
HyperFrames의 모든 애니메이션 지식 — 원자적 모션 규칙, 다중 단계 씬 청사진, 씬 전환, 광범위한 모션 디자인 기법, 그리고 7개의 런타임 어댑터(GSAP 기본, Lottie, Three.js, Anime.js, CSS 키프레임, Web Animations API, TypeGPU). 모든 모션 또는 애니메이션 작업에 사용: 2-4개의 규칙을 선택하여 구성하거나, 청사진을 로드하거나, 런타임별 API(GSAP 이징 / Lottie 플레이어 / Three.js 믹서 등)를 조회합니다. HyperFrames 네이티브: 단일 일시 정지 타임라인, 시크 안전,...
creativedevelopmentdesign
hyperframes-core
heygen-com
HyperFrames HTML 구성 계약. 구성 구조, 데이터 속성, 클립, 트랙, 하위 구성, 변수, 미디어 재생, 결정적 렌더링 규칙 및 최소 렌더링 가능 프로젝트의 검증에 사용합니다.
developmentmediacreative
hyperframes-media
heygen-com
HyperFrames 컴포지션을 위한 에셋 전처리 — 다중 제공자 TTS(HeyGen / ElevenLabs / Kokoro 로컬), 다중 제공자 BGM(Google Lyria / 로컬 MusicGen), Whisper 전사, 배경 제거 및 캡션 작성. npx hyperframes tts, bgm, transcribe, remove-background, voice/provider 선택, music-mood 프롬프팅, captions / subtitles / lyrics / karaoke / per-word 스타일링에 사용합니다.
mediaaudiovideo
hyperframes-registry
heygen-com
레지스트리 블록과 컴포넌트를 HyperFrames 구성에 설치하고 연결합니다. hyperframes add 실행 시, 블록이나 컴포넌트 설치 시, 설치된 항목을 index.html에 연결할 때, 또는 hyperframes.json 작업 시 사용합니다. add 명령어, 설치 위치, 블록 하위 구성 연결, 컴포넌트 스니펫 병합, 레지스트리 검색, 그리고 업스트림에 기여할 새 블록이나 컴포넌트 작성(아이디어 → 스캐폴드 → 검증 → PR)을 다룹니다.
developmentapicode-review
general-video
heygen-com
사용자 정의 HyperFrames HTML 비디오 구성 제작 시 전용 워크플로가 적합하지 않을 때 대체 도구로 사용합니다. 긴 길이 또는 여러 장면의 작품, 브랜드/시즐 릴, 몽타주, 타이틀 카드, 모션 포스터, 정적 루프, 모든 길이와 형식의 자유로운 구성을 다룹니다. 마케팅 제품 프로모션(product-launch-video), 일반 웹사이트-투-비디오 캡처(website-to-video), 주제 설명(faceless-explainer), GitHub PR 비디오(pr-to-video), 기존 영상 자막 처리 등에는 사용되지 않습니다.
videocreativemedia
motion-graphics
heygen-com
사용자가 모션이 메시지가 되는 짧고 디자인 중심의 모션 그래픽을 원할 때 사용합니다: 키네틱 타이포그래피, 숫자/통계 카운트업, 차트/데이터 시각화 히트, 로고 스팅, 브랜드 록업, 하단 서드, 콜아웃, 소셜 오버레이, 애니메이션 헤드라인/트윗/뉴스 아이템, 모션 포스터, 또는 빠른 캡처 페이지 하이라이트. 일반적으로 10초 미만에서 최대 약 30초이며, 내레이션 구성, 음성 해설, 또는 실사 피사체가 없습니다. MP4 또는 투명 오버레이로 렌더링 가능합니다. 더 길고, 여러 장면이 있거나, 내레이션이 포함되거나, 브랜드 릴 형식의 작업에는 적합하지 않습니다...
creativevideodesign