cerul-ai/cerul-app

GitHub: cerul-ai/cerul-app

一款开源、本地优先的自托管媒体搜索应用,能自动转录并语义索引视频和音频内容,让用户快速检索到精确片段。

Stars: 2 | Forks: 1


Cerul

Cerul App

A self-hosted second brain for everything you watch and hear.

Point it at your folders, YouTube channels, and podcast feeds. Cerul watches them locally, transcribes with provider keys you control or local models, and indexes the results on your machine — then lets you search by meaning across speech and on-screen content, and jump straight to the moment, from a desktop app, a global overlay, or the Cerul Core API.

Get the app · Website · Main Repo · Follow on X · Join Discord

License Platforms Status

English · 简体中文

Cerul App — 本地搜索你观看和收听的内容

## 为什么选择 Cerul App 你学到的大部分知识都以视频和音频的形式存在——演讲、播客、讲座、通话录音——而这也是最难搜索的内容。文字记录只能捕捉到*说过的话*;其余内容则被锁定在你再也不会去翻阅的文件中。 Cerul App 将你自己的媒体转化为可搜索的、**本地优先**的记忆: - **你的设备,你的数据。** 媒体、文字记录和向量索引全部保留在磁盘上。推理过程通过*你*控制的提供商密钥运行,或完全使用本地模型——无需 Cerul 账户。 - **按语义搜索。** 混合检索将全文检索(SQLite/FTS)与向量检索(内置的本地 [Qdrant](https://qdrant.tech))相结合,让你找到特定的时刻,而不仅仅是关键词。 - **随时待命,毫不打扰。** 全局快捷键悬浮窗、菜单栏托盘、后台索引以及开机自启,让它随时只需一键之遥。 - **为 Agent 准备就绪。** Cerul Core 在 `127.0.0.1:7777` 上暴露了本地 REST API,以便编程 Agent 和脚本能查询你的资料库。 ## 工作原理 索引流水线专为可靠性而构建——即使嵌入失败,文本搜索依然可用: 1. **获取**来自本地文件夹、YouTube (`yt-dlp`) 或播客 RSS 的媒体。 2. **提取**音频并使用 `ffmpeg` 采样帧。 3. **转录**通过远程 API 提供商或本地 Qwen3-VL / MLX 运行时进行。 4. **索引文本**立即写入 SQLite/FTS——即刻可搜索。 5. **嵌入**在嵌入成功后,转录分块并将其向量写入 Qdrant。 ## 来源与界面 | 来源 | 界面 | 推理 | |---|---|---| | 本地文件夹 | 桌面窗口(资料库、来源、设置、详情) | **远程 API** — 你的提供商密钥(默认) | | YouTube 频道与视频 | 全局搜索悬浮窗(快捷键) | **本地模型** — Qwen3-VL / MLX (macOS arm64) | | 播客 RSS 订阅源 | 本地 REST API (`127.0.0.1:7777`) | | ## 快速开始 ``` git clone https://github.com/cerul-ai/cerul-app.git cd cerul-app pnpm install ./run.sh ``` 要在清除构建缓存后进行干净的重新构建,请执行: ``` ./rebuild.sh ``` ## 配置 在应用的 **Settings → Models** 界面配置提供商连接。也支持兼容 OpenAI 的 endpoint:输入 API 基础 URL,例如 `https://api.lazu.ai/v1`,然后使用模型发现功能或直接输入模型 ID。 对于源码开发,`run.sh` 也可以加载带有默认提供商值的本地 `.env` 文件。这仅为开发者提供便利: ``` # 语音转写 (ASR) CERUL_ASR_MODEL=whisper-1 CERUL_ASR_API_KEY=... CERUL_ASR_BASE_URL=https://api.openai.com/v1 # Embeddings CERUL_EMBEDDING_MODEL=... CERUL_EMBEDDING_API_KEY=... CERUL_EMBEDDING_BASE_URL=... ``` 你也可以在应用的 Models 设置中切换到完全本地模型(Qwen3-VL / MLX)。 ## Cerul Core API 应用运行后,即可通过 HTTP 查询你的资料库——这对于 Agent 和自动化非常方便: ``` # 健康检查 curl 127.0.0.1:7777/health # 按语义搜索 curl -X POST 127.0.0.1:7777/search \ -H 'content-type: application/json' \ -d '{"q": "what did they say about scaling laws"}' ``` 其他路由涵盖源 (`/sources`)、项目 (`/items`) 和重新索引。完整的契约实时提供于 `127.0.0.1:7777/openapi.json`。 ## 项目结构 ``` apps/ desktop/ Frontend UI (library, sources, settings, overlay) electron-shell/ Electron runtime, tray, hotkeys, media streaming crates/ Rust core — API, storage, indexing, search, sources mlx-sidecar/ Local model runtime (Qwen3-VL / MLX, macOS arm64) scripts/ Build, packaging, and smoke-test scripts ``` ## 状态与路线图 Cerul App 目前处于 alpha 阶段。当前版本:**0.0.31**。基础功能已实现端到端闭环,并且发布流程现在要求公共 macOS 制品必须通过签名、公证(notarization)以及安装版本的冒烟测试覆盖。 **目前可用功能** - Electron 桌面外壳、本地 REST API、存储和索引流水线 - 混合(FTS + 向量)搜索、搜索悬浮窗、托盘、通知、开机自启 - 文件夹、YouTube 和 RSS 来源;远程 API 和本地模型推理 **下一版本的重点强化** - Windows/Linux 打包与签名 - 更新元数据和自动更新发布检查 - 更广泛的安装版本发布冒烟测试覆盖 - 第三方二进制许可证审查(`ffmpeg`、`yt-dlp`、`qdrant`) ## 这与 Cerul 的契合点 Cerul App 是 [Cerul](https://github.com/cerul-ai/cerul) 平台中**源码可见、可自托管**的层级——在你自己的机器上使用你自己的密钥运行。[Cerul Cloud](https://cerul.ai) 是为希望获得托管式索引、视频搜索 API 以及账户同步的团队提供的托管服务。该应用完全可以独立运行;Cloud 账户是可选的。Cerul Cloud 账户后端不包含在此代码库中;桌面客户端仅在你登录时调用其公共账户 API。 ## 项目治理 - [`SECURITY.md`](SECURITY.md)、[`PRIVACY.md`](PRIVACY.md)、[`CONTRIBUTING.md`](CONTRIBUTING.md)、[`THIRD_PARTY_LICENSES.md`](THIRD_PARTY_LICENSES.md) 和 [`TRADEMARKS.md`](TRADEMARKS.md)。 ## 贡献 欢迎提交 issue 和 pull request。在开发时,请在提交 PR 前验证你的更改: ``` cargo check --workspace pnpm --filter @cerul/desktop build scripts/smoke.sh ``` ## 许可证 [FSL-1.1-ALv2](LICENSE) © Cerul。源码可见;每个版本在发布两年后转换为 Apache-2.0。
标签:可视化界面, 多媒体搜索, 本地索引, 桌面应用, 知识管理, 自托管, 语义搜索, 语音转写, 通知系统