agentsclimarketplace

Video maker

Skill Dannykkh/skill-olympus/skills/video-maker

Twelve Greek gods. One command. A working SaaS. 98 skills + 49 agents + 13 hooks for Claude Code + Codex CLI + Gemini CLI. Cross-CLI persistent memory, zero-interaction full pipeline (design → build → inspect → test → ship).

Install
npx -y skills add Dannykkh/skill-olympus --skill video-maker

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Remotion 기반 React 코드로 영상 제작. 프로젝트 셋업, 영상 컴포넌트 생성, 애니메이션, 렌더링. /video-maker로 실행.

SKILL.md

6.8 KB, ~2.5k tokens by cl100k_base, as published. Nobody here has run it

Video Maker — Remotion 코드 기반 영상 제작

React 컴포넌트를 작성하면 영상으로 렌더링해주는 Remotion 프레임워크 기반 스킬입니다. 제품 소개 영상, 데모 비디오, SNS 콘텐츠, 데이터 시각화 영상 등을 코드로 생성합니다.

적용 시점

  • /video-maker 명시적 실행
  • "영상 만들어줘", "소개 비디오", "데모 영상", "Remotion" 요청 시

Step 1: 모드 파악

사용자 메시지에서 모드를 판별합니다:

모드트리거 키워드동작
init"셋업", "설치", "초기화", "프로젝트 생성"Remotion 프로젝트 구조 생성
create"만들어", "생성", "영상", "비디오"영상 컴포넌트 작성
edit"수정", "변경", "바꿔", "고쳐"기존 영상 컴포넌트 수정
render"렌더링", "출력", "내보내기", "MP4"영상 렌더링 실행

Step 2: 모드별 워크플로우

2-A. init — 프로젝트 셋업

설치:

npm i remotion @remotion/cli @remotion/player

디렉토리 구조:

src/remotion/
├── index.ts              # registerRoot(Root)
├── Root.tsx              # <Composition> 등록
├── compositions/
│   ├── IntroVideo.tsx    # 영상 컴포넌트
│   └── DemoVideo.tsx
└── assets/               # 이미지, 폰트 등

Root.tsx 기본 구조:

import { Composition } from 'remotion';
import { IntroVideo } from './compositions/IntroVideo';

export const Root = () => {
  return (
    <>
      <Composition
        id="IntroVideo"
        component={IntroVideo}
        durationInFrames={150}  // 5초 (30fps)
        fps={30}
        width={1920}
        height={1080}
      />
    </>
  );
};

2-B. create — 영상 컴포넌트 생성

핵심 API

API용도예시
useCurrentFrame()현재 프레임 번호애니메이션 기준값
useVideoConfig()fps, 크기, 길이 정보반응형 레이아웃
interpolate()프레임 → 값 매핑위치, 투명도, 크기 변화
spring()물리 기반 애니메이션자연스러운 바운스 효과
<AbsoluteFill>전체 화면 레이어배경, 오버레이
<Sequence>시간축 배치from={30} → 1초 후 시작
<Series>순차 배치씬 자동 연결

애니메이션 기본 패턴

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

export const IntroVideo = () => {
  const frame = useCurrentFrame();
  const { fps } = useVideoConfig();

  // 페이드 인 (0~30프레임 = 0~1초)
  const opacity = interpolate(frame, [0, 30], [0, 1], {
    extrapolateRight: 'clamp',
  });

  // 스프링 애니메이션 (바운스 효과)
  const scale = spring({ frame, fps, config: { damping: 10 } });

  // 슬라이드 인 (왼쪽에서 등장)
  const translateX = interpolate(frame, [0, 20], [-100, 0], {
    extrapolateRight: 'clamp',
  });

  return (
    <AbsoluteFill style={{ backgroundColor: '#0f172a' }}>
      <h1
        style={{
          color: 'white',
          fontSize: 72,
          opacity,
          transform: `scale(${scale}) translateX(${translateX}%)`,
        }}
      >
        제품 소개
      </h1>
    </AbsoluteFill>
  );
};

씬 구성 (Sequence)

import { Sequence, Series } from 'remotion';

export const DemoVideo = () => {
  return (
    <AbsoluteFill>
      {/* 0~2초: 타이틀 */}
      <Sequence from={0} durationInFrames={60}>
        <TitleScene />
      </Sequence>

      {/* 2~5초: 기능 소개 */}
      <Sequence from={60} durationInFrames={90}>
        <FeatureScene />
      </Sequence>

      {/* 5~7초: CTA */}
      <Sequence from={150} durationInFrames={60}>
        <CtaScene />
      </Sequence>
    </AbsoluteFill>
  );
};

미디어 사용

import { Video, Audio, Img, staticFile } from 'remotion';

// 이미지
<Img src={staticFile('logo.png')} style={{ width: 200 }} />

// 비디오 삽입
<Video src={staticFile('demo.mp4')} startFrom={0} />

// 배경 음악
<Audio src={staticFile('bgm.mp3')} volume={0.3} />

2-C. render — 렌더링

# 실시간 프리뷰 (브라우저에서 확인)
npx remotion studio

# MP4 렌더링
npx remotion render <CompositionId> out/video.mp4

# 특정 프레임을 이미지로 (썸네일)
npx remotion still <CompositionId> out/thumbnail.png --frame=45

# GIF 렌더링
npx remotion render <CompositionId> out/video.gif --image-format=png

Step 3: 영상 유형별 템플릿

제품 소개 영상 (30초)

시간내용
1. Hook0~3초문제 제기 (큰 텍스트 + 페이드 인)
2. Solution3~8초제품 이름 + 핵심 가치 (스프링 애니메이션)
3. Features8~20초기능 3개 순차 등장 (슬라이드 인)
4. Demo20~25초스크린샷/GIF (확대 효과)
5. CTA25~30초"지금 시작하세요" + URL

데이터 시각화 영상

시간내용
1. Title0~2초차트 제목
2. Chart2~8초막대/선 그래프 애니메이션 (interpolate로 높이 변화)
3. Highlight8~10초핵심 수치 강조

SNS 숏폼 (15초)

시간내용
1. Attention0~2초강렬한 텍스트 (스케일 업)
2. Content2~12초핵심 내용 3컷
3. CTA12~15초팔로우/링크 안내

작성 규칙

규칙설명
TypeScript 필수모든 컴포넌트 .tsx로 작성
결정론적 코드Math.random() 금지 → random('seed-string') 사용
clamp 필수interpolate()extrapolateLeft/Right: 'clamp' 항상 설정
시간 = 프레임30fps 기준: 1초 = 30프레임, 5초 = 150프레임
Composition 등록새 영상은 반드시 Root.tsx<Composition> 추가
씬 분할10초 이상 영상은 씬 단위로 컴포넌트 분리
해상도기본 1920×1080 (16:9), 세로형은 1080×1920 (9:16)

Context7 연계

Remotion API가 업데이트될 수 있으므로, 구현 전 Context7 MCP로 최신 문서를 확인합니다:

Context7: remotion 최신 API 확인
- useCurrentFrame, interpolate, spring 사용법
- Composition 등록 방식
- 렌더링 CLI 옵션

연관 리소스

리소스역할
design-system-starter (스킬)디자인 토큰 → 영상 컬러/타이포 일관성
stitch-* (스킬)UI 디자인 → 영상 속 화면 목업 소스

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.