JohnHeibel/PDoomVideo
Source code for the Claude Opus 5.5 music video for I'm Upping My P(doom)
이 리포지토리의 목적
JohnHeibel/PDoomVideo 는 완전히 Claude Opus 5.5 대규모 언어 모델에 의해 생성된 음악 비디오의 소스 코드입니다. 이 비디오는 곡 I’m Upping My P(doom) 를 시각화한 것으로, 스크립트, 스토리보드, 애니메이션 코드, 심지어 비주얼 스타일까지 모두 모델이 생성했습니다. 인간이 설정한 유일한 제약은 특정 캐릭터 디자인(‘Clawd’ 마스코트) 사용과 각 가사에 대해 흥미로운 시각적 요소를 제공해야 한다는 점입니다.
작동 방식
- 프롬프트 기반 생성 – 저자는 Claude Opus 에 짧은 개요(‘Clawd’ 사용, 각 가사를 시각화)를 제시했습니다. 이후 Claude 는 다음과 같은 내용을 생성했습니다:
STORYBOARD.md– 촬영 단위 계획.ANIMATION_GUIDE.md– 실제로 애니메이션 코드를 작성할 하위 에이전트를 위한 코딩 규칙 및 스타일 지침.src/내의 JavaScript 파일들 – 비디오의 9개 장을 구현합니다.
- 렌더링 파이프라인 –
studio.html은 브라우저(또는 헤드리스 Chrome)에서 실행되며, p5.js 와 p5.brush 라이브러리를 사용해 각 프레임을 그립니다.render.mjs는 Chrome 을 제어해 프레임을 렌더링하고, ffmpeg 를 호출해 제공된 오디오(assets/pdoom.mp3)와 함께 프레임을 MP4 로 조합합니다.
- 이중 단계 생성 –
legacy/디렉터리에 있는 ‘레거시’ 버전은 초기 시도였으며, 현재 버전(리포지토리의 나머지 부분)은 개선된 두 번째 생성물입니다.
포함된 내용
| 경로 | 내용 |
|---|---|
src/ch/ |
비디오의 9개 장/장면을 나타내는 개별 JavaScript 파일들. |
src/ |
공유 자산: 캐릭터 정의(‘Clawd’ 및 게스트), 소품, 가사 텍스트, 각 요소가 나타나는 시점을 조율하는 타임라인. |
studio.html |
p5.js/p5.brush 를 로드하고 단일 프레임의 애니메이션 코드를 실행하는 최소한의 HTML 페이지. |
render.mjs |
헤드리스 Chrome 을 시작하고 프레임 범위를 렌더링하며, 필요 시 ffmpeg 로 MP4 로 인코딩하는 Node 스크립트. |
STORYBOARD.md |
Claude 가 작성한 모든 촬영, 타이밍, 비주얼 아이디어 설명. |
ANIMATION_GUIDE.md |
Claude 가 작성한 코딩 스타일 가이드로, 모델의 하위 에이전트가 애니메이션 스크립트를 작성할 때 따랐습니다. |
legacy/ |
비디오의 첫 번째 생성 버전(오래된 프롬프트와 코드). |
assets/pdoom.mp3 |
최종 비디오에서 사용된 오디오 트랙. |
비디오를 직접 생성하는 방법
- Node.js, Google Chrome, ffmpeg 를 설치합니다.
npm install을 실행하여 JavaScript 종속성 가져오기.- 프레임 렌더링 (예: 처음 156.6초 렌더링):
node render.mjs --frames=0:156.6 --workers=4 # out/frames 에 PNG 생성 - 프레임을 MP4 로 인코딩하고 사운드트랙 추가:
Chrome 이 기본 Windows 위치에 없으면node render.mjs --encode --out=out/pdoom.mp4--chrome=<path>를 조정하세요.
왜 중요한가
이 리포지토리는 대규모 언어 모델이 단순히 텍스트를 쓰는 것을 넘어서, 실행 가능한 코드를 생성해 시각 미디어를 생성하는 완전한 창작 파이프라인을 보여줍니다. 이는 AI 가 다음을 가능하게 함을 보여줍니다:
- 인간의 개입 없이 스토리보드 작성 및 아트 디렉션.
- 웹 기반 그래픽 라이브러리를 사용한 프로그래밍 기반 애니메이션.
- 동일한 도구를 가진 누구나 재현 가능한 자동 렌더링.
이 프로젝트는 자연어 프롬프트와 실시간 그래픽 프로그래밍을 연결하는 AI 지원 콘텐츠 제작의 구체적인 사례입니다.
모든 세부 정보는 리포지토리의 README 에서 직접 인용.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트