A - le graphe relationnel
Liens entre Boostack et Obsidian
- 1 - génèse de l'articulation Boosktack et Obsidian
- 2 - Gitea pour synchroniser Obsidian Desktop dans les équipes
- Python pour Mardown
1 - génèse de l'articulation Boosktack et Obsidian
Le duo que vous avez choisi (BookStack pour la structuration encyclopédique hiérarchique, et Obsidian pour le maillage systémique et la pensée en réseau) est tout simplement l'une des architectures de gestion des connaissances (PKM) les plus robustes et intelligentes à l'heure actuelle.
Pour répondre directement, clairement et sans aucune ambiguïté à votre question sur Obsidian : OUI. Votre contenu est 100 % pérenne et totalement indépendant de l'entreprise qui édite Obsidian.
Voici pourquoi vous pouvez être totalement rassuré pour votre débrief de mercredi, et quels sont les (rares) pièges à éviter.
1. Le principe du "Local-First" et du "Plain Text"
Contrairement à Notion, Evernote ou d'autres outils propriétaires en ligne, Obsidian n'est en fait qu'une "fenêtre" qui regarde un dossier sur votre ordinateur.
Le format : Chaque note que vous créez dans Obsidian est un simple fichier texte au format Markdown (
.md).Le stockage : Vos données ne sont pas dans un cloud propriétaire chiffré, elles sont dans un dossier "Coffre" (Vault) sur votre propre disque dur (ou votre serveur).
La conséquence : Si Obsidian ferme demain, vous ne perdez rien. Vous avez toujours votre dossier avec tous vos fichiers texte, lisibles par n'importe quel éditeur de texte basique (Bloc-notes, TextEdit, VS Code).
2. Le moteur relationnel (Le Graphe) est-il exportable ?
C'est la grande force de votre approche. Le système de liens d'Obsidian (le fameux
[[Nom de la note]]) n'est plus une exclusivité d'Obsidian. C'est devenu le standard universel de la prise de note en réseau (les "Wiki-links"). Si vous désinstallez Obsidian demain matin, vous pouvez ouvrir votre dossier exact avec d'autres logiciels open-source ou gratuits (comme Logseq, Zettlr, Foam ou SiYuan) : ils liront vos fichiers et reconstruiront instantanément votre graphe relationnel des motifs urbains sans aucune perte de données.3. Le point de vigilance : Le "Piège" des Plugins
Obsidian est gratuit et son cœur est pur (Markdown standard). Cependant, la communauté a créé des milliers de plugins. C'est là que réside le seul risque de "lock-in" (enfermement).
Pour garantir une pérennité absolue de votre matrice Alteris, voici les règles d'or à transmettre à l'équipe projet :
Utilisez les métadonnées standards (YAML Frontmatter) : Pour définir vos indicateurs (ex: Type: Motif, Niveau: 1, Thème: Mobilité), utilisez l'en-tête natif de la note. C'est un standard informatique mondial.
Évitez d'abuser de la syntaxe spécifique aux plugins : Un plugin très populaire comme Dataview utilise une syntaxe de requête (du type
dataview ...) qui ne fonctionnera que dans Obsidian. Ce n'est pas grave de l'utiliser pour générer des tableaux de bord temporaires, mais l'information brute ne doit pas être stockée dans cette syntaxe.Attention aux "Canvas" (Tableaux blancs) : Les Canvas d'Obsidian utilisent un format de fichier spécifique (
.canvasqui est en fait du JSON). Contrairement aux notes Markdown, ces fichiers seront difficiles à migrer vers un autre logiciel si vous les utilisez comme base de données principale.En résumé pour votre débrief équipe :
Vous pouvez valider ce choix technique les yeux fermés. Vous utilisez une interface propriétaire (Obsidian) hyper-performante, mais qui repose sur une base de données totalement ouverte, standardisée et portable (les fichiers Markdown locaux).
Pour préparer votre réunion, souhaitez-vous que nous structurions ensemble le modèle type (le template de métadonnées) d'une note "Motif Urbain" ou "Indicateur" à intégrer dans Obsidian, pour que le lien avec BookStack et QGIS soit parfait dès le premier jour ?
2 - Gitea pour synchroniser Obsidian Desktop dans les équipes
C'est de très loin le meilleur choix technique et stratégique ! C'est la solution reine pour les équipes qui veulent allier la puissance d'Obsidian avec la sécurité d'un vrai travail collaboratif.
Gitea est une version ultra-légère (et open-source) de GitHub, conçue pour être auto-hébergée sur un VPS.
Pour votre débrief de demain avec l'équipe projet, voici les 4 arguments massues que vous pouvez avancer pour défendre cette architecture :
1. Historique absolu et "Machine à remonter le temps"
Puisque Gitea repose sur Git, chaque modification apportée à un "Motif Urbain" ou à un indicateur est versionnée. Vous saurez exactement qui a modifié quelle ligne, et quand. Si un collaborateur efface par erreur la moitié de la matrice, vous pouvez restaurer la version de la veille en un clic. C'est l'anti-fragilité par excellence.
2. Le travail déconnecté (Le vrai mode tout-terrain)
Contrairement à Notion ou BookStack (qui exigent du réseau), vos collaborateurs pourront ouvrir Obsidian et travailler sur la matrice Alteris dans le train, sur le terrain à Toulon ou dans une zone blanche. Dès qu'ils retrouveront du Wi-Fi, l'outil synchronisera silencieusement leurs fiches avec le VPS.
3. La gestion des conflits
Si deux membres de l'équipe travaillent en même temps sur le même "Motif Urbain", le système Git est le seul au monde capable de fusionner intelligemment les deux textes, ou de vous alerter poliment s'ils ont écrit exactement sur la même ligne, évitant ainsi d'écraser le travail de l'autre.
4. Zéro compétence technique requise pour l'équipe
C'est la magie de la chose : votre équipe n'aura jamais besoin de taper des lignes de code Git (commit, push, pull). Il suffit d'installer le plugin communautaire "Obsidian Git" sur leurs postes. Vous le paramétrez pour qu'il sauvegarde et synchronise le coffre automatiquement avec le VPS toutes les 10 minutes. Pour eux, ce sera complètement invisible.
Comment on déploie ça concrètement ?
Puisque vous avez déjà un VPS (sur lequel tourne PostgreSQL/PostGIS), l'installation de Gitea sera un jeu d'enfant. Cela se fait via un simple conteneur Docker (très économe en ressources, il ne prendra presque rien sur votre serveur).
Voulez-vous que je vous prépare le petit fichier
docker-compose.ymlpour lancer Gitea ce soir et avoir un prototype fonctionnel à montrer demain ? Ou préférez-vous que l'on commence à modéliser le Template type (en-tête YAML) de vos notes pour bien structurer la base de connaissances avant de coder ?
Python pour Mardown
import csv
import os
import re
# ==========================================
# 1. PARAMÈTRES (À MODIFIER)
# ==========================================
# Remplacez par les vrais chemins sur votre PC.
# Gardez bien le 'r' devant les guillemets pour que Windows lise bien les anti-slash (\)
FICHIER_SOURCE = r"C:\Users\OneDrive\Documents\mes_indicateurs.csv"
DOSSIER_OBSIDIAN = r"C:\Users\OneDrive\Documents\Vault_Obsidian\Indicateurs"
# Noms EXACTS de vos colonnes dans le tableur CSV
COL_TITRE = "Indicateur"
COL_THEME = "Thème"
COL_DESC = "Description"
COL_SOURCE = "Source"
# ==========================================
# 2. SCRIPT DE GÉNÉRATION
# ==========================================
def clean_filename(name):
""" Supprime les caractères interdits pour les fichiers Windows """
name = str(name).strip()
return re.sub(r'[\\/*?:"<>|]', "", name)
if not os.path.exists(DOSSIER_OBSIDIAN):
os.makedirs(DOSSIER_OBSIDIAN)
compteur = 0
print(f"Lecture du fichier : {FICHIER_SOURCE}")
# Lecture du CSV (encodage utf-8-sig gère les exports Excel)
with open(FICHIER_SOURCE, mode='r', encoding='utf-8-sig') as f:
# Le séparateur standard d'Excel en français est souvent le point-virgule
reader = csv.DictReader(f, delimiter=';')
# Si les colonnes ne sont pas trouvées, on tente avec la virgule
if COL_TITRE not in reader.fieldnames:
f.seek(0)
reader = csv.DictReader(f, delimiter=',')
for row in reader:
titre_brut = row.get(COL_TITRE, "")
if not titre_brut:
continue
titre_propre = clean_filename(titre_brut)
chemin_fichier = os.path.join(DOSSIER_OBSIDIAN, f"{titre_propre}.md")
theme = row.get(COL_THEME, "Non défini")
desc = row.get(COL_DESC, "Description à compléter...")
source = row.get(COL_SOURCE, "À définir")
# Le Template Obsidian (YAML Frontmatter + Corps)
contenu_md = f"""---
type: indicateur
theme: {theme}
statut: à rédiger
---
# {titre_propre}
## 🎯 Définition
{desc}
## 📊 Données et Méthodologie
**Source principale :** {source}
- *Mettre à jour la méthode SIG ici...*
## 🕸️ Liens Systémiques
**Motifs urbains impactés :**
- [[Nom du Motif 1]]
**Indicateurs liés :**
-
***
*Fiche générée automatiquement pour la matrice Alteris.*
"""
with open(chemin_fichier, "w", encoding="utf-8") as out_f:
out_f.write(contenu_md)
compteur += 1
print(f"✅ Terminé ! {compteur} fiches créées avec succès dans le dossier Obsidian.")