dsh-papercut:在 Windows 上把一句话做成剪纸风竖屏解说片

前言

做竖屏解说短片,常见路径是:写稿、配音、打轴、用 Remotion 或同类工具合成。上游 papercut-explainer 是一套完整的 Remotion 剪纸风模板,但配套工具链面向 macOS(bash/Python、mlx-whisper、Homebrew 的 ffmpeg 等)。在纯 Windows 环境里往往要 WSL 或手工凑依赖。

DeepSeek Harness(DSH)用插件把能力挂进智能体会话。维护者 NL859 的 dsh-papercut 把「一句话想法 → 成片」整条链路接到 DSH:脚本脚手架、本地 TTS、逐词字幕时间轴、Remotion 分段渲染与 QA 联系表,在不装 WSL、不把 ffmpeg 放进 PATH 的前提下尽量在 Windows 10/11 上跑通。

这是什么

dsh-papercut 是 DSH 插件(npm 包名 dsh-papercut,当前版本 0.1.3,MIT)。它面向「剪纸风(papercut)竖屏 9:16 解说片」的端到端生产:从创意一句话到输出 1080×1920 的 H.264 成片。

插件在操作系统相关部分用 Node 重写上游脚本逻辑;Python 仅用于强制对齐(openai-whisper + 已知稿本)和 CJK 字体子集化两个叶子脚本。TTS 通过本机 HTTP 桥接(默认探测 127.0.0.1:7865 的 IndexTTS-2.5),插件不自行拉起模型,以免长期占用显存。

目录页:skillhub.cn/plugins/NL859/dsh-papercut
源码:github.com/NL859/dsh-papercut

管线里有什么

在 DSH 里使用专用 profile 时,一次请求会串联多个工具。README 中的示例:

$ dsh --profile papercut
> 做一个关于剪纸的 25 秒短片
   → papercut_plan → papercut_voice → papercut_storyboard → papercut_render → papercut_qa
   → episodes/01-jianzhi/papercut/out/jianzhi-papercut.mp4   (1080×1920, 27.5 s, −14.7 LUFS)

与上游 macOS 工具链的对照(节选):

环节 上游 dsh-papercut
编排渲染 render.py + render.sh src/node/render.js,按场景 ProRes HQ 分段、内容键缓存
混音 mix.py ffmpeg sidechaincompress + alimiter + loudnorm
配音 narrate.py 本地 IndexTTS HTTP 桥接
逐词时间 mlx-whisper openai-whisper + 稿本强制对齐(py/align.py)
浏览器 系统 Chrome Windows 自带的 Edge
ffmpeg Homebrew npm 自带的静态二进制

分镜构图、钩子文案、素材选择等仍由智能体完成;插件通过 九个 skills(npm run skills 安装到 <DSH_HOME>/skills)引导路由与各环节,例如 papercut-explainer(端到端路由)、papercut-script、papercut-voice、papercut-setup(本机工具链检查)等。

六个工具

工具 参数 作用
papercut_list — 列出已有 episode、时长、场景数、是否已渲染
papercut_plan idea, slug?, comp?, lines? 搭建 episode,返回 7 行脚本 brief
papercut_storyboard slug 由真实帧计划生成镜头 / 剪辑 / 音效表
papercut_voice slug, engine?, force?, model?, keepWarm? 本地 TTS、静音裁剪、强制对齐,产出 voiceover.wav、字幕与 plan
papercut_render slug, force?, workers?, conc? Remotion 分段渲染后一次 x264 与音床合成
papercut_qa slug, every?, scale? 每隔 N 帧生成编号联系表,便于目视检查

工作区目录

插件驱动一个 workspace,内含上游库与 Remotion 应用。默认从插件包目录(或当前工作目录)向上查找 app/node_modules 与 src/papercut-explainer-main/library;也可用 cordis.patch.yml 的 root 或环境变量 PAPERCUT_ROOT 指定根路径。

<root>/
  app/                          Remotion 工程(remotion、ffmpeg-static 等)
  src/papercut-explainer-main/  上游 MIT 库(kit、音频引擎、场景模板)
  episodes/<slug>/              每个短片一个目录
  tools/                        开发用 Node CLI

可用 papercut-setup skill,或 node tools/bin/papercut.mjs list,查看缺什么依赖。

环境与依赖

  • Windows 10/11,带 Edge(Remotion 无头 Chromium 可用系统 Edge)
  • Node 22+
  • Python 3.11 虚拟环境,安装 openai-whisper、fonttools;在插件配置里用 python: 指向解释器
  • 可选:本机 TTS HTTP 服务(默认 http://127.0.0.1:7865,健康检查 /health)

README 中记录的示例成片指标(episodes/01-jianzhi,30 fps、824 帧):7 行旁白约 24.1 s;冷启动渲染约 55 s;仅改一个场景时约 20 s(其余分段缓存命中);输出约 8.6 Mbps、−14.7 LUFS。

安装与启用

以下命令来自仓库 README,请按本机路径替换占位路径。社区目录站点与 DeepSeek / 幻方无官方从属关系;安装前建议自行阅读源码与 MIT 许可证。插件以当前 dsh 进程权限运行,会读写工作区并调用本机 Python、Edge、可选 TTS 服务。

# 1. 安装插件
dsh plugin --profile papercut add "link:D:/path/to/dsh-papercut"
#    或从 npm:dsh plugin --profile papercut add dsh-papercut

# 2. 安装 skills(可重复执行)
cd D:/path/to/dsh-papercut
node scripts/install-skills.mjs

# 3. 在 DSH 中说「check my papercut install」→ 运行 papercut-setup 检查工具链

配置项

包内 cordis.patch.yml 片段(字段以仓库为准):

- insert:
    - id: papercut
      name: dsh-papercut
      config:
        root: ''                 # 工作区路径;否则 PAPERCUT_ROOT;否则内置默认
        ttsUrl: http://127.0.0.1:7865
        python: D:/tts/index-tts/.venv/Scripts/python.exe
        chromePath: C:/Program Files (x86)/Microsoft Edge/Application/msedge.exe
        defaultModel: small      # 强制对齐用的 whisper 模型
        debug: false

适用场景与注意

适合需要在 Windows 本机 批量或迭代「剪纸风竖屏解说」、且希望把 plan / 配音 / 渲染 / QA 固化为 DSH 工具与 skills 的开发者或内容工作流搭建者。不适合期望插件自动下载并常驻 GPU TTS 模型的场景——TTS 需自行在本地起桥接服务。

上游故事套件来自 papercut-explainer(MIT),在 NOTICE 中另有致谢说明。

结尾

dsh-papercut 把 macOS 向的 papercut-explainer 工具链收拢到 Windows 友好的 Node + 捆绑 ffmpeg,并通过 DSH 的六个工具与九个 skills 把「一句话 → 竖屏成片」变成可复现的会话流程。进一步了解可访问 插件目录页 与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