Integrando Obsidian con Hugo: Automatizando mi Flujo de Publicación
¿Cómo gestiono mis artículos en Obsidian y los publico automáticamente en mi blog estático con Hugo?
En los últimos meses, he estado usando Obsidian como mi herramienta principal para escribir notas y borradores de artículos. Su sistema de markdown puro y enlaces bidireccionales lo hacen perfecto para organizar ideas. Pero, ¿cómo llevo ese contenido a mi blog, que está construido con Hugo?
La respuesta: automatización + scripts personalizados.
El Problema: Dos Directorios Separados
En mi flujo de trabajo tengo:
-
/mis-notas-obsidian
: Donde escribo en markdown (.md) con Obsidian. -
/mi-proyecto-hugo
: La estructura del sitio web (contenido en/content/posts
).
Quería:
-
Sincronizar solo los archivos
.md
de Obsidian a Hugo. -
Mantener una estructura organizada por fecha (ej:
/2023/10/mi-post.md
). -
Evitar copiar archivos que no son posts (como notas personales o templates).
La Solución: Scripts + Rsync
Para lograrlo, creé algunos scripts (los compartí antes en este post) que hacen lo siguiente:
1. Sincronización Selectiva con Rsync
Uso rsync
para copiar solo los archivos markdown desde Obsidian a Hugo, ignorando el resto:
rsync -avm --include="*/" --include="*.md" --exclude="*" --delete /mis-notas-obsidian/ /mi-proyecto-hugo/content/posts/
(Este comando mantiene la estructura de carpetas y solo pasa archivos .md
).
2. Organización Automática por Fecha
Un script en Python se encarga de mover los posts a subdirectorios según su fecha de creación:
# (Código simplificado: agrupa posts en /año/mes/)
import os
import shutil
from datetime import datetime
for archivo in os.listdir("content/posts"):
if archivo.endswith(".md"):
fecha = datetime.fromtimestamp(os.path.getctime(archivo))
nuevo_dir = f"content/posts/{fecha.year}/{fecha.month:02d}/"
os.makedirs(nuevo_dir, exist_ok=True)
shutil.move(archivo, nuevo_dir + archivo)
3. Limpieza de Archivos No Deseados
A veces tengo drafts o archivos temporales que no quiero publicar. Para evitarlo, uso:
find /mi-proyecto-hugo/content/posts -type f -not -iname "*.md" -delete
(Borra todo lo que no sea markdown).
Beneficios de Este Flujo
✅ Escritura cómoda en Obsidian (con plugins como Dataview y Templates).
✅ Publicación automática en Hugo (sin copiar/pegar manualmente).
✅ Estructura ordenada por fecha sin esfuerzo.
✅ Cero archivos residuales en el blog.
¿Por qué no usar un plugin?
Podría haber usado Obsidian-to-Hugo, pero quería control total sobre:
-
Qué archivos se copian.
-
Cómo se organizan.
-
Cuándo se ejecuta la sincronización.
Los scripts me dan esa flexibilidad.
Conclusión
Si usas Obsidian para escribir y Hugo para publicar, automatizar el proceso con scripts ahorra tiempo y reduce errores.
¿Has probado algo similar? ¡Cuéntame en los comentarios!