一键导入
storage-abstraction-layer
Unified storage interface for Obsidian, Notion, and local file systems
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Unified storage interface for Obsidian, Notion, and local file systems
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
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