openclaw/notcrawl

GitHub: openclaw/notcrawl

将 Notion 工作区数据本地同步到 SQLite 并标准化为 Markdown,支持全文搜索、终端浏览和 Git 共享,实现不依赖 Notion UI 的离线知识管理。

Stars: 103 | Forks: 10

notcrawl banner # 🗞️ notcrawl `notcrawl` 将 Notion 工作区数据镜像到本地 SQLite 并标准化为 Markdown,这样你就可以搜索、查询、对比和分享你的 Notion 记忆,而无需 依赖 Notion UI。 它包含三种数据摄入路径: - `desktop`:对本地 Notion 桌面端缓存的只读快照 - `api`:具备速率限制感知的官方 Notion API 同步 - `notion-mcp`:通过预配置的 Codex Notion connector 进行针对性修复 SQLite 是标准的归档存储。Markdown 是持久且面向人类/agent 的展现层。 Git 分享模式发布标准化的快照,其他机器可以订阅这些快照, 而无需持有 Notion 凭据。 ## 当前范围 - 带有 FTS5 的本地 SQLite 存储 - 从 macOS Notion 读取本地桌面端缓存进行摄入 - 通过官方 API 摄入页面/block/用户/评论 - 通过官方 API 摄入 Notion database 元数据和行 - 支持当前的 Notion 数据源 API 以及旧版 database endpoint - 通过 Unicode 安全的 workspace、teamspace 和页面路径组织标准化的 Markdown 导出 - 将抓取到的 Notion database 行导出为 CSV/TSV - 压缩的 JSONL git-share 快照以及导入/更新工作流 - 用于快速检查本地页面/database 的终端归档浏览器 - 归档状态、活动报告和 SQLite 维护命令 - 支持临时检查的只读 SQL 访问 ## 安装 ``` brew install openclaw/tap/notcrawl ``` 你也可以从 [最新发布版本](https://github.com/openclaw/notcrawl/releases/latest) 下载归档文件、`.deb` 或 `.rpm` 包。 手动检查更新的发布版本: ``` notcrawl check-update ``` 交互式终端运行也会执行缓存的每日发布检查,并在有可用的 OpenClaw 新版本时打印 stderr 通知。设置 `NOTCRAWL_NO_UPDATE_CHECK=1` 或 `CRAWLKIT_NO_UPDATE_CHECK=1` 可禁用该 被动通知。 ## 快速开始 使用本地 Notion Desktop 缓存: ``` notcrawl init notcrawl doctor notcrawl status notcrawl report notcrawl sync --source desktop notcrawl export-md notcrawl search "launch plan" notcrawl tui ``` 或者使用官方 Notion API: ``` export NOTION_TOKEN="secret_..." notcrawl sync --source api notcrawl databases notcrawl export-db --database DATABASE_ID --format csv --output roadmap.csv notcrawl export-db --all --dir exports/csv ``` 或者通过 Codex 中连接的 Notion 应用修复不完整的 Desktop 页面: ``` notcrawl sync --source notion-mcp notcrawl sync --source notion-mcp --page PAGE_ID notcrawl sync --source notion-mcp --query "launch plan" --limit 25 ``` 如果没有 `--page` 或 `--query`,该数据源会获取已知的 Desktop 页面中 没有缓存主体或缺少引用 block 的部分,以及 block 同步 未完成的 API 页面。它不声称会枚举整个工作区。 传输过程复用 Codex 身份验证,并通过 实验性的 ChatGPT apps gateway 使用配置好的 Notion 应用。空的 connector 主体不会更改现有的 归档内容,并会在稍后保持重试资格。 默认路径: - 配置: `~/.notcrawl/config.toml` - 数据库: `~/.notcrawl/notcrawl.db` - 缓存: `~/.notcrawl/cache` - Markdown 归档: `~/.notcrawl/pages` - git share repo: `~/.notcrawl/share` ## 命令 - `init` 写入一个初始配置 - `doctor` 检查配置、SQLite、桌面端缓存以及 token 是否存在 - `status` 打印归档计数、上次同步时间和数据库/WAL 大小 - `metadata --json`、`status --json` 和 `doctor --json` 为启动器、自动化和 CI 暴露 crawlkit 的 控制/状态 payload - `report` 汇总最近的页面、database、space 和评论活动 - `maintain` 重建 FTS、优化 SQLite 索引,并可运行 `VACUUM` - `sync` 从 `desktop`、`api`、`notion-mcp` 或 `all` 摄入数据 - `export-md` 从 SQLite 渲染标准化的 Markdown 文件 - `databases` 列出已抓取的 Notion database - `export-db` 将一个已抓取的 Notion database,或使用 `--all --dir` 导出所有 database,格式为 CSV 或 TSV - `search` 通过 FTS5 搜索页面和评论文本 - `tui` 打开用于页面和 database 的终端归档浏览器 - `sql` 对归档运行只读 SQL - `publish` 将 SQLite 表和 Markdown 导出到 git share repo - `subscribe` 克隆 share repo 并导入最新快照 - `update` 拉取并导入已订阅的 share repo ## 共享的 crawlkit 呈现层 `notcrawl` 使用 `crawlkit` 提供标准配置路径、SQLite 打开/读取辅助功能、 快照打包/导入、由 Git 支持的归档共享、输出格式化、状态 payload,以及共享的终端探索器。Notion API/Desktop 解析、 Markdown 渲染、页面/评论/database schema 和 Notion FTS 主体依然 由 `notcrawl` 拥有。 TUI 遵循 gitcrawl 风格的三窗格模型:左侧是 workspace/teamspace/page 或 database 组,中间是页面/database,右侧是可读的 文档预览以及评论和元数据。它支持窗格 聚焦、可排序的表头、鼠标选择、右键操作,以及一个 本地/远程页脚。 ## 分发 发布打包由 GoReleaser 管理。带有标签的发布会构建 tarballs、 校验和、`.deb`、`.rpm`、GitHub 发布说明,并更新 Homebrew tap。 有关发布操作,请参见 [`docs/distribution.md`](docs/distribution.md)。 ## 安全模型 Desktop 模式是只读的。它会在 读取之前对 Notion 的本地 SQLite 数据库进行快照,且永远不会写入 Notion 应用存储。Desktop 缓存 覆盖率是机会性的;Markdown 导出会标记出那些引用的 block 未在本地缓存的页面,API 同步可以补充与 integration 共享的内容。 在稍后的 Desktop 快照中缺失的行会被保留,因为缓存驱逐 并不是删除信号;明确的 Notion tombstone 依然会使记录退役。 API 模式使用官方 Notion API。它将原始的 API payload 与 标准化的行存储在一起,这样渲染程序就可以在不重新抓取的情况下进行改进。 Notion MCP 模式是只读且有针对性的。它在 发出请求时读取 Codex bearer 凭据,从不存储它,仅动态解析已连接的 Notion 搜索/获取工具,并在持久化 connector Markdown(包括页面属性)之前剔除已签名的 URL 凭据。凭据仅发送给确切的 HTTPS ChatGPT apps gateway。Gateway 和 Codex auth-file 格式是 实验性契约,可能会发生更改。 密钥永远不会被导出到 Markdown 或 git-share 快照中。
标签:EVTX分析, Markdown, SQLite, 数据同步, 数据导出, 日志审计, 笔记备份