GitHub Hot Board

GitHub Hot Board · Архив репозитория

sumarilkkxx/Mora

本地优先的开源 AI 商业推广视频工作台,覆盖从脚本到成片的完整工作流:文本 LLM 编写脚本,图像模型生成素材,视频模型支持 AI 视频直出,快速完成配音、字幕、剪辑与导出。 | A local-first, open-source workspace for end-to-end AI promotional video. (Описание взято из самого репозитория.)

TypeScript

Данные на October 29sumarilkkxx

Лучшее место

#178

Недооценённые жемчужины

100

Всего звёзд

23

Всего форков

1

Дней в рейтингах (30 дн.)

Лицензия: AGPL-3.0Последний push: October 2Открытые issues (вкл. PR): 0Собирается с 2026-10-25; неизвестно = ещё не собрано

Документация проекта

Mora 本地优先 AI 视频工作台:文本模型生成脚本,组织本地或 AI 素材,并完成配音、字幕和最终成片

中文 · English

Mora

(Multimodal Orchestration for Retail Automation)

本地优先的 AI 视频工作台,从脚本、素材到配音、字幕与成片导出。

用文本模型编写脚本与分镜,组合本地、图库或 AI 素材,在同一个项目中完成制作并管理任务和版本。

真实案例 · 工作方式 · 快速开始 · 技术架构 · 桌面版 · Roadmap · English

Version v0.3.0.0 License AGPL-3.0-only Local-first with FFmpeg and SQLite Status alpha Windows and macOS desktop targets

项目故事:从商品图片和拍摄原片开始

Mora 最初面向两种制作需求:用一张商品图片和几句介绍制作商品视频,以及将已经拍好的原片剪辑成适合发布的短片。

从商品图片开始时,可以用模型编写脚本、规划分镜并生成镜头。已有拍摄原片时,则可以分析素材、调整节奏,再完成配音、字幕和本地合成。

下面是这两种制作方式的案例。点击预览图可播放完整视频。

工作流一:一张商品图和简单介绍,生成完整商品短片

宠物饮水机短片以一张商品图片和一段简短介绍为输入。文本模型编写脚本、规划镜头顺序和画面要求,再通过图片或视频生成补齐镜头。脚本、候选素材和成片版本都保存在项目中。

点击播放:Mora 以文本模型组织脚本、镜头节拍与参考画面形成的 30 秒宠物饮水机商品短片

生成式商品短片 · 30.02 秒 · 1080×1920
商品图片 + 简单介绍 → 文本脚本与分镜 → 生成镜头 → 完整视频版本

工作流二:已有拍摄素材,在本地完成智能剪辑

理发店短片以一段已拍摄的竖屏视频为输入。Mora 拆分场景、分析内容,按推广脚本安排镜头,再生成配音和字幕,通过 FFmpeg 在本地渲染。原片、编辑计划和历史成片分别保存,方便比较和重新编辑。

点击播放:Mora 将已有理发店原片拆分场景、整理脚本节拍、生成配音字幕并在本地重新渲染

已有素材剪辑 · 16.4 秒 · 本地渲染
上传原片 → 场景拆分 → 整理节拍 → 配音字幕 → FFmpeg 本地成片

Important

自动生成、改写或审查脚本需要文本模型,可连接自带 Key 的云端服务或本机 Ollama。手动编写和导入脚本无需调用模型。各步骤的依赖见哪些步骤需要模型,联网要求见常见问题。

Mora 解决什么问题

1. 统一管理项目资料与制作进度

脚本、分镜、商品资料、素材来源、配音、字幕、模型任务、合成记录和导出版本保存在同一个项目中,便于查找素材、查看进度和比较版本。

2. 按脚本组织视频制作

文本模型根据商品卖点、受众、平台、时长和创作形式编写脚本。脚本用于安排画面、配音长度、字幕时间轴和视频节奏,支持手动编辑和导入。

3. 免费本地步骤与可能计费的调用分开

