<inputs>
Ask me for: a brand name, its logo (SVG or high-res PNG), one line of what it becomes in 5 years (not today's features), one coined word the film should teach (e.g. "signal"), a public-domain archival clip of the old way of doing it (http://archive.org Prelinger), an archived web page from ~2000 where people asked for things (Wayback Machine), a royalty-free song ~100-120 BPM with a real drop (Mixkit, free for commercial use), and a free ElevenLabs key for the narrator (premade voices only).
</inputs>
<direction>
An a16z x Content Rewards brand film, ~55s. It sells one feeling and one idea, never features. Real archival and real web pages, never stock footage, never product screens, never fake UI. One hero object: a 3D button with the logo embossed into it, the ONLY saturated colour in the film. Everything else white, silver, cream and archival black. Small white captions that light up word by word on the narrator's timestamps. Film texture: fresh grain every frame, halation on bright edges, soft vignette, warm lifted blacks. The brand appears at the end, never before.
Banned: stock footage, dashboards, chat UIs, feature tours, cards without real profile pictures, wobbly "worm" graph lines, random glitches, any hold longer than 1.5s, purple, rainbow gradients, orange on anything but the button.
</direction>
<structure>
Cold open (0-8s): the archival clip plays on a glowing old CRT TV with its real dialogue, captions word by word.
The past (8-17s): push into the real 2000 web page, a cursor lands on one real "wanted" post, old pages strobe one per frame, a counter ticks EVERY frame up to today's scale. Narrator: "People have always asked the internet for what they need." / "Today, there are five hundred million posts a day."
Bridge (17-30s): a galaxy of real old asks. One ask snaps to a white outline with a chip of the coined word ("We call that a signal."). Archival of people doing it by hand on the TV. Cut on each word: "Door by door. Call by call. Scroll by scroll." The narrator never stops talking between acts.
Button (30s): the button rises out of black, rim light first, colourless. "[Brand] finds the signals." A flat grey line: "this is how you find customers by hand". Hard cut to a button macro, the colour comes alive, the music drop lands on this exact frame. "and this... is with [Brand]": a steep lit curve, counters changing every frame, a glowing sine with a comet head the camera chases, then platform strikes (X, Reddit, LinkedIn, YouTube, Instagram, TikTok) each with its own counter, then the galaxy again with glowing platform logos: "Every signal on the internet." Hyperspace.
End: the tagline word by word, then "[Brand] is live.", ONE cream frame on the kick, then logo + URL in silence.
</structure>
<build>
1. One HTML file, 1920x1080. Everything is computed from time inside seek(t): no CSS transitions, no timers, no Math.random (seeded hash), no state between frames.
2. Button: three.js MeshPhysicalMaterial (clearcoat 1, roughness ~0.4), ACES filmic, cool + warm rim spots, room env map. Emboss the real logo by displacing a dense disc with a blurred mask of the logo, folded into the rim so corners don't show. Brushed-metal base.
3. Counters: linear on the film's global clock, so they keep running through cutaways. Tabular numerals, fixed unit label.
4. Captions: <=7 words, one idea per shot, hand-placed line breaks, one text layer on screen at a time. Grey to white over 0.2s on the word timestamps (ElevenLabs /with-timestamps).
5. Glitch = 1-2 frames, only on a real cut, always with a click. Readable things stay on screen >= 8 clean frames.
6. Render with Playwright per frame (Chromium with --use-angle=swiftshader so WebGL renders headless), finish in numpy: fresh grain per frame, halation, vignette ~0.65x at the corners, 1px chroma fringe with EDGE-CLAMPED shifts. Pipe PNGs into ffmpeg, h264, 24fps.
7. Mix: narrator 10-15dB over the music, duck -18dB while speaking, hits on the exact action frame, -14 LUFS.
</build>
<gotchas>
np.roll wraps pixels and draws coloured lines on the frame edges, so clamp instead. A 10-pattern grain bank loops visibly, generate fresh grain every frame. Measure text only after fonts load or the widths are wrong. Headless Chromium with --disable-gpu renders WebGL blank. Counters that step every 3 frames look fake. If the narrator goes quiet between acts the film feels broken, so write a bridge line for every act change.
</gotchas>
<start>
Ask me for the inputs, then show me the script with timings and 6 stills (cold open, past, bridge, button reveal, macro on the drop, end card) before you render the full film. After every render, send me one 2fps contact sheet and fix what I call trash.
</start>55 秒品牌片模板:CRT 档案影像、压印 logo 的 3D 按钮、ElevenLabs 旁白,逐帧渲染加胶片颗粒。 英文标题:55-second brand film template with archival footage 中文提示词译文: <inputs> 向我索取:品牌名称、它的 logo(SVG 或高分辨率 PNG)、一句话说明它 5 年后会变成什么(不是今天的功能)、影片要教给观众的一个自造词(例如“signal”)、一段展示旧做法的公有领域档案影像(http://archive.org Prelinger)、一个约 2000 年人们在网上求助的存档网页(Wayback Machine)、一首约 100-120 BPM、有真正 drop 的免版税歌曲(Mixkit,可免费商用),以及一个用于旁白的免费 ElevenLabs key(只用预设声音)。 </inputs> <direction> 一支 a16z x Content Rewards 风格的品牌片,约 55s。它只卖一种感觉和一个想法,绝不卖功能。用真实的档案影像和真实网页,绝不用素材库视频、绝不用产品界面、绝不用假 UI。只有一个主角物件:一个压印着 logo 的 3D 按钮,它是全片唯一的饱和色。其他一切都是白色、银色、奶油色和档案黑。小号白色字幕按旁白的时间戳逐词点亮。胶片质感:每帧都是新的颗粒、亮边有光晕(halation)、柔和暗角、偏暖且提亮的黑位。品牌只在结尾出现,之前绝不露面。 禁用:素材库视频、仪表盘、聊天界面、功能导览、没有真实头像的卡片、摇摆的“蠕虫”曲线、随机故障效果、任何超过 1.5s 的停留、紫色、彩虹渐变、按钮以外任何地方的橙色。 </direction> <structure> 冷开场(0-8s):档案影像在一台发光的老式 CRT 电视上播放,带原始对白,字幕逐词出现。 过去(8-17s):推进到真实的 2000 年网页,光标落在一条真实的“求购”帖上,旧网页每帧闪过一页,一个计数器每一帧都在跳,一直涨到今天的量级。旁白:“People have always asked the internet for what they need.” / “Today, there are five hundred million posts a day.” 过渡(17-30s):一片由真实旧求助帖组成的星系。其中一条吸附成白色轮廓,带一个写着自造词的标签(“We call that a signal.”)。电视上播放人们手工做这件事的档案影像。每个词一切:“Door by door. Call by call. Scroll by scroll.”幕与幕之间旁白从不停顿。 按钮(30s):按钮从黑暗中升起,先亮轮廓光,无色。“[Brand] finds the signals.”一条平直的灰线:“this is how you find customers by hand”。硬切到按钮微距,颜色活过来,音乐的 drop 正好落在这一帧。“and this... is with [Brand]”:一条陡峭发光的曲线,计数器每帧变化,一条带彗星头的发光正弦波,镜头追着它跑,然后各平台依次重击登场(X、Reddit、LinkedIn、YouTube、Instagram、TikTok),各带自己的计数器,然后再次回到星系,带发光的平台 logo:“Every signal on the internet.”进入超空间。 结尾:标语逐词出现,然后是“[Brand] is live.”,踩着底鼓闪一帧奶油色,然后在静默中出现 logo + URL。 </structure> <build> 1. 一个 HTML 文件,1920x1080。一切都在 seek(t) 里由时间计算:不用 CSS transition、不用定时器、不用 Math.random(用带种子的哈希)、帧与帧之间不保留状态。 2. 按钮:three.js MeshPhysicalMaterial(clearcoat 1,roughness ~0.4),ACES filmic,冷暖两盏轮廓聚光灯,室内环境贴图。用 logo 的模糊遮罩去置换一个高密度圆盘,把真实 logo 压印上去,并折进边缘,避免露出棱角。拉丝金属底座。 3. 计数器:按全片的全局时钟线性增长,这样切到别的镜头时也在继续跑。等宽数字,固定的单位标签。 4. 字幕:<=7 个词,每个镜头一个意思,手动断行,屏幕上同一时间只有一层文字。按单词时间戳在 0.2s 内由灰变白(ElevenLabs /with-timestamps)。 5. 故障效果 = 1-2 帧,只用在真实的剪切点上,而且总是配一声咔哒。可读的内容至少停留 >= 8 个干净帧。 6. 用 Playwright 逐帧渲染(Chromium 加 --use-angle=swiftshader,让 WebGL 能无头渲染),在 numpy 里做后期:每帧新颗粒、光晕、四角约 0.65x 的暗角、1px 色散边,位移要做边缘钳制(EDGE-CLAMPED)。把 PNG 管道输入 ffmpeg,h264,24fps。 7. 混音:旁白比音乐高 10-15dB,说话时音乐压低 -18dB,音效点正好落在动作帧上,-14 LUFS。 </build> <gotchas> np.roll 会让像素回绕,在画面边缘画出彩色线条,所以要用钳制。10 张循环使用的颗粒图库会被看出重复,每帧都要生成新颗粒。文字宽度要等字体加载完再测量,否则会错。无头 Chromium 加 --disable-gpu 时 WebGL 会渲染成空白。每 3 帧才跳一次的计数器看起来很假。如果旁白在幕与幕之间沉默,影片会显得断掉了,所以每次换幕都要写一句过渡台词。 </gotchas> <start> 先向我索取输入素材,然后给我看带时间码的脚本和 6 张静帧(冷开场、过去、过渡、按钮揭晓、drop 上的微距、结尾卡),再渲染完整影片。每次渲染后,发给我一张 2fps 的联系表,我说哪里是垃圾就改哪里。 </start> 使用工具:threejs, playwright, ffmpeg, python, elevenlabs 需要输入:brand, logo, footage, music 原始发布:https://x.com/notdwd/status/2103995183255998633 来源许可/权利说明:CC BY 4.0(仓库采用 CC BY 4.0;社区 Prompt 与视频权利归原作者并受原帖条款约束,保留完整归属)
继续探索相似创作思路