A plugin to sync your Get笔记 (Get Notes) content into Obsidian with incremental sync, auto-sync, and multiple visualization options.
一个将 Get笔记 的内容同步到 Obsidian 的插件。支持增量同步、自动同步和多种可视化方式。
[[wiki-links]] 格式<mark> 为 Obsidian 的 ==高亮== 语法git clone https://github.com/springrain1/get-to-obsidian.git
cd get-to-obsidian
npm install
npx [email protected] install
⚠️ 必须安装 Playwright:本插件使用 Playwright 进行浏览器自动化,这是同步功能的核心依赖。
如果在中国大陆地区安装失败,可以使用镜像:
export PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright/
npx [email protected] install
或者强制重新安装:
npx [email protected] install --force
npm run build
将以下文件复制到你的 Obsidian vault 的 .obsidian/plugins/get-importer/ 目录:
main.jsmanifest.jsonstyles.css或者使用部署脚本(需要先配置):
# 方式 1: 使用环境变量
export VAULT_PATH="/path/to/your/obsidian/vault"
./deploy.sh
# 方式 2: 创建本地部署脚本
cp deploy.sh deploy.local.sh
# 编辑 deploy.local.sh,设置 VAULT_PATH 为你的 vault 路径
./deploy.local.sh
设置 → 第三方插件 → 关闭安全模式已安装插件中找到 Get笔记 Importer 并启用⚠️ 注意:使用 BRAT 安装后,仍需手动安装 Playwright:
npx [email protected] install
Ctrl/Cmd + P → 输入 Get笔记
get)notes)get/notes/2024-01-15/ 目录下启动时自动同步
定时自动同步
查看同步状态
方式 1:自动导出导入
Ctrl/Cmd + P → Get笔记: 立即同步方式 2:手动导入 ZIP 文件
1. Moments 时间线
Get Moments.md 文件2. Canvas 画布
Get Canvas.canvas 文件插件支持按类型选择性导入附件,帮助你更好地控制 vault 的存储空间:
支持的附件类型:
配置方式:
智能链接处理:
示例:
# 只启用图片导入时
原始笔记: 和 [文档](files/doc.pdf)
导入结果: 和 文档
插件针对不同平台采用了优化的文件处理策略:
桌面端(Electron):
file.path)移动端或路径不可用时:
附件复制优化:
fs.copyFile 直接拷贝,零内存占用,最优性能adapter.writeBinary() API 限制技术说明:
decompress 库需要本地文件路径,无法直接处理浏览器 File 对象file.stream().getReader() + fs.createWriteStream()1. 双向链接支持
\[\[链接\]\] 还原为原生的 [[wiki-links]] 格式,在 Obsidian 中可以直接点击跳转。2. 按日期合并笔记
2024-01-15.md(V3.3+ 统一命名规范)。uid 升级为 uids: ["uid1", "uid2", ...] 数组,并将最新修改时间反映在 modified 中。UidIndex 缓存扫描。二次增量同步时能 100% 识别合并文件内的所有已同步笔记,彻底避免重复请求云端 API,最大化节省您的调用配额。语义检索功能让你能在写作时快速找到云端相关的笔记、博主内容、直播片段等,作为参考素材。
前置条件:
打开检索面板
Ctrl/Cmd + P → 打开语义检索视图手动检索
一键右键检索
以选中文本进行语义检索(带有 🔍 放大镜图标)。查看结果
打开笔记
开启实时跟随
自动检索
查询文本提取规则
title 字段# 标题手动切换
选中文本
触发搜索
查看结果
当前笔记检索
Ctrl/Cmd + P → Get笔记: 从当前笔记召回自定义查询
Ctrl/Cmd + P → Get笔记: 快速召回选择检索范围
范围切换
查看剩余配额
今日剩余检索:X/1000配额耗尽处理
✅ 推荐做法:
⚠️ 注意事项:
双向同步让你可以在 Obsidian 中创建、修改、删除笔记,并自动推送到 Get 笔记云端,实现真正的双向同步。
前置条件:
启用双向同步
get/notes)选择触发模式
配置冲突策略
.conflict.md 冲突文件,等待手工合并在双向同步文件夹内创建笔记
source_url 字段)自动上传
上传成功后
uid(云端笔记 ID)source: Obsidian(标记来源)synced_at(同步时间戳)在笔记中插入本地图片