本地转写、场景拆分、字幕、FFmpeg 合成和文件管理,与第三方模型及语音服务的调用分别呈现。模型费用由对应服务商收取,Mora 不代收;具体价格请查看服务商的计费说明。

4. 查看失败原因并恢复任务

流水线阶段、云端任务、合成记录和错误原因持续落库。中断后可以从断点继续,已完成且可能计费的步骤不会因为页面刷新被无意重复提交。

工作方式

项目按最终视频的制作方式区分路径:Mora 与 FFmpeg 渲染的成片归入本地路径,云端视频模型直接生成的成片归入生成式视频路径。已有原片可以进入专门的剪辑工作流,在本地完成后期。

flowchart TD
    INPUT["商品资料 / 创作主题 / 已有视频"] --> SCRIPT_SOURCE{"脚本从哪里来?"}
    SCRIPT_SOURCE -->|"自动生成、改写或审查"| TEXT_LLM["文本大模型<br/>BYOK 云端服务或本地 Ollama"]
    SCRIPT_SOURCE -->|"手动编写或导入"| MANUAL["可编辑脚本"]
    TEXT_LLM --> SCRIPT["结构化脚本<br/>分镜、节拍与画面约束"]
    MANUAL --> SCRIPT
    SCRIPT --> FINAL_SOURCE{"最终视频如何产生?"}
    FINAL_SOURCE -->|"Mora + FFmpeg 本地渲染"| LOCAL["本地素材合成<br/>本地 / 图库 / AI 素材"]
    FINAL_SOURCE -->|"视频模型直接生成最终视频"| GENERATIVE["生成式视频<br/>云端任务与结果回存"]
    FINAL_SOURCE -->|"从已经拍好的原片继续"| EDIT["已有素材剪辑<br/>场景拆分 / 文字剪辑 / 本地重渲染"]
    LOCAL --> EXPORT["版本、预览、质检与导出"]
    GENERATIVE --> EXPORT
    EDIT --> EXPORT
Loading

路径 A:本地素材合成

文本模型或手动脚本 → 本地/图库/AI 图片素材 → 配音 → 字幕 → BGM → FFmpeg 合成 → 导出

  • 使用本地上传、项目历史素材和已配置的开放素材源。
  • 支持配音、字幕烧录、卡拉 OK、BGM、音量闪避、画幅和渲染预设。
  • AI 图片也可作为本地合成的素材。

路径 B:生成式视频

文本脚本 → 视觉约束 → 图片/视频模型 → 候选素材或云端最终视频 → 回存项目 → 导出

  • 图片、视频和参考生能力分别选择平台与模型。
  • 请求前检查输入能力、分辨率、比例、时长和参考素材要求。
  • 云端任务与本地合成状态分离,避免误判项目来源或重复计费。

路径 C:已有素材剪辑

上传原片 → LLM 理解画面与声音 → 确认推广文案 → 选择剪辑方案 → 配音字幕 → 本地渲染与质检 → 导出

  • 适合口播、探店、课程、访谈和已经拍好的竖屏素材。
  • “AI 智能成片”使用视觉大模型理解场景和可见依据,结合商品或服务、目标顾客、卖点和期望行动生成三种推广文案方向;用户可以逐步确认、分段修改或按选填要求重写。
  • 确认文案后生成三套可解释的镜头方案,标出系统推荐项,并可查看每个镜头的成片时间、原片区间、文案和画面依据。
  • 选定方案后自动完成旁白、中文字幕、FFmpeg 本地剪辑和云端视觉质检;任务、原片、方案与成片版本均可追踪和恢复。
  • 同时支持引导式剪辑与基于转写文本的精细删改。
  • 原片、编辑计划和历史版本持续保留,方便比较与回退。

哪些步骤需要模型

