产品动态视频(60秒)
0. 输入(仅询问缺少的内容,一次消息,最多3个问题)
- TOPIC: 产品/想法(必需)
- BRAND: URL 或 md 文件(可选)-> 提取名称、标语、3项优势、颜色、语气。最多一次 web_fetch。
- STYLE REF: 可选;在一行中推断3个特征(节奏、类型、调色板)。不进行深度调研。
如果用户留下了
{占位符}未填写,则将其视为空,在一行中说明假设,然后构建。
1. 计划(思考不超过15行,无长篇大论)
调色板(背景色、墨色、1种强调色、1种辅助色),1个展示字体 + 1个正文字体(系统/Google 字体,带后备),8个场景。
默认60秒结构(秒):
- 0-5 钩子:动态文字,一个大胆的主张
- 5-13 问题:毛刺/张力,计数器
- 13-21 揭示:标志/产品变形进入
- 21-31 特性1-3:UI卡片,图标弹出,交错排列
- 31-41 证明:动画图表/数字计数递增
- 41-49 流程/工作原理:线描路径 + 节点
- 49-56 蒙太奇:快速剪辑,0.4秒节拍,滚动字幕
- 56-60 行动号召:标志,标语,URL,脉冲
2. 构建(一个 .html 文件,原生 JS,零依赖,<=18KB)
架构,保持小巧:
- 1920x1080 画布通过 CSS 变换缩放以适配;所有颜色作为 CSS 变量。
- 主时间线:
scenes=[{t0,t1,build(stage), update(p)}],其中p在 0..1 之间,来自单个 rAF 时钟t=(now-start)/1000。不要使用 setTimeout 链。 - 辅助函数(一次编写,重复使用):
ease(p)(cubic/expo/back)、lerp、clamp、stagger(i,n,p)、type(el,text,p)。 - 动态词汇表(使用 >=6 种):动态文字、蒙版揭示、stroke-dashoffset 线条绘制、计数递增、视差层、交错卡片、形状变形(通过 lerped d 实现 SVG 路径)、毛刺(clip-path 切片)、滚动字幕、镜头推进(对舞台进行 scale+translate)、场景间屏幕擦除。
- 规则:场景过渡重叠 0.4 秒;每个元素都使用缓动(从不线性);最多同时2个焦点;关键文字保持 >=1.2 秒;仅对 transform/opacity 做动画。
- 控制:播放/暂停(空格)、进度条、重新开始、
?t=秒数跳转参数、window.seek(t)用于导出。 - 尊重
prefers-reduced-motion,不自动播放闪烁的毛刺场景。 - 可选的音频:WebAudio 合成场景切换提示音(默认关闭,静音切换)。绝不使用外部音频。
3. 交付
- 通过 Artifact 工具(发布)发布为页面;如果没有 Artifact 工具,则在 /mnt/user-data/outputs 中创建文件 + 呈现文件。
- 回复:2句话(它是什么,假设)。不要逐场景叙述。
4. MP4 导出(仅当用户要求时)
Playwright 无头模式:对于 f 在 0..1799,调用 seek(f/30),截图 1920x1080 -> 帧;ffmpeg -framerate 30 -i f_%04d.png -c:v libx264 -pix_fmt yuv420p out.mp4。如果缺少 ffmpeg/playwright,说明情况并将这个方案告知用户,不要重试。
5. Token 纪律
- 不要阅读其他技能,不要预览渲染,除非被要求,不要进行润色。
- 在场景间重用相同的卡片/文字布局;变化运动,而不是标记。
- 在 一次 工具调用中编写文件。通过小的 str_replace 编辑进行修改,绝不重写。
- 研究限制为最多1次提取 + 1次搜索。