Communitygithub.com

avalner/living-paintings

生成画作活起来系列视频:镜头从房间逐渐移向装裱画作,画中场景随之生动呈现,并可选地拉回镜头。适用于「活起来的画作」系列及后续视频,不用于普通影片或独立图像编辑。

living-paintings 是什么?

该技能专为「活起来的画作」系列视频的视觉设计与合成而设计。它利用统一的 `comfy-film` 控制器(在 Codex、DeepSeek Harness 和 Claude Code 中均一致)驱动底层的 `film.py` 脚本,管理从生成、审查、恢复到最终交付的整个流程。技能提供了详细的工作流,指导开发者如何将房间运动与画作动画分离:首先设计包含正面画框的房间参考图,通过平面裁剪/缩放实现镜头逼近,然后从逼近终点在静止姿态下启动 I2VA 生成活起来的场景,确保画作内部细节的保真度。技能还重点处理「衔接点」的视觉平滑问题——通过测量每帧平均亮度和确定性溶解(前 12 帧加权融合)避免跳跃感。它支持 Codex、DeepSeek Harness 和 Claude Code 三种平台,并详细说明了各平台在进度展示、人工确认反馈、媒体链接提供等方面的差异,确保开发者无论在哪个环境中都能正确执行画作视频的制作与交付。

兼容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/avalner/comfy-film-kit/tree/HEAD/skills/living-paintings

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

活起来的画作

使用此技能进行画作视频的视觉设计与合成。使用已安装的 comfy-film 控制器进行生成、审查、恢复和最终交付。每个代理中的控制器都是相同的——Codex (~/.codex/skills/comfy-film/SKILL.md)、DeepSeek Harness (~/.dsh/skills/comfy-film-dsh/SKILL.md) 和 Claude Code (~/.claude/skills/comfy-film-dsh/SKILL.md)——它们都驱动同一个 $Tools/comfy-film/scripts/film.py;仅周边工具不同。根据需要阅读相关参考资料;不要重新创建其控制器。对于重要的 H3 提示,请使用 h3-prompt-writing。

平台差异(Codex → DeepSeek Harness / Claude Code)

Codex 习惯替代做法
使用浏览器面板查看进度页面以后台任务启动 progress.py --serve,并发布来自 .pipeline/progress-server.json 的已验证 URL
使用菜单工具接受/更改/拒绝使用 ask_user_question 并配以两个词的标签;链接和数字应放在其上方的消息中
图像在聊天中自动渲染显示对于图片/文档使用角括号中的路径链接;对于每个片段使用 http://127.0.0.1:8199/watch/...(服务器:comfy-film-dsh/scripts/serve-media.py)
起草委托给子代理在父代理中起草;DSH 没有为这些影片提供起草委托功能
最终处理comfy-film-dsh/scripts/finalize_delivery.py --input ... --no-upscale

发布、审查和剪辑规则保持不变;它们位于 comfy-film 技能中。

启动或恢复

  • 将项目保存在 $Paintings/<英文名称> 下。将原始艺术品、房间参考图、提示词、生成的片段、剪辑片段和最终导出文件都存储在该项目内。避免依赖剪贴板/临时文件或其他项目的输出文件夹。
  • 恢复时,运行 film status --project PROJECT 并读取当前的 brief.md。技术状态保存在 film.json 中;不要仅根据文件是否存在来推断审批状态。
  • 对于新画作,请在设计关键帧或生成视频前阅读 workflow.md。其中包含经过测试的配方以及「活着的咖啡馆画作」中的具体失败案例。
  • 重用用户提供的格式、时长、音效和镜头选择。前一部影片的 5 秒逼近 + 10 秒动画 + 5 秒后退仅是一个示例,并非每幅画作的自动选择。

