DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Finderchangchang /

Finderchangchang/brewreel

Topic repository only

精酿 BrewReel:让 DeepSeek 这类便宜模型也能做出好看的竖版宣传片。写一份产品简报,AI 挑镜头、写文案,一条命令出片。3 种配方、6 个行业、广告法校验,开源可商用。

★ 113 Stars19 Forks2 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@2aed49a8
精酿 · BrewReel

精酿 · BrewReel

便宜模型,也能酿出好片:写一份产品简报,AI 挑镜头、写文案,一条命令出一支竖版宣传片。

Stars Forks Version DeepSeek Harness Remotion License

官网 · 演示视频 · 历史版本 · 更新日志 · 在 DeepSeek Harness 里用 · 姊妹项目 Jev 聊天助手 · English

原名 promo-video-skill / 蒸馏视频,旧地址自动跳转。

❤️赞助商

想出现在这里?加微信 jskjkf007,添加时请备注「BrewReel 商务合作」。

截图

下面都是实际渲染的画面。分镜都在仓库里,产品和数据都是虚构的;演示视频(v0.3.0 附件,约 5 MB)是三种配方的实际渲染效果。

三种配方

cards 卡片信息流
cards 卡片信息流(默认,9:16):渐变底 + 居中白卡片 + 描边大字幕,一镜讲一件事
quiz 答题互动
quiz 答题互动(9:16):红笔圈出一个常见误解 → 出一道选择题 → 揭晓 → 词条卡讲清楚
journey 角色漫游
journey 角色漫游(4:5 / 9:16):原创吉祥物一镜到底横穿剪纸城市,每站一张明信片讲一个类别

六个行业(每张图左边是第 0 帧封面,右边是片中一帧)

软件:记账工具
软件 · 记账工具(ledger)
餐饮:单品上新
餐饮 · 单品上新(food)
电商:实物商品
电商 · 实物商品(ecommerce)
教培:成人职业课程
教培 · 成人职业课程(education)
美业:无实拍照片
美业 · 无实拍照片(beauty)
文旅:住宿
文旅 · 住宿(travel)
更多样例:情感聊天 App、会议纪要、英文字幕
软件:情感聊天
软件 · 情感聊天(jev)
软件:会议纪要
软件 · 会议纪要(meeting)
英文字幕
英文字幕(en-focus)

这 9 份分镜在 examples/(都是 cards 配方),quiz 和 journey 的样例在 styles/quiz/examples/、styles/journey/examples/。每份都能直接通过校验并用 make.mjs 出片。

为什么用它

  • 便宜模型只做它做得好的事。 模型只写一份 storyboard.json:挑镜头、填文字,不写代码、不算坐标。版式、动效、节奏都在现成组件里。
  • 配方由强模型先调好。 每种风格先由强模型做到位,再写成组件和校验规则;便宜模型照着填,出片水准由配方兜底。
  • 合规红线先拦一遍。 内置《广告法》极限词、六个行业的合规规则、断词换行、安全区等几十条校验,报错用中文写清楚哪里要改。
  • 一条命令出片。 校验 → 配乐 → 渲染 → 拼图 → 检查帧,全自动;自查有 ✗ 的片子不交付。
  • 配乐现场合成,没有版权问题。 按镜头切点卡拍,响度统一到 -16 LUFS。
  • 中英双语。 字幕可选中文或英文;英文片每半拍扫一次画面,混进汉字就不交付。
  • 开源、可商用。 Apache-2.0,注明出处即可;渲染出的视频不要求署名。

平台支持

用法 状态 说明
Claude Code / Codex / opencode 等能读 SKILL.md 的 AI 编程助手 ✅ 可用 把仓库装成 skill,助手照 SKILL.md 写分镜、跑校验、出片
DeepSeek Harness 插件 dsh-brewreel ⚠️ 已发布到 npm 7 个工具负责校验、出片、核对;还没接真实 DeepSeek 模型实测
无 agent 脚本 scripts/llm_make.py ✅ 可用 直接调 OpenAI 兼容接口(默认 DeepSeek),简报进、视频出,校验报错自动回喂重试
运行环境 要求
操作系统 Windows(仅 x64)/ macOS ≥ 15 / Linux(glibc ≥ 2.35,需要 libnss3 / libgbm / libasound2 等共享库;不支持 Alpine、NixOS)
Node.js ≥ 18(建议 20 LTS 或更高,本仓库在 Node 22 上测试过);DeepSeek Harness 插件要 22.19+ 的 22.x 或 24+
Python 3.10+;配乐脚本要 numpy / scipy,llm_make.py 只用标准库
首次下载 渲染依赖约几百 MB,外加约 110 MB 的 Chrome Headless Shell

成片 1080×1920(journey 默认 1080×1350),30 fps,带配乐和音效。

快速开始

1. 装依赖。

git clone https://github.com/Finderchangchang/brewreel.git
cd brewreel/template && npm install && npx remotion browser ensure
cd .. && pip install numpy scipy

npm install 装渲染引擎(lock 文件里带 7 个平台的 Remotion compositor,换平台不用重新生成);npx remotion browser ensure 下载一次 Chrome Headless Shell,供无头渲染用。

2. 跑一个样例,确认装好了。

node scripts/validate.mjs examples/ledger.json
node scripts/make.mjs examples/ledger.json --out ../brewreel-out/ledger

