关于 papercut-build
使用 Papercut 库构建 Remotion 单集的技能,无需从头创建项目。它按阶段指导从项目搭建、场景规划到素材、音频、渲染及单集完成后的库更新。
主要功能
- 01基于库搭建单集项目
- 02规划场景、旁白和时间
- 03使用可复用套件组件构建场景
- 04准备音效提示并渲染音频
- 05预览并渲染单集
- 06将可复用成果整理回库
适用场景
- 01根据分镜创建 Remotion 单集
- 02协调多个 Agent 并行构建场景
- 03渲染并修改单个场景
- 04制作完成后归档可复用素材
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ 0xs4n4tg/ papercut-explainer --skill papercut-build安装后在 Claude Code 中输入/papercut-build确认已加载。
详细介绍
Papercut 构建
基于库构建每一集,而不是从头编写 Remotion 项目。请先阅读一次 library/README.md。
预检
- 安装:Standard 或 Full。需要库、Node 20+、npm、ffmpeg、Python 工具(numpy、Pillow、soundfile),以及用于音频渲染的 Chrome 或 Chromium。使用
papercut-explainer中的命令进行检测;如果缺少依赖,请运行./install.sh --doctor,然后交由papercut-setup处理。 - 库:使用
$PAPERCUT_LIB;否则读取~/.config/papercut-explainer/config.env中的PAPERCUT_LIB=行;否则只询问一次。如果完全没有库,请根据../papercut-explainer/references/remotion-recipes.md中的草图构建。 - 首先加载 Remotion 最佳实践技能(Remotion 插件中的
remotion-best-practices,或运行npx skills add remotion-dev/skills -g -y -a <your harness id>;install.sh --mode standard会执行此操作),并遵循其中关于标记、字幕和 Studio 的指引。 - 需要前序阶段生成的
papercut/STORYBOARD.md和narration/script.json。 - 整套工具链的冒烟测试:
library/tools/selftest.sh会在临时文件夹中构建examples/hello-reel/并渲染一帧静图。
1. 搭建脚手架
$PAPERCUT_LIB/new_episode.sh <series-dir> NN-slug CompId [out-name]
它会创建 <series>/episodes/NN-slug/{research,narration/voice,papercut},其中包含模板项目,以及同步到 src/lib/ 的工具包副本。node_modules 来自 $DONOR;如果没有,则使用最新的同级剧集;否则运行 npm i。如果存在 <series>/papercut-assets/,则会覆盖默认纹理和道具。
该文件夹可能已经存在,因为前序阶段已在其中写入 research/、narration/script.json 和 papercut/STORYBOARD.md。脚本会将内容合并到该文件夹中,且绝不会覆盖已有文件。只有在 papercut/package.json 已存在(即已搭建脚手架)时才会停止。
切勿在项目中编辑 src/lib/。它是一个快照,因此库发生变化后,旧剧集的渲染结果仍保持不变。修复库后,再使用 papercut/sync_kit.sh 重新同步。
2. 规划:episode.json、配音、时间安排
根据分镜表填写 papercut/episode.json:
scenes:[["S01Hook", "l1_hook", 0], ["S02Name", "l2_name", "called"], ...](场景 ID、旁白行 ID、作为索引的首个单词或完全匹配的单词)。banners:{"S01Hook": "TAKEAWAY IN CAPS"}。hook:参见papercut-hook。cuts:Camera / Cut 表格中的 cut 列。bed、whipScene、cutSfx、gaps(每行之后增加的间隔拍数,以秒为单位)。
然后通过 papercut-voice 运行时间安排步骤(最后会执行 build_vo.py 和 timing_md.py)。然后在 papercut/ 中运行:
python3 $PAPERCUT_LIB/papercut/stubs.py # src/scenes/index.ts + a stub per scene
如果任何场景短于 1.2 秒,build_vo.py 会标记该场景;请将它与相邻场景合并。timing_md.py 会将 Timing 部分(绝对帧数和单词提示)写入 STORYBOARD.md,因此 Agent 无需打开 plan.json。
3. 资源
遵循 ../papercut-explainer/references/asset-prompts.md:背景和复杂的静态道具使用图像工具(任何可输出透明 PNG 的工具),角色、所有文本、标签、仪表、按钮和 UI 使用代码制作。生成的图像中不得包含文本。没有图像工具时,使用纸张滤镜通过代码制作所有道具;成片依然能保持这种风格。背景:使用库中的 <Backdrop> 集合(library/papercut/public/bg/backdrops/_sheet.jpg);只有当剧集需要的场景在库中不存在时,才生成新的背景。证明截图:运行 node $PAPERCUT_LIB/tools/capture.mjs <url> public/proof/x.png,并使用工具包的 RealShot 展示。
4. 场景
- 先根据 HOOK 区块自行构建
S01Hook。这是供各 Agent 对齐的参考场景(提示点常量、摄像机、带边界限制的interpolate)。 - 将其余场景按场景分组(每组 2-3 个场景),并行交给场景 Agent。Agent 越多,启动时需要的上下文越多。使用
install.sh为你的执行环境写入的papercut-sceneAgent(Claude Code~/.claude/agents、OpenCode~/.config/opencode/agents、Codex~/.codex/agents、Gemini CLI~/.gemini/agents);通用 Agent 也可以。使用执行环境自身的机制启动它(Claude Code 中的 Task 工具、opencode 中的 subagent 工具、Codex 的子 Agent、Gemini 的 agent 工具)。如果你的执行环境没有子 Agent,就按相同顺序和任务说明逐个自行构建场景,只是更慢,流程并无不同。任务说明见library/papercut/AGENT_BRIEF.md。启动消息会给出项目路径、各 Agent 负责的场景及其绝对帧范围、QA 文件夹名称,以及$PAPERCUT_LIB的值。 - 文件归属:Agent 只能写入
src/scenes/<Scene>.tsx、可选的<Scene>.parts.tsx和tools/cue_sheet.d/<Scene>.json。绝不能写入src/lib/**、其他场景、index.ts、plan.json、episode.json或分镜脚本。 - Agent 应阅读
library/papercut/CATALOG.md和library/audio/CATALOG.md,而不是套件源码;绘制新内容前,应优先复用组件、道具集和场景模板(kit/scenes/,例如 CTA 的CtaPhoneDM)。
构建规则:1080x1920,30 fps,场景按套件的转场序列串联。全局图层:VO 和音乐使用 <Audio>,贴胶带的横幅使用 <Boil>,以及 <WordTagCaptions>、<GrainOverlay>。每个道具都要套上 <Paper>,入场使用 <PopIn>,每个场景都在其分镜摄像机内运行。不要使用 CSS 动画。底部 20% 保持空白。相邻场景不能共用背景。默认主角是方块状的橙色小动物(令牌 C.hero #D67354,阴影色 C.heroLo #A9553B,别名 you);通过配饰和姓名胶囊区分角色。
5. 音效
从 library/audio/sfx/*.js 中按名称选择音效,并从 library/audio/beds/*.json 中按预设选择背景音轨。在 papercut/ 中运行:
python3 $PAPERCUT_LIB/tools/cues.py && node $PAPERCUT_LIB/audio/render.mjs
cues.py 会将各 Agent 的条目合并到 tools/cues.json,如果气流声超过每 2.5 s 一次,还会打印提示。render.mjs 会写入 public/audio/music.wav 和 fx.wav。
6. 渲染
在 Studio 中预览(npx remotion studio)。只有收到要求时才进行渲染:
$PAPERCUT_LIB/tools/render.sh # -> out/<out>.mp4
标志:--workers N(默认值为 3)、--conc N、--force、--keep。每个场景都会缓存,因此修复后只会重新渲染有改动的场景;更改套件、计划、语音或字幕则会重新渲染全部内容。首次运行会下载 Remotion 的无头 Chrome,out/cache 中的 ProRes 文件会占用数 GB 空间。
修复或重建单个场景:编辑 src/scenes/<Scene>.tsx,使用 papercut-qa 检查,然后再次运行 render.sh。
7. 收尾(剧集完成后)
python3 $PAPERCUT_LIB/tools/harvest.py . # from papercut/; read-only report
python3 $PAPERCUT_LIB/tools/catalog.py # regenerate both catalogs
按照 library/HARVEST.md 中的说明,将套件修复、可复用组件、新音效和反复出现的节奏点纳入成果,并在 library/CHANGELOG.md 中添加条目。
- 动作显得僵硬或含糊时,请查看
../papercut-explainer/references/motion-principles.md,找到对应原则及其套件辅助工具。
交接
接下来使用 papercut-qa,它会读取项目中的静帧和 STORYBOARD.md。构建期间按场景运行一次,并在最终渲染前对整部作品运行一次。发布后,由 papercut-strategy 进行复盘。