Maison > développement back-end > Golang > le corps du texte

Ma configuration de blog Obsidian + Hugo (publication automatique avec raccourcis clavier)

PHPz
Libérer: 2024-08-19 20:30:50
original
869 Les gens l'ont consulté

My Obsidian + Hugo blogging setup (Auto publishing with hotkeys)

Si vous avez cliqué sur cet article vous savez probablement ce que sont ces deux technologies mais si ce n'est pas le cas, voici une explication rapide :

Obsidienne

Obsidian est un éditeur de démarques riche en fonctionnalités. Mais ce n’est pas seulement un éditeur de démarques. C’est une façon de gérer les connaissances. C'est idéal pour organiser vos pensées de manière flexible et non linéaire.

Obsidian fonctionne sur toutes les plateformes. Vous pouvez donc écrire des articles depuis pratiquement n’importe quelle plateforme.

J'y prends toutes mes notes depuis quelques mois maintenant et c'est incroyable !

Hugo

Hugo est un générateur de sites Web statiques ultra rapide réalisé en golang. J'utilise Hugo pour mon blog depuis presque 2 ans maintenant. J'ai récemment changé le thème de mon blog. En savoir plus sur le changement New Look, nouveau départ.

Installation

Dans cet article, je ne montrerai pas comment configurer ces deux technologies mais simplement comment les faire fonctionner ensemble.

Si vous ne voulez pas savoir comment j'ai configuré tout ce blog en utilisant Hugo, cloudflare et render.com, lisez : Comment j'ai configuré ce blog gratuitement (domaine, hébergement, SSL) Guide complet

Si vous ne voulez pas un bon guide sur la façon d'utiliser l'obsidienne, lisez : Mise en route - obsidian.md

Objectifs

Mes objectifs pour la configuration sont :

  1. Utiliser une seule voûte d'obsidienne
  2. Avoir un modèle d'obsidienne facile à utiliser que je peux utiliser pour mes articles de blog.
  3. Garder mes dossiers de coffre-fort personnels privés.
  4. Publication automatique à l'aide des raccourcis clavier d'obsidienne.
  5. Ayez tous les fichiers de démarque dans un référentiel github public, afin que les gens puissent proposer des modifications

Configuration existante

La façon dont fonctionne mon flux de travail actuel est :

  1. Modifiez les articles du dossier de contenu.
  2. Exécutez la commande Hugo.
  3. Poussez vers github.
  4. Render.com récupère automatiquement les modifications et les diffuse.

Voyage

Si vous souhaitez sauter la partie voyage, vous pouvez accéder directement à The Sauce

Je vais passer en revue quelques erreurs que j'ai commises lors de la configuration.

Erreur n°1

La première idée que j'ai eue était de créer un simple lien symbolique (j'utilise Linux d'ailleurs) qui relierait les deux dossiers entre eux.

En gros, j'ai deux dossiers :

blog/
vault/

Copier après la connexion

Le dossier blog contient tous les dossiers du blog et le coffre-fort est mon coffre-fort personnel.

Le lien symbolique relierait ces dossiers

blog/content
vault/Blog

Copier après la connexion
Copier après la connexion

Cependant le problème avec un lien symbolique est que le contenu du dossier n'est pas visible dans mon dépôt git. Cela signifie que les gens ne peuvent proposer de modifications à aucun de mes articles

Erreur n°2

Je voulais que mes dossiers soient synchronisés. J'ai essayé d'écrire quelques scripts bash qui synchronisaient automatiquement les deux dossiers à l'aide d'une tâche cron. Cependant, avoir cela en permanence en arrière-plan est un gaspillage de ressources lorsque je n'écris pas. Exécuter simplement les scripts via cli n'est tout simplement pas si simple.

La sauce

En gros, la façon dont j'ai configuré cela est que j'ai deux dossiers :

blog
vault

Copier après la connexion

Le dossier blog contient tous les fichiers Hugo nécessaires et possède également un sous-répertoire appelé contenu qui héberge tous les fichiers du blog markdown.

J'ai créé un nouveau dossier dans mon coffre-fort appelé Blog

blog/content
vault/Blog

Copier après la connexion
Copier après la connexion

Après cela, j'ai copié tous mes fichiers du répertoire de contenu vers le blog.

J'ai alors commencé à écrire cet article

Modèles d'obsidienne

J'avais besoin d'un moyen de configurer un modèle simple pour contenir tous les éléments de présentation de Hugo requis.

C'est assez simple.

Découvrez comment configurer des modèles Modèles - obsidian.md

J'ai créé un fichier appelé Blog Post dans mon dossier de modèles

Mon modèle d'article de blog contient les éléments suivants :

---
title: "{{Title}}"
description: 
date: "{{date:YYYY-MM-DD}}T{{time:HH:mm:ss}}+00:00"
draft: true
---

**If you enjoyed this article consider [supporting me](https://4rkal.eu.org/donate)**

Copier après la connexion

J'ai toutes les informations nécessaires, y compris un titre, une description et une date dans le format demandé par Hugo.

J'ai également ajouté un petit texte de don que j'inclus au bas de chaque article.

Cela signifie que je peux automatiquement insérer ce modèle dans n'importe quel fichier et commencer à écrire !

Synchronisation des dossiers

Maintenant, je veux que tous mes fichiers dans mon répertoire coffre-fort/Blog soient copiés vers le blog/contenu

Grâce à un utilisateur Discord utile, j'ai trouvé le plugin obsidian-shellcommands.

REMARQUE : ce plugin ne fonctionne pas très bien actuellement avec la version flatpak d'obsidian (puisque flatpak isole l'environnement) . L'utilisation d'une autre alternative (.deb ou appimage) semble fonctionner.

Il vous permet d'exécuter des commandes shell en arrière-plan avec un raccourci clavier.

Les étapes pour configurer cela sont les suivantes :

  1. Install the plugin
  2. Enable the plugin
  3. Go to the plugin options
  4. Click on New shell command
  5. Now you will need to enter a shell command to copy the files from the one folder to the other.

On Linux/MacOS that is:

cp -a ~/folder1/. ~/folder2/

in my case that is cp -a ~/Documents/vault/Blog/. ~/Documents/blog2/content/

On windows it most probably is:

robocopy "%USERPROFILE%\folder1" "%USERPROFILE%\folder2" /E /COPYALL

After that we need to set a hotkey that will run the command

Click on the (+) icon to go to the hotkey settings and assign a hotkey

My hotkey is CTR + 0, simply because that was available.

Now every time that I run the hotkey it copies over all of my files to the hugo folder ready to be published

Auto publishing scripts

I also want to be able to automatically publish my articles. But I want it to happening by hitting a hotkey.

I wrote a small script that does exactly that:

#!/bin/bash
cd ~/Documents/blog

hugo

git add .
git commit -m "new"
git push -u origin main

Copier après la connexion

This script will build my website, commit and push to my github repo, where it is picked up and published. Read How I setup this blog for free (domain, hosting, ssl) Complete Guide to learn how to setup your own blog for free.

Don’t forget to make the script executable by running

chmod +x ./YOURSCRIPT.sh

Then create a new shell command for the shellcommand plugin (as we did before) and enter the path to your script.

In my case that is:

~/Documents/blog2/push.sh

Then enter a hotkey and you’re done!

Conclusion

I can now simply open my obsidian vault, create a new file, insert my template and have all the info automatically entered.

I then write my article inside of obsidian

Run my hotkey and copy all the files into the hugo directory

Hit another key and my blog is published!

If you enjoyed this article consider supporting me

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!