| name | note-scan |
| description | Scan a photo of a handwritten note (dropped into chat) into a structured Obsidian Markdown note. Use when the user drops/sends an image of a handwritten note and wants it digitized, organized, and filed. Handles OCR via vision model, DECISION/ACTION labeling, hashtag extraction, and filing under an Obsidian vault at YEAR/MONTH/DATE-N.md with the original image embedded at the bottom. |
note-scan
Turn a photo of a handwritten note into a structured Obsidian Markdown note.
Vault location
All paths below use <vault-root> to mean the Obsidian vault's root directory, typically the working directory in which you (the agent) are launched. For example, <vault root>/2026/03/20-1.md relative to the vault root. Do not prepend / or use an absolute filesystem path — always resolve relative to the vault root.
If it's not obvious what the vault root directory is, ask the user first if they can specify a vault path or if you should create a new notes-vault directory.
No need for obsidian-cli setup — write files directly.
Workflow
1. Read the image
Use the image tool (vision model) to transcribe the handwritten note verbatim. Prompt:
"Transcribe this handwritten note exactly. Preserve line breaks where possible. Do not interpret or summarize — output only the text as written."
2. Identify DECISION and ACTION items
Scan the transcribed text for items the writer flagged as decisions or actions (e.g. written "DECISION:", "ACTION:", circled words, stars, arrows). Label each clearly in the note body:
**[DECISION]** We will use PostgreSQL as the primary DB.
**[ACTION]** @Jeff — send proposal by Friday.
3. Generate hashtags
Extract hashtags for:
- Key topics/themes (e.g.
#database, #architecture)
- People mentioned (e.g.
#person-jeff)
- Decisions (add
#decision to each)
- Action items (add
#action to each, plus #action-jeff if assigned)
Place the full hashtag block in the frontmatter under tags: AND inline at the bottom of the note body for searchability.
4. Determine the file path
Ask for the date the note was written if it's not visible in the image. Otherwise infer from context or use today's date.
Format: YEAR/MONTH/DATE-N.md
YEAR = 4-digit year (e.g. 2026)
MONTH = zero-padded month (e.g. 03)
DATE = zero-padded day (e.g. 20)
N = sequential note number for that day (start at 1; check existing files in that day's folder)
Example: <vault root>/2026/03/20-1.md
To find N, list files matching the date prefix in that month folder:
ls <vault root>/YEAR/MONTH/ 2>/dev/null | grep "^DD-" | wc -l
Then N = count + 1.
5. Save the image
Copy the original image into the vault's attachments folder:
<vault root>/attachments/YEAR-MM-DD-N.<ext>
Use cp or write the bytes. Preserve the original extension (jpg, png, heic, etc.).
6. Write the Markdown note
Use this template:
---
date: YYYY-MM-DD
tags: [tag1, tag2, ...]
---
# Note — YYYY-MM-DD (N)
## Transcription
<verbatim transcribed text, with DECISION/ACTION labels inline>
## Decisions
- **[DECISION]** ...
## Actions
- **[ACTION]** @Person — task description
## Tags
#tag1 #tag2 #tag3 ...
---
![[attachments/YYYY-MM-DD-N.ext]]
Omit Decisions or Actions sections if none exist. The image embed at the bottom uses Obsidian wikilink syntax (![[...]]).
7. Confirm to user
Reply with:
- The filed path
- A clean summary of decisions and actions found
- The full hashtag list
Notes
- If the image is unreadable or too blurry, say so and ask for a clearer photo.
- If multiple notes are in one image, create one file per note, incrementing N.
- Never hallucinate content — if a word is unclear, use
[illegible].