Adobiz97 downloads错题本(Mistake notebook): mask answers (blur/white/mosaic/black), click to reveal, auto-split long answers to a linked page, insert at cursor, question emphasis, minimal mode. Plain Markdown, no lock-in.
Turn mistakes into reviewable assets: mask the answer, think first.
Answer masking · Click to reveal · Long-answer splitting · Insert at cursor · Minimal mode
A mistake notebook (错题本) for Obsidian, built for exam-driven studying: whenever you get a question wrong, capture it — then review with the answer masked until you can solve it yourself.
Community plugins (after review): Settings → Community plugins → Browse → search "Mistake Notebook" or 「错题本」.
Manual: download main.js, manifest.json and styles.css from Releases into
<vault>/.obsidian/plugins/mistake-notebook/
then enable Mistake Notebook in Community plugins. Beta versions are also available via BRAT.
| Command | Description |
|---|---|
| 新建错题(含答案遮罩) | Open the capture modal and create a standalone mistake note |
| 在当前位置插入错题(含答案遮罩) | Insert a mistake at the cursor of the current note |
| 把当前笔记的内联答案拆分为答案页 | Split the inline answer of the active note into an answer page |
| 切换极简模式 | Toggle minimal mode (less chrome, simpler capture) |
Right-click inside the editor for quick access: 插入错题 (insert here / new mistake page) and 题目显示强调 (toggle emphasis on selected text).
The form supports Markdown and LaTeX. Paste a screenshot with ⌘V directly into the answer field — it is saved following your Obsidian attachment-folder settings and embedded automatically. Answer length is shown live; the split checkbox is pre-checked when a split is recommended.
| Setting | Default | Description |
|---|---|---|
| Default mask style | Blur | Used when a note doesn't set maskStyle in frontmatter |
| Long-answer threshold | 400 | Answers longer than this are recommended for splitting |
| Split on display math | On | $$…$$ blocks count as long answers |
| Split on images | Off | Photo answers stay inline for masked reveal |
| Split behavior on capture | Ask | Pre-check the split checkbox in the modal |
| Answer pages follow question folder | Off | Create answer pages next to the question note |
| └ Subfolder inside question folder | Off | Put answer pages in question-folder/答案/ |
| Hide properties on mistake notes | On | Hide the frontmatter panel on question/answer pages |
| Minimal mode | Off | Less chrome; capture form reduced to question + answer |
One mistake = one Markdown note:
---
id: "mt-20250212-数学-a1b2c3"
subject: "数学"
answerMode: "page" # inline=same page; page=split to answer page
maskStyle: "auto" # auto/blur/white/mosaic/black
status: "pending" # pending/reviewing/mastered/archived
---
# 函数单调性
> [!mt-question] 题目
> 题干……
> [!answer] 查看完整答案(答案较长,已拆分答案页)
> [[函数单调性-数学-20250212-080509-答案|查看完整答案 →]]
Answer pages carry an mt-answer-of backlink and a "back to question" link. Conventions are documented in docs/ADR.
npm install
npm run dev # watch build → main.js (copy into your vault's plugin folder)
npm run verify # typecheck → lint → prettier → vitest → build (must pass before merging)
npm run test:watch # unit tests in watch mode
Layering: src/domain is pure TypeScript with zero dependencies (no "obsidian" imports) and is unit-tested in Node; the Obsidian API only appears in the adapter and UI layers. Business rules (split thresholds, naming, dedup) live in src/domain with *.test.ts files. Releases are built by CI from the tag — never attach local artifacts by hand.
Issues and PRs are welcome — please run npm run verify before submitting. Commit messages follow Conventional Commits.
MIT © Adobiz