Skip to content

Proposal:支持将语音输出重定向到固定 Markdown 文件 #1029

Description

@45lab95

Proposal:支持将语音输出重定向到固定 Markdown 文件

核心目标

为 OpenLess 增加一种新的输出目标:除了默认插入当前前台应用外,也允许用户通过快捷键,将本次语音识别并处理后的文本追加到一个固定的 Markdown 文件中。

为什么这个功能重要

在日常工作中,我们经常会接触到许多值得记录的小知识和灵感,例如:

  • 刷题时遇到的解题思路;
  • 与 AI 对话时获得的有价值信息;
  • 阅读文章、文档或代码时产生的理解和总结;
  • 工作过程中临时想到的经验、判断或待办事项。

这些内容往往很短,专门打开笔记软件记录又有较高的操作成本。如果能够通过一个快捷键直接口述,就可以显著降低记录门槛,让零散的信息更容易沉淀下来。

典型应用场景

用户正在刷题、阅读资料或与 AI 对话时,突然想到一个值得保留的知识点。

此时用户按下“快捷记录”键并口述:

这道题的关键是先把状态转移拆成两个阶段,这样时间复杂度可以从平方级降到线性级。

OpenLess 完成录音、转写和必要的文本整理后,不再把结果插入当前正在使用的应用,而是将最终文本追加到 Obsidian Vault 中指定目录下、以当天日期命名的 Markdown 文件中,例如:

Daily/2026-09-03.md

功能要求

1. 支持新的输出重定向方式

当前 OpenLess 默认将处理后的文本输出到当前前台应用。

本提案希望增加一种新的输出目标:

当前前台应用
固定 Markdown 文件

输出目标应该是可选择的,而不应将 OpenLess 的输出能力限制为只能写入前台应用。

2. 通过独立快捷键触发

用户可以配置一个独立的快捷键,用于触发“快捷记录”流程。

该快捷键应复用现有的录音、转写和文本处理流程,但在最终交付阶段选择 Markdown 文件作为输出目标。

3. 使用 append 模式

该功能不需要识别光标位置,也不需要替换或插入某一段内容。

每次触发后,只需要:

  1. 根据当天日期生成文件名;
  2. 找到配置的固定目录;
  3. 如果文件不存在则创建文件;
  4. 将本次最终文本追加到文件尾部。

例如:

Daily/2026-09-03.md

每次记录都追加到该文件末尾,并自动处理必要的换行。

4. 不改变现有的前台插入流程

现有的前台应用插入行为应保持不变。

用户仍然可以使用原有快捷键,将内容插入当前正在使用的应用;新的快捷记录快捷键只是增加另一种输出目标。

理想情况下,输出目标应被抽象为一种可替换的交付方式:

录音 → 转写 → 文本处理 → 输出到指定目标

而不是把“插入当前前台应用”写死在流程中。

Obsidian 应用场景

第一阶段可以优先支持 Obsidian:

  • 用户配置 Obsidian Vault;
  • 用户配置 Vault 内的目标目录;
  • 文件名默认使用 YYYY-MM-DD.md
  • 文本直接写入本地 Markdown 文件;
  • 不要求用户安装额外的 Obsidian 插件;
  • 不要求 Obsidian 当前处于前台或已经打开。

由于 Obsidian 基于本地 Markdown 文件工作,直接追加文件内容即可满足基本需求。

非目标

本提案第一阶段不考虑:

  • 根据光标位置插入;
  • 修改或替换现有笔记内容;
  • 调用 Obsidian 内部 API;
  • 自动打开或切换到 Obsidian;
  • 复杂的笔记模板和双链生成;
  • 自动分类、标签或知识图谱处理。

这些能力可以在基础的输出重定向机制稳定后再进一步讨论。

预期收益

该功能可以让 OpenLess 同时承担两类任务:

  • 作为输入工具,将内容输出到当前正在使用的应用;
  • 作为低摩擦的知识记录工具,将临时想到的内容快速沉淀到个人知识库。

这会让“记录一个小知识”的成本接近于“说一句话”,特别适合日常学习、刷题、阅读和 AI 协作场景。

验收标准

  • 用户可以配置一个独立的快捷记录快捷键;
  • 用户可以配置 Obsidian Vault 和目标目录;
  • 按下快捷键后可以完成录音、转写和文本处理;
  • 文本会追加到当天日期命名的 Markdown 文件;
  • 文件不存在时会自动创建;
  • 多次触发不会覆盖当天已有内容;
  • 原有前台应用输出快捷键的行为不受影响;
  • 输出目标的实现可以扩展到其他 Markdown 文件或应用,而不局限于 Obsidian。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions