Community生产力与协作github.com

录制内容转化为Obsidian笔记

将会议录音或讲座材料(音频/视频、转录文本、字幕、PDF/PPTX幻灯片、笔记、代码、讲义、白板照片)转化为相互关联的Obsidian笔记。使用Whisper在本地转录录音。

录制内容转化为Obsidian笔记 是什么?

该技能能够将一次会议或讲座的录音及相关材料,自动转化为结构化的、相互关联的Obsidian笔记库。它支持会议和讲座两种模式:会议模式会生成会议中心笔记(包含TL;DR、决策、带有负责人和截止日期的Obsidian Tasks格式行动项)、ADR风格的决策记录、持久化的主题笔记以及系列MOC;讲座模式则会生成讲座MOC、密集的锚点笔记和细粒度的原子笔记,并包含PDF++幻灯片链接和Mermaid图表。整个流程通过编排器+笔记编写器的分离架构来优化庞大上下文窗口的使用,由Whisper在本地完成转录,并包含自动化验证和秘密扫描。您可以在Cursor, Codex, Claude Code等任何支持自定义技能的IDE或终端中使用此技能,只要用户需要从会议、通话、课堂或演讲中生成会议纪要、回顾、行动项、学习笔记、MOC或知识库即可。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/T0MYYY/recording-to-obsidian/tree/HEAD/skill/recording-to-obsidian

Installed? Explore more 生产力与协作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

录制内容转化为Obsidian笔记 是做什么的?

将一次会议或一次讲座转化为一个自包含、完全链接的Obsidian笔记库的一部分。两种模式共享相同的流水线、约定和验证步骤;它们的区别在于提取的内容和笔记的组织方式。

