Automatisierte Migration von Microsoft-Daten nach Notion
Diese Suite migriert Daten aus Microsoft 365 (Planner, OneNote) in strukturierte Notion-Datenbanken.
- ✅ Automatisiert: Keine manuellen Copy-Paste-Arbeiten
- ✅ Modular: Einfach neue Quellen hinzufügen
- ✅ Idempotent: Sichere Resume-Funktionalität
- ✅ Rich-Content: Bilder, Tabellen, To-Dos werden korrekt importiert
# Repository klonen
git clone <repository-url>
cd ms_notion_migration
# Umgebung
python3 -m venv .venv
source .venv/bin/activate
# Dependencies
pip install -r requirements.txt
# Konfiguration
cp .env.example .env
# .env mit Ihren Zugangsdaten füllen# Microsoft
MS_CLIENT_ID=your-client-id
MS_TENANT_ID=common
MS_GRAPH_SCOPES=Notes.Read.All,Sites.Read.All
# Notion
NOTION_TOKEN=secret_your_token
NOTION_DATABASE_ID=default-database-id
# Optional
ON2N_STATE=~/.onenote2notion/state.jsonModerne Weboberfläche für alle Migrations-Tools mit grafischer Benutzerführung.
# Web-Server starten
cd web
python app.py
# → http://localhost:8080Features:
- 🔐 Microsoft OAuth-Authentifizierung
- 📓 OneNote-Migration mit grafischer Notebook-Auswahl
- 📋 Planner-Migration mit Status-Anzeige
- 📊 Live-Fortschrittsanzeige während der Migration
- 🎨 Responsive UI für Desktop und Mobile
📖 Vollständige Anleitung | Quick Start
CSV-basierte Aufgabenmigration mit Personen-Mapping.
python -m tools.planner_migration.cli \
--csv "tasks.csv" \
--database "NOTION_DATABASE_ID"Features:
- CSV-Delimiter-Erkennung
- Deutsche Datumsformate
- Personen-Mapping
- Multi-Select Konvertierung
- Upsert-Modus
📖 Details
Rich-Content-Migration aus SharePoint OneNote.
python -m tools.onenote_migration.cli \
--site-url "https://tenant.sharepoint.com/sites/Site" \
--notebook "Notizbuch" \
--database-id "NOTION_DATABASE_ID" \
--resumeFeatures:
- HTML-Parsing: Überschriften, Listen, Code, Tabellen
- Text-Formatierungen: Bold, Italic, Underline, Strikethrough (HTML + CSS)
- To-Do-Erkennung: Automatische Checkbox-Erkennung
- Bild/Datei-Upload: Permanente Notion-Assets (File Upload API)
- Idempotente Synchronisation: Resume-Modus mit Checksummen
- Smart Updates: Alte Seite archivieren statt Blöcke einzeln löschen (95% schneller)
- Zeitfilter:
--since 2025-01-01für inkrementelle Imports
📖 Details
| Feature | CLI | Web-GUI |
|---|---|---|
| Authentifizierung | Device Code Flow | OAuth Code Flow |
| Notebook-Auswahl | Manuell (ID angeben) | Grafische Auswahl |
| Fortschritt | Terminal-Output | Live-Dashboard |
| Benutzerfreundlichkeit | Fortgeschritten | Einsteigerfreundlich |
| Automatisierung | ✅ Skriptbar | ❌ Interaktiv |
| Mehrbenutzer | ❌ | ❌ (Single-User) |
Empfehlung:
- Web-GUI für gelegentliche, interaktive Migrationen
- CLI für Automatisierung und Batch-Verarbeitung
ms_notion_migration/
├── core/ # Gemeinsame Abstraktionen
│ ├── auth.py # MSAL + Notion (CLI + Web)
│ ├── notion_client.py # Notion API
│ ├── ms_graph_client.py # Microsoft Graph
│ └── state_manager.py # Idempotenz
│
├── tools/ # Migrationstools (CLI)
│ ├── planner_migration/
│ └── onenote_migration/
│
├── web/ # Flask Web-GUI
│ ├── app.py # Flask-Anwendung
│ ├── templates/ # HTML-Templates
│ ├── static/ # CSS & JavaScript
│ ├── README.md # Web-GUI Dokumentation
│ └── QUICKSTART.md # 5-Minuten-Setup
│
└── documentation/ # Dokumentation
├── PLANNER.md
├── ONENOTE.md
└── WEB_GUI.md
# Tests
pytest tests/
# Code-Stil
black core/ tools/
ruff check core/ tools/
# Type-Check
mypy core/ tools/- Modul in
tools/erstellen - CLI mit
argparseimplementieren - Core-Abstraktionen (
auth,notion_client,ms_graph_client) nutzen - Dokumentation in
docs/erstellen
Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) © 2025 LOUPZ GmbH & Co. KG
Sie dürfen:
- ✅ Das Material teilen und weiterverbreiten
- ✅ Das Material remixen, verändern und darauf aufbauen
Unter folgenden Bedingungen:
- Attribution — Namensnennung erforderlich
- NonCommercial — Keine kommerzielle Nutzung erlaubt (kein Wiederverkauf)
Siehe LICENSE für Details.
F: Wie funktioniert Resume?
A: Der Tool speichert Checksummen in ~/.onenote2notion/state.json. Mit --resume werden unveränderte Seiten übersprungen.
F: Was ist mit Bildern? A: Bilder werden heruntergeladen und direkt zu Notion hochgeladen.
F: Kann ich Fehler beheben und erneut ausführen?
A: Ja! Mit --resume (oder ohne, um zu überschreiben).
Für Details: siehe documentation/ oder Issue öffnen.