[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80450":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":13,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":14,"lastSyncTime":28,"discoverSource":29},80450,"lingji-cut","yoqu\u002Flingji-cut","yoqu","Open-source video creation tool",null,"TypeScript",336,71,3,2,0,75,282,22,5.57,"Apache License 2.0",false,"main",true,[],"2026-06-12 02:04:02","# Lingji Cut \u002F 灵剪\n\n![Lingji Cut hero](docs\u002Fassets\u002Flingji-cut-hero.png)\n\n🌐 **[访问官网](https:\u002F\u002Fyoqu.github.io\u002Flingji-cut-homepage\u002F)** — 在线了解灵剪的功能特性、使用演示和快速上手指南。\n\n**Lingji Cut（灵剪）** 是一个本地优先的开源 AI 视频创作工作台。它把内容创作中分散的环节串在一起：写稿、素材管理、AI 审稿、语音合成、字幕处理、时间线剪辑、视觉卡片、封面生成和视频导出。\n\n它不是单一的视频播放器或字幕工具，而是面向内容创作者的桌面端创作环境。你可以从一份原始素材开始，逐步生成口播稿、音频、字幕、信息卡和最终视频，也可以直接导入已有音频 \u002F 字幕进入编辑器。\n\n## Highlights\n\n- **AI 写稿工作台**：管理 `original.md` \u002F `script.md`，支持多文件标签、稿件资源、搜索替换、版本历史、AI 生成、AI 审稿和批注采纳。\n- **一站式视频工作台**：在同一个界面里管理素材、预览、Inspector、时间线和导出配置。\n- **自动口播流程**：支持从文稿触发 TTS、字幕解析、内容分析、封面候选和视觉卡片生成。\n- **专业时间线编辑**：支持音频、字幕、图片、视频、文字、AI 卡片、多视觉轨、多音频轨、拖拽、吸附、拆分、裁剪、复制 \u002F 剪切 \u002F 粘贴和轨道锁定。\n- **多 Provider AI 配置**：支持 OpenAI 兼容模型、Gemini、LM Studio、图片生成 Provider、MiniMax TTS 等配置。\n- **Agent \u002F MCP 集成**：应用内可连接 Claude ACP Runtime，并提供 `lingji_*` MCP 工具给 Claude Code \u002F Codex \u002F Gemini 等客户端操作脚本工作台。\n- **Pipeline \u002F 自动化**：通过 MCP `pipeline.*` 工具集（create_project、open_project、get\u002Fcancel\u002Flist_task、get_settings 等）把项目创建、状态查询、流程编排开放给外部 Agent。\n- **手动 image\u002Fvideo 卡**：除 AI 生成卡外，可直接通过表单创建 image\u002Fvideo 卡，或导入本地视频 \u002F 音频素材。\n- **Remotion 导出**：通过 Remotion 渲染 `PodcastComposition`，支持 H.264 MP4、分辨率与质量配置、导出进度展示。\n- **本地优先**：项目文件保存在用户选择的本地目录，仓库不需要保存任何真实 API Key。\n\n## Screenshots\n\n更多界面截图在 [`宣传制作\u002F`](宣传制作\u002F) 和 [`pics\u002F`](pics\u002F) 目录中。仓库首页宣传图位于 [`docs\u002Fassets\u002Flingji-cut-hero.png`](docs\u002Fassets\u002Flingji-cut-hero.png)。\n\n## Tech Stack\n\n- Electron 41 + electron-vite\n- React 19 + TypeScript 6\n- Remotion 4\n- Zustand\n- CodeMirror 6\n- Framer Motion\n- TailwindCSS 4 + 自研 macOS 专业工具 UI 组件\n- MCP SDK + Claude ACP 集成\n- Vitest\n\n## Quick Start\n\n### 1. Install\n\n```bash\nnpm install\n```\n\n仓库包含项目级 `.npmrc`，默认使用 npmmirror 的 npm \u002F Electron \u002F Node 原生模块镜像，适合国内网络环境。npm 11 可能提示 `Unknown project config \"electron_mirror\"` 等 warning，这通常不代表安装失败。\n\n如果 Electron 下载被本机 npm 配置忽略，可以手动设置：\n\n```bash\nexport ELECTRON_MIRROR=\"https:\u002F\u002Fnpmmirror.com\u002Fmirrors\u002Felectron\u002F\"\nexport npm_config_disturl=\"https:\u002F\u002Fnpmmirror.com\u002Fmirrors\u002Fnode\u002F\"\nnpm install\n```\n\nWindows PowerShell：\n\n```powershell\n$env:ELECTRON_MIRROR=\"https:\u002F\u002Fnpmmirror.com\u002Fmirrors\u002Felectron\u002F\"\n$env:npm_config_disturl=\"https:\u002F\u002Fnpmmirror.com\u002Fmirrors\u002Fnode\u002F\"\nnpm install\n```\n\n### 2. Development\n\n```bash\nnpm run dev\n```\n\n### 3. Build\n\n```bash\nnpm run build\n```\n\n### 4. Package\n\nmacOS：\n\n```bash\nnpm run dist:mac\n```\n\nWindows：\n\n```bash\nnpm run dist:win\n```\n\n默认产物在 `release\u002F` 下：\n\n- `release\u002F灵机剪影-darwin-arm64\u002F灵机剪影.app`\n- `release\u002F灵机剪影-darwin-x64\u002F灵机剪影.app`\n\n当前打包产物是本地 `.app`，尚未接入正式签名、notarization、DMG \u002F PKG 分发。\n\n### 5. Test\n\n```bash\nnpm test\n```\n\n运行单个测试：\n\n```bash\nnpx vitest run tests\u002Feditor.test.tsx\n```\n\n## Common Commands\n\n```bash\nnpm run dev          # Start Electron + Vite dev server\nnpm run build        # Build main, preload and renderer\nnpm run package:win  # Package Windows app directory\nnpm run dist:win     # Build + package Windows app directory\nnpm run package:mac  # Package macOS .app\nnpm run dist:mac     # Build + package macOS .app\nnpm test             # Run Vitest\nnpm run test:watch   # Run Vitest in watch mode\n```\n\n## Typical Workflow\n\n### 从素材到视频\n\n1. 在欢迎页新建或打开一个本地项目目录。\n2. 导入原始文稿，或通过链接导入视频并生成转录文本。\n3. 在写稿工作台生成 \u002F 编辑 `script.md`。\n4. 使用 AI 审稿批注优化文稿。\n5. 触发 AI 视频流水线：TTS、字幕解析、内容分析、封面生成、信息卡排布。\n6. 进入视频工作台调整时间线、素材、字幕、卡片和动画。\n7. 导出 MP4。\n\n### 从已有音频和字幕开始\n\n1. 新建或打开项目目录。\n2. 导入音频和 SRT。\n3. 在视频工作台编辑时间线。\n4. 可选：运行 AI 分析、生成卡片或封面。\n5. 导出 MP4。\n\n## AI Configuration\n\nLingji Cut 主要通过应用内\"设置\"页面保存 AI 配置，不依赖仓库内 `.env` 存放密钥。\n\n主要配置区域：\n\n- **AI 基础配置**：管理 OpenAI 兼容、Gemini、LM Studio 等 LLM Provider。\n- **图片生成**：管理即梦、OpenAI Image、MiniMax、豆包、Imagen、通义万相和自定义图像 Provider。\n- **视频生成**：管理视频 Provider 配置（与 image\u002Fvideo 卡片表单联动）。\n- **TTS 语音合成**：配置 MiniMax API Key、音色、语速、音量、音调、情绪和模型。\n- **提示词配置**：管理内置 \u002F 全局 \u002F 项目级提示词，并为不同 Prompt Kind 绑定不同 Provider（含 `card.image`、`card.video`）。\n- **AI Agent**：配置 Claude ACP Runtime、权限策略和 Agent API Key。\n- **MCP 服务**：启动本地 MCP Server，并注册到 Claude Code \u002F Codex \u002F Gemini。\n- **配置备份**：导出、预览、导入全局设置与 Agent 配置备份。\n\n> 请不要把真实 API Key、Session ID、Cookie 或访问令牌提交到源码、测试、文档或截图中。\n\n## Project Files\n\n应用运行时会把创作数据保存在用户选择的项目目录中。常见项目文件包括：\n\n- `project.json`：统一工程文件，包含 `timeline`、`aiAnalysis`、`script` 等段落。\n- `original.md`：原始素材 \u002F 转录文本。\n- `script.md`：口播成稿。\n- `podcast-audio.mp3`：TTS 生成的口播音频。\n- `podcast-subtitles.srt`：口播字幕。\n- `podcast-subtitles.original.srt`：TTS 初始字幕备份。\n- `covers\u002F`：封面候选图。\n- `ai-cards\u002F`：AI 视觉卡片资源。\n- `imports\u002F`：外部视频 \u002F 音频导入产物。\n- `configs\u002Fprompts\u002F`：项目级提示词覆盖。\n\n历史版本中的 `timeline.json`、`ai-analysis.json`、`script-state.json` 会在加载旧工程时迁移到 `project.json`。\n\n## Repository Structure\n\n```text\nelectron\u002F\n  acp\u002F                  Claude ACP Runtime、权限策略、Agent 配置\n  conversations\u002F         Agent 会话数据库与 IPC\n  mcp\u002F                   Lingji MCP Server、工具注册、客户端注册配置\n  pipeline\u002F              Pipeline 任务编排、TaskRegistry、HeadlessProjectContext\n  script-history\u002F        脚本文稿版本历史\n  video-import\u002F          视频导入、抽音频、ASR、转录落盘\n  main.ts                Electron 主进程、IPC、Remotion 渲染\n  preload.ts             Renderer 安全桥接\n  project-file.ts        project.json 读写与旧工程迁移\n\nsrc\u002F\n  components\u002F            编辑器、时间线、Inspector、AI 面板、Agent UI\n  components\u002Fscript\u002F     脚本工作台文件树、批注、导入预览、版本 UI\n  components\u002Fsettings\u002F   AI、TTS、Agent、MCP、提示词、备份配置页\n  hooks\u002F                 AI 视频流水线、连接状态、缩略图等 hooks\n  lib\u002F                   AI、提示词、Motion、字幕、导出、持久化、IPC 客户端\n  pages\u002F                 Setup、Editor、ScriptWorkbench、Settings\n  remotion\u002F              Remotion Composition 与 overlay 渲染\n  store\u002F                 timeline、ai、script、agent、task-progress\n  ui\u002F                    macOS 风格基础组件、patterns、tokens、motion\n  types.ts               时间线核心类型\n  types\u002Fai.ts            AI 卡片、Provider、提示词绑定类型\n\ntests\u002F                   Vitest 单元与组件测试\ndocs\u002Fassets\u002F             README 与宣传素材\ndocs\u002Fsuperpowers\u002F        设计规格与实施计划沉淀\n```\n\n## Architecture Notes\n\n- Renderer 不直接使用 Node API。主进程能力通过 `electron\u002Fpreload.ts` 暴露，并在 `src\u002Flib\u002Felectron-api.ts` 声明类型。\n- 新增或修改 IPC 时，通常需要同步 `electron\u002Fmain.ts`、`electron\u002Fpreload.ts`、`src\u002Flib\u002Felectron-api.ts` 和对应测试。\n- 工程主存储是 `project.json`。新增工程段落前需要评估迁移、并发写锁和旧数据兼容。\n- Remotion 导出入口固定为 `src\u002Fremotion\u002Findex.ts`，Composition ID 固定为 `PodcastComposition`。\n- 导出前会把绝对路径素材映射到临时 public 目录，避免 Remotion 打包时无法访问本地文件。\n- AI 网页卡片的 `srcDoc` 会落盘到 `ai-cards\u002F`，持久化后优先保存 `src` 路径。\n- 所有耗时操作应接入 `src\u002Fstore\u002Ftask-progress.ts` 和底部 `AppStatusBar` 统一进度系统。\n- UI 新实现应遵循 `DESIGN.md` 的 macOS 专业创作工具规范。\n- Agent \u002F MCP 操作脚本文稿时，应优先通过 `lingji_*` MCP 工具进入编辑器状态。\n\n## 开发建议\n\n- 修改时间线结构前，先看 `src\u002Ftypes.ts`、`src\u002Fstore\u002Ftimeline.ts`、`src\u002Flib\u002Ftimeline-tracks.ts`、`src\u002Flib\u002Ftimeline-placement.ts`。\n- 修改 AI 卡片结构前，先看 `src\u002Ftypes\u002Fai.ts`、`src\u002Flib\u002Fai-persistence.ts`、`src\u002Fstore\u002Fai.ts`、`src\u002Fremotion\u002Fcards\u002F`。\n- 修改脚本工作台前，先看 `src\u002Fpages\u002FScriptWorkbench.tsx`、`src\u002Fstore\u002Fscript.ts`、`src\u002Flib\u002Fscript-persistence.ts`。\n- 修改提示词前，先看 `src\u002Flib\u002Fprompts\u002F`、`electron\u002Fprompts-io.ts`、`electron\u002Fprompt-bindings-io.ts`。\n- 修改 Agent \u002F MCP 前，先看 `electron\u002Facp\u002F`、`electron\u002Fmcp\u002F`、`src\u002Fcomponents\u002Fagent\u002F`。\n- 修改 Pipeline 前，先看 `electron\u002Fpipeline\u002F` 与 `electron\u002Fmcp\u002Ftools.ts` 中的 `pipeline.*` 注册。\n- 修改导出链路前，先看 `electron\u002Fmain.ts`、`src\u002Flib\u002Fremotion-assets.ts`、`src\u002Fremotion\u002FRoot.tsx`。\n\n## Security\n\n- `.env`、`.tmp\u002F`、`work\u002F`、`.agents\u002F`、`.claude\u002F`、构建产物和本地运行产物已加入 `.gitignore`。\n- 仓库不应包含真实 API Key、Session ID、Cookie、私钥、配置备份或用户项目数据。\n- 如果你曾经在旧仓库或本地历史中提交过真实密钥，请立即在对应服务侧轮换密钥。\n\n## 已知边界\n\n- 桌面优先，最小窗口约束约为 `1100 × 760`，暂不以移动端为主要目标。\n- Setup 的传统导入仍以音频 + SRT 为主；脚本到视频流程依赖 MiniMax TTS。\n- 抖音导入当前使用 `bcut` 转录链路，外部服务可用性会影响结果。\n- AI 分析、图片 \u002F 视频生成、TTS、Agent Runtime 都依赖用户配置的外部服务。\n- macOS 打包尚未覆盖正式签名和分发链路。\n\n## Contributing\n\n欢迎提交 issue、建议和 PR。建议在较大改动前先说明你想修改的模块和目标，尤其是时间线、工程存储、IPC、Remotion 导出和 AI Provider 相关改动。\n\n## 友情链接\n\n- [LINUX DO](https:\u002F\u002Flinux.do) — 新一代开源社区\n\n## 联系作者\n\n- X \u002F Twitter：[@LYoqu60097](https:\u002F\u002Fx.com\u002FLYoqu60097)\n- 微信：`yoqu2020`\n\n  ![微信二维码](docs\u002Fcontact\u002Fwechat-qr.png)\n\n## License\n\nApache License 2.0. See [LICENSE](LICENSE).\n","灵剪（Lingji Cut）是一个本地优先的开源AI视频创作工具，旨在为内容创作者提供从写稿到视频导出的一站式解决方案。其核心功能包括AI辅助写稿与审稿、素材管理、自动口播生成、时间线编辑以及最终视频渲染。技术上，它基于Electron和React构建，并集成了多种AI服务提供商的支持，允许用户灵活选择不同的AI模型进行文本生成、语音合成等任务。此外，通过MCP协议，灵剪还支持外部自动化流程集成。该工具特别适合于需要频繁制作解说类视频的内容创作者使用，能够有效提升从创意构思到成品发布的整个工作流效率。","2026-06-11 04:00:47","CREATED_QUERY"]