L’article de lundi sur l’utilisation d’Obsidian comme app de journaling a suscité un peu d’intérêt (merci) et on m’a demandé d’aller un peu plus loin dans l’usage des modèles, notamment en lien avec la géolocalisation. Je ne fais rien de très stylé (on voit des choses largement plus puissantes en ligne…) mais il existe dans Obsidian une règle tacite : plus un truc est stylé, plus il casse vite (j’ai eu des trucs plus stylés qui ont, donc, cassé). Je fais donc beaucoup plus simple aujourd’hui.
Chaque entrée comporte de 1 à x grandes parties (H1) relatives à différentes zones de mon existence (création, développement personnel, seum du jour si besoin…), et taguées sous la forme #Journal/Écriture/LaSuccessiondesÂges
.
Un pied de page comportant une navigation facile vers la veille, le lendemain, la semaine, le mois, l’année… ainsi que la géolocalisation. Pour ça, on utilise Templater, qui permet d’insérer des données dynamiques dans une fiche créée à la volée.
Mais il y a une ruse : comment expliquer à Templater et Periodic Notes qu’on veut utiliser un modèle dynamique ? Au final, c’est tout simple, mais pas intuitif du tout, parce que Periodic Notes et Templater ne se connaissent pas mutuellement. Periodic Notes sait seulement intituler la note du jour selon la date concernée… et ça va nous être très utile. Mais il ne sait rien faire d’autre. (Pour ne pas devenir chèvre, il est fortement recommandé de passer Obsidian en français, car cela va simplifier des tas de choses pour la manipulation des dates.)
On va procéder en deux temps :
- Demander à Periodic Notes d’appeler ses notes selon la date du jour, et d’utiliser un modèle spécifique,
- Lequel contient l’instruction d’invoquer un second modèle, qui s’adresse à Templater et utilise toute sa puissance.
Le modèle indiqué à Periodic Notes sera très simple. Ici, on veut surtout avoir un fichier intitulé selon la date du jour (voir dans les options pour le format). Pour ma part, j’utilise YYYY-MM-DD (dddd)
, ce qui est un formatage standard et simple pour classer chronologiquement les fichiers, donnant par exemple pour la date d’aujourd’hui : 2025-05-28 (mercredi)
. (Je trouve utile d’avoir le nom du jour en clair pour différencier la semaine des week-ends.)
Ce modèle ne contient qu’une ligne très simple, appelant Templater, sous la forme :
<% await tp.file.include("[[Journal (jour) (Templater)]]") %>
où vous mettez entre [[ ]]
évidemment le nom du modèle à invoquer (chez moi Journal (jour) (Templater)
). Cela invoque le deuxième modèle avec l’instruction include
.
⚠️ Attention, pour que ça marche, il faut signaler à Templater de surveiller toute création de fichier partout dans le coffre pour intervenir tout de suite dans les instructions qui le concernent. Dans les options du plugin, activer Trigger Templater on new file creation
.
On peut maintenant créer son modèle de journal proprement dit.
Faire des trucs stylés avec Templater et les dates
(Mais pas trop stylés, sinon rappelez-vous, ça casse)
Dans son modèle Templater proprement dit, on fait tout ce qu’on veut, justement parce qu’on a pris soin d’intituler le fichier selon la date du jour dans Periodic Notes, sur quoi on va se baser (cela permet de créer des entrées dans le passé ou le futur sans problème ; le code sera toujours relatif au jour concerné). Voici du code fort utile (à la base glané quelque part en ligne, je ne sais plus où) à insérer au tout début de son modèle :
---
<%*
var fileDate = moment(tp.file.title);
// moment dates are mutable
let prevDay = moment(fileDate).subtract(1, 'd').format('YYYY-MM-DD (dddd)');
let nextDay = moment(fileDate).add(1, 'd').format('YYYY-MM-DD (dddd)');
let yearLink = fileDate.format('YYYY');
let quarterLink = fileDate.format('YYYY-[Q]Q');
let monthLink = fileDate.format('YYYY-MM');
let weekLink = fileDate.format('gggg-[W]WW');
-%>
locations:
---
L’insert entre triples tirets (—) correspond aux propriétés du fichier, une par ligne (c’est du YAML). On y trouve par exemple directement en bas la propriété locations:
qui signifie à Map View qu’il y a une géolocalisation à chercher dans le fichier (voir l’article de lundi).
Le code entre <%*
est la syntaxe de Templater. Comme Periodic Notes a créé l’entrée du jour selon un format daté, nous allons lire cette date avec tp.file.title
et la manipuler dans tous les sens (extraire le mois, le trimestre, ajouter un jour pour obtenir la date du lendemain, etc.) – et c’est commodément placé dans des variables qu’on peut ensuite invoquer sans réfléchir : [[${prevDay}|hier]]
nous donnera par exemple un joli lien wiki vers l’entrée d’hier.
Géolocalisation et choix multiple
Quand je ne suis pas en déplacement, je suis globalement fixé à quelques adresses régulières, dont notre maison à Melbourne où, dans mon studio, la géolocalisation ne passe pas, en plus. Ce qui n’est pas un problème : si j’ai la coordonnée GPS (je suis allé la prendre devant la maison), je peux l’insérer à la main à l’intention de Map View. Pour ne pas avoir à se taper l’insertion manuelle des mêmes adresses en permanence, on peut créer un questionnaire à choix multiple avec la fonction tp.system.suggester
de Templater selon ce genre de syntaxe :
<% tp.system.suggester(["Plan-de-Cuques", "Troo", "Crotelles", "Entrée manuelle"], ["[Plan-de-Cuques](geo:43.3460029,5.4618046)", "[Troo](geo:47.7924481,0.7786471)", "[Crotelles](geo:47.5431104,0.8373356)", "https://esm7.github.io/obsidian-geo-helper"]) %>
À chaque création d’entrée quotidienne, Templater me présentera une liste où sélectionner une option parmi quatre, incluant trois lieux fantastiques et de haute renommée : Plan-de-Cuques, Troo, Crotelles, plus Entrée manuelle. Le lien geo:
préparé à l’avance sera inséré à la place, ou, dans le dernier cas, un simple lien vers le Geohelper du plugin, me permettant en particulier en mobilité de simplement cliquer dessus pour obtenir ma localisation et la coller à la place. D’où l’importance de la propriété locations:
insérée en tête du modèle ; elle signale à Map View qu’il y a une donnée géographique à traiter (puisque les géolocalisations sont insérées de façon programmatique).
Et voilà. Ajoutez ensuite, si vous le souhaitez, la structure habituelle de vos entrées de journal pour vous lancer directement dans l’écriture chaque jour. Bonus : mettez une instruction <% tp.file.cursor() %>
pour placer le curseur d’Obsidian là où vous voulez commencer à taper (au-dessus du pied de page et sous votre première invite de journal, par exemple).

Laisser un commentaire