Communitygithub.com

런치 비디오 — 리퀴드 글래스 제품 쇼케이스

리퀴드 글래스(Liquid Glass) 미학을 활용하여 다크 보이드 배경, 3D 원근 플로팅 UI 패널, 파티클 효과, 스프링 애니메이션, 시네마틱 템포로 구성된 세련된 제품 출시 영상을 제작합니다. Remotion을 기반으로 Imagen 4.0으로 프레임을 생성하고 Veo 3.1로 B-roll을 활용합니다.

런치 비디오 — 리퀴드 글래스 제품 쇼케이스란 무엇인가요?

이 스킬은 리퀴드 글래스(Liquid Glass) 미학을 기반으로 한 시네마틱 제품 출시 영상을 제작하는 데 사용됩니다. 주요 기능은 순수 블랙 배경 위에 3D 원근감을 가진 유리 같은 패널을 배치하고, 파티클 필드와 스프링 애니메이션으로 생동감을 부여하여 제품 시연이나 런칭 영상을 매우 세련되게 연출하는 것입니다. 이 스킬은 Remotion을 핵심 프레임워크로 사용하며, AI 이미지(Imagen 4.0)와 AI 비디오 B-roll(Veo 3.1)을 함께 활용하여 정적 스크린샷 이상의 시각적 풍부함을 제공합니다. 개발자는 제공된 Remotion 컴포넌트(GlassPanel, ParticleField, TypewriterText, SpringFade)와 색상 토큰, 3D CSS 변환 예제, 스프링 설정 등을 참고하여 자신의 제품 UI를 입힌 맞춤형 영상을 빠르게 구성할 수 있습니다. 특히 Veo 3.1로 생성한 시네마틱 클립을 Remotion의 <OffthreadVideo>로 삽입하고 전처리하는 방법, Imagen 4.0으로 생성한 히어로 렌더를 <GlassPanel> 안에 배치하는 하이브리드 구성 패턴이 매우 강력합니다. 이 스킬은 Claude Code, Cursor, Codex와 같은 AI 에이전트 플랫폼에서 사용할 수 있으며, 'launch video', 'product video', 'liquid glass video', 'demo video', 'showcase video', 'remotion video', 'floating panel', 'glass aesthetic' 같은 트리거 명령어를 통해 활성화됩니다.

지원 대상~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/broomva/skills/tree/HEAD/skills/video/launch-video

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

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

문서

런치 비디오 — 리퀴드 글래스 제품 쇼케이스은(는) 무엇을 하나요?

리퀴드 글래스 미학(다크 보이드, 3D 플로팅 패널, 파티클 효과, 스프링 애니메이션, 자신감 있는 템포)을 사용하여 시네마틱 제품 출시 비디오를 제작합니다.

복합 스킬

스킬역할
/remotion-best-practices구성 구조, spring(), <Sequence>, 렌더 파이프라인
/content-creationAI 에셋 생성 (Imagen 4.0, Veo 3.1)
/arcan-glassBroomVA 브랜드 토큰 (AI Blue, 다크 퍼스트 팔레트)
/google-veo시네마틱 B-roll 생성 프롬프트
/blog-post배포 파이프라인 (X, LinkedIn, Instagram 게시)

리퀴드 글래스 미학

