📚 离职知识库

md_to_anki.py:把 Markdown 问答笔记转成 Anki 卡片

#是什么

一个小 Python 脚本,把按固定格式写的 Markdown 问答笔记,一键转成 Anki 可导入的 CSV 文件。脚本本体放在 ~/Desktop/探索产出/md_to_anki.py

#笔记格式约定

## Q: 问题是什么
A: 答案是什么

## Q: 下一个问题
A: 下一个答案

#怎么用

python3 md_to_anki.py 笔记.md 输出.csv

生成的 CSV 用 Tab 分隔(正面\t背面),在 Anki 导入时字段分隔符选 Tab 即可。

#已验证

用一份示例笔记(复利、测试效应两道题)实测跑通,正确生成了2张卡片,输出内容见 ~/Desktop/探索产出/示例笔记.md示例卡片.csv

#更新(第4轮):支持多行答案

原来答案只能写一行,改进后答案可以跨多行(一直写到下一个 ## Q: 为止都算同一张卡片的答案),能覆盖带列表/多段落的复杂内容了。用 haiku 子agent 根据「输出先行学习法」这篇笔记自动生成了7组问答,实测转换成功,见 探索产出/输出先行学习法-问答卡.md 和对应的 csv。

#更新(第6轮):支持标签系统

问题行末尾现在可以写 ## Q: 问题 #标签1 #标签2 打标签(可以打多个,也可以不打),CSV 会多输出一列标签(空格分隔),Anki 导入时把第三列映射成 Tags 字段即可按标签筛选。已做回归测试:旧的无标签用例、多行答案用例、新的带标签用例全部通过。

#更新(第10轮):命令行选项增强,工具功能收尾

补齐了第4轮头脑风暴出的最后一个点子,加了3个命令行参数:

python3 md_to_anki.py 笔记.md 输出.csv --reverse       # 额外生成"答案→问题"的反向卡,正反面都能背
python3 md_to_anki.py 笔记.md 输出.csv --deduplicate   # 去掉完全重复的问答对
python3 md_to_anki.py 笔记.md --check                  # 只做格式检查(卡片数/重复项),不写文件

已做完整测试:旧的无参数用例、标签+多行答案用例、--check(能正确报告重复项)、--deduplicate(正确去重)、--reverse(正确生成反向卡)全部通过。至此这个小工具从"能跑通"到"标签+多行+去重+反向卡+格式检查"功能基本齐全,这条从第1轮"输出先行学习法"开始的工具线可以先告一段落了。

#为什么做这个

承接"输出先行学习法"和"主动回忆"这两个学习技巧——道理都懂,但缺一个能直接落地用的工具。以后写学习笔记按这个格式记,就能直接喂给 Anki 做间隔重复复习,把学习方法真正变成习惯。

来源:2026-07-04 探索 loop 第2轮,自己动手写并测试。


#附:学习工具集 —— vault 体检工具

#学习工具集:vault_lint.py(Obsidian 笔记体检工具)

这是"个人学习工具集"项目(长期项目2)的第一个工具,放在 探索产出/学习工具集/vault_lint.py

#是什么

一个扫描 Obsidian 风格 vault 的体检脚本,检查两类问题:

  1. 断链:正文里写了 某笔记,但 vault 里找不到对应的 某笔记.md
  2. 孤立笔记:没有任何其他笔记用 wikilink 链接到它。

#怎么用

python3 vault_lint.py /path/to/vault
python3 vault_lint.py /path/to/vault --exclude daily,sources   # 额外排除某些目录不检查

默认已经排除 .obsidian/ .git/ .claude/ attachments/ templates/ 这些非内容目录。

#已验证

  • 用一个3篇笔记的合成测试vault验证了核心逻辑(断链检测、孤立笔记检测)都符合预期。
  • 直接跑在真实的 ~/Desktop/my-vault 上:扫描了54篇笔记,找到20处断链、2篇孤立笔记。其中断链里正确识别出了 my-vault 第28轮"体检"时人工发现的那条历史遗留断链 独立开发出海全栈技术栈速查(index.md/log.md 里都引用了,但文件确实不存在),说明工具是可靠的;其余大部分断链是CLAUDE.md/README里当"示例语法"写的 wikilink/双向链接 这类文字,或者引用了被排除掉的 daily/日记,都是预期内的"假阳性",不是真正需要修的问题。

#为什么做这个

my-vault 的 CLAUDE.md 里本来就把"定期体检扫断链/孤立笔记"列为工作流的一部分(log.md 第28轮也人工做过一次),这个脚本能把这个体检动作自动化,以后随时跑一下就知道 vault 有没有需要清理的地方。

#更新(第13轮):半自动批量生成卡片流程 + 辅助脚本

按 深度调研报告-AI辅助学习与知识管理工具全景 的提醒(全自动生成效果最差,半自动+人工review最好),设计了这样一个流程,而不是"一键全自动":

  1. find_notes_without_cards.py:扫描 探索成果/ 找出哪些正式笔记还没生成问答卡,避免重复劳动。
  2. 生成草稿:把笔记内容喂给 AI(子agent或直接生成),产出 -草稿.md 放进 探索产出/学习工具集/drafts/不直接进最终目录
  3. 人工review:过一遍草稿内容准不准、有没有超出原文瞎编,这一步不能跳过。
  4. 确认无误后才复制到 探索产出/ 正式目录,再用 md_to_anki.py 转成 CSV。

已经用这个流程跑了两篇:量子时间倒流的物理学突破(5张卡)、反直觉数学悖论与物理现象(6张,用上了第6轮做的标签功能)。目前 探索成果/ 还有10篇笔记没生成卡片,可以之后几轮继续按这个流程补。

相关

  • 是"个人学习工具集"长期项目的第一步,见 长期任务追踪
  • 上一个学习工具是 md_to_anki小工具说明
  • 半自动而非全自动的设计依据:深度调研报告-AI辅助学习与知识管理工具全景

来源:2026-07-04 探索 loop 第11轮(深度模式),自己动手写并测试。

来源:沉淀/探索成果/md_to_anki小工具说明.md;沉淀/探索成果/学习工具集-vault体检工具.md(整理于 2026-08-18)