getnote-obsidian-sync

star 1

Use when the user wants to sync Get笔记 notes to a local Obsidian vault folder. Triggers on "同步Get笔记", "同步笔记到Obsidian", "把Get笔记同步到本地", "sync getnote to obsidian", or any request to download/export Get笔记 notes as local markdown files.

y4h2 By y4h2 schedule Updated 3/31/2026

name: getnote-obsidian-sync description: Use when the user wants to sync Get笔记 notes to a local Obsidian vault folder. Triggers on "同步Get笔记", "同步笔记到Obsidian", "把Get笔记同步到本地", "sync getnote to obsidian", or any request to download/export Get笔记 notes as local markdown files.

Get笔记 → Obsidian 同步

将 Get笔记 中的笔记同步为 Obsidian 兼容的 .md 文件,支持增量同步。

凭证

从环境变量读取(用户已在 .zshrc 中配置):

  • $GETNOTE_API_KEY(格式 gk_live_xxx
  • $GETNOTE_CLIENT_ID(格式 cli_xxx

如果环境变量缺失,引导用户前往 https://www.biji.com/openapi 获取并添加到 .zshrc

API 调用

Base URL: https://openapi.biji.com

请求头:

  • Authorization: $GETNOTE_API_KEY
  • X-Client-ID: $GETNOTE_CLIENT_ID

列表接口

GET /open/api/v1/resource/note/list?since_id={cursor}

返回 data.notes[]data.has_moredata.next_cursor,每页 20 条。从 since_id=0 开始翻页。

详情接口

GET /open/api/v1/resource/note/detail?id={note_id}

默认不调用 detail 接口,因为 API 有每日 1000 次读取限制,列表接口已包含 title/content/tags 等核心字段。

仅在用户明确要求时调用 detail:

  • linkdata.web_page.contentdata.web_page.url
  • 音频类(audiomeetinglocal_audiointernal_recordclass_audiorecorder_audiorecorder_flash_audio)→ data.audio.original(转写全文)

录音全文补充

对已同步的个人录音和会议录音,可按需调用 detail 接口补充转写全文:

  1. 扫描 个人录音/会议录音/ 下的 .md 文件
  2. 检查文件中是否已包含 ## 转写原文 段落,已有则跳过
  3. 从 frontmatter 取 getnote_id,调用 detail 接口获取 data.audio.original
  4. 追加 ## 转写原文 段落到文件末尾
  5. 每次调用间隔 1 秒,注意每日 1000 次配额(当前约 137 条录音,单次全量补充即可)

同步流程

  1. 读取凭证 — 从环境变量 $GETNOTE_API_KEY$GETNOTE_CLIENT_ID 读取
  2. 确定输出目录 — 优先使用环境变量 $GETNOTE_SYNC_DIR;若未设置,则要求用户传入目标文件夹路径,不使用默认值
  3. 构建已同步 ID 集合 — 递归扫描输出目录下所有 .md 文件,从 frontmatter 中提取 getnote_id,构建 set。文件可能已被用户移动到子文件夹,所以必须递归扫描
  4. 遍历笔记列表since_id=0 起始,逐页获取(API 按时间倒序返回)
  5. 增量检查 — API 返回的 note.id 在已同步集合中则跳过。若某页 20 条全部已存在,说明更早的笔记也已同步,立即停止翻页(省 API 配额)
  6. 写入 .md 文件 — 文件名格式 {YYYY-MM-DD}_{title}.md,格式见下。新笔记默认写入 收藏/ 子目录(用户后续手动分类)
  7. 文件名清理 — 移除 /\:*?"<>| 及控制字符,多余空格合并,标题截断 80 字符,重名追加 note_id
  8. 翻页has_more=true 则用 next_cursor 继续
  9. 打印统计 — 新增 N 条,跳过 M 条

注意:每次 API 调用间隔至少 1 秒。遇到错误码 42900(限流)sleep 10 秒重试一次。遇到 10201(非会员)提示用户开通。

.md 文件格式

Frontmatter

---
id: "123456789"              # 必须用引号包裹,避免大整数精度丢失
title: "笔记标题"
note_type: plain_text
tags:
  - 标签1
  - 标签2
source_url: "https://..."        # link 类型才有
created_at: "2025-01-15 10:30:00"
updated_at: "2025-01-15 11:00:00"
synced_at: "2026-03-15 22:00:00"
---

Body(按 note_type)

类型 格式
plain_text / img_text # {title}\n\n{content}
link # {title}\n\n> Source: {web_page.url}\n\n## AI 总结\n\n{content}\n\n## 原文\n\n{web_page.content}
音频类 # {title}\n\n{content}\n\n## 转写原文\n\n{audio.original}

标签从 note.tags[].tag 取值。title 中的双引号需转义。

实现方式

用 Bash 工具执行 curl 调用 API,用 Write 工具写入 .md 文件。不要生成独立脚本,直接在对话中逐步执行。

对于大量笔记(>50 条),可以用 Bash 工具批量执行 curl + Python 提取数据,然后用 Write 逐个写入文件。

⚠️ 大整数精度:笔记 ID 是 64 位整数,超过 JavaScript 的 Number.MAX_SAFE_INTEGER(2^53)。禁止使用 jq 处理 ID 字段(jq 用浮点数表示数字会丢失精度)。必须用 Python 的 json.loads(Python int 无精度限制)或从原始 JSON 字符串中用正则提取 ID。

整理流程

用户可请求对已同步的笔记进行整理归类。整理分两步:

第一步:按 note_type 分文件夹

从 frontmatter 的 note_type 字段读取类型,移入对应子目录:

note_type 目标文件夹
link 链接收藏/
meeting 会议录音/
audiolocal_audio 个人录音/
plain_text 文本笔记/

第二步:链接收藏按主题细分

链接收藏/ 下的文件,基于 frontmatter 的 tagstitle 进行关键词模糊匹配(大小写不敏感),归入主题子目录:

主题 匹配关键词(部分)
AI编程与工具 claude, cursor, copilot, windsurf, trae, vibe coding, ai编程, mcp, ai开发, 零代码
AI应用与趋势 ai工具, ai agent, 大模型, llm, gpt, aigc, rag, 提示词, 生成式ai, gemini
创业与商业 创业, 一人公司, 商业, saas, pmf, 独立开发, 副业, 赚钱
游戏开发 游戏开发, 独立游戏, phaser, pixijs, 像素画, 游戏设计
内容与营销 内容创作, 自媒体, 小红书, 个人ip, reddit, 跨境电商, seo, 短视频
前端与开发 前端, typescript, react, next.js, javascript, python, go语言, tailwind
产品与设计 交互设计, ui设计, 产品经理, 产品思维, 竞品分析
个人成长 认知, 个人成长, 面试, 学习方法, 时间管理, 知识管理, 职场
其他 以上均未匹配

匹配规则:按上表顺序逐一检查,命中第一个即归类。忽略自动标签 AI链接笔记录音笔记

注意事项

  • 跳过 _ 开头的元数据文件(如 _cursor.json_stats.md
  • 用 Python 批量处理,不逐个调用 Write 工具
  • 整理前先统计各分类数量,确认后再执行移动

错误处理

错误码 处理
10001 鉴权失败 → 检查凭证
10201 非会员 → 引导开通 https://www.biji.com/checkout?product_alias=6AydVpYeKl
42900 限流 → sleep 10s 重试
网络错误 跳过该笔记继续
Install via CLI
npx skills add https://github.com/y4h2/public-skills --skill getnote-obsidian-sync
Repository Details
star Stars 1
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator