<inputs>
Ask me for: a voiceover or song with a spoken line (the audio file) and its transcript, 10-12 small objects that sum up my life, two silhouettes to light like a heat camera (a head in profile and a raised hand), and the 3 words I want to land hardest. If I skip any, use the defaults: vinyl, book, camera, cat, coin, game controller, cap, heart, money, plant, clapperboard, skateboard; free CC0 silhouettes from Openverse; action, intention, curiosity.
</inputs>
<direction>
A 20 second 4:3 film, 1440x1080 at 60fps, cut to the voice. Off-white paper, black, one red, one yellow, Geist for every word. Film grain on everything, a soft vignette, and a camera that never rests: a slow handheld float under everything plus a slow push inside every scene.
No scene cuts to the next: each handoff starts on the exact last frame of the scene before. The only hard cuts are the beat flips on the last word.
Every object is pixel art you draw yourself: a 16x16 grid per object, every cell a hand-placed colour, rendered as a 3D block (a darker extrusion down-right, a thin bevel on every cell) with a soft contact shadow.
The silhouettes are lit like a heat camera: the heat comes from how thick the body is at each point, so the nose, the hair and the fingertips run cooler, plus one hotspot and a slow moving noise, mapped through a black > red > orange > cream ramp. The edge stays razor sharp, with a soft glow outside it.
Motion rules: nothing pops in (eased glides of about 0.5s with a soft start), fast moves get real motion blur instead of ghost copies, and captions type with the voice behind a block cursor.
Banned: stock footage, AI video, 3D camera moves, particles, glitch.
</direction>
<structure>
Hang every scene on the transcript's word timings (measure them with faster-whisper word timestamps, one short chunk at a time):
1. The first word fills a yellow card. The card wipes off to the left and the question types underneath on two centred lines that glide to stay centred as they grow, the key word underlined in red as it's spoken.
2. The objects streak past in lanes above and below the words, a cyan four-point flare sweeps in, then the page burns away: black closes in from the edges onto the head, behind a hot red edge.
3. The head heats up on black while the answer types low on the left. A thin white orbit draws itself around the head, its far half passing behind it. On the last word, paper blooms out from inside the head with the objects in it, and the camera falls through: the head rushes past the lens until the paper is all we see.
4. The objects sit on a tilted ring seen in perspective (the front ones bigger and lower, drawn last), slowly turning, each one bobbing; the coin flips and lands with sparks.
5. On each of the 3 words, that object flies out of the ring to the left and grows, the page floods black from it, and the word types beside it (camera: a red shutter star; book: a red ribbon sweep; record: two white orbits and red notes). Then the flood drains back into the object as it flies home, and the camera dives closer into the ring. Put each hero object in the slot that is front-left when its word lands.
6. The ring pulls in a touch, bursts outward, every object turns to ink, and ink blots grow and swallow the page.
7. The hand rises into frame, hot, with the line split either side of it. The heart drops into its palm, then lifts to the centre at the size the next scene holds it.
8. The last word, one letter per beat, the background flipping paper / black / red, the heart holding its place across the cut, the centre object morphing pixel by pixel into the next one.
9. Thin brush strokes sweep through, the letters drift apart and float, then settle back into the word with the heart above it. The camera keeps pushing through the hold.
</structure>
<build>
1. One HTML canvas. Every frame is a pure function of time inside seek(t).
2. Bake each pixel sprite once to an offscreen canvas (the extrusion layers, then the face), then draw it scaled and rotated.
3. The heat: precompute each silhouette's base heat once (a distance transform of the mask, held at the edge value outside it so nothing dark bleeds in when it is upscaled). Every frame, add the hotspot and two octaves of value noise at quarter resolution, map it through a 256-step lookup, upscale it, and cut it with the full-resolution mask.
4. The fall through the head: draw the ring scene into an offscreen layer, mask it with the head scaled up about a point inside the skull, and grow that scale on a cubed curve until the head covers the frame. The ring inside zooms less than the head does, so it reads as depth.
5. The pixel morph: pair every cell of object A with a cell of object B and glide each one's position and colour, with a small random delay per cell.
6. Render with Playwright at 60fps with 8 motion-blur subframes, then lay the original audio back on with ffmpeg.
</build>
<gotchas>
A mask PNG with no alpha channel fills the whole box with heat, so put the silhouette in the alpha. A limb cut by the photo's border shows as a straight edge, so extend the mask past the frame. A handoff only reads as smooth when the last frame of one scene is the first frame of the next: draw the outgoing scene under the transition, and give scenes that show the same ring one shared zoom function. A flood that's still retreating when the next scene starts reads as a hard cut, so let it finish first. A fast ease-out flood reads as a jump; use a soft start.
</gotchas>
<start>
Ask me for the inputs, measure the word timings, then show me 8 stills before you render.
</start>
한국어 번역
<inputs>
나에게 물어보세요: 대사가 들어간 보이스오버나 노래(오디오 파일)와 그 대본, 내 인생을 요약하는 작은 오브젝트 10-12개, 열화상 카메라처럼 비출 실루엣 두 개(옆얼굴과 치켜든 손), 그리고 가장 강하게 남기고 싶은 단어 3개. 하나라도 빠뜨리면 기본값을 쓰세요: 바이닐, 책, 카메라, 고양이, 동전, 게임 컨트롤러, 모자, 하트, 돈, 식물, 클래퍼보드, 스케이트보드; Openverse의 무료 CC0 실루엣; 행동, 의도, 호기심.
</inputs>
<direction>
20초짜리 4:3 영화, 1440x1080, 60fps, 목소리에 맞춰 컷. 미색 종이, 검정, 빨강 하나, 노랑 하나, 모든 단어는 Geist. 모든 것에 필름 그레인, 부드러운 비네트, 그리고 결코 쉬지 않는 카메라: 모든 것 아래에 느린 핸드헬드 부유감, 그리고 모든 장면 안쪽으로 느린 푸시.
장면은 다음 장면으로 컷되지 않는다: 각 핸드오프는 직전 장면의 정확한 마지막 프레임에서 시작한다. 유일한 하드 컷은 마지막 단어의 비트 플립이다.
모든 오브젝트는 직접 그리는 픽셀 아트다: 오브젝트마다 16x16 그리드, 모든 셀은 손으로 배치한 색, 3D 블록으로 렌더링(오른쪽 아래로 더 어두운 돌출, 모든 셀에 얇은 베벨)하고 부드러운 접촉 그림자를 준다.
실루엣은 열화상 카메라처럼 조명한다: 열은 각 지점의 몸 두께에서 나오므로 코, 머리카락, 손끝은 더 차갑게 흐른다. 여기에 핫스팟 하나와 느리게 움직이는 노이즈를 더하고, 검정 > 빨강 > 주황 > 크림 램프를 통해 매핑한다. 가장자리는 면도날처럼 선명하게 유지하고, 그 바깥에는 부드러운 글로우를 둔다.
모션 규칙: 어떤 것도 튀어 들어오지 않는다(약 0.5초의 이징된 글라이드, 부드러운 시작), 빠른 움직임은 고스트 복사본 대신 실제 모션 블러를 얻는다, 자막은 목소리에 맞춰 타이핑되고 그 뒤에 블록 커서가 있다.
금지: 스톡 푸티지, AI 비디오, 3D 카메라 무브, 파티클, 글리치.
</direction>
<structure>
모든 장면을 대본의 단어 타이밍에 매단다(faster-whisper 단어 타임스탬프로 짧은 구간씩 측정):
1. 첫 단어가 노란 카드를 가득 채운다. 카드는 왼쪽으로 쓸려 사라지고, 질문이 그 아래 중앙 정렬된 두 줄로 타이핑되는데, 자라면서도 중앙을 유지하도록 미끄러지고, 말해지는 핵심 단어에는 빨간 밑줄이 그어진다.
2. 오브젝트들이 단어 위아래의 레인을 따라 빠르게 스쳐 지나가고, 청록색 네 갈래 플레어가 휩쓸고 들어온 뒤, 페이지가 타 없어진다: 검정이 가장자리에서 머리 쪽으로 닫혀 오고, 그 뒤에 뜨거운 빨간 가장자리가 있다.
3. 검정 위에서 머리가 뜨거워지는 동안 답변이 왼쪽 아래에 타이핑된다. 얇은 흰 궤도가 머리 주위에 스스로 그려지고, 먼 쪽 절반은 머리 뒤로 지나간다. 마지막 단어에서 종이가 머리 안쪽에서 오브젝트들을 품은 채 피어나고, 카메라가 그 안으로 떨어진다: 머리가 렌즈를 스쳐 지나가고 우리가 보는 것은 종이뿐이 된다.
4. 오브젝트들은 원근으로 본 기울어진 링 위에 놓이고(앞쪽 것은 더 크고 낮으며 나중에 그려진다), 천천히 돌며 각각 위아래로 흔들린다; 동전은 뒤집히며 불꽃과 함께 착지한다.
5. 단어 3개 각각에서 그 오브젝트가 링 밖으로 왼쪽으로 날아가 커지고, 페이지가 그것에서 시작해 검정으로 범람하며, 단어가 그 옆에 타이핑된다(카메라: 빨간 셔터 별; 책: 빨간 리본 스윕; 레코드: 두 개의 흰 궤도와 빨간 음표). 그다음 범람이 오브젝트가 제자리로 날아가면서 그 안으로 다시 빠져나가고, 카메라가 링 쪽으로 더 깊이 다이빙한다. 각 히어로 오브젝트를 그 단어가 착지하는 순간 앞-왼쪽에 오는 슬롯에 넣는다.
6. 링이 살짝 안으로 당겨졌다가 바깥으로 터지고, 모든 오브젝트가 잉크로 변하며, 잉크 얼룩이 자라나 페이지를 삼킨다.
7. 손이 뜨거운 상태로 프레임 안으로 올라오고, 대사는 그 양옆으로 갈라진다. 하트가 손바닥으로 떨어지고, 다음 장면이 유지하는 크기로 중앙까지 올라간다.
8. 마지막 단어, 비트마다 한 글자씩, 배경은 종이 / 검정 / 빨강으로 뒤집히고, 하트는 컷을 넘어 제자리를 지키며, 중앙 오브젝트는 픽셀 하나하나 다음 오브젝트로 변형된다.
9. 얇은 붓 획이 휩쓸고 지나가고, 글자들이 흩어져 떠다니다가, 하트가 위에 있는 단어로 다시 자리 잡는다. 카메라는 홀드 동안 계속 밀고 들어간다.
</structure>
<build>
1. HTML 캔버스 하나. 모든 프레임은 seek(t) 안에서 시간의 순수 함수다.
2. 각 픽셀 스프라이트를 오프스크린 캔버스에 한 번 베이크하고(돌출 레이어들, 그다음 면), 스케일과 회전을 적용해 그린다.
3. 열: 각 실루엣의 기본 열을 한 번 미리 계산한다(마스크의 거리 변환, 바깥에서는 가장자리 값으로 유지해 업스케일할 때 어두운 것이 스며들지 않게 한다). 매 프레임 핫스팟과 2옥타브 밸류 노이즈를 1/4 해상도로 더하고, 256단계 룩업으로 매핑하고, 업스케일한 뒤, 전체 해상도 마스크로 잘라낸다.
4. 머리를 통과하는 낙하: 링 장면을 오프스크린 레이어에 그리고, 두개골 안쪽 한 점을 기준으로 확대한 머리로 마스킹하며, 그 스케일을 세제곱 곡선으로 키워 머리가 프레임을 덮을 때까지 키운다. 안쪽의 링은 머리보다 덜 줌되어 깊이로 읽힌다.
5. 픽셀 모프: 오브젝트 A의 모든 셀을 오브젝트 B의 셀과 짝짓고 위치와 색을 각각 글라이드하며, 셀마다 작은 무작위 지연을 준다.
6. Playwright로 60fps, 모션 블러 서브프레임 8개로 렌더링한 뒤, ffmpeg로 원본 오디오를 다시 얹는다.
</build>
<gotchas>
알파 채널이 없는 마스크 PNG는 상자 전체를 열로 채우므로 실루엣을 알파에 넣어야 한다. 사진 테두리에 잘린 팔다리는 곧은 가장자리로 보이므로 마스크를 프레임 밖까지 늘려야 한다. 핸드오프는 한 장면의 마지막 프레임이 다음 장면의 첫 프레임일 때만 부드럽게 읽힌다: 나가는 장면을 전환 아래에 그리고, 같은 링을 보여주는 장면들에는 공유 줌 함수 하나를 준다. 다음 장면이 시작될 때 아직 빠져나오는 중인 범람은 하드 컷처럼 읽히므로 먼저 끝나게 한다. 빠른 이즈아웃 범람은 점프처럼 읽힌다; 부드러운 시작을 쓴다.
</gotchas>
<start>
나에게 입력을 물어보고, 단어 타이밍을 측정한 다음, 렌더링하기 전에 스틸 8장을 보여주세요.
</start>