阶段 是否必需 运行位置与说明
手动编写/导入脚本 不需要模型 完全由用户编辑并保存在项目中。
自动生成、改写、审查脚本 需要文本大模型 可使用 OpenRouter、DeepSeek、Kimi、GLM、MiniMax、豆包等 OpenAI 兼容服务,或本机 Ollama。
商品图片理解 按需 使用支持视觉输入的模型;失败时脚本仍可根据商品名和卖点继续生成。
AI 智能剪辑 需要文本与视觉大模型 视觉模型理解原片场景并复核成片,文本模型生成和审查推广文案;镜头编排、本地转写、配音、字幕与 FFmpeg 渲染由本地工作流执行。
生成新图片或视频镜头 按需 只在所选路径缺少画面时调用对应服务商。
配音 按需 可使用 Edge TTS、平台 TTS、已有音频或项目音色配置。
场景拆分、字幕与合成 不需要生成模型 FFmpeg/ffprobe 与本地媒体链路完成;本地转写能力可按环境使用。

快速开始

环境要求

  • Node.js 20+
  • pnpm 10+
  • Windows 10/11、macOS 或常见 Linux 开发环境
  • 项目依赖携带 FFmpeg/ffprobe,无需额外安装系统 FFmpeg
git clone https://github.com/sumarilkkxx/Mora.git mora
cd mora
pnpm install
pnpm dev

打开 http://localhost:3000。首次访问数据库功能时,Drizzle 会把迁移应用到本地 data/sqlite.db。

首次使用建议

  1. 在“设置”中配置文本脚本模型;如果只打算手动导入脚本,可以暂时跳过。
  2. 选择云端 OpenAI 兼容服务并填写自己的 Key,或连接 http://127.0.0.1:11434/v1 的本机 Ollama。
  3. 从商品资料、创作主题或已有视频创建项目。
  4. 确认脚本后再选择本地素材、生成式镜头或已有视频剪辑路径。
  5. 在导出前检查素材授权、模型费用、字幕、音量和平台 AIGC 标识要求。

CLI:从一句主题开始

CLI 的 create 命令会自动编写脚本,因此必须提供文本模型:

export MORA_LLM_BASE_URL="https://your-endpoint.example/v1"
export MORA_LLM_API_KEY="your-key"
export MORA_LLM_MODEL="your-model"

pnpm cli -- create --topic "在家手冲咖啡" --duration 25 --style lifestyle --karaoke

Windows PowerShell 使用 $env:MORA_LLM_BASE_URL=...。运行 pnpm cli -- --help 可查看商品链接、脚本导入、配音译制、平台导出、QC、发布门禁、素材授权清单和封面等命令。

开发检查

pnpm lint
pnpm test
pnpm build

能力地图

阶段 当前能力
输入与资产 商品图片/链接读取、手动商品资料、创作主题、视频上传、商品库、人物资产、项目素材库
脚本与分镜 结构化字段、文本模型脚本、手动脚本、模板化结构、镜头节拍、脚本检查、分镜描述、创作意图与视觉约束
画面与素材 本地素材、Pexels、Pixabay、Openverse、Coverr 等适配;图片生成、图生视频、参考生视频
声音与字幕 Edge TTS、平台 TTS、音色语速、字幕烧录、卡拉 OK、BGM、音量闪避、字幕导出
编辑与合成 LLM 智能剪辑、场景理解、推广文案与候选方案、系统推荐、结构复刻、文字剪辑、运镜与 Look、FFmpeg 合成、封面抽帧、版本记录
生产管理 持久化流水线、断点状态、批量制作、任务中心、模型预检、生产控制台、成片质检
导出与发布 多平台规格、预览下载、发布文案包、素材来源记录、AIGC 标识与发布检查
开发者入口 Web UI、HTTP API、零依赖 Node CLI、Electron 桌面封装、SQLite/Drizzle 数据层

产品界面

创作台 脚本工作区 生产控制台
Mora 创作台 Mora 脚本工作区 Mora 生产控制台
本地合成 文字剪辑 任务中心
Mora 本地视频合成工作区 Mora 文字剪辑工作区 Mora 全局任务中心

