
今天拆的是 FireRed-OpenStoryline:一条自带 Agent 的成片产线,18 个工具节点串起从素材到渲染的全流程,剪法还能存成可复用的技能。文章给全它在链条上的位置、三条上手入口、六处已知阻塞,以及今天该不该动手的判断。

c9e9452,右端标着「2 months ago」——主分支最后一次提交停在 2026 年 7 月 31 日,那一次合入的是 PR #102。14config.toml 的 available_nodes 里列着 18 个5,注册后对外的名字是 load_media、search_media、split_shots、local_asr、speech_rough_cut、understand_clips、filter_clips、group_clips、generate_script、script_template_rec、elementrec_text、elementrec_transition、generate_voiceover、select_bgm、plan_timeline_pro、plan_timeline_ai_transition、generate_ai_transition、render_video。注册代码另外挂了两个工具:read_node_history 凭一个 artifact_id 回读任意节点跑出来的结果,write_skills 把一段 Markdown 技能写进 .storyline/skills/6。
.storyline/skills/ 下躺着 5 个 Markdown 技能:default_editing_workflow_skill 是通用流程,speech_rough_cut_skill 管口播粗剪,subtitle_imitation_skill 管文风仿写,另有 create_profile_style_skill 和 ai_transition_editing_skill8。每个技能开头是一段 name 加 description 的 frontmatter,后面写清这个角色要调哪几个工具、按什么顺序调、输出成什么形状。local_asr 做文字识别与时间戳打标,再交给 speech_rough_cut 切分出值得留的片段,然后推荐花字,用 is_speech_rough_cut=True 生成时间线,渲染时保留素材原声;这一步不需要配音、背景音乐、转场和文案9。技能里还写了一条自查要求:粗剪完要调 read_node_history 回头看切出来的文案是否通顺,句子不完整就把诉求写成 user_request 重新跑一遍粗剪。[llm] 和 [vlm] 各自的 model、base_url、api_key。项目给编码 Agent 写的使用技能把话说得很直白——这六项空着,模型调用就会失败10。官方文档给的搭子是 DeepSeek 的 deepseek-chat 配 GLM-4.6V 或者 qwen3-vl-8b-instruct,两边的 key 都要自己去平台申请11。conda create -n storyline python=3.11 建环境,Linux 或 macOS 上跑 bash build_env.sh,或者手动 ./download.sh 下载模型与资源、再 pip install -r requirements.txt,然后去 config.toml 填那六个字段,两个终端分别起 MCP 服务端和 Web 界面2。README 里这一步写的是 sh build_env.sh,照抄会报错,原因见下面第二条阻塞。docker pull openstoryline/openstoryline:v1.0.1,把 config.toml、outputs、run.sh 三个路径挂进去,开 7860 端口;国内有阿里云的镜像地址换用2。openstoryline-install 管安装、配置和首跑验证,openstoryline-use 管起服务、建会话、发剪辑指令和验收产物;从仓库根目录启动 Claude Code 就能直接用,也可以复制到全局。OpenClaw 走 openclaw skills install 或 ClawHub,Codex 走 npx skills add FireRedTeam/FireRed-OpenStoryline --skill openstoryline-use --agent codex2。models.zip 111,418,236、resource.zip 446,806,43112。Docker 那条路的镜像是 amd64 5.5 GB,最后一次推送在 2026 年 3 月 17 日13。

models.zip 与 resource.zip 加起来 533 MB 只是起步,requirements.txt 里有 torchaudio、funasr、sentence-transformers、faiss-cpu、transnetv2、moviepy 这一串常驻几百 MB 到数 GB 的包16,Docker 那个 amd64 镜像自身就有 5.5 GB13。sh build_env.sh,脚本报语法错误。sh 跑这个安装脚本。[[ 这类 bash 才有的语法,作者给的改法是 chmod +x build_env.sh 之后用 bash build_env.sh 或者 ./build_env.sh17。同一天有一条 PR #90 专门修这个 shell 兼容问题,到现在还开在队列里没有合18。bash build_env.sh。这是文档与脚本对不上,脚本本身能跑。config.toml 里 [llm]、[vlm] 都填好了,启动日志照样打印 DEEPSEEK_API_KEY exists: False,第一次对话抛 ExceptionGroup。developer_mode 打开后有没有更细的报错、是 bash run.sh 起了服务还是两个终端分别起、在界面侧栏直接填 key 是否一样,提问者三项都试过并把系统和 pip list 贴了出来,问题到今天仍然 open19。developer_mode 看日志,确认服务是哪种方式起的,再试在 Web 界面侧栏填一遍 key;三条都走完还报错,就去看 config.py 里这份配置是怎么读的。config.toml 没有 AI 转场那一段;照着仓库的格式手动补上,服务启动直接失败。ValidationError: generate_ai_transition Extra inputs are not permitted,服务打印 Application startup failed. Exiting. 就退出20。时间线能解释这处差异:镜像 v1.0.1 是 3 月 17 日推的,而 AI 转场那份配置由 PR #74 在 3 月 30 日提出、4 月 2 日合入21,镜像里自然没有这一段。| 方案 | 你给它什么 | 它给你什么 | 它在这一层 | 许可与公开体量 |
|---|---|---|---|---|
| OpenStoryline(本期) | 一批素材或一句主题,加 LLM/VLM 两把 key | 对话推进出来的成片、可保存复用的剪辑技能、一套能扩充的素材库 | 自带 Agent 的成片产线:底下用 MoviePy 与 FFmpeg 渲染,能力对内外都用 MCP 暴露 | Apache-2.0;3,427 star、401 fork、51 次提交1 |
| OpenMontage(第 2 期) | 一句需求,加你的素材 | 走完工序的成片,带审批门、决策日志和预算上限 | 流程与方法层,安排哪个阶段谁做什么 | AGPL-3.0;60,157 star、7,610 fork25 |
| video-use(第 3 期) | 一个装原始素材的文件夹,加一把 ElevenLabs key | 按词边界剪出的成片,连转写稿、剪辑决定和字幕一起交回 | 方法论与资产层里的剪辑手艺 | MIT;25,134 star、3,057 fork26 |
| kinocut(第 4 期) | 一个本地媒体文件,加 PATH 上的 FFmpeg | 有类型的工具调用和一张回执:成片、每步的哈希、质量分、待人工确认项 | Agent 与 FFmpeg 之间的执行与验证层 | Apache-2.0;158 star、40 fork27 |
| video-shotcraft(第 1 期) | 一句需求,加你产品的截图 | 一支还能继续改的 Remotion 宣传片工程 | 站在 Remotion 之上的镜头与动效资产库 | Apache-2.0;9,024 star、812 fork28 |
| HyperFrames | 用 HTML、CSS 和 JavaScript 写的合成 | 确定性渲染出的 MP4 | 渲染底座;kinocut 可以把 HyperFrames 当可选后端调起来 | Apache-2.0;51,646 star、4,706 fork29 |
| hypit | 一支参考视频,或者一句描述 | 一套以词为锚点的工作流,换宿主、换语言、换比例都能重跑 | 视频工作流的描述语言 | 自订许可;10,919 star、1,321 fork30 |
openstoryline-install 和 openstoryline-use 两个技能自己装、自己起服务,跑不通的时候看它卡在哪一步。github.com
github.com
github.com
github.com
fireredteam.github.io
github.com
github.com
hub.docker.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.