将房间运动与画作动画分离

  1. 设计一个房间参考图,要求装裱画作正面朝前,周围有足够的空间用于预期的镜头逼近。保留原始高分辨率艺术品作为独立源文件。
  2. 当用户希望艺术品在逼近过程中保持静止时,将该原始艺术品合成到画面中,并确定性动画化一个均匀的平面裁剪/缩放。不要要求 H3 发明房间到街景的移动:在测试项目中,它改变了内部透视。不要缩放房间图像中微小的内嵌画作:它会变得模糊。
  3. 渲染逼近过程,使其最后一帧完全位于艺术品内部。检查原始艺术品是否具有足够像素以支持最紧的裁剪。高分辨率房间画布有助于合成精度,但不会增加艺术品细节;保留原始源像素直到最终输出采样。
  4. 从实际已接受的逼近终点开始活起来的场景。这刻意是从静止姿态开始的新动作:使用该静止帧进行 I2VA,而不是将房间/逼近作为运动引导传递。comfy-film 中的引导默认值仍然适用于延续已活起来的动作,而非此过渡。
  5. 使用简短肯定的提示词,描述固定的街道/景观视角以及画中场景内的少量微小运动。不要描述进入或穿越画作。有关成功的提示模式,请参见 workflow.md。
  6. 对于静止艺术品后退效果,冻结已接受的活场景的选定最后一帧,将其注册到高分辨率房间/艺术品合成中,并动画化反向的平面裁剪/缩放。不要回到原始艺术品中较早的角色姿态位置。检查边缘是否存在拼接接缝;仅在适当之处使用克制的羽化。

保持镜头运动和画面运动独立可控。当用户希望改变透视时,可以使用生成式镜头移动;平面艺术品方法适用于静止艺术品概念。

活场景的衔接点是视觉跳跃最容易发生的地方

H3 不会复制其条件静止帧:它会重新渲染其前几帧,这些帧显得更平、亮度低一些(约 -2 个亮度级),并且天空被重绘。与清晰的合成逼近帧相比,即使缩放和偏移完全匹配,这也像是在剪辑处出现了亮度阶梯。在「活着的郁金香气球」中,该剪辑点承载了影片最大的单帧亮度步进(-2.04),而衔接点则测量为 0 偏移和 1.000 缩放。

测量它,不要猜测:解码一次组装好的剪辑点,并打印每帧的平均亮度;衔接点不能是影片中最大的步进。当它确实为最大步进时,用确定性溶解替换该片段开头的 12 帧,该溶解从逼近的实际最后一帧开始,并收敛到片段自身的帧(权重 k/12)。无需重新定时,无需发明新内容,并且该片段显示的第一帧恰好是镜头停止的画面。配方和数值:请参见 workflow.md。

审查与收尾

  • 遵循 comfy-film 的帧、片段和最终审查关卡。已批准源的确定性拟合和端点提取继承其源审批;新的生成式房间或艺术品重绘需要其自己的审查。
  • 在展示动画候选版本之前,检查其完整时间线中是否存在前景手部、打开的面板/窗户、不必要的镜头运动、布局漂移、角色伪像和细节丢失。成功的解码本身并非视觉审批。当失败时,披露它并遵循 comfy-film 的授权重试规则。
  • 使用实际修剪后的端点进行衔接。H3 会四舍五入时长;仅移除满足所选计划所需的超标帧。保留已接受的源片段和版本。
  • 在提供音乐的情况下,尽可能保持视频不变;保存新的最终版本。根据提供的音轨设置音乐/环境声平衡和淡入淡出,而不是盲目重用第一部影片的混音。
  • 最终放大是可选的:除非特别要求,否则使用 finalize_delivery.py --no-upscale。生成 H.264 yuv420p/AAC 格式,带 faststart,并验证解码。提供可点击的本地 MP4 链接;在测试的聊天中,内联视频本身对用户不可见。
  • 将选定的几何参数、源版本、提示词、已接受的片段、修剪信息、混音和最终审查状态保存在 brief.md 中。仅在它改变未来决策时,在此记录新的可复用经验教训;将一次性坐标保留在项目中。

现有示例

$Paintings/Living Cafe Painting 是测试过的示例。其 brief.md 保留了决策和被拒绝的变体;clips/ 包含了已接受的片段;.pipeline/drafts/prompts/part2-v4.txt 是成功的活场景提示词。最终 v2 版本包含用户的音乐,并仍在等待明确的最终影片审批。这些事实并不审批未来的影片或授权发布。

相关技能