Community图像github.com

gallowforge/forge-deliver

FilmForge 交付模块:对成品影片或图书的每个交付物(4K 母版、1080p 上传版、手机版、封面图、印刷版 PDF、幕后花絮、本地化版本)进行精确的 ffmpeg 编码和检查,验证流、响度和音画同步,构建带有 SHA-256 完整性证明的制作档案,并逐字节验证备份副本。

forge-deliver 是什么?

该技能为 FilmForge 流程的最终交付步骤,用于将成品影片或图书的所有版本以标准化、可验证的方式生成、检查并归档。它首先从交付物矩阵模板出发,指导用户按预定义规格使用 ffmpeg 编码每个版本(如 4K 母版、1080p 上传版、手机版),并支持图书、印刷 PDF、互动网页书及本地化版。随后,技能内置的检查步骤会通过 ffprobe 和 ffmpeg 过滤器对每个文件进行流分析、响度测量(EBU R128)、音画同步偏移检测(基于场景变化和音频起点),并要求用户亲眼在目标屏幕上看一遍。最后,`archive.py` 脚本将整个制作文件夹中所有文件生成 SHA-256 完整性清单(MANIFEST.sha256),并通过 `verify` 和 `compare` 命令确保档案和备份的完整性与一致性。该技能支持在命令行环境中使用,主要依赖 ffmpeg、ffprobe 和 Python 脚本。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gallowforge/filmforge/tree/HEAD/skills/forge-deliver

Installed? Explore more 图像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜欢的 AI 中提问

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

文档

FilmForge Deliver

一部影片只有当每个版本都能在指定平台上播放、测量正确,并且整个制作内容都放在一个文件夹里、附有完整的证明时,才算完成。此技能会根据交付物矩阵生成所有交付物,逐一检查,并最终使用 archive.py 关闭制作。

路径:本技能中的文件夹 scripts/、templates/ 和 config/ 位于技能的基本目录下(加载时显示),由 ./install.sh 放置其中。如果从仓库克隆工作,它们位于仓库根目录下的 tools/、templates/ 和 config/ 中。

步骤 1. 交付物矩阵(templates/delivery-checklist.md)

将其复制到制作文件夹中,划掉影片没有的交付物。每个影片交付物都来自一个母版,该母版从你的编辑器或合成器中以 3840x2160 分辨率导出,使用与预览相同的镜头列表、画作和混音,然后使用 ffmpeg 编码:

交付物来源设置
4K 母版编辑器的 4K 导出3840x2160,按镜头列表的帧率;通过 VAAPI 的 HEVC 编码(hevc_vaapi),固定 QP 18,标记为 BT.709,然后使用 -c copy -tag:v hvc1 重新封装以使 Apple 设备接受;无 VAAPI 时则使用 H.264(libx264,预设 medium,CRF 18,yuv420p);AAC 320k;+faststart
1080p 上传版母版Lanczos 缩放至 1920x1080,libx264 预设 slow,CRF 16,High profile,yuv420p;混音通过两遍线性 loudnorm 归一化至 -14 LUFS 和 -1.5 dBTP;AAC 320k;+faststart
手机版上传版Lanczos 缩放至 1280x720,轻度降噪(hqdn3d=1.2:1.2:3:3),libx264 码率 900k(最大码率 1400k,缓冲 2800k),AAC 128k;足够小,可通过聊天发送
封面母版3 或 4 个最强帧,4K 分辨率,PNG 格式,外加 JPG 格式用于上传;在手机尺寸下可读

精确的 ffmpeg 命令:references/deliverables.md。将它们放入一个脚本中,这样任何更改都会重建每个交付物。

当影片包含书籍和额外内容时:图片书(4K 和 1080p 视频配乐)、印刷版 PDF、可随音乐翻页的互动网页书、本地化版本(每种语言对应独立的 4K、1080p 和手机视频,每一行都由懂该语言的人重新设定和检查,绝不允许未经审查的机器翻译),以及幕后花絮(PDF 和手机版 PDF)。详细信息:references/deliverables.md。

