~/avilesxd
~/blog/cmo-constru-mi-blog-con-nextjs-y-obsidian

Cómo construí mi blog con Next.js y Obsidian

·2 min read·

Quería un blog, pero no quería un CMS. No quería aprender otra interfaz, no quería depender de una plataforma externa y tampoco quería que mi contenido viviera separado del resto de mis notas. La solución fue conectar directamente Obsidian con el blog.

Por qué Obsidian

Ya usaba Obsidian en todos mis dispositivos. Me acomoda escribir en Markdown — si llevas tiempo desarrollando apps, sabes que el formato está en todos lados: READMEs, documentación, comentarios. Escribir así se vuelve natural.

Además, tengo mi vault organizado con la metodología PARA y Zettelkasten, así que era cuestión de crear una carpeta y cualquier .md que ponga ahí se convierte en un post.

Stack Tecnológico

  • Next.js 15 con App Router
  • Tailwind v4 para los estilos
  • gray-matter para leer el frontmatter de los .md
  • remark/rehype para convertir Markdown a HTML
  • Vercel para el despliegue

Sin base de datos, sin CMS, sin nada extra. El contenido son archivos .md planos.

Cómo funciona la sincronización

El vault de Obsidian vive en su propio repo privado en GitHub. El blog lo referencia como un git submodule apuntando a la carpeta que tengo para el vault.

El problema con los submodulos es que el puntero no se actualiza solo — cada vez que agregas un post, tendrías que entrar al repo del blog y actualizarlo manualmente. Para resolver eso, configuré un GitHub Action en el vault.

Cuando hago push al vault con un post nuevo, el Action entra al repo del blog, actualiza el submodulo al commit más reciente y hace push. Vercel detecta el cambio y redespliega automáticamente.

El flujo final

  1. Escribo un .md en Obsidian
  2. Obsidian Git hace push al vault
  3. El GitHub Action actualiza el submodulo en el blog
  4. Vercel redespliega

Eso es todo. Desde que termino de escribir hasta que el post aparece publicado, no tengo que tocar nada más.