或
![[images/photo.jpg]]
启用图片上传
自动去重上传
查看去重统计
修改笔记内容
智能检测更新
冲突检测
本地删除笔记
同步删除到云端
可选关闭删除同步
启用远端删除检测
{getTarget}/_remote_deleted/ 目录检测机制
误删保护
本地文件夹层级 → 云端 parent_id
父笔记名/子笔记.md父笔记名/父笔记名.mdfrontmatter 显式声明(优先)
---
parent_id: "父笔记的 uid"
# 或
parent_id_local: "父笔记的本地路径"
---
云端 children_ids → 本地双链
## 子笔记
- [[子笔记1]]
- [[子笔记2]]
上传前预检
配额类型
配额耗尽处理
✅ 推荐做法:
⚠️ 注意事项:
同步你在 Get 笔记中参与的知识库、订阅的博主内容、以及已完成的直播转写。
前置条件:
打开知识库选择界面
选择要同步的知识库
同步结果
{getTarget}/知识库/{专题名}/{笔记标题}.mdtopic_id:专题 IDtopic_name:专题名称source: Get笔记知识库note_type:笔记类型多级父子目录树(可选)
知识库/前端学习/React基础/React基础.md 和 知识库/前端学习/React基础/Hooks详解.md打开知识库选择界面
🔗 订阅选择订阅知识库同步
同步结果
{getTarget}/订阅知识库/{专题名}/{笔记标题}.mdsource: Get笔记订阅知识库is_subscribed: true打开博主选择界面
查看博主列表
选择博主并同步
同步结果
{getTarget}/订阅博主/{平台}_{账号名}/{内容标题}.mdget/订阅博主/抖音_某博主/今天聊聊RAG.mduid:post_id_aliassource: Get笔记订阅博主platform:平台名称account_name:博主账号名tags: [订阅博主]打开直播选择界面
查看直播列表
选择直播并同步
同步结果
{getTarget}/直播课/{专题名}/{直播标题}.md# 直播标题
## 🤖 AI 摘要
[AI 生成的摘要内容]
## 📝 完整转写
[完整的语音转文字内容]
source: Get笔记直播转写live_id:直播 IDspeaker:主讲人duration:时长audio_url:原始音频 URL(仅引用,不下载)tags: ["直播转写"]共享附件目录
{getTarget}/get attachment/get/get attachment/7234567890/image-01.png附件类型过滤
同步进度显示
Get知识库同步: {专题 1/N} - {笔记 12/345}Get博主同步: {博主 2/5} - {内容 8/30}错误处理
取消同步
查看历史记录
历史记录内容
✅ 推荐做法:
⚠️ 注意事项:
如果需要重新导入所有笔记:
get/notes/、get/知识库/ 等)⚠️ 警告:此操作会清除同步记录,可能导致重复导入。建议先备份重要数据。
如果你的笔记是从 3.3.0 以前的旧版本升级而来的,且没有进行重置同步,你的笔记目录中可能会残留许多以 memo@ 开头的旧命名风格文件。
本插件提供了一个一键清理工具,帮助你安全地过渡到新版统一命名规范(以笔记标题直接命名)下:
💡 建议:在此操作前,请确保你已经使用 OpenAPI 通道或 ZIP 通道完成了新版同步,使得所有内容都已有对应的标准命名笔记存在。
同步后,你的 Obsidian vault 会生成以下结构:
你的 Vault/
├── get/ # 主文件夹(可自定义)
│ ├── notes/ # 个人笔记目录(可自定义)
│ │ ├── 2024-01-15/ # 按日期分组
│ │ │ ├── 会议纪要.md
│ │ │ ├── 项目计划.md
│ │ │ ├── 会议纪要 (2).md # 重名笔记自动加后缀
│ │ │ └── ...
│ │ └── ...
│ ├── 知识库/ # 自有知识库(OpenAPI)
│ │ ├── 前端学习/
│ │ │ ├── React Hooks 深度解析.md
│ │ │ ├── Vue3 响应式原理.md
│ │ │ └── ...
│ │ └── ...
│ ├── 订阅知识库/ # 订阅的外部知识库(OpenAPI)
│ │ ├── 团队公共/
│ │ │ ├── RAG 实战.md
│ │ │ └── ...
│ │ └── ...
│ ├── 订阅博主/ # 订阅博主内容(OpenAPI)
│ │ ├── 抖音_某博主/
│ │ │ ├── 今天聊聊 RAG.md
│ │ │ └── ...
│ │ ├── 微信_另一博主/
│ │ │ └── ...
│ │ └── ...
│ ├── 直播课/ # 直播转写(OpenAPI)
│ │ ├── 前端架构/
│ │ │ ├── 从单体到微前端.md
│ │ │ └── ...
│ │ └── ...
│ ├── get attachment/ # 附件目录(统一)
│ │ ├── 7234567890/ # OpenAPI:按 noteId 分组
│ │ │ ├── image-01.png
│ │ │ ├── audio-01.mp3
│ │ │ └── ...
│ │ ├── abc123def.jpg # ZIP 通道:hash 文件名(扁平)
│ │ └── ...
│ ├── _remote_deleted/ # 远端删除归档(可选)
│ │ ├── 2024-01-15/
│ │ │ └── ...
│ │ └── ...
│ ├── Get Moments.md # 时间线文件(可选)
│ └── Get Canvas.canvas # 画布文件(可选)
└── ...
目录说明:
{平台}_{账号名} 组织# 克隆仓库
git clone https://github.com/springrain1/get-to-obsidian.git
cd get-to-obsidian
# 安装依赖
npm install
# 安装 Playwright
npx [email protected] install
# 开发模式(热重载)
npm run dev
# 构建生产版本
npm run build
# 代码检查
npm run lint
# 自动修复代码风格
npm run fix
get-to-obsidian/
├── lib/
│ ├── get/ # 核心功能
│ │ ├── auth.ts # 认证登录
│ │ ├── core.ts # 数据解析
│ │ ├── exporter.ts # 数据导出
│ │ ├── importer.ts # 数据导入
│ │ └── const.ts # 常量定义
│ ├── obIntegration/ # Obsidian 集成
│ │ ├── canvas.ts # Canvas 生成
│ │ └── moments.ts # Moments 生成
│ └── ui/ # 用户界面
│ ├── auth_ui.ts # 登录界面
│ ├── main_ui.ts # 主界面
│ ├── settings_tab.ts # 原生设置选项卡 (V3.6.0+ 动静分离)
│ ├── semantic_search_view.ts # 语义检索侧边栏面板 (V3.4.0+ RAG)
│ ├── quota_status_view.ts # 配额可视化状态面板 (V3.7.0+ 配额管理)
│ ├── sync_history_ui.ts # 同步历史记录面板
│ ├── manualsync_ui.ts # 手动导入界面
│ └── ...
├── main.ts # 插件入口
├── manifest.json # 插件清单
├── styles.css # 样式文件
├── esbuild.config.mjs # 构建配置
├── package.json # 项目依赖
└── ...
1. 用户触发同步
↓
2. Playwright 打开浏览器登录 Get笔记
↓
3. 自动导出数据为 HTML 压缩包
↓
4. 解析 HTML,提取笔记内容
↓
5. 生成唯一 ID(时间戳 + 内容哈希)
↓
6. 过滤已同步的笔记(增量同步)
↓
7. 转换为 Markdown 格式
↓
8. 保存到 Obsidian vault
↓
9. 可选:生成 Moments 和 Canvas
↓
10. 更新同步记录
插件为每条笔记生成唯一 ID:
格式:${时间戳}_${内容哈希}_${出现次数}_${总数}
示例:2024-01-15T10:30:00_abc123_1_245
已同步的 ID 存储在插件设置中,每次同步只导入新 ID 的笔记。
编辑 lib/get/importer.ts - 控制 Markdown 输出格式和 frontmatter
lib/obIntegration/moments.ts - Moments 显示逻辑lib/obIntegration/canvas.ts - Canvas 布局和样式lib/ui/ 目录下的文件 - UI 组件styles.css - 样式修改编辑 lib/get/const.ts - 所有路径常量
# 更新版本号(会自动更新 manifest.json 和 versions.json)
npm run version
# 构建
npm run build
# 提交更改
git add .
git commit -m "Release version X.X.X"
git push
# 创建 GitHub Release
# 上传 main.js、manifest.json、styles.css
问题:Obsidian 提示插件加载失败
解决:
Ctrl/Cmd + Shift + I)问题:浏览器打开后无法完成登录
解决:
npx [email protected] install问题:点击同步后提示"新增 0 条笔记"
可能原因:
解决:
问题:开启可视化选项后,文件生成但内容为空
解决:
问题:笔记中的图片、音频等附件没有被导入
可能原因:
解决:
Ctrl/Cmd + Shift + I)检查具体错误查看导入统计: 同步完成后,控制台会显示详细的附件统计信息:
附件统计 - 总计: 45, 图片: 30, 音频: 10, 视频: 3, 文档: 2, 失败: 0
问题:导入大型 ZIP 文件时崩溃或提示内存不足
解决:
使用直接路径策略 - 桌面端优化策略(最佳)使用临时文件回退策略 - 真流式写入策略fs.copyFile,性能最优问题:npx playwright install 报错
解决:
# 方法 1: 使用指定版本
npx [email protected] install --force
# 方法 2: 清除缓存后重装
npm cache clean --force
npm install
npx [email protected] install
# 方法 3: 使用镜像(中国大陆)
export PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright/
npx [email protected] install
如果从 1.x 版本升级到 2.0,附件路径结构已改变:
选项 A:完全重新导入(推荐)
get/memos/ 和 get picture/选项 B:保留现有笔记
欢迎任何形式的贡献!这是一个免费开源项目,希望能帮助更多使用 Get笔记 和 Obsidian 的朋友。
git checkout -b feature/AmazingFeaturegit commit -m 'Add some AmazingFeature'git push origin feature/AmazingFeaturenpm run lint 检查)如果你发现 bug 或有功能建议:
本项目采用 MIT License 开源许可证。
你可以自由地:
但需要:
如果这个插件对你有帮助,请给个 ⭐️ Star 支持一下!
本项目完全免费开源,欢迎自用和分享!
Made with ❤️ by Community