deamon-vault/_adn/skills/obsidian-notion-sync.md
2026-04-17 16:54:34 +02:00

11 KiB

name description
obsidian-notion-sync Synchronise les pages Notion vers le vault Obsidian avec enrichissement IA. Gère le diff incrémental (quoi a changé depuis le dernier import), le mapping des propriétés Notion vers le frontmatter YAML, la détection de conflits, et l'intégration des notes importées dans le tissu du vault (liens, tags, MOC). Déclenche quand l'utilisateur mentionne "sync notion", "importer notion", "synchroniser notion", "notion vers obsidian", "import depuis notion", "mettre à jour depuis notion", "rafraîchir depuis notion", ou quand des pages Notion doivent être intégrées au vault.

Obsidian Notion Sync

Tu es un LLM qui synchronise des pages Notion vers un vault Obsidian servant de cerveau partagé entre plusieurs LLM. Tu ne fais pas un simple copier-coller — tu enrichis chaque page importée en l'intégrant dans le tissu existant du vault.

Première chose à faire : lire BRAIN.md

Lis _adn/brain.md pour connaître le contexte utilisateur, les projets actifs, et les domaines prioritaires. Ça guide tes décisions de mapping (quel tag attribuer, quels liens créer).

Philosophie

Notion et Obsidian ont des philosophies différentes. Notion organise par bases de données et vues. Obsidian organise par notes atomiques et liens. La sync ne consiste pas à reproduire la structure Notion dans Obsidian — c'est une traduction d'un paradigme à l'autre.

La vraie valeur de la sync, c'est ce qu'un humain ne ferait pas : détecter que cette page Notion sur le MCP est liée à 3 notes existantes dans le vault, que ce projet Notion correspond à un tag projet/... déjà utilisé, que cette entrée de journal Notion complète une réflexion commencée dans une daily note Obsidian.

Pré-requis

Pour fonctionner, cette skill a besoin de :

  • Un accès à l'API Notion (via MCP Notion ou appel direct)
  • Le vault Obsidian accessible en écriture (via MCP Obsidian ou système de fichiers)
  • Un fichier de config _adn/notion-sync.md qui définit quelles bases/pages Notion synchroniser

Config notion-sync.md

---
title: "Config Notion Sync"
type: resource
tags:
  - config
  - import/notion
status: active
summary: "Configuration de la synchronisation Notion → Obsidian : bases à sync, mapping des propriétés, fréquence, dernière exécution"
source_llm: claude
updated: 2026-04-16T22:00:00
---

# Configuration Notion → Obsidian

## Sources à synchroniser

| Base/Page Notion | ID Notion | Dossier cible Obsidian | Fréquence | Dernière sync |
|------------------|-----------|------------------------|-----------|---------------|
| Base Projets | abc123 | projects/ | hebdo | 2026-04-10 |
| Base Veille Tech | def456 | knowledge/ | quotidien | 2026-04-15 |
| Journal | ghi789 | journal/ | quotidien | 2026-04-15 |
| Wiki/Docs | jkl012 | knowledge/ | hebdo | 2026-04-08 |

## Mapping des propriétés

| Propriété Notion | Champ Obsidian | Transformation |
|------------------|----------------|----------------|
| Status | status + tag statut/ | In Progress→active, Done→done, Not Started→draft |
| Category | tag domaine/ | Tech→domaine/tech, Business→domaine/business |
| Tags | tags | Mapping direct, normalisation minuscules+tirets |
| Priority | tag priorite/ | High→priorite/haute, Medium→priorite/moyenne |
| Created | created | ISO 8601 |
| Last edited | updated | ISO 8601 |
| URL | source_notion | Lien Notion complet |

## Pages exclues

- Templates Notion (pas de contenu réel)
- Pages "brouillon" marquées comme telles dans Notion

Les 4 étapes de la sync

Étape 1 — Diff (quoi a changé ?)

Avant d'importer quoi que ce soit, déterminer ce qui a changé depuis la dernière sync.

  1. Lire la date de dernière sync dans _adn/notion-sync.md
  2. Interroger l'API Notion pour lister les pages modifiées après cette date
  3. Classifier chaque page :
    • Nouvelle : pas de note Obsidian correspondante (pas de source_notion qui matche)
    • Modifiée : une note Obsidian existe avec ce source_notion, et la page Notion a été modifiée après le imported_at de la note
    • Inchangée : la page Notion n'a pas bougé → rien à faire
    • Supprimée dans Notion : la note Obsidian référence une page qui n'existe plus → signaler
  4. Produire un rapport de diff avant de procéder :
## Diff Notion — 2026-04-16

- 3 nouvelles pages à importer
- 5 pages modifiées depuis le dernier import
- 42 pages inchangées (ignorées)
- 1 page supprimée dans Notion (note Obsidian à vérifier)

Étape 2 — Import et mapping

Pour chaque page nouvelle ou modifiée :

2.1 — Extraire le contenu Notion

  1. Récupérer le contenu complet de la page (blocs texte, listes, tableaux, callouts)
  2. Récupérer toutes les propriétés de la base de données
  3. Récupérer les sous-pages si applicable

2.2 — Mapper les propriétés → frontmatter YAML

Appliquer le mapping défini dans _adn/notion-sync.md :

---
title: "Titre de la page Notion"
type: resource  # ← déterminé par analyse du contenu
created: 2026-03-15T10:00:00  # ← propriété Created de Notion
updated: 2026-04-16T22:00:00  # ← date de l'import
tags:
  - domaine/tech/ia          # ← mappé depuis Category: Tech + Tags: AI
  - projet/openclaw           # ← connexion détectée par l'IA
  - import/notion             # ← toujours présent sur les imports
  - statut/actif              # ← mappé depuis Status: In Progress
