🧭 核心功能与架构

OpenStory 旨在简化视频创作流程,其核心能力包括:

  • 智能脚本分析:粘贴脚本后,自动进行场景分解、分镜角度和情绪基调分析。
  • AI 图像与视频生成:通过 Fal.ai 生成场景图像,并可进一步将静态图转为动态视频片段。
  • 风格一致性:自动确保角色、场景、色调和灯光在不同镜头间保持连贯。
  • 协同工作台(即将推出):支持团队共享角色库、场景库和视觉风格。

技术架构

  • 全栈边缘部署:基于 Cloudflare WorkersD1 (SQLite)R2 存储Durable Objects 构建,运行在全球 CDN 上。
  • 现代前端栈:使用 Bun 运行时、TanStack Start 框架和 React
  • AI 工具链:集成 Fal.ai(图像/视频生成)、OpenRouter(LLM 编排)和 TanStack AI

📦 部署与安装

1. 环境要求

  • Bun:版本需要 >= 1.3.0。这是唯一的硬性依赖(无需 Docker 或外部数据库)。

2. 本地开发安装

1
2
3
4
5
6
7
8
9
# 克隆仓库
git clone https://github.com/openstory-so/openstory.git
cd openstory

# 安装依赖
bun install

# 启动开发服务器(首次运行会自动生成环境变量、迁移数据库并填充种子数据)
bun dev

访问 http://localhost:3000 即可看到应用。

bun dev 涵盖了所有启动步骤,包括在 Miniflare (Cloudflare Workers 本地模拟环境) 中运行完整栈。

3. 配置 AI API 密钥

要使用核心生成功能,需要配置两个 API 密钥:

  • FAL_KEY:从 Fal.ai 获取,用于图像、视频和音频生成。
  • OPENROUTER_KEY:从 OpenRouter 获取,用于 LLM 驱动的脚本分析。

运行交互式设置向导添加密钥:

1
bun setup

或直接编辑项目根目录的 .env.local 文件手动添加。其他可选配置(如 Google OAuth、Stripe、PostHog)可参考 .env.example 文件。

🚀 核心工作流

  1. 创建项目:登录后,创建一个新项目。
  2. 输入脚本:在项目中粘贴你的视频脚本(或直接编写)。
  3. AI 分析与分镜:平台会自动分析脚本,生成初步的场景列表、建议的镜头角度和视觉风格。
  4. 生成与迭代
    • 生成静态帧:基于场景描述,使用 Fal.ai 生成图像。
    • 生成动态片段:选择静态帧,通过图像转视频功能生成短视频片段。
    • 调整风格:你可以微调每个场景的提示词,或利用平台的风格一致性功能统一调性。
  5. 合成与导出:完成所有片段后,合成最终视频并导出。

⚙️ 常用脚本与命令

类别 命令 说明
开发 bun dev 完整启动本地开发环境
bun storybook 启动组件文档库
质量检查 bun lint / bun lint:fix 代码检查与自动修复
bun format / bun format:check 代码格式化
bun typecheck TypeScript 类型检查
测试 bun test 运行单元测试
bun test:e2e 运行端到端测试
数据库 bun db:generate 生成数据库迁移文件
bun db:studio:local 打开 Drizzle Studio 查看本地数据库
构建与部署 bun run build 构建生产版本
bun cf:deploy:prd 手动部署到 Cloudflare Workers 生产环境

🔧 部署到生产

推荐的部署方式是使用 Cloudflare Workers,这能最大化利用其边缘计算和全球网络优势。

自动化部署

  1. 点击仓库中的“Deploy”按钮,它会自动将仓库克隆到你的 Cloudflare 账户,并配置所需资源(D1 数据库、R2 存储等)。
  2. 推送到 main 分支会自动触发 Cloudflare Workers Builds 进行部署。

手动部署
运行 bun setup --prod 进行交互式生产配置,然后使用 bun cf:deploy:prd 进行部署。

📋 项目结构概览

1
2
3
4
5
6
7
8
9
10
src/
├── components/ # React UI 组件
├── functions/ # 所有业务逻辑的服务器函数
├── lib/ # 共享工具和服务 (AI、数据库、工作流)
│ ├── ai/ # AI 模型配置
│ ├── db/ # Drizzle ORM 数据库模式
│ ├── services/ # 核心业务服务
│ └── workflows/ # Cloudflare Workflows 定义
├── routes/ # TanStack Router 文件系统路由
└── ...

❓ 常见问题

  • 没有 API 密钥可以试用吗?
    可以启动本地开发环境查看 UI,但需要配置 Fal.ai 和 OpenRouter 密钥才能使用 AI 生成功能。
  • 数据存储在哪里?
    本地开发存储在 Miniflare 模拟的 D1 数据库中;生产环境部署在 Cloudflare D1 上。
  • 是否支持其他 AI 提供商?
    目前核心生成依赖 Fal.ai,LLM 任务使用 OpenRouter(可接入多种模型)。未来可能扩展。
  • 如何贡献代码?
    请先阅读 CONTRIBUTING.md,查看标记为 good first issue 的问题,并遵循项目的代码规范和 PR 流程。

总结

OpenStory 为从文本脚本到 AI 视频内容创作提供了一个现代化的全栈平台。推荐开发者通过 bun dev 快速启动本地环境进行探索,并配置 Fal.ai 和 OpenRouter 密钥以体验核心生成流程。其技术栈完全基于 Cloudflare 生态,使得部署和扩展非常便捷。如果你需要构建 AI 视频生成应用或创作工具,这是一个值得关注和贡献的优秀开源项目。