Migration Notion To Obsidian: Hướng Dẫn Chuyển 2026

Migration Notion to Obsidian là quy trình chuyển workspace Notion sang vault Obsidian markdown native. Quy trình tốn 4-12 giờ tùy size workspace 200-2000 page, requires fixing link format, database conversion, image relocation, frontmatter mapping. Bài này cover step-by-step + gotchas thường gặp + post-migration cleanup workflow.
Bài này không phải arguing nên migrate hay không (đó là bài Obsidian vs Notion vs Logseq). Bài này focus practical: bạn quyết định migrate, làm sao thực thi mà không mất data + giữ structure quan trọng.
TL;DR
- Migration time: 4-12 giờ cho 200-2000 page. Phase: export 1h, link convert 2-3h, image fix 1-2h, database 2-4h, cleanup 1-2h.
- Tool dùng: Notion native export markdown + ZIP, Obsidian Importer plugin (community), regex script cho link convert, /wiki-ingest cho structure rebuild.
- Gotchas chính: link Notion ID-based không convert auto, database structure cần hand-rebuild, image filename chứa ID dài cần rename, nested page hierarchy lost.
- Post-migration: run /wiki-lint phát hiện dead link, setup PARA folder structure, build wikilink graph, archive Notion subscription sau verify.
Vì Sao Cần Migrate Notion Sang Obsidian?
3 lý do điển hình. Một, ownership data. Notion content stored ở server proprietary, lock-in vendor. Obsidian markdown plain text, portable bất kỳ lúc nào. Hai, AI workflow custom. Notion AI built-in nhưng locked, không API. Obsidian + Claude Code có file system access, build custom workflow theo AgriciDaniel skill ecosystem. Ba, performance offline + privacy. Notion online-required cho full feature, Obsidian work offline 100%. Privacy-conscious developer ưu tiên vault local-first.
3 lý do KHÔNG nên migrate. Team >5 person dùng collaboration heavy: Notion thắng Obsidian ở real-time edit. Workflow phụ thuộc Notion database advance (rollup, relations multi-table): Obsidian Bases cover 70-80% nhưng không 100%. Non-technical user trong team: Notion UX thân thiện hơn Obsidian setup phức tạp.
Cluster Obsidian + Claude Code có pillar overview, pillar comparison, vault PARA, 11 skills overview. Bài này là spoke practical cho developer đã quyết định migrate.
5 Phase Migration Step-by-Step