步骤 2. 检查每个交付物

测量文件本身,而不是时间线:

  • 流: 编解码器、尺寸、像素格式、帧率、编解码器标记(HEVC 母版为 hvc1)、音频采样率和声道数、长度、大小和比特率(ffprobe)。
  • 响度: 整合响度、范围和真实峰值(EBU R128,使用 ffmpeg 的 ebur128 过滤器)。母版保持混音原始状态;上传版和手机版必须约为 -14 LUFS。
  • 故事节拍处的同步: 对于每个节拍,半秒内最大的画面变化和最强的声音起始,以及它们之间的毫秒差。画面变化来自 ffmpeg 的场景评分,声音起始来自在影片自身音频上运行的 beatmap.py。目标:节拍上若有剪辑,则控制在 1 帧(24 fps 下为 42 毫秒)或更少。若节拍上无剪辑,则报告一个间隙;需对照镜头列表阅读。
  • 结尾: 第一帧和最后一帧(有意为黑屏或标题)。
  • 联系表: 成品影片每 2 秒一帧的联系表,从头到尾查看。
  • 亲眼观看一遍: 在目标屏幕上从开始到结束观看一遍并听声音,然后在签署前完成。

每个检查的命令:references/deliverables.md(Checks)。

对于 PDF:在至少两个阅读器中打开,检查每个页面展开,确保字体已嵌入,图像达到打印分辨率。

步骤 3. 档案及其证明

所有用于制作影片的内容都放入一个制作文件夹中:production.yaml、故事文件、提示词、每幅画作及版本、工作表、乐谱及其测量结果、代码、混音、交付物、经验教训。

python3 scripts/archive.py build <film> --require deliverables.txt \
        --require-shotlist <film>/shotlist.yaml --paintings <film>/art/film \
        --exclude "code/.venv/=rebuilt from requirements.txt"
python3 scripts/archive.py verify <film>

build 命令将每个文件哈希处理,生成 <film>/MANIFEST.sha256(纯 sha256sum -c 格式,因此证明不会受限于工具),并写入 manifest.json:文件数量、字节数、按类型分类的文件、故意排除项及原因(缓存、虚拟环境、任何 4k/ 升频文件夹)、必需的交付物和缺失项、没有画作的镜头以及清单本身的摘要。仅当每个必需模式都匹配且每个有画作的镜头都包含其画作时,才报告 COMPLETE。verify 命令稍后重新哈希所有文件,并在任何文件丢失或更改时(以及编辑过清单时)报告失败。

同样的工具也可用于证明较小的包。例如,The Lantern Moth 的 archive-required.txt 列出了其前期制作包在开始画作制作之前必须包含的内容;在示例文件夹上使用 --require archive-required.txt 运行 archive.py build 会发现所有十个模式都存在并报告 COMPLETE。

副本: 逐字节证明备份或移动的副本:python3 scripts/archive.py compare <film> <copy>。它用一个命令完成了手动执行时需要源文件和副本中每个文件的 SHA-256 列表以及复制日志才能完成的工作。

在档案中编写一个简短的 README:每个文件夹的内容、故意排除的内容、成品的位置。

步骤 4. 关闭

production.py signoff deliver --by <你> --note "<在电视上观看了母版;检查通过>",然后 advance 进入复盘阶段(forge-director)。

输出

  • film/ 文件夹,包含每个交付物,命名为 <Title>_4K.mp4,<Title>_1080p.mp4,<Title>_phone.mp4,covers/
  • 报告中包含检查结果数据(大小、响度、每个节拍处的同步偏移量)
  • MANIFEST.sha256,manifest.json,档案 README

门控清单

  • 矩阵中的每个交付物都存在并已通过检查
  • 每个故事节拍处的同步偏差在一帧以内
  • 已在目标屏幕上观看一遍并听声音
  • archive.py build:COMPLETE;archive.py verify:OK
  • 每个副本已通过 archive.py compare 验证
  • 已签署