핵심 시각 원칙

  1. 다크 보이드 배경 — 순수 블랙(#000000) 또는 거의 블랙(#0A0A0A). 베이스에 그라데이션 없음. 콘텐츠가 어둠 속에 떠 있습니다.
  2. 3D 원근 패널 — 스크린샷과 UI 렌더를 perspective(1200px)로 8-15° 기울임. 절대 평평하지 않음. 항상 떠 있음.
  3. 유리 재질 — 패널은 서리 처리된 가장자리, 은은한 반사, 모서리가 둥글고 글로우, 반투명 테두리를 가집니다.
  4. 파티클 필드 — 작은 떠다니는 파티클(2-4px, 낮은 불투명도, 느린 드리프트)이 공간을 채웁니다. 깊이와 생동감을 만듭니다.
  5. 스프링 모션 — 모든 진입/퇴장은 Remotion spring()을 사용합니다. CSS 전환 금지. 선형 금지. 유기적이고 자신감 있습니다.
  6. 자신감 있는 템포 — 장면당 최소 3-5초. 빠른 컷 없음. 각 비주얼이 숨 쉴 시간을 줍니다.
  7. 미니멀 타이포그래피 — 산세리프(Inter, SF Pro 또는 시스템), 흰색, 중앙 정렬. 타이틀 카드당 최대 8단어.

색상 팔레트

토큰값용도
void#000000배경
panel-bgrgba(20, 20, 25, 0.85)유리 패널 채움
panel-borderrgba(255, 255, 255, 0.08)유리 가장자리
panel-glowrgba(59, 130, 246, 0.15)가장자리 글로우 (AI Blue)
text-primary#FFFFFF제목 텍스트
text-secondaryrgba(255, 255, 255, 0.6)부제목, URL
accent#3B82F6AI Blue 하이라이트
success#22C55E체크 표시, 긍정 상태
particlergba(255, 255, 255, 0.15)배경 파티클

3D 패널 CSS (Remotion)

const panelStyle: React.CSSProperties = {
  perspective: '1200px',
  transform: `rotateY(-8deg) rotateX(5deg)`,
  borderRadius: 16,
  border: '1px solid rgba(255, 255, 255, 0.08)',
  boxShadow: `
    0 25px 50px rgba(0, 0, 0, 0.6),
    0 0 30px rgba(59, 130, 246, 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.05)
  `,
  background: 'rgba(20, 20, 25, 0.85)',
  backdropFilter: 'blur(20px)',
  overflow: 'hidden',
};

스프링 구성

import { spring, useCurrentFrame, useVideoConfig } from 'remotion';

// 표준 진입
const entrance = spring({
  frame,
  fps,
  config: { damping: 15, stiffness: 80, mass: 0.8 },
});

// 미세 드리프트 (떠 있는 패널용)
const drift = spring({
  frame: frame - delay,
  fps,
  config: { damping: 200, stiffness: 10, mass: 2 },
  durationInFrames: 120,
});

장면 유형

1. 타이틀 카드

지속 시간: 3-4초 내용: 제품명 또는 태그라인, 중앙 정렬, 검정 바탕에 흰색 애니메이션: 미세 스케일 스프링(0.95 → 1.0)으로 페이드 인 예시: "Build your ideas with Gemini"

2. 프롬프트/입력 장면

지속 시간: 4-6초 내용: 채팅 입력 또는 터미널 프롬프트, 각진 3D 패널 애니메이션: 패널이 아래에서 스프링으로 올라오고, 텍스트는 타자기 효과 기법: 3D CSS 변환이 적용된 <Img> 스크린샷, 프레임 기반 문자열 슬라이스로 타자기 효과

3. 분할 패널 장면

지속 시간: 4-5초 내용: 두 개의 UI 패널이 나란히 배치 (예: 프롬프트 + 코드 출력) 애니메이션: 패널이 반대쪽에서 스프링으로 들어오고, 패널 사이에 파티클 기법: 반대 rotateY 변환을 가진 두 개의 <Img> 컴포넌트

4. 제품 데모 장면

지속 시간: 5-8초 내용: 떠 있는 유리 패널 형태의 전체 제품 UI 애니메이션: 느린 드리프트 회전(미세 rotateY 진동), 시네마틱 줌 기법: 애니메이션 scale과 rotateY가 적용된 <Img> 또는 <OffthreadVideo>

5. 디테일 줌 장면

지속 시간: 3-4초 내용: 특정 UI 요소 또는 기능으로 확대 애니메이션: 전체 보기에서 잘린 디테일로 스프링 스케일 기법: 패널 이미지에 애니메이션 scale + translate

6. CTA / 브랜드 카드

지속 시간: 3-4초 내용: 로고 + URL 또는 설치 명령어 애니메이션: 페이드 인, 유지, 페이드 아웃 기법: 중앙 정렬 텍스트, 브랜드 아이콘, 미세한 글로우

7. AI 시네마틱 프레임 (Imagen 4.0)

지속 시간: 3-5초 내용: 유리 패널 안에 AI가 생성한 히어로 렌더 또는 컨셉 아트 애니메이션: 스프링 진입, 느린 드리프트 회전, 미세 줌 기법: Imagen 4.0으로 생성, public/에 배치, 3D 변환과 함께 <Img src={staticFile('render.png')} />를 GlassPanel 내에서 사용 사용 시기: 추상적 개념, 아키텍처 다이어그램, 분위기 비주얼 등 스크린샷보다 AI 생성 이미지가 더 나은 모든 경우

<GlassPanel rotateY={-10} rotateX={6} delay={5}>
  <Img src={staticFile('imagen-hero-render.png')} style={{ width: '100%' }} />
</GlassPanel>

8. AI 비디오 B-roll (Veo 3.1)

지속 시간: 4-8초 내용: 전환 또는 분위기 조성을 위한 시네마틱 AI 생성 비디오 클립 애니메이션: 유리 패널 뒤나 안에서 재생되며, 선택적으로 오버레이 텍스트 기법: Veo 3.1로 생성, ffmpeg -movflags +faststart로 전처리, Remotion에서 <OffthreadVideo> 사용

// 전체 화면 시네마틱 B-roll (장면 사이)
<OffthreadVideo
  src={staticFile('veo-broll-corridor.mp4')}
  style={{ width: '100%', height: '100%', objectFit: 'cover' }}
/>

// 유리 패널 내부 B-roll
<GlassPanel rotateY={-5} rotateX={3}>
  <OffthreadVideo
    src={staticFile('veo-product-demo.mp4')}
    style={{ width: '100%', borderRadius: 12 }}
  />
</GlassPanel>

Veo 3.1 B-roll 프롬프트 패턴:

[카메라 움직임], [주제/환경], [동작/모션], [조명 + 분위기].
어두운 배경, [강조 색상] 글로우. 시네마틱, 프로페셔널. [화면 비율].

사용 시기: 장면 그룹 간 전환, 분위기 있는 인트로/아웃트로, 정적 스크린샷보다 모션이 가치를 더하는 시네마틱 제품 데모.

전처리 (<OffthreadVideo> + parseMedia()에 필요):

ffmpeg -i veo-clip.mp4 -c:v libx264 -crf 18 -movflags +faststart -r 30 processed.mp4

하이브리드 구성 패턴

가장 세련된 비디오는 세 가지 에셋 유형을 모두 결합합니다:

타이틀 카드 (텍스트)
  → 유리 패널 내 Imagen 프레임 (컨셉 아트)
    → Veo B-roll 전환 (시네마틱 4초)
      → 유리 패널 내 스크린샷 (제품 데모)
        → Remotion 애니메이션 데이터 (파이프라인 노드, 파일 트리)
          → Veo B-roll 아웃트로 (분위기)
            → CTA 카드 (텍스트)

규칙: Remotion이 타이밍, 전환, 텍스트를 제어합니다. AI 에셋은 시각적 풍부함을 제공합니다. AI가 템포를 제어하도록 절대 두지 마세요 — 그것은 Remotion의 역할입니다.

제작 파이프라인

1. 스토리보드 → 유형(1-8), 지속 시간, 콘텐츠로 장면 정의
2. 에셋 → 모든 시각적 에셋 생성/캡처
   a. 스크린샷 — agent-browser 또는 수동 캡처를 통한 제품 UI
   b. Imagen 4.0 — 히어로 렌더, 컨셉 아트, 추상 비주얼
      → ai.models.generateImages({ model: 'imagen-4.0-fast-generate-001', prompt: '...' })
      → public/ 디렉토리에 저장
   c. Veo 3.1 — 시네마틱 B-roll 클립 (각 4-8초)
      → ai.models.generateVideos({ model: 'veo-3.1-fast-generate-preview', prompt: '...' })
      → 전처리: ffmpeg -i clip.mp4 -c:v libx264 -movflags +faststart -r 30 processed.mp4
      → public/ 디렉토리에 저장
3. 구성 → Remotion 구성 빌드
   - 미리 로딩을 위한 premountFor와 함께 <Sequence>
   - 이미지에는 <Img> + staticFile() (<img> 절대 금지)
   - Veo 클립에는 <OffthreadVideo> + staticFile() (<video> 절대 금지)
   - 3D 변환 및 진입을 위한 GlassPanel + spring()
   - 배경 레이어용 ParticleField
   - 텍스트 오버레이용 Subtitle 컴포넌트
4. 렌더 → npx remotion render src/Root.tsx CompositionId out/video.mp4
5. 후처리 → 별도 오디오 추가
   - ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac final.mp4
6. 검토 → /creative-review가 출력을 스타일 브리프에 대해 점수화 (목표: ≥75)
7. 배포 → /blog-post 게시 파이프라인을 통해 플랫폼에 푸시

Remotion 프로젝트 구조

launch-video/
├── src/
│   ├── Root.tsx                 # registerRoot
│   ├── Composition.tsx          # <Sequence> 장면이 있는 메인 구성
│   ├── scenes/
│   │   ├── TitleCard.tsx        # 장면 유형 1
│   │   ├── PromptScene.tsx      # 장면 유형 2
│   │   ├── SplitPanel.tsx       # 장면 유형 3
│   │   ├── ProductDemo.tsx      # 장면 유형 4
│   │   ├── DetailZoom.tsx       # 장면 유형 5
│   │   └── CTACard.tsx          # 장면 유형 6
│   ├── components/
│   │   ├── GlassPanel.tsx       # 유리 재질의 3D 원근 패널
│   │   ├── ParticleField.tsx    # 배경 파티클 시스템
│   │   ├── TypewriterText.tsx   # 프레임 기반 타자기 애니메이션
│   │   └── SpringFade.tsx       # 재사용 가능한 스프링 페이드 래퍼
│   └── styles/
│       └── tokens.ts            # 리퀴드 글래스 색상/간격 토큰
├── public/                      # staticFile() 에셋 (스크린샷, 렌더)
├── package.json
└── remotion.config.ts

파티클 필드 컴포넌트 (참조)

const ParticleField: React.FC<{ count?: number }> = ({ count = 40 }) => {
  const frame = useCurrentFrame();
  const particles = useMemo(() =>
    Array.from({ length: count }, (_, i) => ({
      x: (i * 37 + 13) % 100,
      y: (i * 53 + 7) % 100,
      size: 2 + (i % 3),
      speed: 0.1 + (i % 5) * 0.05,
      opacity: 0.05 + (i % 4) * 0.04,
    })), [count]);

  return (
    <AbsoluteFill>
      {particles.map((p, i) => (
        <div key={i} style={{
          position: 'absolute',
          left: `${p.x}%`,
          top: `${(p.y + frame * p.speed) % 110}%`,
          width: p.size,
          height: p.size,
          borderRadius: '50%',
          background: `rgba(255, 255, 255, ${p.opacity})`,
        }} />
      ))}
    </AbsoluteFill>
  );
};

GlassPanel 컴포넌트 (참조)

const GlassPanel: React.FC<{
  children: React.ReactNode;
  rotateY?: number;
  rotateX?: number;
  scale?: number;
}> = ({ children, rotateY = -8, rotateX = 5, scale = 1 }) => (
  <div style={{
    transform: `perspective(1200px) rotateY(${rotateY}deg) rotateX(${rotateX}deg) scale(${scale})`,
    borderRadius: 16,
    border: '1px solid rgba(255, 255, 255, 0.08)',
    boxShadow: '0 25px 50px rgba(0,0,0,0.6), 0 0 30px rgba(59,130,246,0.1), inset 0 1px 0 rgba(255,255,255,0.05)',
    background: 'rgba(20, 20, 25, 0.85)',
    overflow: 'hidden',
    transition: 'none',
  }}>
    {children}
  </div>
);

품질 체크리스트

  • 배경이 순수 블랙 또는 거의 블랙 (그라데이션 없음)
  • 모든 패널이 3D 원근 변환 사용 (절대 평평한 스크린샷 금지)
  • 모든 진입에 스프링 애니메이션 사용 (CSS 전환 금지)
  • 배경에 파티클 필드 존재
  • 각 장면 최소 3-5초 유지 (빠른 컷 금지)
  • 타이포그래피: 산세리프, 흰색, 중앙 정렬, 타이틀 카드당 ≤8단어
  • 유리 재질: 테두리 글로우, 그림자, 둥근 모서리, 반투명
  • 오디오 존재 (앰비언트 일렉트로닉 또는 내레이션)
  • 총 지속 시간 20-45초
  • 최종 렌더에 -movflags +faststart 적용

Individual skills in this repo

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

broomva/skills

Local TTS, voice cloning, voice design, and video dubbing via the OmniVoice Studio MCP server (open-source ElevenLabs alternative; nothing leaves the machine, runs on MPS/CUDA/CPU). Use when: (1) generating speech from text in any of 646 languages, (2) cloning a voice from a 3-second reference clip, (3) designing a voice by gender/age/accent/pitch/style, (4) dubbing a video into another language, (5) listing voice profiles or personality presets, (6) producing narration where privacy, cost, or absent API keys matter, (7) non-English narration where Edge TTS/kokoro fall short, (8) batch audio for blog posts or content pipelines. Triggers: 'omnivoice', 'voice clone', 'clone this voice', 'tts', 'narrate', 'generate speech', 'voice synthesis', 'dub video', 'voice design', 'local tts', 'multilingual voice', 'narrate this post', 'elevenlabs alternative'.

broomva/skills

>- Speak an explanation out loud while working in any project — tiered text-to-speech with a pluggable backend (ElevenLabs by default and quota-guarded, macOS `say` via `--fast` for free instant local speech, local OmniVoice as an unlimited private tier). Markdown-aware, so code fences, URLs and deep paths collapse to short spoken placeholders instead of being dictated character by character, while snake_case identifiers survive intact so the listener can still search for them. Every utterance is saved to disk for later replay. Also carries a **talk mode** toggle: turn it on and the agent speaks a full readback of every turn, for as long as that session lasts — the whole response, not a summary of it, with `brief` and `marker` levels for when you want less. Talk mode is off by default and scoped to the single session that enabled it, so parallel agents in other worktrees stay silent. Use when the user asks to hear something rather than read it — an explanation of a change, a walkthrough of what just happen...

broomva/skills

Shop Tiendas D1 (Colombia, d1.com.co) from the command line — search the catalogue, resolve your nearest physical store, price a basket against that store's real stock, and quote delivery. D1 runs VTEX IO (account `d1tiendas`), so this drives its public storefront API with no admin key at all — catalogue and cart work fully anonymously, and a one-time emailed code unlocks order history. Handles the two traps that make naive D1 automation wrong — availability is regionalized (an unregioned query reports a national catalogue nobody can actually buy from) and prices arrive in two different units (search reports whole pesos, checkout reports hundredths, a silent 100x). Builds and prices baskets; it deliberately cannot pay, handing a checkout URL to a human instead. USE WHEN the user wants to find D1 products or prices, check whether D1 delivers somewhere, build or cost a D1 grocery basket, compare D1 items, or review their D1 orders. NOT FOR other Colombian retailers (Éxito, Jumbo, Ara, Alkosto), and not for c...

broomva/skills

Stateful, local-first household toxics inventory + swap engine. Identify the items in a home that carry endocrine disruptors and persistent chemicals (BPA/BPS, phthalates, PFAS/PTFE, parabens, flame retardants, VOCs, microplastics), score each by *real* exposure (severity x presence x how it's used x condition), and track the swap to a safer alternative from "flagged" -> "sourced" -> "swapped". Ships a grounded, cited knowledge graph of ~20 hazards, ~40 item-classes, and ~40 alternatives. Hands sourcing off to the `procurer` skill. The skill's state is the source of truth — the agent is the app.

broomva/skills

Tekton — the shared architecture-intent substrate for co-designing systems with the agent. One typed graph across six tiers (system / journey / data / infra / decisions / qualities); views are queries, not separate diagrams. The canonical artifact is a diff-friendly YAML model both human and agent read and write; it renders to Mermaid (agent-legible, GitHub-native) and a self-contained tabbed HTML viewer (human-visual). Cross-tier traceability (`tekton query <from> <to>`) answers "which infra does this user-journey step touch?" as a path query. USE WHEN: designing or thinking deeply about architecture, a system, a data model, user journeys/flows, or a technical plan WITH the agent; when a Category-C HTML doc isn't enough because you need to see AND edit AND traverse the design across tiers; "let's design X", "architect this", "model the system", "draw the flow", "how does this fit together", "diagram this", "/tekton". NOT FOR: a one-off throwaway diagram (use Mermaid inline); prose-only ADRs (write the ADR...

broomva/skills

Generate a polished Remotion video and X thread showcasing the full agent skills inventory. Use when creating social media content about skills, rendering category-based skill visualizations, or producing animated showcases of agent capabilities. Triggers on "skills video", "showcase skills", "skills thread", "render skills", "social content for skills", or requests to visualize the skills inventory.

broomva/skills

OpenCaptions extension for Content Engine — adds intent-driven CWI (Caption With Intent) captions to the post-production pipeline. Hooks into the grade → caption → final stage. Generates captions that understand video intent (pitch, volume, emotion, emphasis) and style themselves accordingly with variable font weight, size, and color. Uses the OpenCaptions CLI or MCP server. Triggers on: 'add captions', 'opencaptions', 'CWI captions', 'intent captions'.

관련 스킬