Agent Skills › njrhts2kvv-star/FredTalk › cloud-render

cloud-render

GitHub

自动化云端视频渲染任务,涵盖实例管理、环境准备、源码快照、并发渲染及交付校验,适用于Remotion等动画出片。

skills/cloud-render/SKILL.md njrhts2kvv-star/FredTalk

Trigger Scenarios

用户要求云端渲染 指定使用8×2并发配置 要求启动或关闭渲染实例

Install

npx skills add njrhts2kvv-star/FredTalk --skill cloud-render -g -y
More Options

Use without installing

npx skills use njrhts2kvv-star/FredTalk@cloud-render

指定 Agent (Claude Code)

npx skills add njrhts2kvv-star/FredTalk --skill cloud-render -a claude-code -g -y

安装 repo 全部 skill

npx skills add njrhts2kvv-star/FredTalk --all -g -y

预览 repo 内 skill

npx skills add njrhts2kvv-star/FredTalk --list

SKILL.md

Frontmatter
{
    "name": "cloud-render",
    "description": "云端渲染。用户要求把 Remotion、FredTalk 视频或动画上传云服务器渲染、云端出片、测试渲染速度、使用 8×2 并发时使用。根据当前项目已验证并发与后端执行,自动确保已授权实例开机,完成最新源码和素材快照、精确依赖与字体准备、GPU 检查、分块渲染、无损拼接、原音频合成、完整性校验和本地交付,并在使用完成后默认关机。用户说“用云端渲染”“后续渲染按 8×2”,或要求启动、关闭渲染实例时也触发。"
}

云端渲染

执行完整渲染与交付。优先沿用当前工程已验证稳定的浏览器数、每浏览器并发和后端。新任务未指定时8×2是可调整的成本/速度起点;也可先用更保守的配置试样。独立浏览器数量与每浏览器并发分别记录,不把1×16冒称8×2。

本 Skill 的显示名称是「云端渲染」,技术标识为 cloud-render。

默认决策

  • 8×2来自历史实测,不代表每个新会话都已选择该配置。用户当前要求和本工程有效稳定记录优先;不因公共默认值恢复更激进配置,不为常规并发调整重复询问。
  • 以用户当前要求、项目最新源码、实际时间线、音轨及已确认输出规范为准;不要把“第一段约一分钟”截成60秒而丢失完整段落。
  • 保留原始图像、字体、布局、动作、时序与口播。不能为了提速降清晰度、降帧率、删模糊、修改内容或升级项目依赖。
  • 已有项目沿用确认规格。FredTalk 正式横版无其他指示时使用4K60、H.264 CRF15、JPEG95;不要把竖版改横版,也不要给30fps项目直接改60fps而不换算时间线。
  • 保持本地在制项目和活动渲染不变,在隔离快照及云端唯一任务目录里工作。
  • 使用已授权服务器;购置实例、增加付费资源、向新目的地传数据遵循当前用户授权。已授权的上传和渲染直接继续。
  • 凭证由使用者配置到仓库外的私人环境;优先 SSH 密钥或 SSH agent。密码、私钥和令牌不进入代码、参数、快照或日志。
  • 已授权的既有实例可按当前任务约定管理电源;公开版不继承作者的实例、电源或付费授权。

Fred私人BGM只在本地合成

2026-10-05 Fred明确私人BGM仅在自己电脑无需重复授权,不能随Skill分发或自动上传。按主Skill背景音乐云端渲染非私人画面/基础混音,下载后由Fred本机加音乐。snapshot.py复制及verify都拒绝bgm-local-only目录与绑定文件。使用者可显式设置FREDTALK_LOCAL_ONLY_POLICY提供自己音乐的禁止导出hash;公开版不携带作者私人音乐hash。衍生独立音乐轨/混音中间件同样保存在bgm-local-only目录并排除,不把代码能力分发当作私人音乐上传授权。其他使用者可上传其当次明确授权的自备音乐,原有授权范围不因此扩大。

云实例选择

从使用者自己的服务器清单查询实际实例状态,先验证在线空闲实例的SSH、资源、活动进程及队列,再复用。均已确认关机时,按使用者的成本和实例优先级选择一个已授权目标;未知状态不算关机,不占用其他任务。

实例选择和电源管理由Agent按实时证据执行;render.mjs不自动发现、调度或启动实例。只关闭本次实际使用且无活动/排队任务的实例,验证平台最终状态。创建新实例、扩容、释放或删除仍按当前使用者授权。

含视频时先选执行路径

含录屏/视频时先读视频处理选型与容量控制:简单录屏优先评估FFmpeg;复杂动画沿用Remotion;视频取帧确为瓶颈时才按实际区间使用源帧缓存。4×2与8×2按本工程证据选择,长片先估缓存预算;保留真实时间映射、完整音轨和画面检查。此为Agent执行逻辑,现有脚本没有自动路由功能。

减少重复工作

