Skip to content
Back to skills

Apple Style Promo Video

ASecurity

사용자가 자기 웹·앱·SaaS·AI 제품·개발자 도구를 홍보하는 영상을 애플 광고·키노트풍 키네틱 타이포그래피와 UI 모션그래픽으로 만든다. HTML/CSS/JS로 장면을 코딩해 MP4로 렌더링한다. '홍보영상', '소개 영상', '런칭 필름', '데모 영상', '기능 소개 쇼츠/릴스', '발표용 영상', '모션그래픽', '키네틱 타이포', '프로모 비디오', 'promo video', 'product video' 요청이면 사용자가 애플을 언급하지 않아도 이 스킬을 쓴다. 실사 촬영·AI 생성 영상 요청에는 쓰지 않는다.

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
designpythonbash

Works with

  • claude code
  • cli

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 10 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add Wanfeng1028/muse --skill apple-style-promo-video --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Apple Style Promo Video?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Apple Style Promo Video
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wanfeng1028-apple-style-promo-video/badge)](https://www.skillsdirectory.com/skills/wanfeng1028-apple-style-promo-video)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: apple-style-promo-video
description: "사용자가 자기 웹·앱·SaaS·AI 제품·개발자 도구를 홍보하는 영상을 애플 광고·키노트풍 키네틱 타이포그래피와 UI 모션그래픽으로 만든다. HTML/CSS/JS로 장면을 코딩해 MP4로 렌더링한다. '홍보영상', '소개 영상', '런칭 필름', '데모 영상', '기능 소개 쇼츠/릴스', '발표용 영상', '모션그래픽', '키네틱 타이포', '프로모 비디오', 'promo video', 'product video' 요청이면 사용자가 애플을 언급하지 않아도 이 스킬을 쓴다. 실사 촬영·AI 생성 영상 요청에는 쓰지 않는다."
---

# 애플풍 홍보영상

사용자의 웹·앱을 **애플 광고처럼 보이는 홍보영상**으로 만든다. 3D 제품 렌더는 할 수 없으니 **타이포그래피가 주인공**이다. 거대한 헤드라인, 단어 하나씩 끊어 치는 템포, 그라데이션 글자, 정적과 리빌. 여기에 실제 제품 UI가 움직이는 장면을 섞어 "이게 뭘 해주는지"까지 보여준다.

애플의 브랜드 규칙이나 HIG를 지키는 게 목표가 아니다. **애플처럼 보이고, 애플처럼 혹하게 만드는 것**이 목표다.

장면은 HTML/CSS/JS로 코딩하고, 헤드리스 Chromium으로 프레임 단위 캡처한 뒤 ffmpeg로 MP4를 만든다. 한글이 깨지지 않고, 타이밍을 프레임 단위로 맞추며, 고친 뒤 바로 다시 렌더링할 수 있다. 실사 인물·3D 제품·음악 생성은 하지 못한다. 음원을 주면 비트에 맞춰 합친다.

## 사용자 흐름: 한 번 묻고, 한 번에 만든다

```
① 정보 수집 (사용자 응답 1회) → ② 제작: 카피·스토리보드·코딩·렌더·검수 (확인 없이) → ③ 전달 + 빠른 수정
```

중간에 브리프, 비트 시트, 프리뷰를 확인받지 않는다. 사용자는 **처음에 한 번 답하고, 끝에 완성 영상을 받는다.**

---

## ① 정보 수집

### 먼저 조사

사용자가 URL, 스크린샷, 레포, README, 소개 문구 중 하나라도 줬다면 **질문하기 전에 먼저 읽는다.** 웹 URL이면 페이지를 열어 제품명, 한 줄 소개, 기능, 수치, 브랜드 컬러, 로고를 뽑는다. 채울 수 있는 칸은 모두 채운 뒤에 묻는다.

### 필요한 정보

| # | 항목 | 종류 | 없을 때 |
|---|---|---|---|
| 1 | 제품명과 한 줄 소개 (누가 / 무엇을 / 어떻게 더 낫게) | **필수**, 서술 | 조사로 채운다. 조사할 자료도 없으면 묻는다 |
| 2 | 보여줄 핵심 기능 1~3개와 각 기능의 결과 예시 | **필수**, 서술 | 조사로 채우고 예시 데이터는 지어서 "시연용 화면"으로 표기 |
| 3 | 화면 자료: URL·스크린샷·로고 | 첨부 | 사이트를 보고 UI를 재현하거나 타이포만으로 만든다 |
| 4 | 용도 → 비율·길이 | 선택 | 16:9, 30초 |
| 5 | 스타일 | 선택 | 키노트 다크 |
| 6 | 마지막 행동(CTA) | 선택 | 사이트 방문 + URL |
| 7 | 강조할 수치·실적, 피해야 할 표현 | 서술, 선택사항 | 넣지 않는다. 수치는 지어내지 않는다 |

### 묻는 방법

한 메시지 안에 다 묻는다. 묻는 건 한 번뿐이다.

1. 조사로 파악한 내용을 3~5줄로 보여준다: "○○는 △△를 해주는 서비스로 파악했어요. 기능은 A, B, C를 보여줄게요." 틀렸으면 고쳐 달라고 한 줄 덧붙인다.
2. 선택형 질문(4~6번)은 **선택지를 고르는 UI가 있으면 그걸로** 묻는다. Claude Code의 `AskUserQuestion`, claude.ai(웹·데스크탑 앱)에 있는 선택형 질문 도구가 해당한다. 그런 도구가 없으면 번호 선택지를 텍스트로 보여주고 "1-A, 2-B처럼 답해 주세요. 모르면 비워 두세요, 기본값으로 갈게요"라고 쓴다.
3. 필수 정보(1·2)를 조사로 채울 수 없을 때만 서술형으로 묻는다. 이때는 선택지도 같은 메시지에 텍스트로 함께 보여준다. 두 번 묻지 않기 위해서다.
4. 사용자가 처음부터 "알아서 해줘"라고 하거나 정보를 충분히 줬다면 질문을 건너뛰고 기본값으로 바로 만든다. 답변 끝에 어떤 기본값을 썼는지 한 줄로 알린다.

**선택지 (그대로 쓴다)**

- **용도:** A 랜딩·유튜브 (16:9, 30초) / B 쇼츠·릴스 (9:16, 15초) / C 발표·데모데이 (16:9, 45초) / D 인스타 피드 (4:5, 20초)
- **스타일:** 자세한 내용은 [references/design-system.md](references/design-system.md)의 스타일 프리셋.
  - A 키노트 다크: 검정 배경, 그라데이션 헤드라인, 웅장한 리빌
  - B 클린 화이트: apple.com 제품 페이지처럼 흰 배경, 떠 있는 UI 카드, 차분함
  - C 컬러 블록: 브랜드 컬러 풀스크린 배경에 거대한 흰 글자, 대담함
  - D 템포 키네틱: 단어가 박자에 맞춰 빠르게 끊어지는 컷, 쇼츠에 강함
- **마지막 행동:** A 사이트 방문 / B 앱 다운로드 / C 무료로 시작하기 / D 사전 등록·대기자 신청
- **UI 화면:** A 첨부한 스크린샷 사용 / B 사이트를 보고 재현 / C UI 없이 타이포만

---

## ② 제작 (확인 없이 끝까지)

답을 받으면 아래를 순서대로 혼자 진행한다. 중간 산출물을 보여주고 승인받지 않는다.

### 1. 카피 먼저

타이포가 주인공이라 **카피가 영상의 품질을 결정한다.** 코딩 전에 전체 카피를 쓴다. 공식과 예시는 [references/typography-playbook.md](references/typography-playbook.md)의 「카피 공식」에 있다.

- 문장은 짧게 끊고 마침표로 리듬을 만든다. "빠르다. 정확하다. 그리고 쉽다."
- 한 화면에 한 문장. 16:9는 한 줄 한글 12자, 9:16은 8자 안팎.
- 기능 설명이 아니라 얻는 것을 쓴다. "회의록 자동 요약" ✗ → "회의는 끝났다. 정리도 끝났다." ✓
- 영상 전체에서 **꽂히는 한 문장**을 하나 정해 리빌 장면과 엔드카드에 쓴다.

### 2. 스토리보드 (내부용)

[references/story-templates.md](references/story-templates.md)에서 용도에 맞는 골격을 고르고, 장면마다 타이포 무브([typography-playbook.md](references/typography-playbook.md))나 UI 장면([references/scene-catalog.md](references/scene-catalog.md))을 배정한다.

기본 리듬은 **긴장 → 리빌 → 증명 → 각인**이다.

| 구간 | 비율 | 30초 기준 | 하는 일 | 주로 쓰는 무브 |
|---|---|---|---|---|
| 훅 | 10~15% | 0–4s | 문제나 질문을 짧게 끊어 친다 | 템포 컷, 라인 리빌 |
| 리빌 | ~10% | 4–7s | 정적 → 제품명이 크게 등장 | 정적 비트, 트래킹 인, 그라데이션 |
| 기능 증명 | 50~60% | 7–24s | 기능 2~3개를 헤드라인 + 실제 UI 움직임으로 | 단어 교체, 글자→UI 변신, 플로우 데모 |
| 폭·수치 | ~10% | 24–27s | 기능 전체의 폭이나 핵심 수치 | 기능 월, 숫자 히어로, 리스트 롤 |
| 엔드카드 | ~10% | 27–30s | 로고 + 꽂히는 한 문장 + CTA | 락업 |

- UI 없이 타이포만 만드는 경우에도 기능 구간은 **구체적인 결과**를 글자로 보여준다 ("2시간 → 3분", 실제 결과 문장).
- 기능이 4개 이상이면 2~3개만 깊게 보여주고, 나머지는 기능 월 한 장면으로 묶는다.

### 3. 코딩 → 렌더 → 검수 → 수정

환경 준비, 아키텍처, 렌더 명령은 아래에 있다. 검수 경고가 0이 될 때까지 혼자 고치고 다시 렌더링한다. 검수를 통과한 최종본만 전달한다.

---

## ③ 전달

- MP4를 보낸다. Claude Code에서는 파일 경로를, 채팅 환경에서는 다운로드 가능한 파일을 준다. 대표 프레임 3~4장을 담은 `grid.png`도 함께 보여준다.
- 아래를 5줄 이내로 쓴다.
  - 장면 구성: "훅 → 리빌 → 기능 A·B → 수치 → 엔드카드"
  - 꽂히는 한 문장
  - 사용한 기본값
  - 시연용 데이터를 썼다면 그 사실
- 끝에 바로 고를 수 있는 수정 옵션을 2~4개 제시한다. 예: "더 빠르게 / 다크↔화이트 전환 / 9:16 버전 추가 / 카피 톤 바꾸기". 선택 UI가 있으면 그걸로 묻는다.

### 수정 요청 대응

- **"더 애플스럽게":** 효과를 더하지 말고 덜어낸다. 글자를 더 크게 하고, 여백을 늘리고, 색을 줄인다. 리빌 앞에 정적(0.4초)을 넣고, 결과 화면에 머무는 시간을 늘린다.
- **"더 임팩트 있게 / 혹하게":** 훅을 템포 컷으로 바꾼다. 꽂히는 한 문장에 그라데이션을 입히고, 숫자 히어로를 하나 넣는다.
- **"내용이 약해":** 기능 장면에 결과 데이터, Before/After, 수치를 더한다. 장식을 늘리지 않는다.
- **"더 짧게":** 기능 수를 먼저 줄이고, 그다음 훅을 줄인다. 리빌과 엔드카드는 지킨다.
- **색·문구 변경:** CSS 변수와 텍스트만 바꾸고 다시 렌더링한다.
- **다른 비율:** `--format`만 바꿔 레이아웃을 확인하고 보정한다. 9:16은 글자를 1.2배 키우고 세로로 쌓는다.
- **음원:** `ffmpeg -i promo.mp4 -i music.mp3 -c:v copy -c:a aac -shortest -af "afade=t=out:st=<끝-1.5>:d=1.5" final.mp4`. 비트 시점에 맞춰 장면 `dur`를 조정한다.

---

## 환경 준비

```bash
which ffmpeg && python3 -c "import playwright" && echo ok
# 없으면: pip install playwright (필요하면 --break-system-packages) && python3 -m playwright install chromium
mkdir -p promo && cd promo && npm i pretendard      # 한글. 영문 전용이면 npm i @fontsource/inter
cp <skill>/assets/template.html promo.html
cp <skill>/scripts/render.py <skill>/scripts/qa_frames.py .
```

채팅 환경(claude.ai 웹·데스크탑 앱)의 샌드박스에서 Chromium·ffmpeg·npm 설치가 막히면, 완성된 `promo.html`과 `render.py`를 주고 로컬에서 렌더링하는 명령 한 줄을 안내한다. 첨부 에셋은 작업 폴더로 복사해서 쓰고, 원본은 건드리지 않는다.

## 핵심 아키텍처: 장면 모듈 + `render(t)` 순수 함수

`assets/template.html`이 이 구조로 되어 있다. 이 구조를 쓰는 이유는 **어느 프레임이든 t만으로 화면이 결정되어야** 부분 렌더, 재렌더, 프레임 검수가 모두 가능하기 때문이다.

1. CSS transition, @keyframes, requestAnimationFrame, setTimeout을 쓰지 않는다. 모든 상태를 t로부터 계산한다.
2. 장면은 `SCENES` 배열에 `{id, role, dur, draw(lt, t)}`로 등록한다. `render(t)`는 범위 밖 장면을 매 프레임 숨긴다. `draw` 안에서는 early return 하지 않는다 (잔상의 원인이 된다).
3. 장면 시작 시간은 `dur`를 누적해 자동으로 계산된다. `overlap`을 주면 겹치는 구간이 자동으로 디졸브된다. 하드컷은 `overlap` 없이 쓰고, 직접 제어할 전환은 `tr:'manual'`로 둔다.
4. 이동할 요소의 도착 좌표는 `measure()`에서 `getBoundingClientRect()`로 측정한다.
5. 비율은 `?format=16:9|9:16|1:1|4:5`로 바꾼다. 레이아웃은 CSS 변수와 `body[data-format]`으로 잡는다.
6. 스타일 프리셋은 `body` 클래스(`style-keynote|style-clean|style-color|style-tempo`)로 토큰을 바꾼다.

```bash
python3 render.py promo.html --format 16:9 --out promo.mp4                 # 전체
python3 render.py promo.html --from 5 --to 12 --fps 15 --out preview.mp4   # 일부만 빠르게 확인
```

## 레퍼런스

장면을 짜기 전에 **typography-playbook.md와 design-system.md는 반드시 읽는다.**

- [references/typography-playbook.md](references/typography-playbook.md): 애플 타이포 원칙, 시그니처 무브 14개(코드 포함), 카피 공식. **이 스킬의 핵심.**
- [references/design-system.md](references/design-system.md): 스타일 프리셋 4종, 색 토큰, 레이아웃, UI 요소, Liquid Glass
- [references/motion-recipes.md](references/motion-recipes.md): UI 인터랙션, 데이터, 연속 변환, 전환 레시피
- [references/scene-catalog.md](references/scene-catalog.md): 기능을 보여주는 UI 장면 유형
- [references/story-templates.md](references/story-templates.md): 용도별 골격

## 품질 검수 (매 렌더마다)

```bash
python3 qa_frames.py promo.mp4 promo.html      # 장면 중간 + 전환 ±0.1s 프레임을 grid.png로
```

`grid.png`를 Read로 직접 본다. 스크립트가 시간 배분, 텍스트 대비, 깜빡임(1초에 밝기 급변 3회 초과)을 검사해 `!`로 경고한다. 경고는 모두 고친다.

**혹하는가**
- [ ] 첫 2초 안에 "어?" 하게 만드는 문장이나 장면이 있다
- [ ] 제품명이 정적 뒤에 크게 등장하는 리빌 순간이 있다
- [ ] 꽂히는 한 문장이 영상에서 2번 나온다 (리빌과 엔드카드)
- [ ] 소리 없이 봐도 제품이 무엇을 해주는지 이해된다
- [ ] 기능 장면마다 구체적인 결과(실제 문장, 숫자, 이름)가 보인다

**애플스러운가**
- [ ] 헤드라인이 화면을 압도할 만큼 크다 (16:9 기준 120px 이상, 히어로는 200px 이상)
- [ ] 한 화면에 한 문장만 있다. 색은 배경·글자·포인트 3개 이내다
- [ ] 그라데이션 글자는 영상 전체에서 1~2곳만 쓴다
- [ ] 화면의 40% 이상이 비어 있는 장면이 많다
- [ ] 장식(파티클, 바운스 캐릭터, 이모지)이 없다

**깨지지 않았는가**
- [ ] 텍스트가 잘리거나 한 글자만 다음 줄로 넘어가지 않는다. 안전영역 밖에 텍스트가 없다
- [ ] 폰트가 fallback으로 렌더링되지 않았다
- [ ] 전환 순간 두 장면이 겹쳐 번쩍이지 않는다
- [ ] 이동한 요소가 도착 위치에 정확히 착지한다
- [ ] 시연용 임의 데이터가 있으면 구석에 "시연용 화면"이라고 작게 표기했다
- [ ] qa_frames.py 경고가 없다

Files in this skill

  • LICENSE1.1 KB
  • SKILL.md13.5 KB
  • assets/template.html19.6 KB
  • references/design-system.md7 KB
  • references/motion-recipes.md6.7 KB
  • references/scene-catalog.md7.1 KB
  • references/story-templates.md4.7 KB
  • references/typography-playbook.md12.9 KB
  • scripts/qa_frames.py8 KB
  • scripts/render.py3.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.