⚠️ 插件更名说明 自 v4.10.0 起,原「Trilium Content Processor」(又名 Trilium Speaches)已正式更名为「Trilium Catalyst」。新名字更准确地传达了插件的核心价值——它不仅仅是一个"内容处理器",而是一剂将音视频原料催化为结构化知识的催化剂。如果你在基地此前的课程讨论或技术文档中看到"Trilium Content Processor"或"trilium-speaches",它们指的都是同一款插件。本文统一使用新名称「Trilium Catalyst」。
请大家务必注意,限于篇幅,本文只介绍 Brave 基地的 Trilium AI 子插件 Trilium Catalyst 的实现方式。
关于 YouTube 字幕、音视频获取的技术实现,还必须参考基地讨论《WP插件开发实战课:如何从零构建 YouTube 智能转录系统》,Trilium Catalyst 插件需要相关技术作为后端。
同时,本节课程并未涉及,Brave 唯二推荐的必装语音转文字应用分别是 Handy 和 Buzz,Stacher7 也是不错的 yt-dlp 开源前端。本教程的纯手工平替方案是基地讨论《如何用 Stacher、Buzz 和顶级 AI 将音视频精炼成深度长文》,更多宝藏可参考基地"收藏夹-利器"栏目,以及其他基地讨论。
第一部分:开发篇——理解这款插件的技术基底与设计智慧
一、为什么需要 Trilium Catalyst:从信息到知识的最后一公里
此前,信息的「输入端」一直存在一个痛点:海量的音视频内容——播客、YouTube 教程、会议录音、课堂讲座、个人语音备忘——它们承载着大量高密度的知识,却因为其非文本的本质,始终游离在 Trilium 知识库的结构化管理之外。
你可以用 Miniflux 聚合 RSS 文章,用 Web Clipper 裁剪网页内容,用 Trilium WP 将笔记发布为 WordPress 文章,用 TriliumAI Chat 进行 AI 对话并自动沉淀——但面对一段 30 分钟的 YouTube 视频或一份会议录音,你只能手动记笔记。这不仅效率低下,更违背了「让知识自动流动」的核心理念。
Trilium Catalyst(以下简称「Catalyst」)正是为解决这个问题而生。它的定位可以用一句话概括:将音视频内容自动转化为结构化文本,经 AI 智能整理后沉淀到 Trilium 知识库中。 它补全了 Brave 基地知识生产流水线中「音视频 → 文本 → 知识」这一关键缺失环节。
从技术栈的角度看,Catalyst 的位置如下:
🎙️ 语音输入(录音 / 音频文件 / YouTube视频)
↓
🔧 Trilium Catalyst(本插件 · v4.10.0)
├→ Speaches API(语音转文字)
├→ YouTube 字幕提取 + 智能降级
└→ TriliumAI(AI 内容整理)
↓
📝 结构化文本笔记
↓
💾 自动保存至 Trilium Notes
↓
🧠 被 TriliumAI Chat / Agent 上下文功能调用这意味着:你今天通过 Catalyst 转录并保存的一段 YouTube 视频内容,明天在 TriliumAI Chat 中开启上下文功能时,AI 就能「记起」并引用这段内容。信息在你的个人知识生态中,实现了从音视频到可检索、可引用、可 AI 增强的结构化知识的完整闭环。
二、开发这样一款插件需要掌握哪些知识
如果你是一位开发者,想要理解这款插件的技术全貌,或者想要构建类似的系统,以下是你需要掌握的知识图谱。每一块知识的讲解不会止步于「是什么」,更重要的是帮你理解它在整个系统中「为什么被需要」以及「如何协同运作」。
1. WordPress 插件开发基础 ⚙️
WordPress 并非只是一个博客系统。在 Brave 基地的架构中,它被重新定义为「知识工作流编排平台」和「安全中间件」。开发 Catalyst 插件,你需要理解以下 WordPress 核心机制:
钩子系统(Hooks) 📎 是 WordPress 插件开发的基石。Catalyst 通过 add_action 和 add_filter 将自身的功能注入 WordPress 的生命周期。例如:
- 通过
wp_enqueue_scripts钩子在前端注入 CSS 和 JavaScript 资源 - 通过
wp_ajax_*钩子注册后端 AJAX 处理端点 - 通过
admin_menu钩子在后台添加设置页面 - 通过
plugin_action_links_*钩子在插件列表添加「设置」快捷链接
这种机制的精妙之处在于「松耦合」——插件不需要修改 WordPress 核心代码的一行,就能在恰当的时机执行自己的逻辑。这也是为什么 Catalyst 能够与 Trilium WP 主插件、TriliumAI Chat 等兄弟插件和谐共存的原因。
Settings API ⚙️ 提供了一套标准化的方式来创建后台配置页面。Catalyst 的设置页面涵盖了音频转录配置、YouTube 处理配置、AI 整理配置、Trilium 保存配置等多个分区,每个配置项都通过 WordPress 的 register_setting、add_settings_section、add_settings_field 三级结构来声明和渲染。理解 Settings API 意味着你能快速构建出符合 WordPress 规范的、用户友好的配置界面。
AJAX 通信机制 📡 是前后端交互的核心通道。由于音频转录、YouTube 处理等操作耗时较长(几秒到几十分钟不等),传统的表单提交-页面刷新模式完全无法满足需求。Catalyst 通过 WordPress 的 AJAX 系统实现了:
- 异步文件上传与逐个处理(多文件不阻塞)
- 实时进度反馈(批量处理时尤为关键)
- 语音录音的双模式异步提交
- YouTube 频道视频列表的动态获取
- 统一的 1 小时超长超时机制(v4.10.0 新增),彻底解决长音频和长视频的处理超时问题
每一个 AJAX 端点都必须经过 WordPress 的 wp_verify_nonce 安全验证——这是防止跨站请求伪造(CSRF)攻击的第一道防线。同时,所有端点都检查用户权限(current_user_can('edit_posts')),确保只有有权限的用户才能触发处理操作。
短代码系统(Shortcodes) 📋 提供了一种将插件功能嵌入页面内容的方式。Catalyst 注册了两个短代码——[trilium_content_processor] 和 [trilium_audio_transcriber](后者为历史兼容),管理员只需在任意 WordPress 页面或文章中插入其中一个标签,完整的内容处理界面就会自动渲染。相比 Gutenberg 编辑器块,短代码的优势在于兼容性——它适用于所有 WordPress 版本和编辑器(包括经典编辑器)。
2. PHP 服务端编程与 API 集成 🔧
插件的 PHP 后端承担着系统最核心、最复杂的职责。它不仅是前端请求的路由器,更是一个连接多个外部服务的集成层。以下是你需要掌握的关键领域:
面向对象的模块化架构 🏗️ Catalyst 采用了清晰的类分离设计,每个 PHP 类承担独立的职责域:
┌─────────────────────────────────────────────────────────────┐
│ Trilium Catalyst 架构 │
│ │
│ ┌───────────────────┐ │
│ │ trilium-content- │ ← 主入口文件,单例模式初始化 │
│ │ processor.php │ 定义常量、加载组件、注册钩子 │
│ └────────┬──────────┘ │
│ │ │
│ ┌────────▼──────────────────────────────────────────┐ │
│ │ includes/ │ │
│ │ │ │
│ │ ┌──────────────────┐ ┌──────────────────────┐ │ │
│ │ │ class-frontend │ │ class-settings │ │ │
│ │ │ 前端界面渲染 │ │ 后台配置页面 │ │ │
│ │ │ 选项卡/表单/状态栏 │ │ 字段注册/渲染/验证 │ │ │
│ │ └──────────────────┘ └──────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────────────┐ ┌──────────────────────┐ │ │
│ │ │ class-ajax- │ │ class-processor │ │ │
│ │ │ handler │ │ 核心处理引擎 │ │ │
│ │ │ AJAX接收/验证/分发 │ │ 流水线编排/降级策略 │ │ │
│ │ └──────────────────┘ └──────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ class-api-handler │ │ │
│ │ │ 统一API调用层 │ │ │
│ │ │ Whisper · YouTube · AI整理 · Trilium保存 │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────┐ │
│ │ assets/ │ │
│ │ css/frontend.css 前端样式(2000+行,深色模式) │ │
│ │ js/frontend.js 前端交互逻辑 │ │
│ │ js/voice-recorder.js 语音录音器类 │ │
│ └───────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘class-frontend.php:负责所有前端界面的服务端渲染——选项卡导航、表单构建、状态栏渲染、语音录制区域、文件上传区域、YouTube 处理区域、批量处理区域、以及结果展示。这个类的代码量最大,因为它需要生成丰富且响应式的 HTML 结构。class-api-handler.php:封装了所有外部 API 的调用逻辑——Speaches 语音转文字 API、YouTube 字幕提取 API、YouTube 音频下载(流式零内存占用)、AI 内容整理、Trilium ETAPI 保存操作。每个方法都包含完善的错误处理和日志记录。class-ajax-handler.php:处理所有前端 AJAX 请求的接收、验证和分发。它是前端 JavaScript 与后端处理逻辑之间的桥梁。v4.10.0 统一了所有 AJAX 端点的命名规范(tcp_process_audio_modern、tcp_process_youtube_modern等),确保端点注册的 Single Source of Truth。class-processor.php:核心处理引擎,编排了完整的处理流水线——从接收原始输入到最终保存结果的全过程。这个类体现了 Catalyst 最重要的架构决策,特别是智能降级机制和边处理边保存策略。class-settings.php:后台设置页面的完整实现,包括字段注册、渲染和验证。v4.10.0 新增了集成状态面板,实时检测所有依赖服务的连接状态。
这种分离的价值在于:你可以修改 API 调用逻辑(比如换一个语音识别服务)而不影响前端界面;也可以重新设计前端而不触及后端处理逻辑。对于一个需要长期维护和迭代的插件来说,这种架构选择是至关重要的。
HTTP 客户端与 API 通信 🌐 Catalyst 需要与多个外部服务进行 HTTP 通信。WordPress 提供了 wp_remote_post 和 wp_remote_get 作为 HTTP 客户端,但在大文件传输和流式下载场景下,插件做了额外的适配工作:
- 音频文件上传到 Speaches API 时,使用
multipart/form-data编码和CURLFile对象直接操作 cURL 句柄,以支持大文件的高效传输 - YouTube 音频下载采用流式写入(
CURLOPT_FILE)——音频数据从网络直接写入磁盘,不经过 PHP 内存缓冲区。这意味着即使是几百 MB 的长视频音频,PHP 内存占用也接近于零。v4.10.0 还加入了下载进度回调(CURLOPT_PROGRESSFUNCTION),每 10% 记录一次日志,方便监控长时间下载任务 - 所有 HTTP 请求统一使用
User-Agent: Trilium-Catalyst/4.10.0标识,便于服务端日志追踪
文件系统操作与安全 📁 音频处理天然涉及大量文件 I/O。Catalyst 在这方面的实现体现了对安全和健壮性的关注:
- 上传文件的 MIME 类型验证:不仅检查文件扩展名,还通过 PHP 的
mime_content_type进行内容检测,支持 9 种音频格式(WAV、MP3、M4A、FLAC、OGG、AAC、WMA、WebM、Opus) - 临时文件的生命周期管理:处理完成后自动清理,超过 1 小时的孤儿临时文件由定时清理机制回收,避免服务器磁盘空间被逐渐消耗
- 文件名标准化:
normalize_audio_filename方法清理特殊字符、合并重复下划线、确保扩展名正确,避免文件系统兼容性问题 - 文件大小限制的动态检测:自动读取 PHP 配置中的
upload_max_filesize和post_max_size,取较小值作为实际限制,并在前端界面明确展示
错误处理与日志 📋 生产级插件与原型最大的区别往往体现在错误处理上。Catalyst 的每一个 API 调用都被 try-catch 包裹,每一个可能失败的操作都有对应的降级策略和用户友好的错误提示。日志系统通过 WordPress 的 error_log 记录详细的调试信息(统一前缀 Trilium Catalyst: 和 Trilium Catalyst DEBUG:),帮助排查线上问题。v4.10.0 特别加强了 YouTube 处理链路中每个步骤的调试日志,包括字幕数据结构检查、字段匹配追踪等。
3. JavaScript 前端开发——让复杂流程变得简单 💻
Catalyst 的前端面临一个独特的挑战:它需要在一个页面内编排多种完全不同的用户交互流程(音频上传、语音录制、YouTube 单个处理、YouTube 批量处理),每种流程都包含异步操作、状态变化和实时反馈。以下是关键的前端技术:
基于 jQuery 的事件驱动架构 🎯 Catalyst 选择了 jQuery 作为前端基础库,这是一个务实的选择——WordPress 本身就捆绑了 jQuery,使用它不会引入额外的依赖。前端代码采用了立即执行函数表达式(IIFE)模式,所有逻辑封装在一个闭包中,避免全局命名空间污染。
核心交互逻辑包括:
- 选项卡切换(音频上传 / YouTube 转录 / YouTube 批量处理),带有状态锁定——处理中或录音中禁止切换标签页
- 文件选择、格式验证、大小验证、预览和多文件逐个上传
- YouTube URL 格式校验(支持标准 URL、短链接、频道 URL、@ 用户名格式)和动态按钮状态管理
- 表单提交拦截和 AJAX 替代
- 统一的安全超时机制——AJAX 请求设置 1 小时超时,外加一个比 AJAX 超时多 5 秒的
setTimeout安全兜底,确保无论什么情况都能重置 UI 状态
MediaRecorder API——浏览器内录音 🎙️ 这是 Catalyst 最具技术含量的前端功能之一。voice-recorder.js 封装了一个完整的 TriliumVoiceRecorder 类,实现了:
- 麦克风权限请求和兼容性检测
- 基于
MediaRecorderAPI 的录音控制(开始、暂停、恢复、停止) - 实时录音时长计时器(感知暂停状态,暂停期间不计时)
- 录音数据的
Blob组装和文件创建 - 录音完成后的双模式选择机制
- v4.10.0 新增:录音备份下载功能——即使转录失败,用户也能下载原始录音文件,确保录音不丢失
这里有一个值得注意的设计细节:录音完成后,用户面前会弹出一个选择面板——「发送到 AI 聊天」还是「整理并保存到 Trilium」。前者通过 window.setTriliumChatPrompt 将转录文本发送到 TriliumAI Chat 的聊天窗口,实现「语音提问 AI」的流畅体验;后者则走标准的音频处理流程(转录 → AI 整理 → 保存)。这种「一次录音,双路径选择」的设计,体现了对用户实际使用场景的细致洞察。
🎙️ 录音完成
│
├──► 💬 发送到 AI 聊天
│ └── 仅转录 → 填充到聊天输入框 → 立即与 AI 对话
│
└──► 📝 AI 整理保存
└── 转录 → AI 精炼 → 💾 保存到 Trilium Notes
(关闭模态框后后台静默处理,不干扰主界面)异步状态管理 ⏳ 在批量处理 YouTube 视频时,前端需要管理复杂的异步状态:获取视频列表 → 用户勾选 → 逐个处理 → 实时更新进度条 → 标记成功 / 失败 / 降级状态。Catalyst 通过精心设计的 DOM 操作和 CSS 类切换来实现这一切——每个视频项目都有独立的状态标记,总体进度条实时反映处理百分比,当前处理的视频会高亮显示。v4.10.0 在状态管理上做了一个重要改进:语音录音器的状态区域(#voice-action-zone)与主处理状态区域完全隔离,避免了此前两者互相干扰的问题。
4. Speaches API 集成——自托管语音识别的枢纽 🗣️
Speaches(原名 faster-whisper-server)是 Brave 基地语音技术栈的核心组件。理解它对于理解 Catalyst 的工作原理至关重要。
Speaches 是什么? Speaches 是一个兼容 OpenAI Whisper API 格式的自托管语音识别服务器。它的底层使用 faster-whisper(一个基于 CTranslate2 的高性能 Whisper 推理引擎),提供了与 OpenAI Whisper API 相同的接口格式,但完全运行在你自己的硬件上。
这意味着:
- 所有语音数据都在本地处理,不会发送到任何第三方云服务 🔒
- 没有按调用次数计费的成本压力 💰
- 即使在没有互联网的环境下也能使用 📶
- 可以选择不同规模的 Whisper 模型(tiny / base / small / medium / large)来平衡速度和准确性
API 调用实现 🔗 Catalyst 调用 Speaches API 的方式很直接——通过 HTTP POST 将音频文件以 multipart/form-data 格式发送到 Speaches 的 /v1/audio/transcriptions 端点,指定模型名称和响应格式。服务器返回转录后的纯文本。
在插件的具体实现中,调用逻辑被封装在 call_whisper_api 方法中,该方法处理了:
- 构建正确的 multipart 请求体(使用
CURLFile对象直接操作 cURL 句柄) - 根据配置选择合适的 Whisper 模型
- 设置 7200 秒(2 小时)的超长超时,支持超长音频转录
- 智能 MIME 类型检测——先查扩展名映射表,再回退到
mime_content_type系统检测 - 解析并返回纯文本格式的转录结果,附带处理耗时
- 完善的错误处理与 HTTP 状态码校验
模型选择策略 🧠 Speaches 支持多种 Whisper 模型,Catalyst 在设置页面提供了模型 ID 的配置项(默认为 Systran/faster-whisper-medium)。不同模型的权衡如下:
| 模型 | 参数量 | 速度 | 准确性 | 推荐场景 |
|---|---|---|---|---|
| tiny | 39M | 极快 ⚡ | 一般 | 快速预览、测试 |
| base | 74M | 很快 | 尚可 | 简短语音、清晰录音 |
| small | 244M | 快 | 良好 | 日常使用的平衡选择 |
| medium | 769M | 中等 | 优秀 | 多语言、口音较重的内容 |
| large-v3 | 1.5B | 较慢 | 最佳 🏆 | 专业级转录、噪声环境 |
5. YouTube 内容获取——字幕提取与音频转录的双轨策略 📺
处理 YouTube 视频是 Catalyst 最复杂的功能模块,因为它需要处理多种不确定性:视频可能有字幕也可能没有,字幕可能是机器生成的也可能是人工上传的,字幕文本字段名可能不一致,音频可能很长也可能很短。
字幕提取(优先路径) 📝 当 Catalyst 收到一个 YouTube URL 时,它首先尝试通过专门的字幕提取 API 获取视频的文字内容。这是最快速、最经济的路径——字幕通常已经是现成的文本,无需耗费 GPU 资源进行语音识别。Catalyst 支持用户指定语言偏好(中文 / 英文 / 自动检测),系统会优先寻找匹配的字幕轨道。
v4.10.0 在字幕数据解析上做了重要的健壮性增强:系统会依次尝试 subtitle_text、subtitle_content、text 三种字段名来获取字幕文本,兼容不同版本的字幕 API 返回格式。即使字幕 API 返回了成功状态但文本字段为空,也会触发降级机制而非返回空结果。
音频转录(降级路径) 🔄 当字幕提取失败时(视频无字幕、字幕不可用、字幕文本为空、API 异常等),Catalyst 不会简单地报错,而是启动「智能降级」机制:
📎 输入 YouTube 链接
│
▼
🔍 第一步:尝试提取字幕
│
├── ✅ 字幕提取成功
│ │
│ ├── 文本非空 ──► 🤖 AI 整理 ──► 💾 保存到 Trilium
│ │
│ └── 文本为空 ──► 触发降级 ↓
│
└── ❌ 字幕提取失败 ──► 触发降级 ↓
│
▼
🔄 第二步:自动降级
│
▼
⬇️ 流式下载视频音频(零内存占用)
│
▼
🎵 Whisper 音频转录
│
▼
🤖 AI 整理 ──► 💾 保存到 Trilium
(标记为 processing_method: audio_transcription_fallback)这个降级过程对用户完全透明——界面上会显示处理方式标记,告知用户实际使用的是字幕提取还是音频转录,并附上降级原因和各阶段耗时统计。保存到 Trilium 的笔记元信息中也会精确记录处理方式、降级原因、各阶段耗时等完整链路信息。
如果字幕提取和音频转录都失败了,Catalyst 会返回详细的双重错误信息(subtitle_extraction_error + audio_transcription_error),帮助用户诊断问题所在。
这种「先快后准」的双轨策略是 Catalyst 架构设计中的一个亮点。它确保了:无论视频是否有字幕,用户最终都能得到文字内容。这在实际使用中极为重要——很多高质量的技术讲座、播客访谈恰恰是没有字幕的。
批量处理——YouTube 频道级别的知识获取 📊 Catalyst 还支持批量处理整个 YouTube 频道的视频。用户输入频道 URL 后,系统通过 API 获取视频列表(支持限制数量和日期过滤),以可勾选列表的形式展示,包含标题、时长、上传日期和观看量。用户选择需要处理的视频后,点击「开始批量处理」,系统逐个处理每个视频(间隔 1 秒以避免 API 限制),每完成一个就立即保存到 Trilium,同时实时更新总体进度。
这个功能的价值在于:你可以一次性将一个教育频道或技术博主的数十个视频全部转化为 Trilium 笔记——想象一下,一个下午的自动处理就能把一年的视频内容变成你的结构化知识资产。
6. AI 内容整理——从原始转录到知识条目 🤖
原始的语音转录文本往往杂乱无章——没有段落划分、充斥着口语化表达、缺乏结构化组织。如果直接保存到 Trilium,它的检索和引用价值将大打折扣。
Catalyst 在这里集成了 AI 整理功能(需要 TriliumAI Chat 插件的 AI 能力支持)。当管理员在后台开启「AI 处理」选项后,转录完成的文本会先被发送到配置好的 AI 模型进行格式化整理,然后再保存到 Trilium。
AI 整理的具体工作 ✨ 通过 process_with_ai 方法实现,它做了以下几件事:
- 🧹 去除语气词 —— 「啊」「呢」「呃」「嗯」等口语化填充词被清理
- 🔄 去除重复 —— 说话时常见的重复性词语和句子被合并精简
- ✏️ 纠正错别字 —— Whisper 转录的同音字错误、近音字错误被智能修正
- 📐 段落整理 —— 混乱的文字流被整理成逻辑清晰的段落
- 📝 自动起标题 —— AI 根据内容自动生成一个恰当的文章标题
一个精心设计的细节是:AI 整理会根据内容来源类型调整提示词上下文——音频转录标注为「录音稿」,YouTube 字幕标注为「YouTube 视频字幕」,YouTube 音频转录标注为「YouTube 视频音频转录」。这种区分让 AI 能够更准确地理解内容的语境特征,给出更恰当的整理结果。
灵活的模型选择 🔌 AI 整理功能直接复用 TriliumAI Chat 的多模型接入层(Trilium_AI_Chat_API_Manager),通过 set_temp_model_override 方法临时切换到用户在 Catalyst 设置中指定的提供商和模型,处理完成后通过 clear_temp_model_override 恢复。支持:
- Google Gemini —— 如 Gemini 2.5 Pro,擅长长文本整理
- OpenAI 兼容接口 —— GPT-4o、Claude、DeepSeek 等
- Ollama 本地模型 —— 完全本地运行,数据不离开服务器
与 TriliumAI Chat 中的「智能格式化」功能类似,这里的 AI 整理任务也建议使用低成本的本地模型(如通过 Ollama 运行的小型 LLM)来执行——这是纯粹的文本整理工作,不需要顶级推理能力,用本地模型可以将成本控制为零。
7. Trilium ETAPI 集成——知识的最终归宿 💾
Catalyst 的最终输出是 Trilium Notes 中的结构化笔记。它通过 TriliumAI Chat 插件提供的 Trilium_AI_Chat_Conversation_Saver 类来创建笔记(调用其 save_quick_note 方法),底层最终走 Trilium ETAPI。
保存逻辑经过精心设计,体现了对知识管理实践的深入理解:
智能标题生成 🏷️ 笔记标题不是简单的文件名或时间戳。Catalyst 会根据内容类型和处理方式生成有意义的标题:
- 🎵 音频文件:
🎵 音频转录:文件名 (AI整理) - 📺 YouTube 字幕提取:
🎙️ YouTube转录:视频标题 (AI整理) - 🔄 YouTube 智能降级:
🔄 YouTube内容:视频标题 (智能降级) - 🎙️ YouTube 音频转录:
🎙️ YouTube转录:视频标题 (AI整理)
丰富的笔记元信息 📝 保存到 Trilium 的笔记不仅包含转录/整理后的文本,还携带了完整的处理链路信息:
- 处理时间戳、内容类型、来源信息
- 转录引擎型号、AI 提供商和模型名称
- 各阶段耗时(字幕尝试 / 音频下载 / 音频转录 / AI 整理)
- 降级处理标记和原因(如适用)
- 音频文件大小、字幕语言等细节
- 自动生成的标签(
content-processing,trilium-ai,ai-processed,audio-transcription,youtube-subtitle,youtube-fallback等,根据处理方式动态组合)
双层内容结构 📋 启用 AI 整理后,笔记内容包含两个部分:
## 📝 AI整理内容—— AI 精炼后的清晰文本## 📋 原始内容—— Whisper 转录的原始文本
这种双层结构让你在享受 AI 整理便利的同时,随时可以对照原文——确保信息的完整性和可追溯性。
笔记末尾统一标注 *由 Trilium Catalyst v4.10.0 自动生成*,方便在 Trilium 知识库中快速识别 Catalyst 产出的内容。
这些元信息的价值在长期使用中会逐渐显现——当你积累了数百条转录笔记后,元信息能帮你快速定位来源、评估质量、分析使用模式。
8. 响应式前端设计——适配所有设备 📱
Catalyst 的 CSS 文件(frontend.css)超过 2000 行,这个体量本身就说明了前端设计的复杂性。它需要:
- 在桌面端提供完整的多选项卡界面,充分利用屏幕空间
- 在平板端保持布局合理性,适当调整间距和字号
- 在手机端重新组织布局(选项卡变为纵向排列、信息卡片变为单列、按钮变为全宽)
CSS 使用了 @media 断点在 768px、480px 和 360px 三个阈值处进行自适应调整。配色方案采用了渐变背景和柔和的阴影来营造现代感,同时通过 @media (prefers-color-scheme: dark) 支持暗色模式——在深色主题下,所有背景、文字、边框、渐变、阴影都有独立的适配规则,确保在任何主题下都可以舒适使用。
一个特别值得注意的设计细节是「语音处理模态框」(voice-modal)——当用户停止录音后弹出的双模式选择界面。这个模态框在手机上会自动调整为全宽布局,选项按钮变为纵向堆叠,确保在小屏幕上也能轻松操作。另一个细节是暂停操作选择界面(voice-pause-choice),它使用 position: fixed + transform: translate(-50%, -50%) 居中定位,配合半透明遮罩层,在任何屏幕尺寸下都能准确居中显示。
三、核心设计决策深度解析
前面的知识地图描绘了「需要什么技术」。这一节我们将深入几个关键的设计决策,理解开发者在面临多种选择时「为什么这样做」。
1. 智能降级:为什么不直接全部用音频转录? 🤔
一个自然的疑问是:既然 Speaches API 可以转录任何音频,为什么还要费力做字幕提取?直接全部走音频转录不是更简单吗?
答案涉及三个维度:
效率。 字幕提取通常在 1-3 秒内完成——它只是获取 YouTube 已有的文本数据。而音频转录需要先下载音频(可能几十 MB),再进行语音识别(消耗 GPU 资源),一个 30 分钟的视频可能需要几分钟。对于有字幕的视频,走字幕提取路径意味着 10 倍以上的速度提升。
准确性。 人工上传的字幕通常比机器转录更准确,特别是在专业术语、人名、品牌名等方面。字幕提取能直接获取这些高质量文本。
资源消耗。 音频转录需要占用 Speaches 服务器的 GPU 资源。在批量处理场景下(比如一次处理 50 个视频),如果全部走音频转录,GPU 将长时间满负载运行。智能降级确保只有真正需要的视频才消耗 GPU 资源,大幅提升了批量处理的整体效率。
但同时,开发者也深知——没有字幕的视频同样有价值。因此设计了无缝的降级机制,确保在效率优先的同时不牺牲覆盖范围。这种「先快后准,绝不放弃」的策略,是工程实践中经典的权衡智慧。
2. 录音的双模式选择:为什么要区分「聊天」和「整理」? 🎙️
语音录音完成后的双模式选择(发送到 AI 聊天 vs. 整理保存到 Trilium)看似只是一个 UI 选项,实际上它对应着两种完全不同的使用意图:
聊天模式 适用于:你想用语音快速向 AI 提问。这时你需要的是将语音转为文本后直接发送到 TriliumAI Chat 的聊天窗口——速度是第一位的,文本不需要持久保存(AI 的回复会被聊天系统管理)。实现上,这个模式调用 voiceRecorder.transcribeOnlyForChat 仅执行转录(不经 AI 整理),然后通过 window.setTriliumChatPrompt(text, false) 或 DOM 操作将转录文本直接推送到聊天输入框。
整理模式 适用于:你在做会议记录、课堂笔记、或个人语音日记。这时你需要的是将语音转为文本后经 AI 整理、形成结构化笔记、保存到 Trilium。速度可以稍慢,但产出质量更重要。实现上,这个模式调用 voiceRecorder.autoSubmitForProcessing 将录音文件通过标准 AJAX 流程提交到后端,走完整的「转录 → AI 整理 → 保存」流水线。
v4.10.0 的一个重要改进是:整理模式关闭选择模态框时不再重置录音器状态(closeVoiceModal($modal, false)),因为后台还在继续处理。同时,整理模式的后台处理不启动主界面的状态区域(setProcessingState 被注释掉),让语音录音器自己管理状态显示,避免了主界面和录音器状态的互相干扰。
这两条路径共享相同的录音和转录基础设施,但在转录之后分道扬镳。这种设计避免了「一个功能试图满足所有场景」的常见陷阱,让每种使用意图都得到最佳的体验。
3. 边处理边保存:为什么不等全部完成再保存? 💾
批量处理多个音频文件时,Catalyst 采用了「边处理边保存」的策略——每完成一个文件的转录和 AI 整理,就立即保存到 Trilium,而不是等所有文件都处理完再统一保存。
这个看似简单的决策背后有深刻的工程考量:
容错性。 如果你正在处理 10 个音频文件,第 7 个文件处理失败了——在「全部完成再保存」的模式下,你可能因为一个错误丢失前 6 个文件的处理结果(尤其是在网络中断或浏览器崩溃的情况下)。而「边处理边保存」确保已完成的工作立即落盘,任何后续失败都不会影响已保存的内容。
即时反馈。 用户可以实时看到每个文件的处理结果和保存状态,而不是面对一个漫长的等待后才知道结果。
资源效率。 内存中不需要同时保持所有处理结果,每个结果保存后即可释放。
4. 系统资源监控与性能调优 📊
Catalyst 的核心处理类(class-processor.php)中内置了一个 check_system_resources 方法,在处理大批量任务前自动检查系统资源状况——包括 PHP 内存限制、当前内存使用量、内存使用百分比、最大执行时间是否充足(阈值为 30 分钟)。这是一个生产环境中不可或缺但经常被原型级项目忽略的功能。
同时,check_api_servers_status 方法会主动 ping Whisper API 和 YouTube API 服务器的健康检查端点,在设置页面的集成状态面板中实时显示连接状态。
Catalyst 在设置页面还提供了性能优化建议区域,帮助管理员了解当前服务器配置是否能满足处理需求,并给出针对性的调优方向。
四、开发者的技术视野扩展
理解了 Catalyst 的技术全貌后,作为一个有追求的开发者,你还应该关注以下方向:
从 Speaches 到 WhisperLiveKit——实时转录的未来 ⚡
Catalyst 目前采用的是「录制 → 上传 → 转录」的离线模式。而 Brave 基地同时也在探索 WhisperLiveKit——一个基于 WebSocket 的实时语音转录方案,能实现近乎实时的「说了就看到文字」的体验。
WhisperLiveKit 的核心价值在于:
- 超低延迟(通过 Voice Activity Detection + 流式识别实现亚秒级响应)
- 实时反馈(用户边说边看到转录文本,可以即时纠正和调整)
- 长时间录制(基于分段处理,理论上没有时间限制)
在未来的版本中,Catalyst 有可能从离线模式进化为离线 + 实时双模式——离线模式处理已有的音频文件和 YouTube 视频,实时模式支持会议直播转录和语音笔记。
从单插件到插件生态——WordPress 的组合力量 🧩
Catalyst 并不孤立存在。它与 Trilium WP 主插件、TriliumAI Chat、TriliumAI Agent 形成了一个协同工作的插件生态:
┌─────────────────────────────────────────────────────────────┐
│ Trilium AI 插件协同关系 │
│ │
│ Trilium Catalyst 产出的笔记 │
│ │ │
│ ├──► TriliumAI Chat 的上下文功能可调用 │
│ ├──► TriliumAI Agent 的 /trilium search 可搜索 │
│ ├──► Gutenberg Block 工作流可引用 │
│ └──► OpenClaw 代理的持久记忆可积累 │
│ │
│ 反向协同: │
│ TriliumAI Chat 的 AI 模型层 ──► Catalyst AI 整理复用 │
│ TriliumAI Chat 的笔记保存器 ──► Catalyst 保存逻辑复用 │
│ Trilium WP 的 ETAPI 连接 ──► Catalyst 底层保存通道 │
└─────────────────────────────────────────────────────────────┘这种插件间的协同是通过 WordPress 的钩子系统和共享的 PHP 类实现的——每个插件只关注自己的职责,通过标准接口与其他插件交换数据。如果你想在这个生态上扩展新功能(比如一个 PDF 文档处理器),你需要做的是:遵循相同的接口约定,输出到 Trilium Notes 的相同格式结构。
MCP(Model Context Protocol)的整合前景 🔮
AI 领域正在兴起一个重要的标准——Model Context Protocol(MCP),它定义了 AI 模型与外部工具交互的标准化方式。未来,Speaches 服务可以通过 MCP 被 AI Agent 直接调用——AI 不仅能「思考」和「写作」,还能「听」和「说」。Catalyst 作为语音处理的基础设施,在 MCP 生态中有着天然的位置。
第二部分:使用篇——从安装到构建你的内容处理流水线
五、准备工作与环境要求
1. 你需要准备什么 📋
必需基础设施:
- ✅ 一个运行 WordPress 5.0+ 的网站(推荐 5.8+ 以获得最佳兼容性),PHP 7.4+
- ✅ 一个自托管的 Speaches 服务实例——这是语音转文字功能的核心依赖。Speaches 可以部署在与 WordPress 相同的服务器上,也可以部署在局域网内的独立 GPU 服务器上
- ✅ Trilium WP 主插件(已安装并启用)——Catalyst 通过它提供的 API 函数将内容保存到 Trilium Notes
- ✅ 一个自托管的 Trilium Notes 实例(通过 Trilium WP 主插件配置好连接)
强烈推荐(解锁完整能力):
- ✅ TriliumAI Chat 插件——Catalyst 的 AI 内容整理功能依赖它提供的 AI 能力(
Trilium_AI_Chat_API_Manager和Trilium_AI_Chat_Conversation_Saver)。没有它,转录文本将以原始形式保存,不经 AI 整理 - ✅ 至少一个 AI 服务(Google Gemini / OpenAI 兼容接口 / Ollama 本地模型)——用于 AI 内容整理
推荐的服务器配置:
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| WordPress 服务器 | 1 核 / 1GB | 2 核 / 4GB |
| Speaches 服务器 | CPU 模式可用,但很慢 | NVIDIA GPU(至少 6GB 显存) |
| Trilium Notes | 1 核 / 512MB | 2 核 / 2GB |
| Ollama(可选) | 8GB 内存 | 16GB 内存 + GPU |
💡 如果你使用 VPS 部署,可以将所有服务运行在同一台服务器上。一台配备 NVIDIA 3060(12GB 显存)的服务器就能同时运行 WordPress + Speaches + Trilium + Ollama 的全栈环境。
2. Speaches 服务的安装与配置 🔧
Speaches 的部署非常简单,官方提供了 Docker 镜像,一行命令即可启动:
docker run -d \
--name speaches \
--gpus all \
-p 8000:8000 \
ghcr.io/speaches-ai/speaches:latest启动后,Speaches 服务会在 http://localhost:8000 提供 OpenAI 兼容的 API 接口。你可以通过访问 http://your-server:8000/docs 查看完整的 API 文档和 Swagger UI。
如果没有 GPU,Speaches 也支持 CPU 模式运行,只是转录速度会显著下降。对于测试和轻度使用场景,CPU 模式是可以接受的。
3. 安装 Trilium Catalyst 插件 📥
📌 如果你此前安装过旧版「Trilium Content Processor」:建议先停用旧版插件,再安装新版 Trilium Catalyst。由于内部类名、选项键和数据库字段保持兼容,你的历史配置和数据不会丢失。新版插件激活后会自动继承旧版的所有设置。
安装过程与标准 WordPress 插件完全相同:
- 确保 Trilium WP 主插件已安装并正常连接到 Trilium Notes ✅
- 确保 TriliumAI Chat 插件已安装并配置好 AI 服务(推荐但非必需)✅
- 登录 WordPress 后台 → 「插件」 → 「安装插件」 → 「上传插件」
- 选择
trilium-catalyst-4.10.0.zip文件,点击「现在安装」 - 安装完成后点击「启用插件」
启用后,你会在后台菜单中看到一个新的「Trilium Catalyst」配置页面(如果已安装 TriliumAI Chat,会出现在其子菜单下;否则出现在「设置」菜单下)。同时,你可以在任意 WordPress 页面或文章中使用 [trilium_content_processor] 短代码来嵌入处理器界面。
六、后台配置详解
进入 Trilium Catalyst 设置页面,你会看到一个分区清晰的配置页面,顶部是集成状态面板,下方是各分区配置项。
1. 集成状态面板(v4.10.0 新增)✅
配置页面顶部新增了一个实时状态面板,一目了然地展示所有依赖服务的连接状态:
┌────────────────────────────────────────────────────┐
│ 📊 集成状态面板 │
│ │
│ ✅ Trilium WP 主插件 已安装 │
│ ✅ TriliumAI Chat 插件 已安装 │
│ ✅ TriliumAI API 管理器 可用 │
│ ✅ Whisper API 服务器 http://localhost:8000 │
│ ✅ YouTube 媒体 API 服务器 http://localhost:5000 │
│ ├── 📺 字幕提取功能 ✅ 可用 │
│ └── 🎵 音频下载功能 ✅ 可用 │
└────────────────────────────────────────────────────┘如果某项显示为 ❌,你可以立即知道问题出在哪里,无需逐个排查。
2. 音频转录设置 🎵
| 配置项 | 说明 | 推荐设置 |
|---|---|---|
| Speaches API 地址 | Speaches 服务的完整 URL | http://your-server:8000(如在同一服务器则为 http://localhost:8000) |
| Whisper 模型 ID | 使用哪个模型进行转录 | Systran/faster-whisper-medium(中等模型,平衡速度与准确性) |
| 自动整理 | 转录后是否自动进行 AI 整理 | 开启 ✅ |
| 自定义标签 | 保存到 Trilium 时附带的标签 | content-processing,trilium-ai |
| 质量设置 | 处理质量偏好 | balanced(平衡模式) |
💡 配置完成后,可以上传一个短小的测试音频来验证连通性。如果一切正常,你将在几秒内看到转录结果。
3. YouTube 处理设置 📺
| 配置项 | 说明 | 推荐设置 |
|---|---|---|
| YouTube 字幕 API 地址 | 字幕提取和音频下载服务的 URL | 根据你部署的服务地址配置 |
| 默认字幕语言 | 优先获取哪种语言的字幕 | zh(中文)或 auto(自动检测) |
智能降级功能内置在处理逻辑中,无需手动开关——只要配置了 Speaches API 地址,降级路径就自动可用。
4. AI 处理设置 🤖
| 配置项 | 说明 | 推荐设置 |
|---|---|---|
| 启用 AI 处理 | 是否在保存前进行 AI 内容整理 | 开启 ✅ |
| AI 提供商 | 使用哪个 AI 服务进行整理 | openai(兼容接口)或 ollama(本地模型) |
| AI 模型 | 具体使用的模型名称 | gemini-2.5-pro 或本地 Ollama 模型名 |
| 自定义提示词 | AI 整理时使用的指令 | 默认提示词已包含去语气词、纠错、分段、起标题等指令,可按需自定义 |
当 AI 处理开启后,每段转录文本在保存到 Trilium 之前,都会先经过 AI 的智能整理——分段、去除口语化表达、纠正错别字、提取要点、添加结构。这一步骤能将「原始语音转录」的可用性提升一个量级。
5. Trilium 保存设置 💾
| 配置项 | 说明 | 推荐设置 |
|---|---|---|
| 自动文件夹组织 | 按日期自动归类笔记 | 开启 ✅ |
| 自定义标签 | 所有笔记统一附带的标签 | content-processing,trilium-ai |
| 边处理边保存 | 批量处理时即时保存 | 开启 ✅(默认行为,无需配置) |
💡 建议在 Trilium 中创建如下文件夹结构来组织 Catalyst 的输出:
📁 内容转录
├── 📁 音频文件
├── 📁 YouTube视频
└── 📁 语音笔记七、日常使用:三大核心功能详解
将 [trilium_content_processor] 短代码插入到一个 WordPress 页面后发布,访问该页面你会看到 Catalyst 的完整界面。顶部是三个选项卡——「音频转录」「YouTube 转录」「YouTube 批量处理」。
1. 音频转录——让录音变成知识 🎵
在线语音录制 🎙️
页面顶部是一个醒目的录音区域,渐变背景配以麦克风图标。操作流程:
- 点击「🎙️ 开始录音」按钮——浏览器会请求麦克风权限(首次使用时),授权后按钮变为「⏸️ 暂停录音」状态,同时出现脉冲动画的录音指示器
- 录音过程中,可以点击「⏸️ 暂停录音」——按钮变为「⚙️ 选择操作」状态
- 暂停后点击按钮,弹出选择面板:
- ▶️ 「继续录音」——恢复录音,按钮回到暂停状态
- ⏹️ 「停止录音」——结束录音,进入处理选择
- 停止录音后,弹出双模式选择面板:
- 💬 「与 AI 聊天」——录音被转录为文本后直接发送到 TriliumAI Chat 聊天窗口,你可以立即开始基于语音内容的 AI 对话
- 📝 「AI 整理保存」——录音经完整处理流水线(转录 → AI 整理 → 保存到 Trilium),最终成为一条结构化笔记
💡 录音支持任意时长,不受时间限制(v4.10.0 彻底去除了此前版本的时间限制)。但建议单次录音控制在合理范围内(如 30 分钟以内),以确保转录质量和处理速度。
💡 如果转录过程中出现错误,Catalyst 会提供录音文件的备份下载链接,确保你的录音不会丢失。
文件上传 📂
录音区域下方是文件上传区域(两者之间有「或」分隔线)。支持多文件同时选择:
- 点击文件选择框,选择一个或多个音频文件(也支持拖拽上传)
- 支持的格式:WAV、MP3、M4A、FLAC、OGG、AAC、WMA、WebM
- 选择后会显示文件预览列表——每个文件显示名称、大小,不合格的文件标红并说明原因(不支持的格式 / 文件过大)
- 底部显示总计信息:文件数量和总大小
- 点击「🚀 开始处理」按钮
如果选择了多个文件,Catalyst 会逐个处理——每完成一个文件,立即保存到 Trilium,然后自动开始下一个。这种「边处理边保存」的设计意味着:即使第 5 个文件处理失败,前 4 个文件的结果已经安全地保存在 Trilium 中了。
2. YouTube 单视频转录——一键获取视频精华 📺
切换到「YouTube 转录」选项卡:
- 在输入框中粘贴 YouTube 视频链接(支持标准 URL 和短链接格式)
- 选择字幕语言偏好:
- 🇨🇳 中文——优先获取中文字幕
- 🇬🇧 English——优先获取英文字幕
- 🌍 自动检测——系统自动选择可用的字幕
- 点击「🚀 开始处理」(URL 验证通过后按钮自动激活)
处理过程透明可见:
- 首先尝试字幕提取(状态提示:「正在智能转录,优先字幕提取...」)
- 如果成功 → 显示结果,包含视频标题、字幕语言、处理时间、保存状态
- 如果失败 → 自动启动音频转录降级,状态提示切换,界面显示 🔄 智能降级标记
- 如果是降级处理,结果会详细显示:降级原因、字幕尝试耗时、音频下载耗时、音频转录耗时、音频文件大小等完整链路信息
最终结果页面清楚标注处理方式(✅ 字幕提取 或 🔄 智能降级),以及保存状态(✅ 已保存到 Trilium)。
3. YouTube 批量处理——频道级知识获取 📊
切换到「YouTube 批量处理」选项卡:
- 输入 YouTube 频道 URL(格式如
https://www.youtube.com/@username)或频道链接 - 设置筛选条件:
- 视频数量上限:10 / 20 / 50 / 100
- 日期过滤(可选):只处理某个日期之后的视频
- 点击「🔍 获取视频」
系统会加载频道信息(频道名称、订阅者数、总视频数)和视频列表。每个视频以卡片形式展示,包含标题、时长、发布日期、观看量和一个勾选框。你可以:
- 点击「✅ 全选」一次勾选所有视频
- 点击「❌ 取消全选」清除所有勾选
- 点击视频卡片(或其中的复选框)单独勾选 / 取消
选择完成后,点击「🚀 开始处理 (N个)」。系统进入批量处理模式:
- 顶部显示总体进度条(百分比)和统计面板(总计 / 成功 / 降级 / 失败 / 待处理)
- 当前正在处理的视频标题实时显示
- 每完成一个视频,实时更新统计和进度,处理结果逐条追加到结果列表中
- 每个视频的处理结果(✅ 转录完成 / 🔄 智能降级完成 / ❌ 失败)即时标记
💡 批量处理的每个视频都独立执行——一个视频的失败不会影响其他视频的处理。视频之间有 1 秒间隔以避免 API 限制。
💡 批量处理可能需要较长时间(取决于视频数量和字幕可用性)。v4.10.0 的 1 小时统一超时机制确保即使是长视频也不会因超时而中断。建议在非高峰时段执行大批量处理。
八、进阶使用技巧与最佳实践
1. 建立你的内容转录工作流 📋
研究者的工作流:
- 发现有价值的 YouTube 讲座或播客 → 使用单视频转录获取文字
- 开启 AI 整理,让转录内容变成结构化研究笔记
- 在 TriliumAI Chat 中开启上下文,引用转录笔记进行深度分析
- 用
/trilium research命令综合多条转录笔记,生成主题报告
教育者的工作流:
- 录制课堂讲解(使用在线录音功能)→ 选择「AI 整理保存」
- AI 自动将口语化讲解整理为书面化课程笔记
- 通过 Trilium WP 将整理后的笔记发布为 WordPress 课程页面
- 学生可以通过网页访问课程文字版(替代 / 补充视频)
内容创作者的工作流:
- 批量转录目标领域的 YouTube 频道(获取素材)
- 在 TriliumAI Chat 中用上下文功能综合这些素材
- 通过 Gutenberg 提示词块编排「素材 → 提炼 → 成文」的工作流
- 产出的文章自动保存到 Trilium,形成内容资产
日常语音笔记工作流:
- 灵感来了?点击录音按钮,边走边说
- 说完后选择「AI 整理保存」
- 散乱的口语表达被 AI 整理成清晰的段落笔记
- 下次在 TriliumAI Chat 中对话时,AI 能「记起」你的这段灵感
2. 模型选择策略 🧠
| 使用场景 | 推荐 Whisper 模型 | 理由 |
|---|---|---|
| 大量短音频快速转录 | tiny 或 base | 速度优先 ⚡ |
| 日常使用(中英混合) | medium | 最佳平衡点 |
| 专业讲座、学术内容 | large-v3 | 准确性优先 🎯 |
| 批量 YouTube 处理 | medium | 兼顾速度和质量 |
| 有口音或噪声环境 | large-v3 | 更强的鲁棒性 |
| 测试和调试 | tiny | 最快出结果 ⚡ |
3. 性能优化建议 ⚡
- 如果 Speaches 和 WordPress 部署在同一台服务器上,使用
localhost地址可以避免网络延迟 - 批量处理 YouTube 频道时,优先选择有字幕的频道——可以大幅减少 GPU 占用
- 对于 AI 整理任务,优先使用 Ollama 本地模型或低成本 API——文本整理不需要顶级推理能力
- 定期检查 Trilium 中转录笔记的文件夹大小,避免笔记数量过多影响 Trilium 的搜索性能
- 如果 GPU 资源有限,可以在 Speaches 中配置请求队列,避免多个转录任务同时争抢 GPU
- 确保 PHP 的
max_execution_time设置足够大(建议 1800 秒即 30 分钟),或者设为 0(无限制) - 配置 Nginx 的
fastcgi_read_timeout与 PHP 超时一致,避免网关层提前截断长任务
4. 与 Trilium AI 生态的深度整合 🔗
Catalyst 真正的威力在于它不是一个孤立的转录工具,而是 Trilium AI 知识生产流水线的有机组成部分:
转录 → 上下文循环 🔄 你今天转录的一段技术讲座,明天就能在 TriliumAI Chat 的上下文中被 AI 引用。随着转录笔记的积累,AI 对你所关注领域的「理解」越来越深——这是一个知识增值的正反馈循环。
转录 → 研究综合 🔬 通过 /trilium research 命令,AI 可以综合你转录的多个不同来源的内容,发现跨视频、跨讲者的共通观点和差异——这是手动做笔记时很难实现的。
转录 → Agent 检索 🔍 安装了 TriliumAI Agent 后,AI 代理可以搜索和读取 Catalyst 生成的所有笔记。你可以直接问 AI:「帮我找一下上个月我转录的那个关于 Transformer 架构的 YouTube 视频」,Agent 会在知识库中找到对应的笔记并返回内容。
转录 → Gutenberg 工作流 🏗️ 你可以创建一个 Gutenberg 提示词块:「请基于以下转录内容提炼三个核心观点,并给出你的批判性分析:{转录内容}」。配合 Catalyst 的输出,这构成了一条从「听」到「分析」的自动化流水线。
转录 → OpenClaw 记忆积累 🧠 通过 OpenClaw 的持久化记忆系统,AI 代理可以记住你通过 Catalyst 采集的知识内容,在后续对话中引用和参考——今天转录的一段 AI 行业分析,下周 AI 代理还能想起来并将其与新的信息关联。
九、故障排查
常见问题速查 🛠️
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 转录结果为空 | Speaches 服务未启动 / 模型未加载 | 检查 Speaches 服务状态 → 确认模型已下载 |
| 上传失败「文件太大」 | PHP 的 upload_max_filesize 限制 | 修改 php.ini 中的 upload_max_filesize 和 post_max_size |
| YouTube 字幕获取失败 | 字幕 API 不可达 / 视频无字幕 | 检查 API 地址 → 系统会自动降级到音频转录 |
| 音频转录极慢 | Speaches 在 CPU 模式运行 / 使用了过大的模型 | 确认 GPU 被正确识别 → 降级到 smaller 模型 |
| 保存到 Trilium 失败 | Trilium WP 未配置 / Token 过期 / TriliumAI Chat 未安装 | 检查 Trilium WP 设置 → 验证 ETAPI Token → 安装 TriliumAI Chat |
| 录音无法开始 | 浏览器未授权麦克风 / HTTPS 未配置 | 检查浏览器权限设置 → 确保网站使用 HTTPS |
| AI 整理功能无效 | TriliumAI Chat 未安装 / AI 提供者未配置 | 安装 TriliumAI Chat → 配置至少一个 AI 服务 |
| 处理超时(前端报错) | Nginx 网关超时 / PHP 执行超时 | 增大 Nginx fastcgi_read_timeout 和 PHP max_execution_time |
| 批量处理中途停止 | PHP 内存不足 / 网络不稳定 | 增大 PHP memory_limit → 减少单批处理数量 |
| 设置页面显示服务不可用 | API 服务器地址错误 / 端口未开放 | 检查集成状态面板 → 验证 API 地址和端口 |
💡 Catalyst 在处理过程中会输出详细的日志信息,统一使用 Trilium Catalyst: 前缀。启用 WordPress 的 WP_DEBUG 模式(在 wp-config.php 中设置 define('WP_DEBUG', true) 和 define('WP_DEBUG_LOG', true))可以在 wp-content/debug.log 中查看完整的调试日志,帮助定位问题。
十、更大的图景与进阶路径
1. Catalyst 在主权个人技术栈中的位置 🌍
把 Catalyst 放到 Brave 基地正在构建的完整生态中来看:
📡 信息输入层
├── RSS 聚合(Miniflux)→ 文章类内容
├── Web Clipper → 网页内容
├── 手动笔记 → 个人思考
└── 🔊 Trilium Catalyst → 音视频内容 ← 你在这里
↓
📦 知识存储层:Trilium Notes(统一存储,ETAPI 开放接口)
↓
🔗 知识连接层:Trilium WP(WordPress ↔ Trilium 双向通道)
↓
🧠 智能处理层
├── TriliumAI Chat(AI 对话、上下文、工作流编排)
├── TriliumAI Agent(笔记搜索、分析、综合研究)
└── Trilium Catalyst(音视频 → 文本 → AI 整理)
↓
📤 知识输出层:WordPress 发布 → Gutenberg 工作流 → 社区分享
↓
🔄 自动化层:n8n(连接所有环节,实现自动化管道)Catalyst 填补了信息输入层最后一个关键空白——音视频内容的自动化获取与转化。有了它,你的 Trilium 知识库真正成为了一个「全媒体知识容器」,不再有任何类型的内容被遗漏在外。
2. 从使用者到构建者的进阶 🚀
使用者的进阶:
- 建立定期转录的习惯——每周将本周接触的重要音视频内容集中转录到 Trilium
- 利用批量处理功能,系统性地归档你关注的 YouTube 频道
- 在 TriliumAI Chat 中实践「转录 → 上下文引用 → 深度分析」的完整工作流
- 创建专门的 Gutenberg 提示词块,设计「转录内容分析」工作流模板
- 善用 Catalyst 的自动标签系统,在 Trilium 中通过标签快速筛选不同类型的转录内容
开发者的进阶:
- 研究 Catalyst 的源码架构——特别关注 API Handler 层的设计模式(流式下载、智能 MIME 检测)和 Processor 类的降级策略
- 尝试扩展 Catalyst 的能力:比如添加 PDF 文档处理、网页正文提取等新的内容类型
- 探索将 WhisperLiveKit 实时转录功能集成到 Catalyst 中,实现离线 + 实时双模式
- 研究如何通过 WordPress 的 Filter Hook 为 Catalyst 添加自定义的后处理管道
- 为 Catalyst 贡献代码——特别是新的字幕数据字段兼容、新的音频格式支持等
知识工作者的进阶:
- 将 Catalyst 纳入你的 HEAT × PDCA 操作系统——在「Habit」层面建立定期转录和整理的习惯
- 关注 Brave 基地关于「主权个人」的系列课程和讨论——理解音视频转录在知识自治中的位置
- 探索 n8n 与 Catalyst 的联动——比如监控特定 YouTube 频道的新视频,自动触发转录流水线
结语:让每一段声音都成为知识的种子
在信息过载的时代,真正的稀缺不是信息本身,而是将信息转化为个人知识的能力。播客里那段精彩的行业分析、YouTube 上那个深度的技术讲座、会议中那些灵光一现的讨论——如果不能被捕获、结构化、纳入你的知识体系,它们就只是「听过就忘」的噪音。
Trilium Catalyst 做的事情看似简单——把声音变成文字。但当这个过程被嵌入到 Brave 基地的完整知识生产流水线中,它的价值发生了质变:
- 声音不再是转瞬即逝的波形,而是可检索、可引用的文本笔记 📝
- 笔记不再是孤立的记录,而是 AI 可以理解和综合分析的知识原料 🧠
- 知识不再是被动的存储,而是在「人 → 笔记 → AI → 人」的循环中不断增值的活资产 🔄
正如 Brave 基地所践行的「主权个人掌控 AI」理念——Catalyst 确保了这一切都发生在你自己控制的基础设施上:Speaches 运行在你的服务器上,Trilium Notes 存储在你的磁盘上,AI 整理使用你自己部署的模型。没有任何第三方可以访问你转录的内容,你的知识资产始终归你所有。
这款插件是通向「让每一段有价值的声音都成为知识种子」这一愿景的一块扎实的基石。
参考资料:
回复