技术架构

Mora 在 Web 开发模式和 Electron 桌面版中复用同一个 Next.js 应用。桌面版会启动一个只监听本机地址的 standalone 服务,并把 SQLite、上传文件、缓存和成片定向到系统用户数据目录;FFmpeg 与 ffprobe 随应用打包。

flowchart TB
    subgraph ENTRY["访问层"]
        WEB["Next.js Web UI"]
        CLI["Node CLI"]
        DESKTOP["Electron 桌面壳"]
    end

    subgraph LOCAL["本机运行时"]
        APP["Next.js App Router<br/>页面 + API Routes + i18n"]
        CORE["脚本引擎 + Provider 适配器<br/>流水线 Runner + 任务中心"]
        DB[("SQLite + Drizzle<br/>项目 / 脚本 / 任务 / 版本")]
        FILES[("本地文件<br/>上传 / 缓存 / 成片 / 日志")]
        MEDIA["FFmpeg / ffprobe<br/>合成 / 字幕 / 音频 / 媒体分析"]
        OUTPUT["版本化 MP4 / 字幕 / 发布包"]
    end

    subgraph OPTIONAL["按需连接的第三方服务"]
        LLM["文本或视觉大模型"]
        GEN["图片 / 视频生成平台"]
        STOCK["开放素材 / 托管语音"]
    end

    WEB --> APP
    CLI --> APP
    DESKTOP -->|"启动本地 standalone 服务"| APP
    APP --> CORE
    CORE <--> DB
    CORE <--> FILES
    CORE --> MEDIA
    MEDIA --> OUTPUT
    CORE -. "BYOK 请求" .-> LLM
    CORE -. "按需生成" .-> GEN
    CORE -. "按需检索或配音" .-> STOCK
    LLM -. "结构化脚本/分析" .-> CORE
    GEN -. "候选素材或最终视频" .-> FILES
    STOCK -. "素材或音频" .-> FILES
Loading

目录职责

路径 职责
src/app/ App Router 页面、工作区和 HTTP API。
src/lib/script-engine/ 商品/主题脚本提示词、结构化生成与解析。
src/lib/providers/ 图片、视频、素材和其他外部能力适配器。
src/lib/video-composer/ FFmpeg 合成、字幕、音频和媒体处理。
src/lib/db/、drizzle/ SQLite schema、查询与迁移。
electron/ 桌面窗口、本地服务启动、用户数据目录与二进制路径。
bin/mora.mjs CLI 入口与端到端自动制作命令。

持久化对象

  • 项目保存内容类型、制作路径、目标时长和当前状态。
  • 脚本保存结构化镜头、角色、版本与选中方案。
  • 素材保存本地文件、远程来源、授权信息和项目归属。
  • AI 任务与流水线保存服务商任务、阶段、失败原因和断点。
  • 合成与编辑计划保存输入关系、渲染状态、输出文件和历史版本。

模型、素材与费用

大部分配置在应用“设置”页完成,不要求把 Key 写进仓库。

用途 可选接入
脚本文本模型 OpenRouter、DeepSeek、Kimi、GLM、MiniMax、豆包、其他 OpenAI 兼容端点、本机 Ollama
图片/视频模型 Atlas Cloud、OpenRouter、Replicate、火山引擎、阿里百炼、硅基流动;OpenAI 图片生成与编辑
开放素材 本地素材优先;可选 Pexels、Pixabay、Openverse、Coverr、Jamendo、Freesound 等来源
语音与本地媒体 Edge TTS、平台 TTS、项目音频、FFmpeg/ffprobe、本地转写能力

密钥、余额、地区可用性和内容规则属于对应平台。执行可能计费的生成任务前,请核对模型、时长、分辨率和服务商实时价格。

