Communitygithub.com

Angles

화면 녹화나 스크린샷으로부터 차분하고 사진 같은 제품 비디오를 제작합니다. 느린 카메라 움직임, 근접 및 각도 촬영, 실제 화면처럼 보이는 부드러운 포커스 효과를 Angles studio를 통해 로컬에서 렌더링합니다. 데모 비디오, 제품 샷, 런칭 클립 및 '목업 비디오'에 사용하세요.

Angles란 무엇인가요?

Angles는 개발자와 크리에이터가 화면 녹화나 스크린샷에서 전문적인 품질의 제품 비디오를 생성할 수 있는 로컬 CLI 도구입니다. 하나의 JSON 스펙 파일과 하나의 명령어로 작동하며, 브라우저 기반 스튜디오를 열지 않고도 근접 촬영, 래킹, 플로트, 푸시 등 다양한 카메라 스타일을 적용할 수 있습니다. 사전 검사 명령어(check)를 통해 여러 변형을 하나의 시트 이미지로 비교한 후, 원하는 변형을 선택하여 실제 MP4 비디오를 렌더링(make)하는 워크플로우를 제공합니다. 명확한 오류 메시지와 제안된 값 목록을 제공하므로, 사양이 잘못된 경우 추측하지 않고 수정할 수 있습니다. 로컬에서 실행되며 Chrome, ffmpeg, Node.js 18+, Python3가 필요하고, 내부적으로 포트 8790을 사용합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/HansEngebretsen/angles/tree/main

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

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

문서

Angles은(는) 무엇을 하나요?

작은 JSON 스펙을 작성하고, 하나의 명령어를 실행한 후 하나의 JSON 라인을 읽으세요. 스튜디오를 열거나 편집하지 마세요. 스펙은 만들 수 있는 모든 것에 도달하고, 만들 수 없는 것은 거부합니다.

node <this folder>/angles.mjs check spec.json   # 약 5초, 비디오 없음: 시트 하나, 변형당 4프레임의 한 행
node <this folder>/angles.mjs make spec.json    # mp4 (너비 1920, 비디오 1초당 약 4초 작업) + 시트 하나
  1. 만들기 전에 확인하세요. 고려 중인 옵션을 variants에 넣으세요. 한 번 check하면 모든 변형이 레이블이 지정된 행으로 하나의 작은 이미지에 표시됩니다. 시트를 보고 행을 선택한 후, 해당 행의 필드를 스펙에 병합하고 (variants는 삭제) make를 한 번 실행하세요. 비주얼을 비교하기 위해 비디오를 렌더링하지 마세요.
  2. 시트를 보고, mp4는 보지 마세요. 출력된 sheet 경로를 읽으세요. 구도, 각도 및 초점을 판단하기에 충분합니다.
  3. ok: false인 경우, warnings가 명명한 것만 수정하세요. 경고 메시지에는 유효한 선택지가 나열되어 있습니다. 필요한 경우 node angles.mjs schema로 모든 선택지를 출력할 수 있습니다. 추측하지 마세요.
{ "source": "~/Desktop/demo.mov", "out": "~/Desktop/angles", "trim": { "in": 2, "out": 8 },
  "look": "bright", "background": "mist", "shadow": "soft",
  "variants": [{ "style": "close", "level": "gentle" }, { "style": "raking" }, { "style": "float" }] }
필드값
source녹화 파일 (.mov .mp4 .webm) 또는 스크린샷 (.png .jpg). 녹화 파일은 프레임으로 한 번 잘라서 재사용합니다 (--fresh는 다시 수행).
styleclose, raking (근접 실제 각도); float, angle, flyby, focus, push, reveal, rise, tiltshift
levelstill, whisper (기본값), gentle, lively, bold. 각각은 속도 예산이며, 움직임이 이에 맞게 축소됩니다. speed ≤ budget이면 차분함으로 간주합니다.
trim, loop, aspect{ "in": s, "out": s }; true는 끝을 시작 부분에 크로스페이드; 16:9 (기본값), 1:1, 9:16, 모든 W:H
beats하나의 클립에 여러 스타일: [{ "at": 0, "style": "float" }, { "at": 4, "style": "close" }]
look, lookAmountbright, crisp grain, glossy, sunlit, pixel macro, cool studio, film print, none; 0–1
background, shadowmist linen sky sage blush dusk 또는 #hex; none soft close float
focus{ "at": s, "u": 0–1, "v": 0–1, "size": 30 }. u/v를 생략하면 녹화 내용이 변경되는 곳에 초점을 맞춥니다.
overlays[{ "at": 1, "dur": 1.5, "keys": ["⌘", "K"] }] 또는 { "text": "…" }: 카메라 위에 표시되는 배지
ease, dir, travelsteady soft settle constant; left right; 0–2 (기본값 .8)

취향: 미묘함이 승리합니다 (whisper 또는 gentle). 클립당 하나의 아이디어(하나의 스타일, 또는 두세 개의 beats), 액션이 끝나는 지점에서 3~8초로 트림하세요.

Chrome, ffmpeg, node 18+ 및 numpy와 pillow를 포함하는 python3가 필요합니다. 여기서 npm i를 한 번 실행하세요. 포트 8790에서 자체 서비스를 제공합니다 (ANGLES_PORT를 설정하여 변경 가능).

관련 스킬