Configuración
Esta guía completa cubre todo lo necesario para configurar y personalizar tu blog modular de Astro, diseñado para usuarios de Obsidian que quieren publicar contenido con mínima fricción.
Requisitos Previos y Configuración
Necesitarás:
- Git
- Conocimiento básico de markdown
- Obsidian (opcional)
Si quieres compilar y probar localmente, necesitarás:
- Node.js 24.13.0+
- pnpm 10.29.3+ (recomendado) o npm
Instalación
# Instalar pnpm (si no está instalado)
npm install -g pnpm
# Instalar dependencias
pnpm install
# Vista previa
pnpm dev # o pnpm preview
# Disponible en http://localhost:5000
# Compilar para producción
pnpm build
Configuración
Si esto aplica para ti, puedes saltar directamente a la sección Estructura de Contenido.
Configuración Principal
Configura todo en src/config.ts. La configuración está organizada en secciones:
export const siteConfig = {
// Información del Sitio
site: 'https://tudominio.com',
title: 'Título de Tu Blog',
description: 'Descripción de tu blog',
author: 'Tu Nombre', // Autor global para todos los posts
language: 'es',
faviconThemeAdaptive: true,
defaultOgImageAlt: "Logo de Astro Modular.",
}
Personalización
Tema y Diseño
Selecciona opciones de tema y diseño en la configuración:
// Configuración Global
theme: "oxygen",
customThemeFile: "custom",
availableThemes: "default", // Muestra todos los temas integrados
fonts: {
source: "local",
families: {
body: "Inter",
heading: "Inter",
mono: "JetBrains Mono",
},
display: "swap",
},
layout: {
contentWidth: "45rem",
},
tableOfContents: {
enabled: true, // Toggle global de TOC para todos los posts
depth: 4, // Profundidad máxima de encabezados (2-6, donde 2=H2, 3=H3, etc.)
},
footer: {
enabled: true,
content: `© 2025 {author}. Construido con Astro Modular.`,
showSocialIconsInFooter: true,
},
hideScrollBar: false, // Ocultar barra de scroll del navegador
scrollToTop: true, // Mostrar botón de scroll hacia arriba
featureButton: "mode", // "mode" | "graph" | "theme" | "none" - qué hace el botón principal
deployment: {
platform: "netlify", // "netlify" | "vercel" | "github-pages" | "cloudflare-workers"
},
Las opciones de tema son actualmente Oxygen, Minimal, Atom, Ayu, Catppuccin, Charcoal, Dracula, Everforest, Flexoki, Gruvbox, macOS, Nord, Obsidian, Rosé Pine, Sky, Solarized, Things y Custom. Los cambios de tema son visibles en tiempo real con pnpm dev.
Temas Personalizados
Puedes crear tus propios temas personalizados:
- Renombrar la plantilla: Renombra
src/themes/custom/custom.tsa lo que quieras - Modificar colores: Actualiza las escalas de colores para coincidir con tu diseño
- Actualizar configuración:
- Establece
theme: "custom"ensrc/config.ts - Establece
customThemeFile: "nombre-de-tu-tema"(nombre de archivo sin extensión .ts)
- Establece
- Probar: Usa
pnpm devpara ver los cambios de tu tema en tiempo real
¡El sistema automáticamente encuentra y usa tu tema personalizado!
Consulta src/themes/custom/README.md para instrucciones detalladas y mejores prácticas.
Configuración de Fuentes
Personaliza fuentes para encabezados, texto del cuerpo y código con opciones de carga flexibles:
fonts: {
source: "local", // "local" para fuentes auto-hospedadas, "cdn" para Google Fonts CDN
families: {
body: "Inter", // Familia de fuente para texto del cuerpo
heading: "Inter", // Familia de fuente para encabezados
mono: "JetBrains Mono", // Familia de fuente monoespaciada
},
display: "swap", // Estrategia de carga de fuentes: "swap", "fallback", o "optional"
}
Opciones de Carga de Fuentes:
- Fuentes locales (
source: "local"): Fuentes auto-hospedadas para mejor rendimiento y privacidad - Fuentes CDN (
source: "cdn"): Google Fonts CDN para opciones de fuentes ilimitadas
Fuentes Soportadas (Modo Local):
- Sans-Serif: Inter, Roboto, Open Sans, Lato, Poppins, Source Sans Pro, Nunito, Montserrat
- Serif: Playfair Display, Merriweather, Lora, Crimson Text, PT Serif, Libre Baskerville
- Monospace: Fira Code, JetBrains Mono, Source Code Pro, IBM Plex Mono, Cascadia Code
Paleta de Comandos
La paleta de comandos proporciona navegación instantánea y funcionalidad de búsqueda:
commandPalette: {
enabled: true,
shortcut: "ctrl+K",
placeholder: "Buscar posts",
search: {
posts: true,
pages: false,
projects: false,
docs: false,
},
sections: {
quickActions: true,
pages: true,
social: true,
},
quickActions: {
enabled: true, // Habilitar sección de acciones rápidas
toggleMode: true, // Mostrar toggle de modo oscuro/claro
graphView: true, // Mostrar botón de vista de grafo
changeTheme: true, // Mostrar selector de tema
},
}
Características:
- Búsqueda Instantánea: Presiona
ctrl+K(o un atajo diferente que definas) para buscar contenido - Acciones Rápidas: Cambio de tema, atajos de navegación
- Personalizable: Cambia atajo, texto de marcador de posición y secciones habilitadas
Foto de Perfil
Agrega un toque personal con una foto de perfil configurable:
profilePicture: {
enabled: true,
image: "/profile.jpg", // Ruta a tu imagen (colocar en directorio public/)
alt: "Foto de perfil", // Texto alternativo para accesibilidad
size: "md", // "sm", "md", o "lg"
url: "/about", // URL opcional para enlazar al hacer clic
placement: "footer", // "footer" o "header"
style: "circle", // "circle", "square", o "none"
}
Configuración de Navegación
Personaliza el menú de navegación de tu sitio y enlaces sociales:
navigation: {
showNavigation: true, // Mostrar/ocultar navegación principal
style: "traditional", // Estilo de navegación "minimal" o "traditional"
showMobileMenu: true, // Mostrar toggle de menú móvil
pages: [ // Elementos del menú de navegación (NavigationItem[])
{ title: "Posts", url: "/posts/" },
{ title: "Proyectos", url: "/projects/" },
{ title: "Documentación", url: "/docs/" },
{ title: "Acerca de", url: "/about/", children: [...] },
],
social: [ // Enlaces de redes sociales
{ title: "GitHub", url: "https://github.com/usuario", icon: "github" },
{ title: "X", url: "https://x.com/usuario", icon: "x-twitter" },
],
}
Configuración de la Página de Inicio
El contenido de la página de inicio se controla por la sección homeOptions:
- Post Destacado: Mostrar el post más reciente o un post destacado específico
- Posts Recientes: Mostrar posts recientes con cantidad configurable
- Proyectos y Documentación: Mostrar proyectos y documentación destacados
- Blurb de Inicio: Controlar ubicación o deshabilitar completamente
Opciones de Posts
Configura características relacionadas con posts en la sección postOptions:
postOptions: {
postsPerPage: 6,
readingTime: true,
wordCount: true,
tags: true,
linkedMentions: {
enabled: true,
linkedMentionsCompact: false,
},
graphView: {
enabled: true,
showInSidebar: true,
maxNodes: 100,
showOrphanedPosts: true,
},
postNavigation: true,
showPostCardCoverImages: "featured-and-posts",
postCardAspectRatio: "og",
customPostCardAspectRatio: "2.5/1",
comments: {
enabled: false,
provider: "giscus",
// ... otras configuraciones de comentarios
},
}
Tabla de Contenidos:
Habilitar la tabla de contenidos en la sección raíz tableOfContents es un toggle global para todos los posts. Otros tipos de contenido (páginas, proyectos, etc.) muestran TOC por defecto y pueden ocultarse vía frontmatter.
Menciones Enlazadas:
enabled: true- habilitar sección de menciones enlazadas al final de la páginalinkedMentionsCompact: false- elegir entre vista detallada (predeterminada) o vista compacta
Opciones de Imagen de Portada:
Afecta cómo se muestran las imágenes de portada en las tarjetas de posts: "all", "featured", "home", "posts", "featured-and-posts", o "none".
Sistema de Comentarios
El tema incluye un sistema de comentarios impulsado por Giscus que usa GitHub Discussions. Consulta la guía completa para instrucciones de configuración.
Estructura de Contenido
src/content/
├── posts/ # Posts del blog
├── pages/ # Páginas estáticas
├── special/ # Páginas especiales (inicio, 404, etc.)
├── projects/ # Proyectos destacados
├── docs/ # Documentación
└── .obsidian/ # Configuración de bóveda de Obsidian
Escribir Contenido
Posts
Crea posts en src/content/posts/. Los títulos H1 están codificados desde el frontmatter, por lo que el contenido debe comenzar con H2.
---
title: "Título del Post"
date: 2026-02-22
description: "Una breve descripción"
tags: ["etiqueta1", "etiqueta2"]
image: "portada.jpg"
imageAlt: "Descripción de la imagen de portada"
draft: false
---
## Comenzar con H2
Contenido del post aquí.
Páginas, Proyectos y Documentación
Todos los tipos de contenido soportan organización basada en carpetas con activos co-ubicados. Usa draft: true para mantener el contenido oculto de producción.
Integración con Obsidian
Usando la Bóveda Incluida
Abre src/content/ en Obsidian para usar las características preconfiguradas de la bóveda:
- Astro Composer: Crea y gestiona posts fácilmente
- Tema Minimal: Optimizado para escritura
- Plugin Git: Commit y sync directamente desde Obsidian
Lee la guía para información más detallada.
Características Clave
Paleta de Comandos
Presiona ctrl+K para búsqueda instantánea, acciones rápidas y cambio de tema.
Enlaces Internos
[[Título del Post|Texto Personalizado]]- wikilinks (solo posts)[Título del Post](posts/slug-del-post.md)- enlaces markdown estándar- Menciones enlazadas muestran conexiones de posts automáticamente.
Optimización de Imágenes
- Conversión a WebP para rendimiento
- Cuadrículas responsivas para múltiples imágenes
- Sincronización de activos copia activos al directorio público automáticamente.
Despliegue
Compila tu sitio estático con pnpm build. Genera un paquete listo para producción optimizado para tu plataforma elegida.
Solución de Problemas
Verifica las rutas de imágenes, sintaxis de frontmatter y asegúrate de que los posts destino existan para los wikilinks.