Hadi Got Motion 是做什么的?
一个技能中的动态图形工作室:12种动画风格,各有其独特的运动方式,以及一个品味标准。 每一帧都基于真实素材构建:存档印刷品和照片、真实字体、真实数据、真实录音。代码负责剪辑、铰链、计时和灯光;代码从不绘制艺术画面。品味标准是Pemberton先生的错误,一部基于维多利亚时代版画的剪纸闹剧(references/case-pemberton.md)。
所有操作都通过一个命令 hgm 执行(此处位于 scripts/hgm;运行 hgm install 后将加入系统PATH)。每个 hgm 命令都会打印简短摘要并将详细信息写入文件,从而使令牌用于品味而非管道。在开始之前,请先阅读下面的令牌预算部分;它是工艺的一部分,而非事后想法。
工作顺序:工具检查 → 简报选择器 → 估算 → 设置 → 方向 → 语音 → 资产 → 动画 → 审查 → 交付。 在简报和设置完成之前,切勿开始构建。
恢复一部电影? 阅读项目的 HANDOFF.md 并运行项目内的 hgm state。不要重新阅读技能参考、旧电影或整个电影文件。
0–1 · 工具检查和简报选择器(一个回合内完成)
- 不要询问也不要解释。运行
bash <此技能文件夹>/scripts/hgm picker,针对已提及的内容添加--title "…" --duration 45 --concept "…"。用["elicitation"]调用一次可视化read_me,然后使用完全按照打印出的加载器字符串调用show_widget。 - 答案行返回格式为
Motion graphic details — Tools: … · Title: … · Duration seconds: … · Pacing: 1–5 · Concept: … · Motion style: … · …。只有概念是必需的:无标题则命名;无时长则30秒;无节奏则3;无地图外观则无地图。 - 如果有任何缺失且用户未选择“现在不”,则在后台启动
hgm install。 - 空widget、无widget工具、上传的脚本或跳过的表单:请参阅
references/setup.md。
2 · 时间估算(收到答案后立即进行)
hgm estimate --answers "<答案行,逐字复制>"。用一两句话给出其前两行,然后开始。无需等待确认。
“让Claude决定”:全程无问题端到端
当风格为“让Claude决定”(或“你来决定”、“给我惊喜”,或表单被跳过时):
- 不再提问。像一个导演一样决定一切:服务概念的风格、节奏(除非概念明显需要平静或狂热,否则为3)、地图(仅当故事穿越真实地点时)、剪纸闹剧或纸剧场中的行走、演员和语音、脚本,以及来自档案馆的图像(仅当已连接ChatGPT时)。
- 重新运行
hgm estimate --style <id> --duration <s> --pace <1-5> --script write|have|none,用两行告诉他们你做了什么选择、为什么,以及需要多长时间。 - 唯一不能跳过的步骤是ElevenLabs登录(如果需要语音且尚未连接任何内容)。如果无法完成,则制作一部纯文本和音乐的电影。
3 · 设置(在任何构建之前完成)
如果需要,运行 hgm install,然后 hgm new <slug> --style <id> --pace <1-5>(ID:cutout-farce、kinetic-editorial、kinetic-swiss、editorial-collage、period-print、paper-theatre、real-maps、stat-hits、footage-led、silent-film、title-sequence、object-diorama),然后运行 hgm doctor。ElevenLabs登录(hgm connect-voice)和ChatGPT图像(hgm connect-images)在 references/setup.md 中有精确措辞;请逐字遵循,切勿处理密钥。全部绿色 → 用一行输出 “设置完成”。
4 · 方向
hgm ref <style-id>一次性打印此风格所需的所有内容:其在styles.md中的章节、其运动语言、所有风格下的规则,以及taste.md(品味标准和反AI外观检查清单)。不要打开整个参考文件。- 事实需要研究,切勿猜测。 如果影片陈述事实(历史、科学、人物、数字、“如果……会怎样”),在编写任何脚本之前,子代理应将其研究到
FACTS.md中:hgm ref research。脚本仅基于已确认的事实;戏剧性来源于真实细节。 - 没有提供脚本: 在一条消息中提出3个概念(一个处于情境中的角色、一个1.5秒的钩子、一个升级到高潮)并自行去掉最安全的一个。在“让Claude决定”模式下,不要提出多个方案:选择最强的一个并直接推进。每30秒的单词数取决于节奏(
pacing.json中的words30:节奏1时为50,节奏3时为66,节奏5时为82)。以高潮台词结束。 - 规划场景。 在
BRIEF.md中编写场景计划:每行一个场景,包含其时间范围、地点及其变化方式。除非故事需要一个地点,否则世界会按照节奏的每个scenery秒变化。在同一背景下出现一个新道具不算变化(参见 taste.md 的“场景”部分)。 - 锁定世界 在
BRIEF.md中,包含五条规则:调色板(2-3种颜色加上每个节拍一种强调色)、印刷或线条、纹理(一种颗粒)、光照、字体(一种字族)。
5 · 语音:语音是时钟(如无旁白则跳过)
hgm voices --list→ 在audio/cast.json中选角 →audio/script.json(text包含带有 [音频标签] 的表演指示,caption是屏幕上的干净文本,gap_after为动作留出空间)。hgm voice-all打印一行摘要以及任何 ✗ 行(完整日志:review/voice.log)。使用skip_start、字幕或hgm voices <id>修复 ✗ 行。详情:hgm ref elevenlabs。
6 · 资产:优先在线资源,然后是ChatGPT
- 将机械部分委托给子代理(Agent工具,
model: "sonnet"):为其提供视觉列表、BRIEF世界规则以及命令hgm assets <key> "query" …(图像)和hgm assets --audio <key> "query"(声音)。它返回每个键的前3个候选,整合到一个合并表格和一个简短的文本列表中。你以小图查看该表格并选择;然后你(或子代理)运行hgm pick <key>:<n>:<name>下载并记录来源。来源:hgm ref sources。 - 只有档案馆无法提供的内容才使用ChatGPT(
hgm img inbox/<name>.png "<prompt>",或提示包):hgm ref imagegen。 - 地图:
hgm map-data …然后hgm map-reel:hgm ref maps。切勿绘制或猜测地理信息。 - 裁剪和装配 在
assets/build_assets.py中(hgm grid、hgm zoom、hgm cut、hgm explode;配方:hgm ref cutout-farce-recipe)。子代理可以进行坐标读取和裁剪;你只需检查单个explode表格。
7 · 动画
- 在
<slug>.mjs(脚手架)中构建。hgm api列出每个辅助函数及其签名:使用它而不是阅读旧电影或脚手架文件。保留时间线辅助函数;替换 DEMO 块。 - 一个状态对象,使用
at(sec, {key: [from, to]}, dur, ease)。每个动作都带有音效提示;字幕与单词相对应。at()按节奏(PC.k)缩放所有持续时间;在PC.shot和PC.scenery时进行剪切和场景变化。hgm voice-all应用节奏的叙述者速度和间隙。 - 按照该风格的运动方式运动(其帧率、哪些步骤以二帧或三帧移动、其缓和曲线、摄像机、转场)。脚手架已应用配置文件。切勿为每种风格都使用相同的平滑缓入缓出:这种千篇一律正是AI的痕迹。
- 行走属于剪纸闹剧(以及纸剧场的跳跃和滑行):
walk(style, t, {facing})、hgm ref walks、hgm walks用于参考卷。 - 仅一次编写电影文件,然后通过小范围编辑进行修改。切勿为了更改一个场景而重写整个文件。
- 需要避免的陷阱:在首次构建前查看
hgm ref traps。
8 · 审查:看起来像设计师(这是值得花费令牌的地方)
hgm stills 0,1,3,6,10,...(12-18个时间点,包括动作中)写入review/contact.jpg。查看一次并对照品味检查清单进行评判:在第0、1、3和10秒有钩子;每个节拍一个主角;没有覆盖面部的内容;没有只是“存在”的内容;场景是否按计划变化,或者连续几帧是否共享同一个背景?有人会猜这是AI做的吗?- 在单次操作中修复你发现的所有问题,然后仅对更改的时刻运行
hgm stills。仅放大到你正在评判的单个事物。
9 · 构建和交付
hgm build(渲染、混音、合成;在后台运行),然后hgm frames 0.2,<mid>,<end>并查看最终MP4的帧。hgm cover <t>制作一个纯色、无文字的封面。- 发送MP4和封面(使用 SendUserFile)。说明时长、与简报相比的任何更改,以及你无法验证的内容(Claude无法收听音频:混音已通过电平和时间码检查)。
- 保持
CREDITS.md完整。返回的注释应是精准的:精确应用这些更改,重新检查这些帧,重新构建。
令牌预算
根据前三部电影(Pemberton 338 轮、Hyderabad 116 轮、Wright brothers 72 轮)的测量:每一轮都会重新读取整个对话,因此成本 = 轮数 × 上下文大小。聊天在开始任何操作前大约有90K令牌。一张截图、一个表格或一次 cat 操作会保留在上下文中,并在后续每一轮中重新计算。因此:
- 更少的轮数。 将独立命令批量处理到一次工具调用中(
hgm stills … && hgm frames …)。规划一个修复列表,然后在一次操作中应用。 - 更小的输出。 使用
hgm命令,而不是在参考文件、旧电影或日志上使用cat、ls或sed。hgm ref、hgm api和hgm state仅打印所需内容。切勿打印JSON、完整的语音列表两次或电影文件。将较长的工具输出重定向到文件并使用tail -3查看。 - 小图像,少量图像。 每轮审查一张联系表;220像素的帧足以进行判断。切勿读取原始帧、原始下载文件或全尺寸帧;而是放大到裁剪区域。
- 子代理处理机械工作(
model: "sonnet"):资产搜索和下载、裁剪和装配检查、渲染、来源记录。它们返回一个短列表和一个表格。将主要模型用于概念、脚本、风格、选择以及设计师的审查。 - 在上下文变得沉重之前交接。 当上下文达到约200K令牌(或窗口的40%,以先到者为准;大约50次工具调用)时,完成当前步骤,运行
hgm handoff,填写其“下一步”行,并告知用户:“在新聊天中继续:continue <slug>。” 新聊天从HANDOFF.md和hgm state恢复,大约消耗5K令牌。
| 阶段 | 主聊天轮数 | 可能增加的上下文 |
|---|---|---|
| 选择器 + 估算 | ≤ 4 | ≤ 8K(可视化指南占大部分) |
| 设置 | ≤ 3 | ≤ 2K |
| 研究(子代理编写FACTS.md) | ≤ 2 | ≤ 3K(你读取FACTS.md,绝不读取搜索结果) |
方向(+ hgm ref) | ≤ 6 | ≤ 12K |
| 语音 | ≤ 4 | ≤ 4K |
| 资产(子代理执行搜索) | ≤ 6 | ≤ 10K(一个合并表格 + 一个展开表格) |
| 动画(电影编写一次) | ≤ 8 | ≤ 25K(你编写的电影文件) |
| 审查(≤ 4张联系表) | ≤ 12 | ≤ 12K |
| 构建 + 交付 | ≤ 4 | ≤ 4K |
| 整部电影 | ≤ 50 | 结束于 ~180K 以下 |
在概念、风格选择和设计师审查上自由花费。它们成就电影;预算来自管道,绝不来自外观。
不可妥协的事项
- 语音: 仅限ElevenLabs。
- 图像: 优先使用档案馆资源;需要时使用ChatGPT图像。绝不使用Higgsfield。无AI视频。绝不通过代码绘制角色、插图或徽章。
- 引擎: canvas + anime.js + FFmpeg。仅用于真正的3D时使用three.js;仅当物理光照是核心创意时使用Blender。
- 来源记录和密钥: 记录每个来源。绝不在请求中包含用户的电子邮件或个人详细信息。绝不打印密钥。