Phase 1, Notion export (1 giờ). Notion → Settings → Workspace → Export Content → Format: Markdown + CSV → Include subpages → Export. Notion gửi email link tải ZIP file 5-50MB tùy workspace size.
Khi export xong, ZIP có structure: page name folders + .md file + subfolder cho nested page. Image trong subfolder [page-name]/. Export Notion preserve hierarchy nhưng filename có ID hash dài như Page Name 1a2b3c4d5e6f7g8h9i0j.md.
Phase 2, Obsidian Importer plugin (1 giờ). Cài Obsidian Importer (community plugin chính chủ Obsidian team). Open Importer → Notion → Select ZIP file → Choose target vault folder → Import. Plugin auto-process: rename file remove ID hash, convert internal link Notion ID → wikilink, preserve folder hierarchy.
Output sau Phase 2: vault có 80% content imported correct. Remaining 20% issue cần fix manual: complex database, embedded block, link cross-workspace.
Phase 3, link convert manual (2-3 giờ). Notion link format: https://www.notion.so/Page-Name-abc123def456. Sau import, link này cần convert thành wikilink [[Page Name]]. Importer plugin handle 70-80%. Remaining cần regex script.
Sample regex script Python:
import re
from pathlib import Path
vault_root = Path("/path/to/vault")
notion_link_pattern = re.compile(
r'\[([^\]]+)\]\(https://www\.notion\.so/([^)]+)\)'
)
for md_file in vault_root.rglob("*.md"):
content = md_file.read_text(encoding="utf-8")
# Convert Notion link to wikilink
new_content = notion_link_pattern.sub(
lambda m: f'[[{m.group(1)}]]', content
)
if new_content != content:
md_file.write_text(new_content, encoding="utf-8")
print(f"Updated: {md_file.name}")
Phase 4, image relocation (1-2 giờ). Notion export image trong subfolder per-page với filename ID-based: Page Name 1a2b3c.../image-1.png. Move tất cả image vào vault/attachments/ folder. Update path trong markdown từ  thành .
Sample script image cleanup:
import shutil
from pathlib import Path
vault = Path("/path/to/vault")
attachments = vault / "attachments"
attachments.mkdir(exist_ok=True)
for img in vault.rglob("*.png"):
if "attachments" in str(img):
continue
new_path = attachments / img.name
if new_path.exists():
new_path = attachments / f"{img.parent.name}_{img.name}"
shutil.move(str(img), str(new_path))
print(f"Moved: {img.name} → {new_path.name}")
Phase 5, database rebuild (2-4 giờ). Notion database export thành CSV. Obsidian không có database native nhưng có /obsidian-bases plugin (v1.7+) tương tự. Manual rebuild cho database quan trọng:
- Export Notion database CSV.
- Tạo
database-name.basefile YAML define source folder + properties + views. - Tạo individual page cho mỗi row (frontmatter chứa properties từ CSV).
- Verify view filter work giống Notion.
Database simple (table 50+ rows): rebuild 1-2 giờ. Database complex (multi-database relation): cần redesign architecture vì Obsidian Bases không support cross-base relation native.
5 Loại Gotchas Thường Gặp
Gotcha 1, Notion link ID không convert auto. Importer plugin handle 70-80% link. Remaining: cross-workspace link (link tới Notion page khác), public share link (notion.site URL), embedded link trong block. Manual review file by file.
Gotcha 2, Database hierarchy lost. Notion database có nested page hierarchy (page con của row entry). Export markdown flat, hierarchy lost. Workaround: dùng frontmatter parent field link tới parent page, recreate hierarchy qua wikilink.
Gotcha 3, Image filename collision. Multiple page có image cùng tên (image-1.png). Sau move tất cả vào attachments/, collision. Script ở Phase 4 prefix với folder name khi collision detected.
Gotcha 4, Embedded block không support. Notion có embed block (Twitter, YouTube, Figma). Export thành text URL only, không có rich preview. Obsidian native không có rich embed equivalent. Workaround: install plugin Embed Twitter, Embed YouTube cho rich preview.
Gotcha 5, Frontmatter inconsistency. Notion property type (text, select, multi-select, date, number, formula). Export CSV không preserve type info. Obsidian đọc YAML frontmatter strict. Manual cleanup: định nghĩa schema chuẩn và convert per-page.
Pattern handle gotcha. Allocate 30% migration time cho gotcha fix. Don’t expect perfect 1-shot. Run test migration với 10 page trước khi commit full workspace.
Post-Migration Cleanup Workflow
Sau migrate xong, vault Obsidian có content nhưng chưa optimal. 4 step cleanup chính:
Step 1, run /wiki-lint full scan. Bài /wiki-lint + /wiki-fold maintenance cover detail. Lint phát hiện dead link (Notion link không convert), orphan page (page không có inbound link), frontmatter drift. Fix HIGH severity ngay (dead link), MEDIUM later (orphan).
Step 2, setup PARA folder structure. Bài vault PARA structure cover detail. Move page từ Notion flat structure vào 4 folder PARA: 00-inbox, 10-projects, 20-areas, 30-resources, 40-archive. Spend 30-60 phút organize.
Step 3, build wikilink graph. Notion link sau convert là [[Page Name]] basic. Add bidirectional links: từ A link tới B, thêm Related: [[A]] ở footer của B. Run /wiki skill build initial structure (bài /wiki bootstrap vault).
Step 4, setup CLAUDE.md cho vault. Bài CLAUDE.md trong vault Obsidian cover detail. Define convention, AgriciDaniel skill enabled, rule cho project. Claude Code load auto khi mở vault.
Verify migration success. KPI checklist. Note count: vault Obsidian = Notion (±5% acceptable). Dead link < 10% total link. Image broken < 1%. Search query test 5-10 query expected, all return correct page. Open Obsidian không lag, query time <10s.
Khi nào safe để cancel Notion subscription. Sau 2 tuần dùng Obsidian fulltime, không quay lại Notion để check info nào, check workspace Notion 0 access trong 2 tuần. Cancel + export final backup keep offline.
Use Case Cụ Thể Cho Developer
Mình personal migrate 800 page Notion sang Obsidian Q4 2025. Tổng thời gian 9 giờ chia 3 buổi:
Buổi 1, 3 giờ. Phase 1 export. Phase 2 Importer plugin import. 70% content imported correct. Save backup ZIP gốc cho rollback.
Buổi 2, 4 giờ. Phase 3 link convert qua regex script. Phase 4 image relocation. Phase 5 database rebuild cho 5 database quan trọng nhất (project tracker, content calendar, contact list, learning log, daily note).
Buổi 3, 2 giờ. Post-migration cleanup. /wiki-lint full scan, fix 23 HIGH severity dead link. Setup PARA structure. Build CLAUDE.md cho vault.
Result. Vault 800 page, 90% content imported, 10% manual fix. Search query precision improved (Obsidian search nhanh hơn Notion 3-5x). Custom workflow với Claude Code + AgriciDaniel skill mở ra sau migration. Notion subscription cancel sau 1 tháng verify.
KPI track post-migration. Daily note write count (target stable hoặc tăng vs Notion baseline). Query time <10s. Workflow friction (subjective). 1 tháng: stable hoặc improving. 3 tháng: vault Obsidian thay thế Notion hoàn toàn cho personal use.
Câu Hỏi Thường Gặp
Có thể migrate partial (một workspace) không?
Có. Notion export chọn level workspace, page parent, hoặc database specific. Test với 1 workspace nhỏ (50-100 page) trước khi commit full migration. Strategy partial: migrate workspace easy nhất trước, build confidence, sau đó workspace phức tạp hơn.
Notion AI history có migrate được không?
Không. Notion AI conversation lưu proprietary, không export. Workaround: review Notion AI thread trước khi cancel, copy paste insight quan trọng vào Obsidian note. Không phải solution clean nhưng preserve context value.
Obsidian Importer plugin có safe không?
Có. Plugin chính chủ Obsidian team, open-source, audited. Read-only operation trên ZIP file Notion, không modify Notion server. An toàn để dùng cho mọi migration.
Mất bao lâu trước khi feel familiar với Obsidian?
2-4 tuần. Tuần đầu adjust UI và keyboard shortcut. Tuần 2-3 build muscle memory cho command palette + wikilink. Tuần 4 feel productive bằng baseline Notion. Sau tháng 1, productivity vượt baseline với custom plugin + AgriciDaniel skill.
Có thể dual-run Notion + Obsidian cùng lúc không?
Có ở mức tạm thời. Tháng đầu dual-run để compare workflow + safety net cho rollback. Sau tháng 1 commit Obsidian fulltime để force adoption. Dual-run dài hạn (>3 tháng) tạo friction switching context, không recommend.
Database Notion phức tạp có thay được trong Obsidian không?
Phần lớn yes với /obsidian-bases (v1.7+). Limitation: cross-database relation, rollup formula complex, public share embed widget. Với database có 1 trong 3 limitation này, consider giữ database trong Notion, link reference từ Obsidian thay vì migrate full.
Bạn Bắt Đầu Migration Như Thế Nào?
Tuần 1, audit Notion workspace. Đếm page count, identify database quan trọng, list link cross-workspace (sẽ break sau migrate). Tuần 2, test migration với 50 page sample. Run 5 phase, document gotchas, refine script. Tuần 3, full migration. Allocate 1 ngày work fulltime hoặc 3 buổi 3-giờ. Tuần 4, post-migration cleanup + commit Obsidian fulltime.
Migration xong làm gì tiếp? Đọc second brain 30 day case study để biết realistic expectation 30 ngày đầu post-migration: 247 notes, $42 LLM cost, ROI 14x, 3 mistake lesson learned.
Tham khảo cluster Obsidian + Claude Code: pillar setup, Obsidian là gì, cài đặt từ zero, vault PARA structure, comparison 3 tools, /wiki bootstrap, 11 skills overview. Bài này (F-2) là spoke migration practical, complement comparison ở F-1.
Tài liệu tham khảo bên ngoài
- Obsidian, Import from Notion (official guide).
- Obsidian Importer plugin, official import tool.
