OpenStory:开源 AI 视频序列生成平台(脚本转风格化视频)
OpenStory 是 openstory-so 开源的 AI 视频序列平台,基于 TanStack Start 与 Cloudflare Workers 构建。用户粘贴脚本后自动完成场景拆分、镜头角度与情绪设计,并通过 Fal.ai 生成场景图像、图生视频与音频,保持角色、场景、色彩与光线在跨场景间风格一致。项目采用 MIT 许可证,本地仅需 Bun >= 1.3.9 即可运行全栈(D1、R2、Workflows、Durable Objects 由 Miniflare 在 Workerd 内模拟)。
社区作者 · zZz
它解决什么问题
OpenStory 是一个开源、AI 驱动的视频序列创作平台,核心能力是把文字脚本转换为风格统一的视频成片。
主要功能(来自仓库 README):
- 脚本分析:粘贴脚本后自动生成场景拆分,包含镜头角度、情绪处理与连续性跟踪。
- AI 图像生成:通过 Fal.ai 生成场景图像,支持多种模型选项。
- 图生视频动态化:把静帧画面转换为动态视频片段。
- 风格一致性:角色、场景、配色方案与光线自动跨场景延续。
- 团队工作区(标注为 coming soon,尚未提供):共享样式、角色、VFX 与音频库。
- Passkey 认证:基于 Better Auth 的无密码登录。
- 边缘部署:运行在 Cloudflare Workers 上,配合全球 CDN。
技术栈:运行时 Bun;框架 TanStack Start + TanStack Router + Vite;数据库 Drizzle ORM + Cloudflare D1(SQLite);AI 层 TanStack AI + Fal.
ai + OpenRouter + PostHog(LLM 可观测性);工作流 Cloudflare Workflows(持久化执行);实时 Cloudflare Durable Objects(SSE 进度更新);存储 Cloudflare R2(兼容 S3);认证 Better Auth;样式 Tailwind v4 + shadcn/ui;代码质量 oxlint + oxfmt + tsgo + Lefthook + Knip;测试 Vitest + Playwright;部署 Cloudflare Workers。
更多架构说明、服务端处理模式、工作流模式与 React 约定见仓库内 CLAUDE.md。
项目结构与部署:源码位于 src/ 下,包含 components/(基于 shadcn/ui 的 React 组件)、functions/(服务端函数,业务逻辑入口)、lib/(共享工具、服务与类型)、ai/(AI 模型配置与提示词 schema)、db/(Drizzle 数据库 schema 与客户端)、services/(核心业务服务)、workflows/(Cloudflare Workflows 持久化定义)、routes/(TanStack Router 文件路由)、api/(仅用于工作流与认证的 Webhook)、_app/(应用外壳,匿名可浏览,操作需登录)、e2e/(Playwright 端到端测试)、scripts/(CLI 工具与初始化脚本)。
部署目标是 Cloudflare Workers 边缘运行时 + R2 存储 + D1 数据库 + 全球 CDN。
配图说明:配图 1 为 OpenStory 项目 Logo(openstory-logo.svg);配图 2 为 README 中的 “Deploy to Cloudflare” 一键部署按钮,点击后会把仓库克隆到你的 Cloudflare 账号、按 wrangler.jsonc 声明创建资源并配置 CI。
适用对象:希望用 AI 把脚本批量转换为分镜与视频内容的创作者与团队、需要统一美术风格的多场景短剧/广告预可视化团队,以及想基于云边缘栈二次开发 AI 视频流水线的开发者。
说明:来源未给出具体使用的 AI 模型型号、参数规模与权重文件大小,相关字段填写待核验或空值;团队工作区功能在来源中明确标注为 coming soon。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
【准备环境】
- 安装 Bun >= 1.3.9(README 的 Prerequisites 中给出安装入口)。这是唯一前置条件:不需要 Docker、不需要外部数据库、也不需要 Cloudflare 账号。
- 本地开发会在 Workerd 内通过 Miniflare 运行完整栈,包括 D1、R2、Workflows、Durable Objects 与邮件功能。
【快速开始】
git clone https://github.com/openstory-so/openstory.gitcd openstorybun installbun dev然后在浏览器打开 http://localhost:3000
说明
bun dev 会自动完成全部引导工作——首次运行时生成 .env.local(包含 auth/encryption 密钥)、迁移并播种本地数据库、启动开发服务器。【配置 AI 密钥】 要使用 AI 生成功能,需要两个 API Key:运行 bun setup 以交互方式添加,或直接粘贴进 .env.local:
全部可选配置(Google OAuth、Stripe、PostHog、远程 R2)见 .env.example。
- FAL_KEY:fal.ai,用于图像、视频与音频生成
- OPENROUTER_KEY:OpenRouter,用于 LLM 脚本分析
【常用命令】
bun dev:引导环境、迁移 + 播种数据库、启动开发服务器bun setup:交互式设置,添加 AI 密钥(加 --prod 用于部署环境)
bun storybook:在 6006 端口启动 Storybook质量检查
bun lint(oxlint,类型感知)、bun lint:fix(自动修复)、bun format(oxfmt 格式化)、bun format:check(仅检查不写入)、bun typecheck(tsgo 类型检查)、bun dead-code(Knip 查找未使用导出)。测试
bun run test(Vitest 单元测试)、bun test:watch(监听模式)、bun test:coverage(覆盖率)、bun test:e2e(Playwright 端到端测试)、bun test:e2e:ui(Playwright 交互式 UI)。数据库
bun db:generate(根据 schema 变更生成迁移)、bun db:migrate:local(应用迁移,bun dev 时也会执行)、bun db:studio:local(对本地数据库打开 Drizzle Studio)。构建与部署
bun run build(生产构建,注意不是 bun build)、bun setup --prod(交互式生产设置 + 部署)、bun cf:deploy:prd(手动生产部署:构建 → 迁移 → 部署)。【部署】 目标为 Cloudflare Workers(边缘运行时、R2 存储、D1 数据库、全球 CDN)。可根据配图 2 的 “Deploy to Cloudflare” 按钮一键部署:按钮会把仓库克隆到你的 Cloudflare 账号、按 wrangler.jsonc 声明创建资源并配置 CI。若想从自己的克隆仓库进行引导式设置,运行 bun setup --prod。
CI/CD:Cloudflare Workers Builds 在推送到 main 时自动部署(与部署按钮克隆所使用的机制相同);Pull Request 会通过 GitHub Actions 获得预览部署,并使用独立的 D1 数据库。环境变量配置与平台检测详见 CLAUDE.md 的 Platform & Deployment 章节。
【常见问题与注意点】
- 生产构建命令是 bun run build,不要误用 bun build。
- 本地无需 Cloudflare 账号即可跑通全栈;接入真实云资源时再使用 --prod 相关命令。
- 未配置 FAL_KEY / OPENROUTER_KEY 时,AI 生成与 LLM 脚本分析不可用。
- 应用外壳 _app 允许匿名浏览,但具体操作需要登录(Passkey 无密码登录,基于 Better Auth)。
- 团队工作区(共享样式、角色、VFX 与音频库)在来源中标注为 coming soon,当前版本不提供。
- 贡献代码前可先查看标注 good first issue 的 issue,并阅读 CONTRIBUTING.md 了解环境搭建、分支命名、代码质量与 PR 流程。