Phoenix0531-sudo/Notion_Sync
GitHub: Phoenix0531-sudo/Notion_Sync
一款基于 PySide6 的本地桌面应用,通过 Notion API 将页面和数据库导出为 Markdown 等格式,解决 Notion 内容本地持久化归档的问题。
Stars: 2 | Forks: 0
# Notion 同步
**桌面端 Notion → 本地导出 / 同步工作台 (PySide6)**
[English](README.md) | [中文](README.zh-CN.md)


Notion Sync 是一个**本地桌面应用**,它通过调用 Notion API 将页面 / 数据库导出到您的计算机(Markdown 及相关格式),并提供面向任务的同步控制。
包入口位于 `src/notion_sync/` 下;`ultimate_start.py` 是一个启动器,它会在修补 typing 的一些怪异行为后启动应用。
## 开发初衷
Notion 在线使用体验极佳,但作为持久化的本地归档方案却不太理想。本项目将导出/同步功能统一在一个桌面外壳下(配置后,token 会存储在系统密钥环中),从而避免了使用各种临时编写的脚本。
## 功能
- Notion API 客户端 + 同步任务模型
- 面向导出的 pipeline(根据任务配置支持 Markdown / HTML / JSON 路径)
- 带有进度状态显示的任务管理器 UI
- 可选的文件监听器 hook,用于本地工作流
- MVC 风格的目录划分:`controllers/`、`models/`、`services/`、`ui/`
## 安装
```
git clone https://github.com/Phoenix0531-sudo/Notion_Sync.git
cd Notion_Sync
pip install -r requirements.txt
```
您需要一个 Notion **内部集成 token**,并与该集成共享目标页面。
## 使用说明
```
python ultimate_start.py
# 或者,在安装后 / PYTHONPATH=src:
python -m notion_sync.main
```
1. 创建一个 Notion 集成并复制 token。
2. 与该集成共享目标页面/数据库。
3. 在 UI 中创建同步任务并选择本地输出文件夹。
## 项目结构
```
ultimate_start.py
src/notion_sync/
main.py
controllers/
models/
services/
ui/
tests/
```
## 注意事项
- 这不是 Notion 的官方产品
- 不支持针对所有 block 类型的完整双向 CRDT 同步
- API 的速率限制和 Notion schema 的变更可能会导致边缘情况出现问题 —— 请将其视为个人工具使用
## 许可证
MIT。可免费用于商业用途,但需注明出处。详见 [LICENSE](LICENSE)。
标签:API集成, Notion, PySide6, 可观测性, 数据同步, 文件导出, 桌面应用, 逆向工具