mit einem Klick
storage-abstraction-layer
// Unified storage interface for Obsidian, Notion, and local file systems
// Unified storage interface for Obsidian, Notion, and local file systems
Generate professional slide deck images from content. Creates comprehensive outlines with style instructions, then generates individual slide images. Use when user asks to "create slides", "make a presentation", "generate deck", or "slide deck".
6-phase workflow for content extraction, analysis, and export to Obsidian/Notion
Extract content from Threads, Instagram with reply collection and depth control
Unified browser interface for Antigravity native, Playwright, and Hyperbrowser providers
Automated setup wizard for Knowledge Manager - configures MCP servers and creates config files
Output format specifications for Obsidian, Notion, and Markdown exports
| name | Storage Abstraction Layer |
| description | Unified storage interface for Obsidian, Notion, and local file systems |
Unified interface for saving notes across different storage backends
function get_storage_backend() {
config = Read("km-config.json")
return config?.storage?.primary || "local"
}
┌─────────────────────────────────────────────────────┐
│ 🛑 CRITICAL: MCP 도구 사용 강제 │
│ │
│ MCP 도구가 사용 가능한 환경에서는 반드시 MCP 사용! │
│ │
│ ❌ 잘못된 예: │
│ - write_to_file("vault/note.md", content) │
│ │
│ ✅ 올바른 예: │
│ - mcp_obsidian_create_note(path, content) │
└─────────────────────────────────────────────────────┘
| Feature | Obsidian | Notion | Local |
|---|---|---|---|
| Create | mcp_obsidian_create_note | mcp_notion_API-post-page | write_to_file |
| Search | mcp_obsidian_search_vault | mcp_notion_API-post-search | N/A |
| Read | mcp_obsidian_read_note | mcp_notion_API-get-block-children | read_file |
| Path format | Relative to vault | Database/Page ID | File system path |
| Wikilinks | Supported | Converted to mentions | Supported |
참고: Antigravity는 MCP 도구 이름에 싱글 언더스코어(
_)를 사용합니다.
| 작업 | 도구명 | 설명 |
|---|---|---|
| 노트 생성 | mcp_obsidian_create_note | 새 노트 생성 |
| 노트 검색 | mcp_obsidian_search_vault | Vault 내 키워드 검색 |
| 노트 읽기 | mcp_obsidian_read_note | 노트 내용 읽기 |
| 노트 목록 | mcp_obsidian_list_notes | 폴더 내 노트 목록 |
// Antigravity/Gemini CLI용 (싱글 언더스코어 사용)
function save_note(relativePath, content) {
backend = get_storage_backend()
config = Read("km-config.json")
switch (backend) {
case "obsidian":
// ⚠️ 반드시 MCP 도구 사용!
return mcp_obsidian_create_note({
path: relativePath,
content: content
})
case "notion":
return mcp_notion_API_post_page({
parent: { page_id: config.storage.notion.parentPageId },
properties: { title: [{ text: { content: getTitle(relativePath) } }] }
})
case "local":
default:
fullPath = `${config.storage.local.outputPath}/${relativePath}`
return write_to_file(fullPath, content)
}
}
function normalize_path(path) {
// Windows backslash → forward slash
path = path.replace(/\\/g, '/')
// Remove leading slash for relative paths
path = path.replace(/^\//, '')
return path
}
After every save operation:
□ Did the tool actually execute? (no JSON-only output!)
□ Did we receive a success response?
□ Verify with Glob that file exists