同一期返修与重复出片,默认先按 缓存与局部重渲 检查三项:只重渲受影响分块;复用匹配版本的依赖、浏览器、字体和未变素材;预计算或缓存不随帧变化的昂贵计算。以完整依赖、配置和内容 hash 判定复用,无法证明未变就重渲;最终校验与正式门禁保持执行。当前 render.mjs 尚未自动实现缓存,执行时明确记录实际复用路径,不把规则记录当作脚本已支持或已实测提速。

FredTalk 整期 4K60:两台服务器分块

整期横版 4K60(几分钟、几十段)已有实测路径:画面静音分块(每块 ≤420 帧)在两台服务器多条线并行渲,音频本机整片渲,最后无损拼接。做法、脚本位置和踩过的坑(上传断开、ssh 吞输入、块卡死、拖尾、爆音)见 两台服务器分块渲染整期。

云实例开关机

只操作当前使用者明确授权的既有实例。开始前查询平台、验证SSH与空闲状态;必要时启动所选实例并确认环境。成片下载且SHA256、媒体、画面检查通过后,确认本次实例无活动或排队任务,再按当前任务约定关机并核对平台最终状态。失败时先保存日志与可续跑产物;其他任务仍在使用的实例保持运行。

凭证由使用者自行配置到仓库外,仅通过环境、SSH agent或安全签名器读取;不把作者的长期授权、服务器或私人连接资料当作公开默认。

1. 确认最新内容并冻结快照

  1. 找当前项目入口、composition ID、帧率、尺寸、段落起止帧、口播文件及其时间基准。不要仅凭目录名或历史成片判断“最新”。
  2. 检查所有 import、staticFile()、字体加载、网络请求、绝对路径、符号链接。列出构建与渲染所需文件;字体包括实际字重与回退字体。动态字体必须等待加载成功后出帧。
  3. 在本地 work/ 下创建唯一快照;只复制依赖文件,不带无关影片、历史输出、缓存、凭据、Mac node_modules。跨目录素材转为明确的快照内路径,在记录中说明适配。
  4. 用 scripts/snapshot.py 对指定文件列表做复制与SHA256记录;脚本会复核复制前后的源内容。源内容变化时重建快照,不能读一半新版本一半旧版本。
  5. 从实际共享 runtime 核实 Remotion/React 版本。上传相互匹配的 package.json 与锁文件;npm 项目使用 npm ci,pnpm项目使用相应锁文件与安装方式。包的声明是 latest 不代表当前安装的版本。
  6. 带上来源、快照时间、版本、哈希和渲染配置。不要只上传已生成的MP4,把转码误称为重新渲染。

2. 准备云端环境

读取 服务器与依赖。SSH连接后先确认实际机器、可用磁盘/内存、是否有其他任务;服务器地址只是历史参考,不视为永不变的事实。

进入本节前先按“云实例开关机”确保实例已运行并完成 SSH 可用性验证;不能因为控制台显示运行中就直接开始上传。

上传或按内容 hash 复用素材,组装唯一任务快照并记录上传耗时。先执行快照验证;仅当不存在按缓存规则验证匹配的完整依赖环境时,才在隔离环境执行下方安装命令:

python3 snapshot.py --verify .
npm ci --no-audit --no-fund

把本 Skill 的 render.mjs、render-options.mjs、guard.py、verify.py复制到任务根目录后执行;选用EGL启动器时另带chrome-egl.sh。Node模块相对脚本路径解析,不能在Skill目录直接执行而期望找到远端项目依赖。

  • 使用匹配版本的 Remotion managed Chrome for Testing;先运行 npx remotion browser ensure --help 确认当前版本参数,再用该版本支持的 ensure 命令安装。也可用 npx remotion gpu --chrome-mode=chrome-for-testing --gl=angle-egl触发下载。
  • 仅在选择并验证EGL启动器时,将实际managed Chrome路径设为REMOTION_CHROME_BINARY;chrome-egl.sh将添加 --enable-gpu --enable-gpu-rasterization --use-gl=angle --use-angle=gl-egl。
  • 选择GPU后端时用同一实际启动器进行诊断:npx remotion gpu --browser-executable="$PWD/chrome-egl.sh" --chrome-mode=chrome-for-testing --gl=angle-egl。
  • 即时 chrome://gpu 可能读得过早。若显示全部禁用,等待初始化后再次读取页面,结合真实渲染时的进程、GPU信息与性能验证。不要仅凭 nvidia-smi 看见显卡或显存非零就宣称硬件加速成功。
  • 历史4090测试中EGL启用了合成与光栅化,Vulkan较慢;这不是当前任务或其他机器的保证。软件后端也是有效配置。新环境先用复杂片段测试,不直接套用整片速度。

3. 按当前配置渲染

根据模板生成 render-job.json,使用绝对帧范围,右端包含。字段与例子见 任务配置。

python3 guard.py --report guard-report.json -- node render.mjs render-job.json

