Skip to content

Incremental Obsidian / Notion DataPlug #48

Description

@Teingi

Description

EN. The CLI already has sync for importing notes, but re-syncing
re-imports everything. Build a DataPlug for an Obsidian vault (Markdown +
wikilinks) or Notion export that supports incremental sync: track a
content hash / mtime per source so unchanged files are skipped, and map
[[wikilinks]] to Link edges between ContextItems. Build on the
DataPlug protocol and the existing sync path.

Tasks: implement the plug + a small state store for the sync cursor; convert
wikilinks/relations into typed Links (src/contextseek/domain/links.py);
handle deletes (soft-delete vanished sources); add integration tests over a
fixture vault.

Acceptance: a second sync of an unchanged vault performs ~no writes; edits
produce exactly the changed items; wikilinks become links.

ZH. CLI 已有 sync 用于导入笔记,但重复 sync 会全量重导。请为 Obsidian
vault
(Markdown + wikilink)或 Notion 导出 做一个支持增量 sync 的 DataPlug:
为每个源记录内容 hash / mtime,跳过未变文件,并把 [[wikilink]] 映射为
ContextItem 之间的 Link 边。基于 DataPlug 协议和现有 sync 路径实现。

任务: 实现插件 + 一个保存 sync 游标的小状态存储;把 wikilink/关系转成类型化
Linksrc/contextseek/domain/links.py);处理删除(对消失的源做软删除);针对
fixture vault 写集成测试。

验收: 对未变 vault 第二次 sync 几乎无写入;编辑只产出变化的条目;wikilink
变成 link。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    OSS26OSS 2026 program — open, unclaimed task available to pick upcomp:dataplugContextSeek component: dataplugpriority:mediumNormal priority

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions