SuperAPI AI 工具集

canvas-film

设计与创作

查看项目

更新于 10-17 08:15

技能介绍

用途 canvas-film 用于制作 30 至 120 秒、带旁白的动画短片,输出两种形式:一个自包含的 HTML canvas 页面,以及渲染好的 MP4。它围绕一个前提设计:创作者听不到成片、静态图也不等于影片,因此用语音转文字充当“耳朵”,用静帧和联系表充当“眼睛”,用单词时间戳充当“时间感”。

两条核心规则

  1. 先音频后画面。在开始动画前锁定配音时间线;每个视觉节拍都锚定到某个单词(如 word("c02", "bail")),而不是手写数字。这样重录某句台词时,画面节拍会随之移动。
  2. 单一纯函数 renderAt(t)。页面仅凭时间 t 就能画出任意时刻;实时播放传入 audio.currentTime,导出时按 t = frame / fps 步进。不读取系统时钟,因此审看的内容就是渲染出的内容。

使用方式 所有步骤都通过 scripts/film.py 执行(命令形式为 uv run scripts/film.py <cmd> <项目目录>),需要 ffmpeg,音频相关步骤需要 ELEVENLABS_API_KEY。项目的 film.json 保存配音、台词、音效、音乐和混音提示表;src/scenes.js 保存画面。

  • 简报与剧本:按每秒约 1.8 个口语词估算时长。台词要写得像真人会说的话,尽量引用来源(聊天、笔记)。
  • 脚手架:执行 film.py init <dir> --style collage 复制引擎、样式、示例场景和示例 JSON 到项目,再用 film.py fonts 拉取样式文件指定的字体族。
  • 配音:在 film.json 中逐行分配声音,执行 film.py tts <dir>,它会打印每行转写文本,需逐条对照剧本核对。
  • 时间线:film.py timeline <dir> 会裁剪空白、缩短指定停顿(cuts)、应用语速、重叠对话(负 gap),并写出 build/timeline.json(单词时间与各说话者口型包络)。反复调整台词、cuts 和 gap,直到结尾时长符合简报。
  • 画面:按 references/characters.md 制作角色与道具,按 references/engine.md 和样式参考在 src/scenes.js 中编写场景。
  • 音乐与音效:依次执行 film.py music、film.py sfx、film.py mix。
  • 审看:film.py build,再用 film.py snap <dir> <t...> 在每处节拍截帧检查并修正,循环往复;然后 film.py render,用 film.py sheet 生成 MP4 联系表,并对分享文件执行 film.py stt 配合 --find 检索关键词。

参考文档按主题划分:音频细节(剧本长度、选角、v3 标签、停顿、对话重叠、哔声、音乐提示、音效、混音电平、音频验证)见 references/audio.md;照片转一致角色、表情、口型图、道具与背景见 references/characters.md;场景编写(场景契约、锚定、转场、定格、canvas 陷阱、表演)见 references/engine.md;静帧、联系表、渲染、分享编码与最终检查见 references/review.md;拼贴风格(提示词、字形、印章、马克笔补写、纸张、漫画手法)见 references/style-collage.md。

适用场景 适合需要完整可控的插画风动画短片、且愿意手工编写 canvas 的创作者。与从 HTML/React 组合构建视频的 HyperFrames、Remotion 不同,本技能手写 canvas 以完全掌控插画外观;browser-video 则录制真实页面。图像生成取决于环境能力(资料提到 gpt-image-2 路径可行),ElevenLabs 相关技能深入覆盖其 API。

限制 资料未提供定价、平台支持范围或效果保证;音频步骤依赖 ElevenLabs API 密钥与 ffmpeg。新增样式需成对编写 style-<name>.js 和 style-<name>.md,并基于已发布影片而非想象来写。