脚本解析browsers/concurrency/gl/browserExecutable/chromeMode,不强迫8×2或angle-egl;未传后端时使用匹配版本的Remotion默认浏览器配置。并发与后端需记录实际值,首次短样可先试再验证,不要求在试验前提供已验证证据。若填写configurationReview,用status: verified | unverified、reason;只有verified需引用真实evidence。然后执行:

  1. 只bundle一次;把原composition的 defaultProps 与明确传入props合并,保留原fps、尺寸及全片时间坐标。
  2. 将选定帧范围等分为最多所配置浏览器数的分块,覆盖每帧且无重叠,各块使用独立browser和当前页面并发。
  3. openBrowser、selectComposition、renderMedia都传递同一browser executable、Chrome mode、GL选项;仅在openBrowser设置不够,浏览器重建时可能回退。
  4. 禁止直接拼接带AAC静音轨的分块MP4。 将分块音轨移除后无损拼接,再一次性附加最终音频。按每块准确帧数/fps写concat duration,最终视频track timescale使用60000;视频流不重编码。此修正针对容器duration累计舍入,不会修复分块内部已有坏PTS。发现内部时戳异常仍需定位重渲/正确重编码,不能声称copy已经恢复。
  5. 返回bundle、浏览器准备、renderMedia墙钟时间(包含出帧和编码)、拼接/音频合成耗时;不能把并行worker时间相加当作用户等待时间。
  6. 保存每个分块、总输出、完整日志、配置与结果JSON,校验完成后才能清理本任务中间文件。

音频模式必须明确:

  • external:当前样片的做法。使用已确认的完整混音/口播音轨,按全局时间精确截取并一次性编码;不会自动包含composition内部音效。
  • none:用户明确要求无声,或这是已确认的无声素材交付。
  • 若composition含必需音效/音乐而没有完整外置混音,不得用只含口播的文件覆盖。先从原composition按完整选定范围导出一次音频混音并验证,再以external合成。不要分块编码AAC后直接拼接。

4. 监控、异常与校验

浏览器绑定、取帧失败、动态采样、音轨截断和快照异常按故障定位分别检查。先确认工具能力与配置,保留单变量验证证据,不以修改内容或固定新限制来掩盖故障。

  • 运行时至少每60秒报告有意义进度;用非阻塞日志轮询,不把渲染绑在易中断的前台终端。可用 nohup 启动guard,将stdin指向 /dev/null。
  • guard在系统可用内存低于8GiB时停止本次进程树。不是机器内存上限实测;不能称为OOM。重跑前清理本测试遗留进程,避免抢占资源影响数据。
  • MaxListenersExceededWarning 不证明内存泄漏,也不能当作长时间稳定已验证;Target closed不能无视。确认所有promise成功、分块输出齐全并通过校验,失败时保留日志并定位。
  • FFmpeg一律传 -nostdin,防止它吞掉后续SSH交互命令。
  • 执行 python3 verify.py render-job.json:检查分辨率、fps、准确帧数、时长、全片解码、视频PTS连续性、音频模式和原音轨相关性。
  • 多浏览器首次在新项目使用时,做单浏览器同帧对照,尤其检查分块边界前后帧、模糊、字体、动画随机性。片段渲染必须是确定性的;发现错位不能用插帧掩盖。
  • 抽查开头/正文/尾部与边界的可视画面。基础机器校验不等于全片美术验收。

5. 下载与呈现

下载目标服从项目目录规则:FredTalk最终MP4唯一放本期02_最终输出/,结果与校验JSON放本期03_制作过程/。仅无项目约定的独立任务使用工作区outputs/。核对远端与本地SHA256,提供可点击视频/预览;不要把云端路径当本地链接。

结果按以下顺序呈现:

  1. 成片是否完成、片段范围、尺寸/fps、是否含完整音频;给本地视频链接。
  2. 需要解释性能时列实际并发、出帧并编码、合成与程序总耗时;上传和首次依赖安装单列,不固定每次交付都写性能表。
  3. 列验证结果、资源峰值、仍存在的异常及其影响;不把外推值冒充整片实测。
  4. 说明云端是否仍有任务、默认关机是否成功以及平台最终状态。本地现有任务保持不变。只有当次明确要求保持开机或仍有不能安全中断的活动任务时,才报告实例继续开机计费的原因。

遇到用户要提高并发时,参考 已测结果与限制。继续使用本工程稳定配置,不为默认值重复跑所有并发组合。

Version History

  • eec77dc Current 2026-11-02 08:43

Same Skill Collection

skills/audio-subtitle-roughcut/SKILL.md
skills/body-text-motion-effects/SKILL.md
skills/fred-remake/SKILL.md
skills/fred-remotion-output/SKILL.md
skills/fredtalk-deck-motion-pipeline/SKILL.md
skills/remotion-best-practices/SKILL.md

Metadata

Files
0
Version
eec77dc
Hash
8656455d
Indexed
2026-11-02 08:43

홈 - 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-11-02 12:43
浙ICP备14020137号-1