{"id":49643709,"url":"https://github.com/mapleeve/betterainote","last_synced_at":"2026-05-05T22:04:07.205Z","repository":{"id":353590695,"uuid":"1216256888","full_name":"MapleEve/BetterAINote","owner":"MapleEve","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-24T14:22:45.000Z","size":692,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-24T16:37:20.934Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MapleEve.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-20T18:16:15.000Z","updated_at":"2026-04-24T14:22:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/MapleEve/BetterAINote","commit_stats":null,"previous_names":["mapleeve/betterainote"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/MapleEve/BetterAINote","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MapleEve%2FBetterAINote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MapleEve%2FBetterAINote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MapleEve%2FBetterAINote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MapleEve%2FBetterAINote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MapleEve","download_url":"https://codeload.github.com/MapleEve/BetterAINote/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MapleEve%2FBetterAINote/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32669435,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-05T22:04:00.152Z","updated_at":"2026-05-05T22:04:07.197Z","avatar_url":"https://github.com/MapleEve.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003csub\u003e🌐 \u003cb\u003e简体中文\u003c/b\u003e · \u003ca href=\"README.en.md\"\u003eEnglish\u003c/a\u003e · \u003ca href=\"README.ja.md\"\u003e日本語\u003c/a\u003e · \u003ca href=\"README.ko.md\"\u003e한국어\u003c/a\u003e\u003c/sub\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n# BetterAINote 🎙️\n\n\u003e *「录音散在不同平台，你想要的是一个自己的、安全的、可长期整理的录音工作台。」*\n\n\u003ca href=\"https://github.com/MapleEve/BetterAINote/actions/workflows/ci.yml\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/MapleEve/BetterAINote/ci.yml?branch=main\u0026style=flat-square\" alt=\"CI\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/MapleEve/BetterAINote/releases\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Release-0.6.0--preview-lightgrey?style=flat-square\" alt=\"Release status\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"./docs/DEPLOYMENT.md\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Self--hosting-first-blue?style=flat-square\" alt=\"Self-hosting first\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"./LICENSE\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-个人免费%20·%20商业授权-orange?style=flat-square\" alt=\"License\" /\u003e\n\u003c/a\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n\u003cimg src=\"./docs/assets/betterainote-hero.gif\" alt=\"BetterAINote 多平台语音资料私有化集合与统一管理动效\" width=\"100%\" /\u003e\n\n\u003cbr\u003e\n\n把钉钉 / A1、TicNote、Plaud、飞书妙记、讯飞听见等多平台语音资料整理到一个本地工作台。\u003cbr\u003e\n重点是多来源语音资料的私有化集合与统一管理，而不是绑定某一个厂商来源。\u003cbr\u003e\n录音、转写、说话人审阅、AI 标题、来源报告和搜索索引优先围绕你自己的部署运行。\u003cbr\u003e\n当前版本是 `0.6.0-preview`。自托管优先，不发布 npm 包或公开 Docker 镜像。\n\n\u003cbr\u003e\n\n[快速开始](#开始用) · [AI 安装部署](./docs/AI_INSTALL_DEPLOYMENT.md) · [数据源](./docs/DATA_SOURCES.md) · [API](./docs/API.md) · [部署](./docs/DEPLOYMENT.md) · [隐私](./docs/PRIVACY.md)\n\n\u003c/div\u003e\n\n---\n\n## 你是不是也遇到过这个\n\n\u003e 录音在不同厂商平台里，标题不统一，下载方式不一样，想查一次会议要在多个网页之间来回翻。\n\n\u003e 转写、重命名、说话人整理各有一套工具，但凭据、音频、数据库和日志到底留在哪里并不清楚。\n\nBetterAINote 解决的就是这个。**它把多来源录音收进一个私有工作台，让同步、归档、私有转写、说话人审阅、AI 重命名和搜索准备围绕你的本地数据运行。**\n\n---\n\n## 适合谁\n\n- 已经在用钉钉 / A1、TicNote、Plaud、飞书妙记、讯飞听见等录音平台的人。\n- 想把录音库、SQLite 数据库、服务凭据和音频归档放在自己机器或服务器上的用户。\n- 想用 VoScript 等私有转写服务处理录音，而不是把所有内容交给第三方流水线的人。\n- 希望先自托管，再按自己的节奏接入更多工作流或自动化能力的开发者。\n\nBetterAINote 是独立项目。Plaud 只是其中一个支持的数据源，不是项目中心，也不是项目身份。\n\n---\n\n## 当前状态\n\n| 项目 | 说明 |\n| --- | --- |\n| 阶段 | `preview`，优先给愿意自托管和反馈的人试用 |\n| 发布 | `0.6.0-preview` 是预发布基线；正式稳定版、Docker 镜像和 npm 包仍不发布 |\n| 包分发 | `package.json` 保持 `private: true` |\n| 部署方向 | 本机、家用服务器、私有服务器或你控制的容器环境 |\n| 兼容承诺 | 首个正式稳定版前，API、数据源能力和设置项仍可能调整 |\n\n---\n\n## 开始用\n\n```bash\nbun install\ncp .env.example .env.local\nbun run db:migrate\nbun run dev\n```\n\n`bun run dev` 会同时启动 Next.js Web app 和后台 worker。只跑网页用 `bun run dev:web`，单独跑 worker 用 `bun run worker`。\n\n打开 `http://localhost:3001`，创建第一个管理员账号，然后进入设置页配置：\n\n- `Data Sources`：连接钉钉、TicNote、Plaud、飞书妙记、讯飞听见等录音来源。\n- `VoScript`：配置私有转写服务地址和访问凭据。\n- `Transcription`：设置通用转写行为。\n- `AI Rename`：配置标题生成和重命名策略。\n- `Sync` / `Playback` / `Display`：控制同步、播放和界面偏好。\n\n不要把 `.env.local`、数据库、音频归档、截图里的账号状态或任何真实凭据提交到仓库。\n\n完整说明见 [部署文档](./docs/DEPLOYMENT.md)。\n\n---\n\n## 你会得到什么\n\n**统一录音工作台**\n\n- 多来源记录进入同一个本地录音库。\n- 可按来源、标题、时间、转写状态、同步状态和标签整理。\n- 支持本地音频归档，路径可指向本机磁盘或你控制的挂载目录。\n\n**私有转写与说话人整理**\n\n- 可对接 VoScript 等私有转写服务。\n- 支持转写状态、原文查看、说话人审阅和可复用说话人档案。\n- 来源记录、私有转写和 AI 标题生成相互独立，方便替换服务。\n\n**搜索准备好的数据库基线**\n\n- SQLite 拆分 core、library、transcripts、voiceprints、words 和可重建 search sidecar。\n- 搜索基线覆盖录音、逐字稿、说话人和标签。\n- preview migration 已整理为分片 baseline，后续版本从这个 SOT 继续追加迁移。\n\n---\n\n## 支持的数据源\n\n| 来源 | 当前用户口径 |\n| --- | --- |\n| 钉钉 / A1 | 使用设置页要求的账号凭据同步可访问记录；来源详情、音频和摘要能力取决于账号可见内容。 |\n| TicNote | 支持中国区 / 国际区站点；可同步记录、归档可获取音频，并在启用时尝试把重命名写回来源。 |\n| Plaud | 作为一个录音来源接入；可同步记录、归档可获取音频，并在启用时尝试把重命名写回来源。 |\n| 飞书妙记 | 可在账号权限允许时同步或查看来源元数据、逐字稿和摘要。 |\n| 讯飞听见 | 偏转写记录导入 / 查看场景；音频和标题写回能力按来源实际可用情况处理。 |\n\n详见 [数据源文档](./docs/DATA_SOURCES.md)。\n\n---\n\n## 隐私和安全\n\nBetterAINote 可能包含录音标题、来源记录、转写文本、说话人名称、音频文件、凭据和服务密钥。默认请把它当成私有基础设施。\n\n- 本地 SQLite 和 `LOCAL_STORAGE_PATH` 可能包含敏感录音与转写数据。\n- Provider 凭据、VoScript 凭据、AI 标题服务密钥和会话状态只应存在于你的私有部署里。\n- 日志、Issue、PR、截图和录屏必须先脱敏。\n- 不要公开 cookie、bearer、组织 / 用户 / 录音 ID、会议内容、抓包文件、完整环境文件或本地私有路径。\n\n更多说明见 [隐私文档](./docs/PRIVACY.md) 和 [安全策略](./SECURITY.md)。\n\n---\n\n## 文档\n\n| 主题 | 链接 |\n| --- | --- |\n| 项目概览 | [README.md](./README.md) |\n| AI 安装部署 | [docs/AI_INSTALL_DEPLOYMENT.md](./docs/AI_INSTALL_DEPLOYMENT.md) |\n| API 与公开边界 | [docs/API.md](./docs/API.md) |\n| 数据源成熟度 | [docs/DATA_SOURCES.md](./docs/DATA_SOURCES.md) |\n| GitHub 项目设置 | [docs/GITHUB_PROJECT_SETTINGS.md](./docs/GITHUB_PROJECT_SETTINGS.md) |\n| 部署 | [docs/DEPLOYMENT.md](./docs/DEPLOYMENT.md) |\n| 隐私 | [docs/PRIVACY.md](./docs/PRIVACY.md) |\n| 更新日志 | [CHANGELOG.md](./CHANGELOG.md) |\n\n公开文档不要写入私有 provider 研究、真实凭据、原始来源响应、完整转写、数据库或本地测试数据。\n\n---\n\n## License\n\n个人使用免费。商业使用需要事先取得书面授权。\n\nBetterAINote 使用 **Apache License 2.0 之上的 BetterAINote 附加条款**，不是未修改的标准 Apache-2.0 SPDX 许可。完整条款见 [LICENSE](./LICENSE)。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmapleeve%2Fbetterainote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmapleeve%2Fbetterainote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmapleeve%2Fbetterainote/lists"}