数据存储与安全

  • 开发数据默认位于仓库 data/;桌面版位于系统的 Mora 用户数据目录。
  • SQLite、上传文件、缓存素材、成片和日志默认保存在本机。
  • 调用脚本、图片、视频、素材或语音服务时,必要请求数据会发送给你配置的第三方平台。
  • 商品链接读取带 SSRF 防护;登录墙、风控页面、地区限制或依赖浏览器 Cookie 的页面可能无法由后端直接读取。

Caution

Mora 是开源软件,不会代替用户完成权利或平台合规审查。 发布或商用前,用户必须自行确认素材授权、肖像权、商标使用、广告规范及平台 AIGC 标识要求,并对最终发布内容负责。

桌面版与安装包

# Next.js standalone + Electron 目录包
pnpm pack:dir

# Windows x64 NSIS 安装包
pnpm dist:win

# macOS DMG(在对应 macOS 架构或 CI runner 上执行)
pnpm dist:mac

GitHub Actions 已配置 Windows x64、macOS Apple Silicon 和 macOS Intel 构建任务,并对最终安装包执行 standalone、SQLite 迁移、FFmpeg/ffprobe、本地 ASR 运行时和核心页面启动检查。Mora 是 GitHub 上的开源项目:普通分支或手动构建标记为 unsigned-dev;正式 tag 在没有证书时生成明确标记的 unsigned 发布包,在配置完整证书后可选生成 signed 发布包。签名与 Apple 公证是信任体验增强,不是当前开源发布的硬门槛。

每个 GitHub Release 同时提供 SHA256SUMS.txt 和安装说明。下载后应先核对 SHA-256;未签名 Windows 安装包可能显示 SmartScreen“未知发布者”,未签名 macOS 安装包可能被 Gatekeeper 阻止。确认下载来自本项目 GitHub Release 且校验和一致后,Windows 可选择“更多信息 → 仍要运行”,macOS 可按住 Control 点击应用并选择“打开”,或在“系统设置 → 隐私与安全性”中选择“仍要打开”。

桌面升级会在启动新版本及执行迁移前,将 SQLite 数据库复制到用户数据目录下的 backups/desktop-upgrades/ 并校验 SHA-256。迁移或启动验证失败时会自动恢复旧数据库,并在 recovery/ 写入恢复说明。应用只检查 GitHub Release 的新版本并提示用户前往官方下载,不会静默下载或自动安装。

版本层 当前约定
Git 标签 v0.3.0.0
npm / Electron SemVer 0.3.0
Windows FileVersion 0.3.0.0
开源发布安装包 默认追加 -unsigned;配置完整签名凭证时追加 -signed
开发安装包 同名追加 -unsigned-dev,不得发布为正式版本

HTTP API 与自动化入口

入口 用途
POST /api/llm/script 根据商品资料与文本模型配置生成并持久化商业脚本。
POST /api/topic/script 从一句主题创建项目并生成多份旁白脚本。
POST /api/project/:id/compose 提交本地合成并返回可轮询的合成记录。
POST /api/project/:id/auto-edit 创建、推进或恢复 AI 智能剪辑任务,包括素材分析、文案、方案、渲染和导出。
GET /api/tasks 汇总流水线、渲染、云端生成和批量任务状态。
GET /api/health 检查运行时、数据库迁移与 FFmpeg/ffprobe 状态。
pnpm cli -- --help 查看从创建、配音、QC 到发布检查的 CLI 命令。

当前已知限制

v0.3.0.0 是首个按正式 GitHub Release 发布的版本,目前存在以下限制:

  • 淘宝、天猫等电商平台的登录墙、动态渲染、验证码、风控和 Cookie 隔离可能导致商品链接无法解析;当前可靠回退方式是手动填写商品信息或上传商品截图。
  • 自动脚本依赖可访问的文本模型;云端端点不可用、额度不足或地区受限时会生成失败,完全离线使用需要手动导入脚本或配置本机 Ollama。
  • 图片、视频、素材和语音服务的模型名称、参数、队列、价格及内容策略可能变化,适配器可能暂时落后于服务商更新。
  • 云端生成和开放素材检索受网络质量、平台限流及任务排队影响,可能出现超时、拒绝或结果延迟;Mora 会保留可恢复状态,但无法保证第三方服务始终可用。

