guanxu chen17 downloadsSync Markdown notes with a Feishu Wiki space as editable cloud documents or original Markdown files.
将 Obsidian 仓库中的 Markdown 笔记与飞书知识库双向同步。当前维护版 0.1.2;下载安装包。
仅支持 Obsidian 桌面版 1.13.7 及以上,连接中国版飞书(open.feishu.cn)。当前不包含 Notion、飞书多维表格或国际版 Lark 接入,也没有发布到 Obsidian 社区插件市场。
从 0.1.2 起,以本轮核验的官方稳定版 1.13.7 作为支持基线,不再承诺尚未验证的 1.4.0 兼容性。历史版本及其标签保留。
accounts.feishu.cn 用于浏览器登录、授权和刷新令牌;open.feishu.cn 用于知识库、文档、文件及图片 API。下载可能由飞书重定向至其素材服务。文档中的外部图片链接会随正文发送给飞书,飞书可能按其规则加载这些链接。docs_ai 接口。.obsidian/plugins/feishu-wiki-sync/data.json,未额外加密。自定义配置目录时,data.json 随 Obsidian 的配置目录存放;规则、冲突副本和调试日志仍位于仓库内 .obsidian/feishu-sync/。日志可能含笔记路径和接口错误信息,分享前请检查。| 模式 | 飞书中保存的内容 | 适合用途 | 边界 |
|---|---|---|---|
| 文档模式 | 可阅读、可编辑的飞书新版文档 | 在 Obsidian 写作,在飞书阅读和协作 | 会转换排版,不保证 Markdown 源码逐字不变 |
| 文件镜像(默认) | 原始 .md 文件 |
保留原始 Markdown 内容 | 不上传附件,飞书侧的展示取决于 Markdown 文件预览 |
两种模式都支持预览、双向同步、单向推送/拉取和冲突副本。只同步 .md 笔记;文档模式会另行处理笔记引用的本地图片。
从 0.1.2 Release 下载并解压 feishu-wiki-sync-0.1.2.zip,得到 feishu-wiki-sync 文件夹。
关闭 Obsidian,将该文件夹放入目标仓库的 .obsidian/plugins/ 下。最终应为:
你的仓库/
└── .obsidian/
└── plugins/
└── feishu-wiki-sync/
├── main.js
├── manifest.json
└── styles.css
重启 Obsidian,在 设置 → 第三方插件 中关闭限制模式,启用 Feishu Wiki Sync。
打开该插件的设置,按下文完成飞书授权与同步目标配置。
需要 Node.js 20 或以上及 npm。在本仓库目录运行:
npm ci
npm run package
package 依次进行类型检查、全部离线测试、生产构建和打包。成功后输出:
dist/
├── feishu-wiki-sync/
│ ├── main.js
│ ├── manifest.json
│ └── styles.css
├── feishu-wiki-sync-0.1.2.zip
└── SHA256SUMS
安装包只包含三个运行文件,不包含 TypeScript 源码、测试数据、账号或笔记。main.js 为可审阅的 JavaScript,内含项目及第三方许可声明。SHA256SUMS 提供文件和压缩包校验值。只需编译时运行 npm run build,输出安装目录并更新仓库根目录的 main.js。
也可在关闭 Obsidian 后直接安装到本地仓库:
npm run install:vault -- "/完整路径/你的仓库"
脚本会先构建,再检查仓库是否已有 .obsidian 目录,备份原有的三个安装文件到插件目录内的 .backup-时间戳/,最后替换文件;账号、映射与规则不变。没有指定路径时直接报错,不会猜测安装位置。也支持通过 OBSIDIAN_VAULT 指定仓库;自定义 Obsidian 配置目录可使用 OBSIDIAN_CONFIG_DIR(相对仓库路径)。
在 飞书开发者后台 创建企业自建应用,从“凭证与基础信息”取得 App ID 与 App Secret。
在“权限管理”中申请下列权限,与插件默认授权范围保持一致:
| 权限标识 | 插件用途 |
|---|---|
drive:drive |
文件读写、查询元数据,以及用户开启后的删除传播 |
wiki:wiki |
列出知识空间、读取和创建目录节点、移动文档到知识库 |
docx:document |
文档模式中的创建、读取、编辑文档与图片块 |
docs:document.media:download |
下载文件和文档图片素材 |
docs:document.media:upload |
文档模式上传图片素材 |
offline_access |
用户授权后获取刷新凭证,维持登录 |
使用“用户授权”时,需开通相应的用户身份权限;使用“应用身份”时,需开通相应的应用身份权限,且无需 offline_access。后台若提示管理员审批,完成审批后再继续。上述是本插件默认使用的权限集合,不是按单一功能裁剪的最小权限集合。
在应用的安全设置中登记重定向 URL,默认值必须逐字一致:
http://localhost:7634/callback
在“版本管理与发布”中创建并发布版本,应用可用范围需要包含你自己的飞书账号。之后更改权限或可用范围也需要重新发布;增加用户授权范围后,需要在插件中重新授权。
文档模式的 Markdown 接口与 飞书官方 CLI 的文档实现 保持相同请求格式;插件直接调用 API,不需要安装 CLI。
进入 设置 → Feishu Wiki Sync → 飞书应用与授权:
自动授权会临时启动本机回调服务,最多等待五分钟。若端口被占用,可将插件与飞书后台的回调地址同时改到另一个本机端口。也可以使用 手动粘贴授权码:浏览器完成授权后,即使回调页面无法打开,仍可复制地址栏中带 code 的完整地址或授权码到插件。
“应用身份”适合已有应用管理配置的团队:需让应用身份拥有目标知识空间及文档的权限。接口权限和知识库内容权限是两件事;开通 API 权限并不自动获得所有文档的访问权。
App Secret 和授权令牌保存在本仓库 .obsidian/plugins/feishu-wiki-sync/data.json,未额外加密。不要公开此文件,也不要在多台设备间共用正在刷新的用户令牌。界面的“撤销授权”仅清除本机保存的授权信息。
| 设置 | 填写方式 |
|---|---|
知识空间 space_id |
推荐点击 拉取列表 后选择。手填使用知识空间 ID,不能把 /wiki/节点令牌 页面链接当作 space_id |
| 同步根节点 | 推荐先在飞书建立一个专用页面,把它的 /wiki/… 链接或 node_token 填到这里;只同步其下的内容 |
| 根目录页面标题 | 仅根节点留空时使用;存放仓库根目录散装笔记的页面名称,留空使用仓库名 |
| 笔记同步形态 | 需要在飞书美观阅读与编辑时选 文档模式;需要原始源码时选 文件镜像 |
| 目录层级 | 推荐 镜像目录:本地文件夹对应知识库目录页面 |
根节点留空时会扫描整个知识空间:本地一级文件夹成为空间一级页面,根目录笔记放入“根目录页面”;空间顶层已有的笔记也可能被拉回本地。首次使用建议选择专用根节点,先检查预览范围。
切换知识空间、根节点、同步模式或目录编码设置后,会清空旧映射并重新对接。同名内容不一致时保留双方并报告冲突;这不是将原有远端内容自动迁移到新目标。
社区提交准备及本轮兼容性验证见 社区上架说明。发布时必须让 GitHub Release 标签与 manifest.json 的 version 完全一致(例如 0.1.2),并分别上传 main.js、manifest.json、styles.css;ZIP 供手动安装使用,不能替代这三个附件。以后更新需同步修改 package.json、锁文件、manifest.json 和 versions.json,重新构建后创建新版本。
本项目采用 MIT License,是独立社区插件,与 Obsidian、飞书或 Lark 无官方隶属关系。飞书文档和图片接口实现参考了 Lark CLI 的请求格式与素材处理流程;上游版权及许可见 第三方声明,声明同时保留在发布的 main.js 中。构建工具和类型声明不打入插件运行文件。