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 的体检脚本,检查两类问题:
- 断链:正文里写了
某笔记,但 vault 里找不到对应的某笔记.md。 - 孤立笔记:没有任何其他笔记用 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最好),设计了这样一个流程,而不是"一键全自动":
find_notes_without_cards.py:扫描探索成果/找出哪些正式笔记还没生成问答卡,避免重复劳动。- 生成草稿:把笔记内容喂给 AI(子agent或直接生成),产出
-草稿.md放进探索产出/学习工具集/drafts/,不直接进最终目录。 - 人工review:过一遍草稿内容准不准、有没有超出原文瞎编,这一步不能跳过。
- 确认无误后才复制到
探索产出/正式目录,再用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)