Roadmap

以下功能尚未确定发布日期,优先级会根据使用反馈、Issue 和贡献情况调整。

方向 计划内容
改进商品链接导入 接入平台官方 API、开放接口及平台条款允许的用户授权导入方式,同时保留手动填写资料、上传截图和从商品库导入的选项。
更稳定的 Provider 适配层 建立模型能力清单、参数预检、版本兼容测试和失败降级,减少服务商更新造成的调用中断。
更细的本地后期控制 增强时间轴、字幕、配音、BGM、镜头替换和局部重渲染能力,让智能建议能够落到可编辑的制作步骤。
可追踪的素材与发布信息 完善素材来源、授权记录、模型生成记录、AIGC 标识提示和导出清单,帮助用户在发布前完成自己的合规检查。
跨平台交付与质量验证 持续完善 Windows 与 macOS 安装包、校验文件、升级路径和真实设备测试,降低从源码运行到桌面使用的门槛。

常见问题

本地素材合成是否完全离线?
本地素材、字幕和 FFmpeg 合成本身可以留在本机;但自动写脚本需要文本模型,Edge TTS 或开放素材检索也可能访问网络。手动脚本、本机 Ollama、已有音频和纯本地素材可以把外部请求降到最低。
用了 AI 图片,项目就会显示为 AI 视频吗?
不会。用 AI 图片作为素材进行本地合成,仍属于本地路径。具体分类见[工作方式](#workflow)。
为什么淘宝或天猫链接可能抓取失败?
Mora 的后端抓取服务无法使用你在浏览器中的登录状态。需要登录、验证码或浏览器动态加载的页面可能无法直接解析,平台风控和地区限制也可能影响访问。解析失败时,可以手动填写商品信息或上传截图。
项目数据会自动上传到 Mora 服务器吗?
不会自动上传整个项目。本地数据库与输出文件保存在本机;调用第三方文本、图片、视频、素材或语音服务时,会发送完成该请求所需的数据。详见[数据存储与安全](#数据存储与安全)。

参与贡献

  1. 从现有问题或一个边界清晰的小改动开始。
  2. 新建分支并保持变更聚焦。
  3. 为行为修改补充测试,运行 pnpm lint && pnpm test && pnpm build。
  4. 在 Pull Request 中说明用户场景、前后行为、验证方式,以及是否影响模型费用、数据迁移或桌面打包。

请勿提交 API Key、data/ 中的用户素材、调试日志或桌面签名证书。

许可证

Mora 以 GNU Affero General Public License v3.0 only 发布。如果你修改 Mora 并通过网络向他人提供软件服务,请确认理解 AGPL 的源码提供义务。模型服务、字体和媒体素材仍受各自条款约束,不因项目采用 AGPL 而自动改变。


Mora
Multimodal Orchestration for Retail Automation

Текущие места

  • 178

    Недооценённые жемчужины

    100 звёзд · 23 fork · Всего звёзд (по возрастанию)

    Недооценённые →

Динамика за 30 дней

Накопленные звёзды

Динамика мест

Поставьте бейдж в свой README · sumarilkkxx/Mora[![Поставьте бейдж в свой README](https://git.vaiox.xyz/api/badge/sumarilkkxx/Mora.svg)](https://git.vaiox.xyz/ru/repo/sumarilkkxx/Mora)

Badge · 任何仓库都可以挂 —— 未上榜的仓库显示灰章,上完榜会自动点亮。

<a href="https://git.vaiox.xyz/ru/repo/sumarilkkxx/Mora"><img src="https://git.vaiox.xyz/api/badge/sumarilkkxx/Mora.svg" alt="Поставьте бейдж в свой README" height="20"></a>

← К рейтингам

GitHub Hot BoardМашина времениОбзор联系我们 · Contact