第一条校验通过就说明装好了。第二条出片要几分钟,终端最后一行是「交付:<mp4 路径>」;输出目录里有 video.mp4、拼图 sheet.png、检查帧 check/、report.txt 和交付清单 manifest.json。--out 不能指向仓库里面。

3. 让 AI 写分镜。 三选一:

  • 装成 skill:把整个仓库 clone 到 ~/.claude/skills/brewreel/(Claude Code)或 ~/.agents/skills/brewreel/(通用约定),或用你工具自带的 skill 安装命令指向本仓库。然后把简报交给助手(模板见 brief-template.md),让它照 SKILL.md 出片。
  • 无头脚本:不需要 agent,见下面的「用便宜模型直接跑」。
  • DeepSeek Harness:装插件后模型用工具校验和出片,见「在 DeepSeek Harness 里用」。

用便宜模型直接跑

scripts/llm_make.py 直接调 OpenAI 兼容接口:简报进、视频出,校验报错会原样回喂给模型重试(最多 3 次)。

export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic   # 仅当把 DeepSeek 接到 Claude Code 时需要
export ANTHROPIC_AUTH_TOKEN=<你的 DeepSeek API Key>
export ANTHROPIC_MODEL=deepseek-flash[1m]

# 或者直接用无头脚本,不接 Claude Code:
export LLM_API_KEY=<你的 DeepSeek API Key>
export LLM_BASE_URL=https://api.deepseek.com
export LLM_MODEL=deepseek-chat
python scripts/llm_make.py path/to/brief.md

Windows PowerShell 用 $env:LLM_API_KEY="..." 代替 export。以上都是占位符,换成你自己的 key;不要把 key 提交进仓库或写进 issue。也可以把这些变量写进 AI 编程助手自己的全局配置(如 ~/.claude/settings.json),这是可选做法,本仓库不会替你改任何全局配置。加 --dry-run 不调接口、不读密钥,只把拼好的提示写出来并估算 token 数。

在 DeepSeek Harness 里用

仓库自带一个 DeepSeek Harness(dsh)插件,放在 integrations/deepseek-harness/,包名 dsh-brewreel(原名 dsh-distill-video,从旧版升级见插件 README 的「从 dsh-distill-video 升级」)。装上后,模型照着 skill 写分镜,校验、出片、核对都调插件的工具完成,不用自己拼 node scripts/… 命令;出片在后台跑、报进度,输出路径和子进程拿到的环境变量都受插件限制。

需要 dsh 0.1.7-rc.2 或更高的 0.1.x。npm 上 dsh 的 latest 标签目前还指向更早的 0.1.5-rc.3,所以安装时要写明版本号。另外要有 Node.js 22.19+ 的 22.x 或 24+,以及 pnpm(dsh plugin 靠 pnpm 装插件)。从 npm 安装:

npm install -g @deepseek-ai/dsh@0.1.7-rc.2 pnpm    # 还没装 dsh 时
dsh plugin --profile web add dsh-brewreel
dsh web

web 可以换成你自己的 profile 名,profile 已经在运行的要重启才生效。第一次用时对模型说「检查一下视频插件环境」,它会调 doctor,经你同意后再调 setup 装渲染依赖(约几百 MB,外加约 110 MB 的 Chrome Headless Shell)。想用仓库里还没发版的代码,可以 clone 后在上一级目录执行 dsh plugin --profile web add ./brewreel/integrations/deepseek-harness。插件还没接真实 DeepSeek 模型实测,遇到问题请开 issue。

7 个工具、许可提醒与安全说明
  • brewreel_doctor 查环境,brewreel_setup 装依赖和浏览器,brewreel_catalog 列风格、行业和配色,brewreel_guide 读 skill 与各风格、行业、镜头文档,brewreel_validate 校验分镜并给改法,brewreel_render 后台出片,brewreel_verify 核对成片是否还对应当前分镜。
  • 许可提醒:插件和 skill 是 Apache-2.0,但渲染引擎 Remotion 不是开源软件,4 人及以上的营利组织需要购买 Remotion 的 Company License(见「版权与许可」和 THIRD_PARTY_LICENSES.md);插件不改变这一点。
  • 渲染子进程不经过 dsh 的 shell 沙箱,以当前用户权限运行。
  • 配置项、安全说明和故障排查见插件的 README。

功能

三种配方

分镜里写 meta.style 选配方,不写就是默认的 cards。每种配方是一个「风格包」:自带设计令牌、镜头组件、校验规则和叙事模板,文档、规则、样例放在 styles/<id>/,代码放在 template/src/styles/<id>/。

配方 画幅 适合
cards 卡片信息流(默认) 9:16 单一卖点、使用流程、界面演示、实物和门店、价目表
quiz 答题互动 9:16 有一个常见误解、能出一道唯一正确答案的选择题(「X 到底是什么意思?」)
journey 角色漫游 4:5(默认)/ 9:16 有 4–6 个清楚的类别、功能或站点,想按一条路线挨站逛一遍

怎么选:能出一道选择题 → quiz;有 4–6 个类别想挨站逛 → journey;其余情况 → cards,也就是不写。quiz 只接受 9:16,它的专属镜头(出题、揭晓、释义卡等)只能在 quiz 里用,和 cards 的 18 个镜头不混用,写错会被校验拦下。

{ "meta": { "style": "quiz", "industry": "software", "lang": "zh" }, "shots": [ ... ] }
每种配方长什么样

