✓ เสร็จแล้ว
Markdown Notes Exporter
Script สำหรับ export note จาก Obsidian vault เป็น formats ต่างๆ — PDF, HTML, และ clean Markdown ที่ไม่มี wiki links
สารบัญ
ปัญหาที่แก้
Obsidian ใช้ [[wiki links]] และ ![[embedded files]] ซึ่ง Markdown parsers อื่นๆ ไม่รู้จัก เมื่อต้องการส่ง note ให้คนอื่น หรือ publish บางส่วนเป็น HTML/PDF ต้องแปลงก่อนเสมอ
สิ่งที่ทำได้
# Export note เดียวเป็น HTML
notes-export convert daily/2026-06-14.md --format html
# Export ทั้ง folder เป็น PDF
notes-export convert projects/ --format pdf --output ./output/
# แปลง wiki links เป็น standard Markdown links
notes-export clean "My Note.md" --resolve-links
# สร้าง index ของ notes ทั้งหมด
notes-export index --output notes-index.md
ขั้นตอนการแปลง
- Parse Frontmatter — แยก YAML frontmatter ออกจาก Markdown body
- Resolve wiki links — แปลง
[[Note Name]]→[Note Name](./Note Name.md)หรือ remove ถ้าไม่พบไฟล์ - Handle embeds —
![[file.png]]→หรือ inline base64 - Process callouts — Obsidian callouts
> [!NOTE]→ styled HTML blockquote - Render — ใช้
unified+remark+rehypepipeline สำหรับ HTML,html-to-pdfmakeสำหรับ PDF
Stack
- Node.js + TypeScript — รัน scripts
- unified / remark / rehype — parse และ transform Markdown
- gray-matter — parse YAML frontmatter
- Puppeteer — สำหรับ PDF generation ที่ถูกต้อง (print to PDF)
- commander.js — CLI interface
สิ่งที่เรียนรู้
- Unified plugin system — เขียน remark plugin custom สำหรับ wiki link syntax
- Regex ที่ handle edge cases ของ Obsidian link format (
[[Note|Alias]],[[Folder/Note#Heading]]) - Puppeteer เพื่อ render HTML ก่อน print เป็น PDF ให้ CSS ทำงานได้ถูกต้อง
- Path resolution ในระบบที่มีหลาย vault folders
ตัวอย่าง Output
Input:
---
tags: [project, done]
date: 2026-06-14
---
ดู [[Research Notes]] สำหรับ context
![[diagram.png]]
Output (clean Markdown):
---
tags: [project, done]
date: 2026-06-14
---
ดู [Research Notes](./Research Notes.md) สำหรับ context