会议模式讲座模式
目的记住决定了什么以及谁在何时做什么随时快速重新学习知识
中心每场会议一个会议中心 + 一个系列MOC,每次会议一条记录每个讲座一个MOC
主体笔记ADR风格的决策记录;持久知识的主题笔记锚点笔记(密集)+ 原子笔记(每个笔记一个概念)
可追溯性决策和行动项上的转录时间戳 [00:12:34]PDF++幻灯片链接 [[deck.pdf#page=5]];纯口头内容的时间戳
参考references/meeting-mode.mdreferences/lecture-mode.md

<skill> 表示本文件所在的文件夹。

1. 流水线

materials ──► 1 setup ──► 2 transcribe ──► 3 pick mode ──► 4 note-writer ──► 5 verify ──► 6 report
             config,      scripts/          meeting or      writes notes     check_vault
             python       transcribe.py     lecture          (one subagent)   scan_secrets

1.1 设置

首先记录开始时间:运行 date +%s 并保留该数字;验证只会检查在此之后写入的笔记。

读取 <skill>/config.toml。它设置了转录后端/模型/语言、说话人分离、notes.output_language、notes.default_mode 以及笔记库文件夹名称(notes_dir, moc_dir, meetings_dir, sources_dir;下面使用默认值)。脚本的解释器是 runtime.python;如果为空,则使用 ~/.local/share/recording-to-obsidian/venv/bin/python。称其为 $PY —— 这是一种约定:在命令中,完整写出解释器和脚本的文字路径,每次调用一个命令,不使用shell变量或 cd … && 链(代理权限规则匹配文字命令,变量使其无法检查)。如果该路径不存在,请告诉用户运行 install.sh(README)—— 不要将pip安装到用户自己的Python环境中。

在执行任何其他操作之前,先确定以下事实(只询问你无法推断的信息):

  • vault — 用户的路径,如果当前工作目录包含 .obsidian/ 或用户说“此笔记库”,则使用当前工作目录;仅在其内部写入;
  • materials — 每个文件的绝对路径;按扩展名分类:音频/视频、字幕(.srt/.vtt)、幻灯片(.pdf/.pptx)、笔记本/代码、图像/照片、文档;
  • title, series/course, date — 来自用户、文件名或材料;不要凭空编造日期或参与者列表(填写 TBD 并说明);
  • output language — 使用 notes.output_language,除非用户指定了其他语言。

1.2 转录

对于每个没有匹配字幕文件(相同文件名主干)的录音,运行:

$PY <skill>/scripts/transcribe.py <recording> -o <scratch>/transcripts
  • <scratch> 是笔记库外部的临时文件夹(例如 $TMPDIR/recording-to-obsidian-<date>-<slug>),用于所有中间文件。
  • 可选的参数:--model small(更快,结果较粗糙),--language en(跳过语言检测),--diarize(说话人标签;需要 install.sh --diarize 和 diarize.hf_token_env 指定的环境变量中的Hugging Face令牌)。首次运行会下载模型,可能需要几分钟;它会在stderr上打印进度——让它完成。
  • 它会写入 <stem>.srt 和 <stem>.txt(每行一个 [HH:MM:SS] Speaker N: text 格式的片段),并打印JSON格式的摘要行(语言、模型、时长、说话人、清洗统计、文件路径)。保留该摘要:语言、模型和说话人分离信息应放入笔记的来源部分。
  • 来自任何工具的现有字幕可以相同方式标准化:$PY <skill>/scripts/transcribe.py talk.vtt -o <scratch>/transcripts(不涉及模型;重复循环会被折叠,并写入带时间戳的 .txt)。
  • 支持长时间录音:该脚本可以处理数小时的音频;不要拆分文件。

如果转录失败,报告错误行;$PY <skill>/scripts/transcribe.py --check 会显示缺少什么。

1.3 选择模式

明确的用户模式(或非 auto 的 notes.default_mode)优先。否则:

  1. 材料中包含幻灯片、笔记本、实验代码或讲义 → 讲座。
  2. 否则,阅读转录内容的前约5分钟,并浏览其余部分:
会议信号讲座信号
多个发言人,各有相当的发言时间一个主要发言人进行讲解
议程、状态更新、“我们进展到哪了……”“今天我们将介绍……”,“上周我们看到了……”
提案、权衡讨论、“我们就这么办”、“同意”定义、推导、示例练习、作业
负责人和截止日期:“你能在周五前处理这个吗?”听众提问是为了理解,而非决策
项目、客户、截止日期、风险课程/讲座编号、阅读材料、作业
  1. 混合情况根据目的判断:设计评审、计划会、复盘会、汇报会和一对一对话是会议;录制的技术演讲、培训、研讨会和教程是讲座,即使包含一些讨论。

记录所选模式以及做出此决定的2-3个信号(它们将出现在报告中)。如果实在难以判断且可以询问,则询问;否则选择一个并说明原因。

1.4 执行模型:编排器 + 一个笔记编写器

阅读整个转录内容、逐页阅读幻灯片和笔记本文件,然后写入数十个文件会很快填满上下文窗口,因此将角色分离:

  • 编排器 — 接收请求的会话。它执行步骤1.1–1.3(转录输出保留在磁盘上;它只读取足够多的转录内容以选择模式),然后将写入任务交给一个笔记编写器子代理,然后执行步骤1.5的验证并生成报告。
  • 笔记编写器 — 一个子代理,在其自己的上下文中完成所选模式的整个写入任务:阅读所有材料、规划、编写、自我检查。一次会议或一次讲座可以舒适地放入一个上下文;不要将幻灯片或转录块拆分给多个代理(这会导致交叉引用丢失和笔记重复)。

在没有子代理工具可用,或者子代理无法完成工作需要(如图片处理、运行脚本、写入文件)时,请自行完成工作而非委托。在会议模式下,当会议足够短以至于指令和工作量差不多长时(大约15分钟以下的录音,且没有幻灯片或文档),你也可以直接写入。讲座模式始终使用笔记编写器,除非子代理不可用或无法完成工作:需要逐页阅读幻灯片,这属于编写器的上下文。在报告中说明你选择了哪种方式。验证(1.5)永远不会被跳过。对于多个会话,每个会话使用一个笔记编写器,当它们需要追加到同一个MOC时顺序执行。

给笔记编写器的指令——它开始时没有任何上下文,因此给它一切:

  • 此技能文件的绝对路径;模式;需要遵循的文件:references/meeting-mode.md 或 references/lecture-mode.md,以及 references/note-templates.md、references/transcript-processing.md、references/mermaid-style.md;
  • 笔记库路径、临时文件夹、$PY、输出语言、标题/系列/日期(或“推导”)、配置文件中的文件夹名称;
  • 所有材料和转录文件的绝对路径,以及转录摘要(语言、模型、说话人);
  • 现有的系列/课程MOC和上一次会话的中心/MOC(如果有);用户特别要求的任何内容;
  • 规则:仅在笔记库内写入;切勿修改预先存在的笔记,除非是文档化的追加操作;无秘密;
  • 要返回的内容:第3节中的报告块以及任何它无法解决的内容。

1.5 验证(编排器)

当笔记编写器返回后,独立检查其工作,而非信任其摘要:

$PY <skill>/scripts/check_vault.py <vault> --since <epoch seconds when the job started>
$PY <skill>/scripts/scan_secrets.py <vault>/sources

check_vault.py 必须以 issues: 0 结束;除非有理由不修正(需说明原因),否则也要修复警告。它解析链接的方式与Obsidian相同(文件名或部分路径、不区分大小写、忽略 #heading/|alias、跳过代码块),因此它报告的任何损坏链接在Obsidian中都是损坏的。它检查:损坏的 [[links]]/嵌入/标记链接、不带 .pdf 的PDF++链接、frontmatter(title、type、date_created)、中心覆盖(每个新笔记都链接自一个MOC或会议中心;每个会议中心都链接自一个MOC)、秘密;对无连接的笔记、未样式化的Mermaid和歧义链接发出警告。

然后检查脚本无法检查的内容:

  • 除了文档化的追加操作(系列MOC记录、被替代的决策状态、上一个讲座MOC的“下一个”链接)外,没有预先存在的笔记被更改;
  • 会议模式:每个决策都有记录或明确标记为次要;每个行动项都有负责人(或 TBD)、截止日期(或 TBD)和时间戳;
  • 讲座模式:MOC精确列出每个新笔记一次;满足讲座自查的粒度和锚点目标。

直接修复小问题;对于较大的问题,将其连同精确列表发回给笔记编写器。重新运行 check_vault.py,直到其报告0个问题。删除临时文件夹(它包含wav和页面图像),除非用户希望保留。

2. 共享约定

笔记库布局 —— 笔记是扁平的;导航来自MOC和中心,而非文件夹。

vault/
├── notes/                         # 原子笔记、锚点笔记、决策笔记和主题笔记(扁平)
├── meetings/<series>/             # 会议中心:"YYYY-MM-DD <title>.md"
├── moc/<series or course>/        # 系列MOC(会议)/ 每个讲座一个MOC
└── sources/<series or course>/<YYYY-MM-DD or Lecture_NN>/
    ├── <prefix>_transcript.srt / .txt
    ├── <prefix>.pdf               # 幻灯片,用于PDF++链接
    ├── slide_images/  whiteboard_photos/  notebooks/
    └── structured_slides.json     # 可选的逐页阅读记录

为复制到 sources/ 的每个文件添加系列/课程 + 会话前缀(Atlas_2026-11-12_transcript.srt、Optics101_L03.pdf、Optics101_L03_p08.jpg):Obsidian通过文件名解析链接,因此两个都包含 transcript.srt 或 page-08.jpg 的会话会发生交叉链接。文件夹名称使用系列/课程名称,并将空格替换为 -。

文件名 —— 使用人类可读的标题,无ID(会议中心是例外:它们以日期开头以便排序)。避免包含 / \ : * ? " < > | # ^ [ ];使用 — 代替 :。标题应足够具体以独立存在:Rate limits use a token bucket per API key.md,而不是 Rate limiting.md。

Frontmatter —— 每个笔记都以YAML frontmatter开头,至少包含 title、type 和 date_created。type 在会议模式中为 moc、meeting、decision 或 topic;在讲座模式中为 moc、anchor 或 atomic。模式特定的字段在 references/note-templates.md 中。标签使用全小写的英语kebab-case:一个系列/课程标签、2–4个主题标签、一个类型标签;在发明新标签之前,先重用笔记库中已有的标签。

语言 —— output_language = "auto" 表示:使用材料(转录内容检测到的语言或幻灯片的语言)的语言进行写作。当输出语言与材料的语言不同时,保留原始语言的技术术语,并在首次出现时提供注释——中文笔记记录英语会议:功能开关 (feature flag);英语笔记记录德语讲座:error propagation (Fehlerfortpflanzung)——然后使用读起来更自然的格式。代码、命令、路径、产品和工具名称从不翻译。标题遵循输出语言。

链接 —— 每个 [[wikilink]] 必须解析到笔记库中的一个笔记或文件。链接到现有笔记而非重复编写。当裸名称可能产生歧义时,使用路径([[sources/Atlas/2026-11-12/Atlas_2026-11-12_transcript.srt|transcript]])。PDF++页面链接始终保留 .pdf:[[Optics101_L03.pdf#page=5|Slide p.5 "Snell's law"]]。

时间戳 —— 对于每个仅来自口头表达的决策、行动项和主张,引用转录的 [HH:MM:SS]。它们是指向录音的审计追踪。

秘密 —— 切勿将凭据写入笔记库。在将笔记本或代码复制到 sources/ 之前,在副本上运行 $PY <skill>/scripts/scan_secrets.py --redact <copy>(值变为 <REDACTED>,变量名称保留)。会议中口头分享的密码、信用卡号或敏感的個人数据也不应记录——应写“以口头方式分享了凭据(此处未记录)”。

视觉元素 —— 在编写任何Mermaid图表之前,阅读 references/mermaid-style.md:其中包含调色板和保持图表正确渲染的规则。无效的语法比没有图表更糟糕。

模式输出

  • 会议 → references/meeting-mode.md:1个中心,每个重大决策1个决策记录,0–N个需要保留的知识的主题笔记,一条追加到系列MOC的记录(首次使用时创建),转录内容复制到 sources/。
  • 讲座 → references/lecture-mode.md:1个MOC,对于正常的30多页幻灯片,生成8–15个锚点笔记,平均每张内容幻灯片至少有一个原子笔记,幻灯片/笔记本/转录内容复制到 sources/。

3. 报告

会议模式:

Meeting 2026-11-12 — <title>  (series: <series>)   mode: meeting (signals: …)
  Transcript: 00:41:07, mlx:whisper-large-v3-turbo, 3 speakers, en → notes en
  Hub: meetings/<series>/2026-11-12 <title>.md
  Decisions: 3 (records: 3)   Action items: 7 (owner TBD: 1, due TBD: 2)
  Topic notes: 2   Open questions: 2   Risks: 1
  Series MOC: moc/<series>/MOC — <series>.md (entry appended)
  check_vault: issues 0, warnings 0
  Unresolved: <speakers not matched to names, unclear passages, …>

讲座模式:

Lecture NN — <topic>   mode: lecture (signals: …)
  Slides: 45 pages (content 37)    Knowledge points: 68
  Notes: 56 atomic + 12 anchor     archetypes: concept=34, practice-demo=6, …
  Notes per content slide: 1.5     Anchors with ≥2 rich elements: 12/12
  Mermaid: 14 (types: sequence, mindmap, flowchart, …)
  check_vault: issues 0, warnings 0
  Unresolved: <page 21 diagram text missing, …>

相关技能