status: active
summary: "..."                # ← généré par l'IA à partir du contenu
source_llm: claude            # ← le LLM qui fait l'import
source_notion: "https://notion.so/page-abc123"
imported_at: 2026-04-16T22:00:00
notion_properties:            # ← propriétés originales conservées
  status: "In Progress"
  category: "Tech"
  tags: ["AI", "MCP"]
  priority: "High"
related:
  - "[[Note existante liée]]"
---

2.3 — Convertir le contenu Markdown

Notion utilise son propre format de blocs. Convertir vers du Markdown Obsidian propre :

Bloc Notion Markdown Obsidian
Heading 1/2/3 #, ##, ###
Bulleted list - item
Numbered list 1. item
To-do - [ ] item / - [x] item
Callout > [!tip] / > [!warning] etc.
Code block ```lang ```
Quote > citation
Table Tableau Markdown standard
Divider ---
Toggle Section avec heading (les toggles n'existent pas en Obsidian)
Mention de page [[Nom de la note]] si elle existe dans le vault
Lien externe [texte](url)
Image ![alt](url) — télécharger localement si possible

2.4 — Déterminer le type

Analyser le contenu pour assigner le bon type Obsidian :

  • Mots-clés projet (objectif, deadline, sprint, livrable) → project
  • Mots-clés connaissance (guide, tutoriel, référence, documentation) → resource
  • Mots-clés décision (décidé, choisi, comparé, vs) → decision
  • Mots-clés idée (idée, concept, brainstorm, et si) → idea
  • Structure journal (date, humeur, accompli) → daily
  • Notes de réunion (participants, agenda, actions) → meeting
  • Impossible à classer → inbox

Étape 3 — Intégration dans le vault

C'est l'étape où l'IA apporte le plus de valeur — bien au-delà d'un simple import.

3.1 — Détection de connexions

Pour chaque note importée, chercher dans le vault existant :

  1. Notes avec les mêmes tags projet/... ou domaine/... → créer des [[liens]]
  2. Notes qui mentionnent les mêmes entités (outils, personnes, concepts) → créer des liens
  3. Décisions liées à un projet commun → relier au hub du projet si il existe
  4. MOC existantes qui devraient référencer cette note → l'ajouter

3.2 — Gestion des conflits (pages modifiées)

Quand une page Notion a été modifiée ET que la note Obsidian correspondante a aussi été modifiée :

  1. Comparer les dates : updated de la note Obsidian vs last_edited_time de Notion
  2. Si seul Notion a changé → mettre à jour la note Obsidian (contenu + propriétés)
  3. Si seul Obsidian a changé → ne pas écraser (Obsidian est la source de vérité pour le vault)
  4. Si les deux ont changé → créer un callout de conflit :
> [!warning] Conflit de sync — 2026-04-16
> Cette note a été modifiée dans Obsidian ET dans Notion depuis le dernier import.
> - Modif Obsidian : 2026-04-14 (liens ajoutés par organizer)
> - Modif Notion : 2026-04-15 (contenu mis à jour)
> Action requise : fusionner manuellement ou choisir la version à garder.

3.3 — Placement

  • Notes nouvelles → dossier selon le type (comme le note-creator)
  • Notes mises à jour → restent dans leur dossier actuel

Étape 4 — Logging et mise à jour config

  1. Mettre à jour _adn/notion-sync.md :

    • Dernière sync = maintenant
    • Incrémenter les compteurs si applicable
  2. Écrire un log dans _adn/notion-sync-log.md (append) :

## Sync — 2026-04-16T22:00:00

**Source** : Base Veille Tech (def456)
**Résultat** :
- 3 nouvelles notes importées :
  - `veille-ia-agents-2026.md` → knowledge/
  - `veille-mcp-servers-update.md` → knowledge/
  - `note-reunion-partenariat.md` → projects/
- 5 notes mises à jour (propriétés + contenu)
- 8 nouveaux liens créés vers des notes existantes
- 1 conflit détecté sur `projet-openclaw-roadmap.md` (à résoudre manuellement)
- 0 erreurs

**Durée** : ~5 min
**Prochaine sync recommandée** : 2026-04-17

Modes d'exécution

Mode Usage Description
Sync complète Hebdomadaire Toutes les bases configurées
Sync ciblée À la demande Une base ou une page spécifique
Import ponctuel À la demande Importer une page Notion par son URL, sans config préalable
Dry run Debug Produire le diff et le rapport sans rien écrire

Import ponctuel (sans config)

L'utilisateur peut donner une URL Notion directement : "importe cette page : https://notion.so/..."

Dans ce cas :

  1. Récupérer la page via l'API
  2. Appliquer le mapping standard (ou demander si ambigu)
  3. Créer la note dans inbox/ par défaut
  4. L'organizer la triera ensuite

Règles de sécurité

  1. Notion est en lecture seule — on ne modifie jamais Notion depuis cette skill
  2. Obsidian est la source de vérité — en cas de conflit, Obsidian gagne (sauf décision explicite de l'utilisateur)
  3. Ne jamais écraser une note Obsidian sans vérifier le conflit
  4. Conserver notion_properties : les propriétés originales Notion sont toujours gardées dans le frontmatter pour référence
  5. Logger chaque action dans le sync-log
  6. Les images Notion sont téléchargées localement si possible (les URLs Notion expirent)

Checklist

  • _adn/notion-sync.md existe et est à jour
  • Le diff a été calculé avant l'import
  • Chaque note importée a source_notion, imported_at, et le tag import/notion
  • Les propriétés Notion sont conservées dans notion_properties
  • Les connexions avec le vault existant ont été cherchées et créées
  • Les conflits sont signalés, pas écrasés
  • Le sync-log est mis à jour
  • La date de dernière sync est mise à jour dans la config