cards 卡片信息流(默认,可用,9:16):渐变底 + 居中白卡片 + 描边大字幕,一镜讲一件事。适合单一卖点、讲使用流程、演示界面、实物和门店。18 个镜头、六个行业的样例都在 examples/。

quiz 答题互动(可用,9:16):皮肤是「批改纸」——点阵答题纸底加一条朱红页边线,深色主色 + 杏黄马克笔 + 朱红批改笔,标签用等宽字,卡片是小圆角 + 实色硬投影;三套配色(sage-pine 灰绿纸 + 松绿,默认;rice-soy 米纸 + 酱色,餐饮默认;ash-teal 灰纸 + 深青),三套口吻(phraseTitle.params.voice:exam 考场腔 / chat 闲聊腔 / show 挑战腔)。两个原创角色一矮一高:戴耳机的主讲人(懂了耳罩亮起、发出声波)和反戴棒球帽的搭档。节奏是「红笔圈出一个常见误解 → 答题卡出一道 A/B/C 题、秒表倒数 3 → 揭晓打勾 → 词条卡翻正(误解被波浪线划掉 + 编号释义)→ 回放原片段、盖一枚「懂了」章 → 小剧场演一遍 → 评论区互动 → 印章擦除落到结业卡」。适合有常见误解、能出一道选择题的产品:一句外语的真正意思、软件里一个常被误会的功能(如「归档 = 删掉了?」)、一道菜为什么要这么做。说明见 styles/quiz/,写法和字数见 styles/quiz/recipes.md,5 份样例分镜在 styles/quiz/examples/。

journey 角色漫游(可用,默认 4:5,也支持 9:16):皮肤是「旅行文具」+「剪纸分层」——原创吉祥物「橘团」踩悬浮滑板,一镜到底横穿一座剪纸风城市(远、中、近景和角色各是一张纸,身后投硬边纸影);开场是车站翻牌大字,顶部一整条车票标着路线、站点和当前站名,每站甩进来一张航空信封边的明信片写代表内容、看完「寄出」到车票上这一站;配色是邮政绿 + 荧光青柠 + 石墨描边(post-green,另有 plum-ticket 酒红车票)。背景三选一(现代城市 / 低层街巷 / 古城的白墙黛瓦和石桥河道),14 种街区按内容挑(道口、邮筒、检票口、大头贴、搭车站、夜站台、手机、住家、咖啡、集市、城门、石桥、茶馆、灯会),每站一个车站 / 邮路题材的小笑点,天色从白天走到夜晚;到终点,顶部那张车票滑到画面中间展开,检票钳在票根上打个孔,车票翻面露出产品名和口号;最多一个数字,印在正面终点旗旁。适合内容多、类别清楚的产品:内容平台的栏目、软件的功能、一条游线的景点。说明见 styles/journey/,写法和字数见 styles/journey/recipes.md,3 份样例分镜在 styles/journey/examples/。

配音(MiniMax / 阿里云 / 火山引擎)

分镜里写 meta.voice、每镜写一句 vo(旁白),出片时就带配音;不写就是无配音片,和以前一样。

  • 三家可选:meta.voice.provider 写 minimax(MiniMax)、aliyun(阿里云百炼 CosyVoice)或 volcengine(火山引擎豆包语音),默认都是男声播音,音色可换。MiniMax 已用真实 key 出过片;阿里云和火山引擎按官方文档接入、用假响应测过,还没用真实 key 实测。
  • 声音就是时间轴:make.mjs 先用语音合成念出每句旁白、拿到逐字时间,再把有旁白的镜头时长改成「0.15 秒 + 旁白 + 0.35 秒」并对齐到拍,便宜模型不用自己算时长。
  • 逐字字幕:字幕跟着声音一个字一个字点亮,三种配方都支持;也可以选整句出现(line)或不出旁白字幕(off)。cards 里有 vo、没写 caption 的镜头,字幕由旁白自动生成。
  • 配乐自动让路:人声处背景音乐压低约 10 dB,说完再回来。
  • 缓存省钱:同一句(音色、语速、情绪、文字都一样)只合成一次,缓存在用户目录 ~/.cache/brewreel/tts(环境变量 BREWREEL_TTS_CACHE 可改);改画面、重渲染不再计费,manifest.json 记下这次计费的字符数。
  • 没有 key 也能预览:出片加 --voice-provider mock,用不联网的占位音看节奏(不能当成片交付);加 --no-voice 出无配音版。
  • 密钥:只从环境变量读,不写进任何文件和日志:MiniMax 用 MINIMAX_API_KEY,阿里云用 DASHSCOPE_API_KEY,火山引擎用 VOLCENGINE_TTS_API_KEY(或旧版 VOLCENGINE_TTS_APP_ID + VOLCENGINE_TTS_ACCESS_TOKEN);可选的地址、空间 ID 等见 SKILL.md。自定义接口地址只接受 https。