修复表

症状修复方法
Apple 设备拒绝 HEVC 母版缺少 hvc1 标签:使用 ffmpeg -i in.mp4 -c copy -tag:v hvc1 out.mp4 重新封装
HEVC 母版无法解码在 VAAPI 编码期间写入了 hvc1:不加标签进行编码,然后使用 -c copy -tag:v hvc1 重新封装
电视通过 Wi-Fi 播放卡顿比特率过高(ffprobe 会显示):以更高的 QP(更小的文件)重新编码母版
需要 HEVC 但没有 VAAPI 编码器ffmpeg -h encoder=hevc_vaapi 和 ls /dev/dri 可查看机器支持情况;否则交付 H.264 母版
上传平台拒绝或剪裁未归一化:上传两遍处理的副本(-14 LUFS,-1.5 dBTP,线性),而不是母版
手机版太大无法发送从上传版以更低的 -b:v(references/deliverables.md)重新编码,或缩短时长;保持 720p
verify 报告 CHANGED有人编辑了已交付的文件:从已验证的副本中恢复,或重新构建并重新签署
build 报告 INCOMPLETE缺少必需的交付物或画作:创建它,或从列表中移除并附上原因

参考

  • references/deliverables.md:完整的 ffmpeg 命令、检查方法、书籍、版本和封面

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

gallowforge/forge-director

FilmForge director: runs an AI film production end to end (story, style lock, score, paintings, frame QA, motion in code, sound, delivery, archive) through stage gates, so no credit is spent before its gate passes. Keeps the production state file (production.yaml) and the credit ledger, prices the plan against the credits, and always names the one next action. Use this skill whenever the user wants to make, plan, budget, continue or check on a short film, painted film, animated story, music...

gallowforge/forge-frame-qa

FilmForge frame QA: inspects every painting at full size against the character sheets and the continuity ledger, measures colour rules, palette and exposure with tools, scores it on a nine-criterion rubric and decides: accept, fix in code (naming the module and the exact parameters), or repaint (with the root cause and the full corrected prompt). Use this skill whenever paintings, stills, keyframes, character sheets or book pages come back from an image model, when the user asks whether...

gallowforge/forge-motion

FilmForge motion: plans each shot's life in code instead of credits (painted holds brought alive with drifting fog, ash, snow, rain, embers, glints, light sweeps, firelight flicker, heat shimmer, shake, lightning, glass cracks, transitions, golden threads, handwritten words and titles), maps every effect to the painted-film-pipeline renderer's exact parameters, applies frame-QA code fixes, exports the edit timeline and renders the preview; decides when paid video is worth its credits. Use...

gallowforge/forge-painter

FilmForge painter: writes every shot's image prompt from the shot list, the character sheets and the style lock, on a fixed twelve-slot order with continuity anchors (handles, anchors, scale locks, props, states, forbidden-colour clauses); keeps the continuity ledger; lints every prompt before a credit is spent; paints in batches of four and hands each batch to frame QA. Use this skill whenever the user wants image prompts for a film's shots or a picture book's pages, storyboard frames,...

gallowforge/forge-story

FilmForge story: turns a premise, song, poem or myth into a story bible, a timed screenplay and a shot list sized to a credit budget, written as YAML the tools validate, price and cut to music. Use this skill whenever the user has an idea to turn into a short film, painted film, music video or picture book; wants a premise, logline, story bible, beat sheet, screenplay, storyboard or shot list; asks how many shots or how long a film their credits buy; or wants an existing story tightened so it lands, even if they never say 'shot list'.

gallowforge/forge-style-lock

FilmForge style lock: fixes one image model and setting, one look sentence (or two when the drawing itself carries the story), the palette and colour rules, the line, brush and lens language, the character-sheet specs with scale bars, and the prompt grammar every shot must follow, so every painting in a film or book matches. Use this skill whenever the user starts the visual side of a film, music video or picture book, wants consistent characters or one consistent look across many images,...

相关技能