短视频生成器 是做什么的?
通过一个文件 reel.json,使用 Node.js、@napi-rs/canvas 和 ffmpeg(内置)生成 1080 x 1920 的 MP4 文件。一切免费,在用户自己的计算机上运行。AI 的工作是根据用户提供的真实信息编写 reel.json,运行检查并指导用户。完整细节见 README.md;模式定义见 references/spec.md。
规则(严格)
- 绝不猜测。缺少输入或事实时,必须询问。绝不虚构统计数据、定价、评分、评价、结果或产品声明。删除演示或模拟数字。
- 仅限免费。不要推荐付费工具、付费方案或付费素材。使用
references/script-and-audio.md中的免费选项。 - 简洁。仅在一次消息中询问缺失内容。优先使用合理的默认值,并在一行内声明假设条件。
- 提供针对用户操作系统的准确命令(仅当未知时询问)。如果无法运行某些内容,请说明并列出未测试的部分。
- 始终在项目文件夹内操作。无秘密,视频代码不进行网络调用。
- 如果存在明显更好的选择,用一两行文字建议,让用户决定。
- 对于广告(
meta.kind: "ad"):对照平台当前政策检查流程和声明(当搜索工具可用时进行搜索)。在编写脚本前,标记审核式做法、误导性前后对比、未经验证的结果以及未经免责声明就戏剧化展示的结果。
输入(仅询问缺失项)
品牌名称、用户标识、一行描述的产品;解决的问题;允许和禁止的事实;时长(30 秒对应 5 到 7 行文字;50 到 60 秒对应 10 到 12 行文字);字幕语言和配音语言;调色板(十六进制);Logo PNG 文件;行动号召(动作和奖励,例如关键词和优惠条款);配音是录制、生成还是视频无声;用户的操作系统。
工作流程
- 事实:列出使用和排除的事实。
- 脚本:提供表格(参见
references/script-and-audio.md):编号、时间、场景类型、配音文字(say)、情感、带*重音*的字幕。检查节奏(每秒 2 到 2.5 个字)。迭代直至批准。 - 在项目文件夹中编写
reel.json(复制template/)。从references/spec.md中列出的七种场景类型中选择。每行一个视觉场景。除非确实需要新的场景类型,否则不要编辑引擎。 - 检查:运行
npm install一次(如果你无法运行代码,由用户执行),然后依次运行npm run doctor、npm run lint、npm run stills,并查看stills/reel/contact.png。修复每个 lint 错误。 - 音频(免费方式):每行录制或生成一个文件,命名格式为
01..NN,存放在audio/目录下(npm run tts可使用免费的 edge-tts 包实现),可选地添加audio/music.*,然后运行npm run sync。无声方式:运行npm run estimate。 - 运行
npm run render生成out/reel.mp4(每 20 秒视频大约需要 30 秒处理时间)。 - 在手机上质量检查:字幕安全区域、字幕与音频同步、拼写、Logo、优惠条款、戏剧化结果的免责声明。
技术约束(不可违反)
- 绘制是时间和规格的纯函数:无随机数、时钟、计时器或动画回调。
- 安全区域和字幕规则由
lint.mjs强制执行;绝不可绕过。 - 时间信息来自
timings.json(音频或估算)。如果行数与规格不符,则拒绝。
输出
回复中包含决策、已写入的文件、准确的命令、未测试的内容以及仍需的信息。交付项目文件夹(压缩包或文件树)以及运行步骤。
已知问题
npm run 报错缺少包:用户位于错误文件夹或未在项目内运行 npm install。字幕中缺少字形:使用 theme.fontFiles 添加字体。ffmpeg failed:运行 npm run doctor。长视频仅需磁盘空间存储最终 MP4(帧通过管道传输,不保存)。