Aprende a crear un blog usando Markdown con generadores de sitios estáticos como Jekyll, Hugo o Next.js
Markdown es una excelente opción para escribir los contenidos de un blog. Existen varios generadores de sitios estáticos que convierten archivos Markdown en páginas web completas, listas para publicar.
Estas son las principales ventajas de usar Markdown para un blog:
Jekyll es el generador de sitios estaticos mas veterano. Se integra nativamente con GitHub Pages, lo que significa que puedes publicar tu blog gratis con solo hacer push a un repositorio.
Necesitas tener Ruby instalado en tu sistema. Despues, ejecuta estos comandos:
gem install bundler jekyll
jekyll new mi-blog
cd mi-blog
bundle exec jekyll serveEsto crea un proyecto completo y levanta un servidor local en http://localhost:4000. Ya puedes ver tu blog funcionando.
Cada articulo es un archivo Markdown dentro de la carpeta _posts/ con un nombre que sigue el formato YYYY-MM-DD-titulo.md:
---
layout: post
title: "Mi primer artículo"
date: 2024-01-15
categories: tutorial
---
Contenido del artículo en **Markdown**.El front matter (lo que esta entre los ---) le dice a Jekyll como procesar el archivo: que layout usar, la fecha de publicacion y las categorias para organizar el contenido.
Hugo destaca por su velocidad de compilacion. Mientras Jekyll puede tardar segundos en compilar un sitio grande, Hugo lo hace en milisegundos. Es ideal para blogs con cientos o miles de articulos.
Primero instala Hugo siguiendo las instrucciones de gohugo.io. Despues ejecuta:
hugo new site mi-blog
cd mi-blog
git init
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke themes/ananke
echo "theme = 'ananke'" >> hugo.toml
hugo serverCon estos comandos creas el sitio, inicializas Git, instalas el tema Ananke (uno de los mas populares) y levantas el servidor de desarrollo en http://localhost:1313.
Para crear un nuevo articulo en Hugo, usa el comando hugo new posts/mi-articulo.md y edita el archivo generado:
---
title: "Mi primer artículo"
date: 2024-01-15
draft: false
tags: ["tutorial", "markdown"]
---
Contenido del artículo en **Markdown**.El campo draft: false es importante: si lo dejas en true, el articulo no aparecera en el sitio publicado (aunque si en el servidor de desarrollo con la flag --buildDrafts).
Next.js permite crear blogs con MDX, combinando Markdown con componentes React.
Gatsby es otra opción basada en React con un rico ecosistema de plugins para blogs.
Ghost es un CMS que soporta Markdown de forma nativa y ofrece una interfaz de administración completa.
Sigue estos pasos para crear tu blog con Markdown:
Entender la estructura de archivos te ayuda a saber donde va cada cosa. Aqui tienes la estructura tipica de un blog con Jekyll y con Hugo.
mi-blog/
├── _config.yml # Configuracion del sitio
├── _posts/ # Tus articulos en Markdown
│ ├── 2024-01-15-mi-primer-post.md
│ └── 2024-02-01-segundo-post.md
├── _layouts/ # Plantillas HTML
│ ├── default.html
│ └── post.html
├── _includes/ # Fragmentos reutilizables
│ ├── header.html
│ └── footer.html
├── _sass/ # Archivos de estilos
├── assets/ # Imagenes, CSS, JavaScript
├── index.md # Pagina principal
├── about.md # Pagina "Sobre mi"
├── Gemfile # Dependencias de Ruby
└── _site/ # Sitio generado (no editar)
mi-blog/
├── hugo.toml # Configuracion del sitio
├── content/ # Tu contenido en Markdown
│ └── posts/
│ ├── mi-primer-post.md
│ └── segundo-post.md
├── layouts/ # Plantillas personalizadas
├── static/ # Archivos estaticos (imagenes, etc.)
├── themes/ # Temas instalados
│ └── ananke/
├── archetypes/ # Plantillas para nuevo contenido
│ └── default.md
├── data/ # Datos estructurados (JSON, YAML)
└── public/ # Sitio generado (no editar)
La mayoria de generadores de sitios estaticos usan un sistema de temas que define la apariencia visual del blog. No necesitas disenar desde cero.
Cada generador tiene su directorio de temas:
Una vez instalado el tema, puedes ajustar los estilos sin modificar el tema directamente. En Jekyll, edita los archivos dentro de _sass/. En Hugo, crea archivos en assets/css/ que sobreescriban los estilos del tema. Esto te permite actualizar el tema sin perder tus personalizaciones.
Los layouts definen la estructura HTML de cada tipo de pagina. Normalmente tendras al menos dos: uno para la pagina principal (lista de articulos) y otro para cada articulo individual. Si quieres anadir una barra lateral, un formulario de suscripcion o un pie de pagina personalizado, ese es el lugar donde hacerlo.
Crear un blog es solo el primer paso. Para que la gente lo encuentre, necesitas optimizarlo para buscadores.
Cada articulo deberia tener una meta descripcion unica de entre 120 y 160 caracteres. En el front matter, anadela asi:
---
title: "Mi primer artículo"
description: "Aprende a crear tu primer blog con Markdown usando Jekyll paso a paso, desde la instalación hasta la publicación."
---Si no incluyes una descripcion, Google mostrara un fragmento aleatorio de tu texto, que rara vez sera atractivo para el lector.
Un sitemap.xml le dice a los buscadores que paginas tiene tu sitio. Tanto Jekyll como Hugo lo generan automaticamente. En Jekyll, anade gem "jekyll-sitemap" a tu Gemfile. En Hugo, ya viene incluido por defecto.
El archivo robots.txt indica a los buscadores que pueden y que no pueden rastrear. Crea un archivo robots.txt en la raiz del sitio con:
User-agent: *
Allow: /
Sitemap: https://tu-dominio.com/sitemap.xml
Usa URLs descriptivas en lugar de identificadores numericos. En vez de /posts/12345, configura tu generador para usar /blog/como-crear-un-blog-con-markdown. Tanto Jekyll como Hugo permiten configurar la estructura de URLs en sus archivos de configuracion.
Los sitios estaticos ya son rapidos por naturaleza, pero puedes mejorarlos aun mas: comprime las imagenes antes de subirlas, usa formatos modernos como WebP y activa la cache del navegador en tu hosting. Herramientas como PageSpeed Insights te ayudan a identificar mejoras.
Estas son las mejores opciones gratuitas para alojar tu blog:
👋 Hola! Soy Edu, me encanta crear cosas y he redactado este tutorial. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirlo en Twitter.
Sígueme en Twitter para estar al día con mi contenido. 😊