三家怎么选、写法、推荐音色、字数上限见 SKILL.md 的「配音」一节;三种配方各有一份带配音的样例分镜(styles/*/examples/*voice*.json)。

六个行业包

meta.industry 说明
software(默认) App / SaaS / 工具类产品
food 餐饮、门店、单品上新
ecommerce 电商实物商品
education 成人职业培训(不含 K12)
beauty 生活美容(不含医美)
travel 文旅、住宿、民宿

meta.lang:zh(默认,中文字幕)/ en(英文字幕)。

  • 11 个通用镜头 + 7 个行业镜头(实拍、价目表、门店卡、评价、前后对比、参数表、资历卡)。shots.md 是 18 个镜头的参数总表,docs/shots/*.md 是每个镜头的详细文档。
  • 每个行业包带合规规则、推荐的镜头结构、给商家的简报模板和一份回归测试简报。
  • 不做(校验规则没覆盖,硬要做也不保证合规):医疗美容、处方药 / 药品、K12 学科培训、保健品功效宣称、烟草。
怎么新增一个行业

每个行业是 industries/<id>/ 下的一套文件:

industries/<id>/
  rules.json            合规规则(enabledShots、checks、mediaPolicy 等,和 industries/_base/rules.json 合并)
  recipe.md             推荐的镜头结构、写作要点(AI 助手写分镜前必读)
  recipe.en.md          英文版
  brief-template.md     给商家的简报模板
  brief-template.en.md  英文版
  test-brief.md         一份完整测试简报
  expected.md           这份测试简报应该触发哪些规则(回归测试用)

复制一份现有行业目录改名,参照 industries/_base/rules.json 的字段说明填 rules.json,写 recipe.md 说清楚这个行业该用哪些镜头、常见合规红线,再写一份 test-brief.md + expected.md,跑 node scripts/test-rules.mjs 验证规则生效。

校验与合规

scripts/validate.mjs 里的规则整理自公开的《广告法》极限词清单和各平台公开规则,分三档:

  • 错误(block):必须改,否则 make.mjs 拒绝出片。
  • 警告(warn):建议改,不强制拦截。
  • 人工复核(human):机器判断不了的(比如「照片是否真的授权」「评价是否真实」),出片后列成清单给发布者自己确认。

另外还查断词换行、安全区、字段写错位置、画面上的数字有没有出处(meta.facts);出片时传 --brief <简报>,会逐条核对 facts 里的数字和引语是否出自简报。这些规则只用于辅助自查,不构成法律意见,见「版权与许可」。

原创性检查与「调配方」

像自酿爱好者分享配方一样,这个项目欢迎三种玩法:

  • 一创:直接拿现成配方开酿。
  • 二创(换皮):node scripts/gen-styles.mjs --new <id> 从脚手架生成一个新风格,把源风格要沿用的镜头和 tokens.json 复制过来,换配色、字体、角色。只换配色的话,改 tokens.json 的 themes 就行。
  • 三创(调配方):按 distill/ 的六步流程拆一支参考视频:抽帧找切点(scripts/extract-frames.mjs)→ 九层拆解 + 招牌清单 → 复刻(只在本地、不提交)→ 再设计 → 组件化 → 便宜模型测试 → 评审。distill/prompts/ 里有每一步可直接用的提示词,styles/_template/ 是新风格的空白模板。quiz 和 journey 就是这样做出来的,分别参考了一支答题互动类短视频和一支角色漫游类短视频。

「再设计 + 原创性检查」是必经步骤,二创、三创都一样。我们要的是「同一类型的风格」,不是一比一复制。

原创性检查的具体要求
  • 骨架可以保留:叙事结构、节奏、动效手法、镜头语言、版式原则,这些是类型,谁都能用。
  • 皮肤必须重做:配色、字体处理、角色造型与人设配色、招牌细节、固定文案句式、品牌化的收尾方式。
  • 用数字证明拉开了:跑 node scripts/check-originality.mjs --style <id> --ref <参考 tokens.json> --signatures <招牌清单.md>(参考的令牌和清单放仓库外),要求主题有彩色与参考有彩色 ΔE2000 ≥ 20、背景 ≥ 8、主色 + 强调色不能同时撞上参考的一组、描边不同、没有照搬的颜色,招牌清单每一条都在 styles/<id>/originality.md 里写了「已替换为:…」或「已删除」。
  • 评审打混淆度:1–10 分,≤ 3 才算过——熟悉参考的人要能一眼看出不是同一家。
  • v0.2.1 的 quiz 和 journey 就是按这一步把 v0.2.0 的皮肤整套换掉的,逐条对照见各自的 originality.md。

参考视频和它的截图、抽帧、角色、品牌名、网址、影视片段、配色令牌一律不进仓库;拆解原稿和招牌清单放在仓库外,仓库里只放自己写的拆解文字、自己画的角色和场景、自己写的示例内容。步骤和 PR 自查清单见 CONTRIBUTING.md。

出片质检与交付清单

node scripts/make.mjs <分镜> --out <目录> 一条命令走完:校验 → 机器自查 → 复制素材 → 配乐 → 渲染(带版式和汉字探针)→ 拼图 + 检查帧 → manifest.json。

  • 有 ✗ 不交付:机器自查、文字排版、版式自查、英文片汉字扫描、空帧检查(整屏 95% 以上一个颜色、连续超过 6 帧)任何一项有 ✗,成片改名 video.rejected.mp4,留着给人看哪里坏了。
  • 抽帧抽在关键那一拍:journey 这类一镜到底的配方,按镜头规格的 checkBeat 在内容卡停稳时抽检查帧,标题和类别名必须看得见。
  • 交付清单:成功时写 manifest.json,记分镜 sha256、成片 sha256 / 时长 / 大小、生成时间和各项检查结论;终端最后一行「交付:<mp4 路径>」。没有这一行就是没出片。
  • 核对成片:--verify 检查目录里的成片是否还对应当前分镜,改过分镜就要重出。
  • 可以并发:多个实例同时开,渲染这一步自动排队,持锁进程死了会被回收。
  • 测试产物用 --round <轮次> 放到仓库外。

常见问题

背景音乐是怎么来的?

scripts/make_bgm.py 用 numpy / scipy 现场合成:乐器、和声、旋律、混音、母带都在脚本里,不用外部素材库。make.mjs 把每个镜头的起点传给它,一个镜头一个段落,按位置和情绪选写法(钩子、紧张、抬升、律动、高潮、收尾),音符落在整拍 / 半拍,镜头切换处有镲或加花,所以音乐是卡着镜头走的。响度用 ffmpeg 的 ebur128 校到 -16 LUFS(找不到 ffmpeg 就按 RMS 近似)。

因为是现场合成的,没有版权问题。正式发抖音这类平台时,也可以换成平台曲库里的音乐:出片时加 --no-bgm 出静音版,再在平台里配乐。

有没有配音?

有。v0.5.0 起接了 MiniMax 语音合成,v0.5.1 起也可以用阿里云(百炼 CosyVoice)和火山引擎(豆包语音)。分镜里写 meta.voice 和每镜的 vo,设好对应的环境变量(MINIMAX_API_KEY / DASHSCOPE_API_KEY / VOLCENGINE_TTS_API_KEY)后出片即可;镜头时长跟着旁白走,字幕逐字点亮,配乐在人声处自动压低。没有 key 时加 --voice-provider mock 用占位音预览节奏。不写 meta.voice 就和以前一样没有配音。用 AI 配音发布时,记得按平台要求勾选 AI 生成内容声明。

为什么画面是插画,不是实拍?

项目不生成「看起来像真实拍摄」的拟真图片。没有商家素材时,画面用组件和简笔插画兜底,并明确标注,不冒充实拍。有商家实拍照片(门店、成品、价目表)时,用实拍镜头放进去,可信度会好很多;照片是否授权会列进「需人工复核」。

成片能直接发吗?

还不建议。把成片当初稿:看完整片,改掉别扭的文案和重复的卖点再发;行业片把画面上每个价格、条件、日期、营业时间、距离逐条和简报对一遍。实测情况见「已知限制」。

要花钱吗?

本项目免费开源。模型调用用你自己的 API Key,按用量在服务商那边结算,项目不经手任何费用;渲染在你自己的电脑上跑。渲染引擎 Remotion 对 4 人及以上的营利组织收费,见下一条。

Remotion 要授权吗?升级到 5.0 要注意什么?

Remotion 是源码可见、非开源的软件:个人、3 人及以下的营利公司、非营利组织可免费使用(含商用);4 人及以上的营利组织需要购买 Remotion 的 Company License,详见 https://www.remotion.dev/license。本仓库的 Apache-2.0 不改变 Remotion 自己的许可条件,见 THIRD_PARTY_LICENSES.md。

本仓库把 remotion / @remotion/cli 钉在 4.0.529。升级到 5.0 后,Remotion 免费层需要在配置里传 licenseKey(个人 / 3 人以下公司 / 非营利填 "free-license"),详见 Remotion 许可证页。升级前请先看 THIRD_PARTY_LICENSES.md。

Windows 上要注意什么?
  • 只支持 x64。
  • 环境变量用 PowerShell 写法 $env:LLM_API_KEY="...",不是 export。
  • --props 报「neither valid JSON」:Windows shell 会吃掉 JSON 字符串里的引号,所以分镜一律用文件路径传入(--props=./storyboard.json),不要在命令行拼 JSON。make.mjs / llm_make.py 已经是文件传入方式。
  • make.mjs 在 Windows 上调 python,在 macOS / Linux 上调 python3;装在别处的,设环境变量 PYTHON 指过去。
需要装系统 ffmpeg 吗?

不需要。拼图 sheet.png 由 Remotion 的 Sheet 合成直接出图(整片每秒一帧,缩略排成网格,每格下面标时间和镜号),检查帧 check/*.png 用 Remotion 自带的 ffmpeg 从成片里抽,抽不出来会改用 Remotion 单帧补。设了环境变量 FFMPEG=/path/to/ffmpeg 时,拼图会先用它的 tile 滤镜拼,失败再退回 Sheet 合成。拼图没生成不影响成片 video.mp4,终端会打印原因。

npm install 后 lock 文件里缺某个平台的 compositor?

package-lock.json 里应该有 7 个 @remotion/compositor-* 平台包(win32-x64-msvc / darwin-arm64 / darwin-x64 / linux-x64-gnu / linux-x64-musl / linux-arm64-gnu / linux-arm64-musl)。如果你的平台对应的条目缺失,删掉 template/node_modules 和 template/package-lock.json 后在目标平台上重新 npm install(这是 npm 已知的可选依赖解析问题,跨平台生成的 lock 文件不一定包含所有平台)。

Chrome Headless Shell 下载失败?

国内网络环境下 npx remotion browser ensure 可能连不上 Google 的下载地址。可以手动下载后用 --browser-executable 指定本地 Chrome / Chromium 路径(不同 Chrome 版本渲染结果可能有细微差异)。

为什么叫「精酿」?

好酒靠的是配方,原料普通也能酿好。先让强模型把一种视频风格做到位,再把它的版式、动效、节奏和规则写成一份「配方」——现成组件加校验脚本;之后 DeepSeek 这类便宜模型就是普通原料,照着配方填分镜,就能酿出同一水准的片子。文档里的说法随之统一:风格包 = 配方,从参考视频提炼风格 = 调配方,出片 = 开酿。styles/、meta.style、distill/ 这些路径和字段沿用原名。

它怎么工作

产品简报(brief)
  → 选配方:meta.style 选 cards / quiz / journey,meta.industry 选行业包
  → 便宜模型写分镜 storyboard.json(挑镜头、填文字,不写代码、不写坐标)
  → 校验 validate.mjs(硬性规则 + 广告法 / 行业合规,报错回喂给模型改)
  → 开酿 make.mjs(配乐 → 渲染 → 拼图 → 检查帧 → 交付清单)
  → 发布前人工自查(SKILL.md 的「发布前自查清单」)
  • 简报:商家或你自己填一份产品简报,通用模板是 brief-template.md,各行业另有 industries/<id>/brief-template.md。
  • 选配方:按内容挑配方和行业包,写进分镜的 meta。
  • 写分镜:模型读 SKILL.md(AI 助手的说明书)、配方的 recipes.md 和行业的 recipe.md,只输出一份 JSON。
  • 校验:node scripts/validate.mjs storyboard.json 出中文报告,指出哪一镜哪个字段要改、怎么改;llm_make.py 和插件会把报告原样回喂给模型。
  • 开酿:make.mjs 一条命令出片,任何一项自查有 ✗ 都不交付,见「出片质检与交付清单」。
  • 人工自查:交付时附一份发布前自查清单,列出机器判断不了的事(照片授权、评价真实性、价格条件等),由发布者确认。
目录结构
brewreel/
  SKILL.md / SKILL.en.md      AI 助手看的说明书(怎么挑镜头、写字段、走流程)
  README.md / README.en.md    人看的项目说明(本文件)
  LICENSE / NOTICE / THIRD_PARTY_LICENSES.md
  shots.md / shots.en.md      18 个镜头的参数总表
  brief-template.md           通用简报模板
  docs/
    shots/                    每个镜头的详细文档(18 × 2 语言)
    images/                   README 里的 logo 和效果示例图
  industries/                 六个行业包
  scripts/
    validate.mjs              校验入口
    make.mjs                  一条命令出片
    llm_make.py               无头模式:简报 → 分镜 → 出片
    make_bgm.py               参数化原创配乐
    build_docs.mjs            从 spec.json 生成 shots.md / shots.en.md
    privacy-scan.mjs          发布前隐私自查
    check-originality.mjs     原创性检查:和参考片的配色色差(CIEDE2000)+ 招牌逐条记录
    checks/ lib/              校验规则的实现
  template/                   Remotion 渲染工程
    src/shots/                18 个公共镜头组件 + 参数 spec(cards 配方用)
    src/styles/               各配方的清单、设计令牌、专属镜头;registry.gen.ts 由 scripts/gen-styles.mjs 生成
    src/core/                 字体、主题、动画、版式等公共逻辑
    src/illust/               行业插画兜底
    public/                   字体、音效、示例素材
  examples/                   9 份可直接渲染的分镜样例(六行业 + 英文 + 两份通用示例,都是 cards 配方)
  styles/                     配方(风格包):九层规格、叙事模板、规则、样例;_template/ 是新风格脚手架
  distill/                    调配方流程和可复用提示词(拆解 → 复刻 → 再设计 → 组件化 → 测试 → 评审)
  CONTRIBUTING.md             贡献说明(一创 / 二创 / 三创、PR 自查清单)
  integrations/
    deepseek-harness/         DeepSeek Harness 插件 dsh-brewreel(7 个工具)
  tests/
    validate/                 校验规则的正负例回归测试
    rules/                    六个行业的规则回归测试(各 4 例)
    originality/              原创性检查(色差算法、判定规则、招牌记录)的单元测试

已知限制

  • 还是预览版:测试和修复仍在进行中,目前还不建议把成片不经人工修改直接对外发布。
  • 便宜模型实测还没到「能直接发」:最近一轮让小模型扮演便宜模型,只给简报和 SKILL.md,从零写分镜、跑校验、出片,共 9 支,没有一支到 7 分(我们定的「可以直接发」的线)。软件 / 工具类整体 5–6 分、合规 7–8 分;行业片整体 4–5 分、合规 4–5 分,失分主要在跨字段的事实问题上。
  • quiz / journey 修复后还没重测:两个配方各测了 3 支,修了评审列出的问题,样例分镜都重新通过了校验和出片检查;但便宜模型还没重新写一轮打分,公开的分数仍是修复前的。journey 的配乐和音效还没有人工试听。
  • 阿里云、火山引擎配音还没用真实 key 实测:两家按官方文档接入,用照文档造的假响应做了单测;时间戳字段的嵌套位置、默认音色能不能用,要等第一次真实调用确认。MiniMax 已用真实 key 出过三种配方的样片。
  • 真人念得比估算慢:校验按中文每秒 5 字估算,MiniMax 真人实测约每秒 4 字,校验通过的长句出片时可能被拦下(会告诉你第几镜要删几个字)。写旁白按每秒 4 字留余量。
  • 没有实拍就只能插画:全程没有商家实拍照片时,画面靠组件和插画兜底,行业片会明显吃亏。
  • DeepSeek Harness 插件还没接真实 DeepSeek 模型实测。
  • 不做的品类:医疗美容、处方药 / 药品、K12 学科培训、保健品功效宣称、烟草。

仍存在的主要问题(欢迎在 issue 里补充实测反例):

  1. 价格条件可以靠删 facts 绕过去:价格条件、日期范围、加价项的检查,只对模型自己写进 meta.facts 的内容生效。模型把 facts 删掉,画面上的价格就没人核对了。实测中丢过节假日价和加价金额、活动日期、有效期、一项加价服务。传 --brief 可以核对「facts 是否出自简报」,但核对不了「简报里的价格条件有没有上屏」。
  2. 组件会悄悄丢数据:比如 mockApp 的 dashboard 只显示放得下的行,不支持的 done 字段直接不显示,校验不报。
  3. 位置和插画的真实性:「步行几分钟」这类说法仍会被模型编出来,门店卡会自动加一行「导航估算」。插画配上「本店作品」、插画和标签对不上(例如山景图标成「卫浴间」)、把真实数据标成示例数据,这些校验还拦不全。
  4. 模板感:不同片子的封面、默认折线图、片尾白卡、底部装饰经常一样,只换了字和颜色。
  5. 文案质量没有自动检查:截断的半个词、别扭句子、英文语法和句首大小写、同一片里卖点重复三遍、前后说法矛盾(如「三步」和「一步」),都没有自动检查。不带数字的夸大词(如「翻倍」「都说好」)也拦不住。
  6. 核心动作不强制演示:工具类产品「点开始」这样的核心动作,可能被演成一个不相关的界面,校验不管。
  7. 版式:深色主题上品牌色数字的对比度可能不够。内容少时部分面板下半截留白。照片标注互相压住要等渲染完才被拦,白等几分钟。priceCard 塞满时整体缩到 0.8 倍,个别小字会低于 26px。
  8. 英文和素材检查的覆盖面:行业合规词表按中文写,英文文案查得没有中文全。素材只能在文件层面查(同图、改名复制、截图当实拍);是不是同一位顾客、有没有授权,只能列进「需人工复核」。

建议用法:把成片当初稿,看完整片再改再发,不要只看校验通过就发;行业片尽量配商家实拍照片,出片时传 --brief <简报>,交付前把画面上每个价格、条件、日期、营业时间、距离逐条和简报对一遍;测试产物用 --round 放在仓库外。

测试方法与各轮结果

测试方法:前几轮用 DeepSeek 级别的便宜模型批量写分镜。最近一轮(v0.2.0 发布前)换成 Claude Haiku 级别的小模型扮演「便宜模型」:只给它简报和 SKILL.md,让它从零写分镜、跑校验、出片,共 9 支。其中软件 / 工具类 4 支(聊天辅助 App、公众号文章发布工具、数据问答类工具、英文字幕的专注计时器),行业片 5 支(餐饮、电商、教培、美业、文旅各一支)。全程没有商家实拍照片,画面靠组件和插画兜底。成片由人逐帧看,按 10 分制给「整体」和「合规」两项打分,并逐条核对分镜和简报。

这一轮的结果:9 支里没有一支达到 7 分。

  • 软件 / 工具类:整体 5–6 分,合规 7–8 分。功能演示最完整的一支是 6 分:聊天 → 分析 → 候选回复 → 填入。
  • 行业片:整体 4–5 分,合规 4–5 分。失分主要在跨字段的事实问题上,见上面第 1、3 条。
  • 上一轮的硬伤这轮基本没再出现:英文片画面里没有汉字(94 个抽查帧),速度类说法被拦住,同一张图不能再当前后对比,价目表组件不再漏画条目,路线标注带上了目的地,版式自查有 ✗ 的片子会被拒绝交付。
  • 交付:9 支里模型自己交出成片的有 5 支。2 支在渲染排队时模型就提前结束了,1 支渲染到一半被中断,1 支被 make.mjs 的一个 bug 挡住(传了 --brief 时误把文件路径当简报原文,导致数字全部报「简报里找不到」)。这个 bug 已修;另外加了两条:--out 指向仓库内部时 make 直接拒绝,SKILL.md 要求模型看到「交付:」那一行才能收工。

quiz 配方的测试:让便宜模型只读 SKILL.md 和 styles/quiz/ 的文档,从零写了 3 支分镜并出片:外语短语、软件功能竞猜、餐饮竞猜。人工按 10 分制给「风格」(像不像这个风格)和「整体」打分,修复前的结果:

分镜 风格 整体
外语短语(phrase) 7 6
软件功能竞猜(app-feature) 6 4
餐饮竞猜(food-guess) 6 4

质检评审列了 10 条问题,第 1–9 条都改了,第 10 条只做了一部分。主要改动:

  • 出题前剧透:新加校验 Q10,钩子语境句、影视片段每句台词、答题卡里的字幕条,都不许出现正确选项、释义卡 = 行里的内容和其中的数字。用这 3 支分镜回测,3 支都会被拦下。
  • 答题卡字幕条:默认只放片段最后一句里含关键词的那半句,也可以用 quizLine 自己写(≤12 字,不许含答案);软件、餐饮模板改成「只露功能名 / 菜名,不露效果」。
  • 纯色空帧:make.mjs 新加空帧检查,成片里整屏 95% 以上是同一个颜色、连续超过 6 帧就不交付。
  • 另加了 Q11–Q13:数量题每个选项都要是数量;界面示意(screen / phone)要写界面里的真字;有片段(clip)就要保留回放复证镜头(replay)。

修复后,styles/quiz/examples/ 里 5 份样例分镜全部重新校验并出片:make.mjs 退出码都是 0,最后一行都是「交付:…」,版式自查和空帧检查都通过。

journey 配方的测试:做法和 quiz 一样,便宜模型只读 SKILL.md 和 styles/journey/ 的文档,从零写了 3 支分镜并出片:软件功能巡游(app-tour)、内容平台栏目巡游(content-site)、文旅游线(city-walk)。人工按 10 分制打「风格」和「整体」,修复前的结果:

分镜 风格 整体
软件功能巡游(app-tour) 5.5 4
内容平台栏目巡游(content-site) 7 5.5
文旅游线(city-walk) 5 3.5

三支都没到 7 分。质检评审列了 10 条问题,10 条都改了,其中第 10 条(配色)只做了一部分:评审建议整体调柔,但风格规格要求不照搬参考视频的配色,所以只柔化了一部分。主要改动:

  • 道具和题材对不上(第 1 条):新增背景选项 opening.params.skyline:modern 现代城市(默认)/ street 低层街巷 / oldtown 古城(白墙黛瓦、石桥河道),并补了集市、城门、石桥、茶馆、灯会等街区。校验会拦两种情况:古城古镇题材没用 oldtown;街区道具和背景不配套(如古城里放邮筒街)。
  • 每站的内容卡没被检查到:一镜到底的内容卡(当时是广告牌,v0.2.1 换成明信片)在镜头中段就收起,以前在镜尾抽检查帧,根本看不到它。现在 make.mjs 按镜头 spec 的 checkBeat 在内容卡停稳的那一拍抽帧;标题和类别名必须在这一帧上看得见(mustShow),同一帧里混进别的街区的类别名也算错,两种都会拒绝交付。
  • 数字没有出处:画面上的价格和开放时间必须抄自 meta.facts,钩子里的数字要么是街区数、要么在 facts 里有依据。出现促销字眼时,报错写明是哪个词、先让删词,确有活动才写日期;提示条里的活动日期在 facts 里找不到也会拦(以前模型会编一条活动日期来过校验)。
  • 文案提醒:类别名被截成半个词、钩子写成「5 个账本街」这类读不通的说法、长标题没有停顿、片尾只剩一句口号(没有数字也没有获取方式),都会给警告。
  • 字段写错位置:把 params 里的字段写到镜头顶层时,合并成一条错并给出正确写法,不再一个字段报一条。

修复后,styles/journey/examples/ 里 3 份样例分镜(播客平台 4:5、笔记软件 9:16、古镇游线 9:16)重新校验并出片,都通过了校验和 make.mjs 的交付检查。

交流群 / 需求收集

如需联系,请公众号私信。 合作、赞助、反馈都走公众号私信。暂时还没有精酿 · BrewReel 的专属交流群。

公众号二维码

问题反馈走 GitHub Issues:误伤或漏拦的校验规则、渲染出错、看着别扭的画面,附上分镜 JSON 和报错最好(别贴 API Key)。

想听真实需求:你想给什么产品做片?缺哪种配方、哪个行业?哪条合规规则误伤了你?公众号私信或开 issue 都行。

姊妹项目

同一作者放在 jev-chat 组织下的开源项目:

  • Jev 聊天助手:装在手机上的「对话副驾」,在受支持的聊天 App 里帮你读懂对方、给出回复建议并填入输入框,发不发由你。
  • Jev 聊天助手 macOS 版:微信消息意图识别悬浮窗,看屏 + 本地小模型判断意图和风险,再按话术生成回复候选,纯只读。
  • Jev 聊天助手 Windows 版:微信 Windows 4.x 旁挂的回复辅助,窗口截图 + 本地离线 OCR,3 条候选一键填入,发送永远手动。

版权与许可

Copyright © 2026 Finderchangchang。代码以 Apache-2.0 协议开源,另见 NOTICE 和 THIRD_PARTY_LICENSES.md。

  • 可以商用:个人和公司都可以使用、修改、再分发,或集成进自己的产品,不需要付费或事先授权。
  • 必须注明出处:按 Apache-2.0 第 4 条,分发本项目、它的修改版或包含它的产品时,保留 LICENSE,并把 NOTICE 里的署名放进你的 NOTICE 文件、说明文档或产品界面。推荐写法:基于 精酿 BrewReel(https://github.com/Finderchangchang/brewreel)二次开发。
  • 不要用「精酿」「BrewReel」名称或 brewreel.com 域名暗示由原作者出品或背书。
  • 渲染出的视频不要求署名。
  • Remotion 不是开源软件:4 人及以上的营利组织需要购买 Remotion 的 Company License,本仓库的 Apache-2.0 不改变这一点,详见 https://www.remotion.dev/license。
  • 字体 Noto Sans SC、Cascadia Mono 使用 SIL Open Font License 1.1,许可证全文随字体文件放在 template/public/fonts/。

使用边界:industries/ 和校验脚本里的规则整理自公开法规和平台规则,只用于辅助自查,不构成法律意见,也不保证覆盖所有平台的最新规则。内容是否合规,以监管部门和平台当时的最新规定为准,责任由发布者自行承担。

☕ 请我喝杯咖啡

如果精酿帮你省下了一晚上剪片的时间,欢迎请我喝杯咖啡。每一份配方都是一杯杯咖啡熬出来的:这杯续上,下一份配方就调得快一点;哪天仓库里突然多了一个新风格,多半是这杯起了作用 😄

微信赞赏码(姓名已隐去)

量力而行,不用有压力;点个 Star、提个 issue,或者给我看看你酿的片子,我一样开心。

—/ 5

No ratings yet

Manifest verification required

Commit 2aed49a8daea

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout