Colección de herramientas para optimizar y automatizar la gestión de blogs Quarto
Este repositorio contiene una suite de herramientas especializadas para trabajar con blogs y documentos Quarto. Cada script está diseñado para resolver problemas específicos en la gestión, mantenimiento y publicación de contenido académico y profesional.
Desarrollado por: Edison Achalma
Ubicación: Ayacucho, Perú
Última actualización: Diciembre 2024
Este conjunto de scripts es ideal para:
- 📝 Bloggers académicos que gestionan múltiples blogs Quarto
- 🎓 Investigadores que publican contenido técnico
- 📚 Educadores que mantienen material educativo online
- 💼 Profesionales con múltiples sitios de documentación
- 🔧 Desarrolladores que buscan automatizar flujos de trabajo en Quarto
Problema que resuelve: Corrige automáticamente el formato del bloque YAML en archivos .qmd.
Características principales:
- ✅ Normaliza el espaciado después de los delimitadores
--- - ✅ Elimina líneas en blanco innecesarias
- ✅ Es idempotente (puedes ejecutarlo múltiples veces)
- ✅ Modo
--dry-runpara simular cambios
Uso rápido:
cd script_format_yaml
python fix_qmd_files.py --directory ~/Documents/publicaciones --recursiveProblema que resuelve: Genera automáticamente archivos de índice para tus publicaciones.
Características principales:
- 📁 Soporta dos estructuras: página web completa (
blog/posts/) y blog independiente (posts/) - 🔗 Crea enlaces a PDFs y artículos
- 🎨 Usa iconos de Font Awesome
- 🔄 Procesamiento automático de subdirectorios
Uso rápido:
cd script_generador_publicacion_similar
./generar_indices.shEstructuras soportadas:
Página Web:
mi-sitio/
└── blog/
└── posts/
└── 2023-05-12-titulo/
└── index.qmd
Blog Independiente:
actus-mercator/
└── posts/
└── 2022-01-23-titulo/
└── index.qmd
Problema que resuelve: Administra metadatos YAML de cientos de artículos desde un solo archivo Excel.
Características principales:
- 📊 Excel como base de datos - Edita metadatos en Excel
- 🎯 Filtra por blog, ruta o criterios personalizados
- 🔄 Solo actualiza cuando hay diferencias
- 📝 Soporta 4 tipos de documentos: STU, MAN, JOU, DOC
- 👥 Gestión de hasta 3 autores con ORCID y afiliaciones
- ⚡ Modo simulación con
--dry-run
Flujo de trabajo:
cd script_metadata_manager
# 1. Crear configuración
python quarto_metadata_manager.py create-config ~/Documents/publicaciones
# 2. Generar base de datos Excel
python quarto_metadata_manager.py create-template ~/Documents/publicaciones \
--config metadata_config.yml
# 3. Editar metadatos en Excel
libreoffice excel_databases/quarto_metadata.xlsx
# 4. Actualizar archivos
python quarto_metadata_manager.py update ~/Documents/publicaciones \
excel_databases/quarto_metadata.xlsx --config metadata_config.ymlCasos de uso comunes:
- ✅ Publicar 20+ artículos cambiando
draft: FALSE - ✅ Actualizar keywords de forma masiva
- ✅ Cambiar tipo de documento (JOU → STU)
- ✅ Agregar/modificar autores en múltiples artículos
Problema que resuelve: Normaliza, reemplaza y gestiona tags en archivos .qmd.
Características principales:
- 🔄 Normalización automática - Convierte a minúsculas, elimina tildes
- 🔁 Reemplazo masivo - Cambia tags obsoletos por nuevos
- 🗑️ Eliminación selectiva - Remueve tags no deseados
- ➕ Adición inteligente - Solo agrega tags a archivos que ya los tienen
- 🔍 Detección de duplicados - Evita tags repetidos
Ejemplos de normalización:
# Antes
tags:
- Gestión Empresarial
- Economía Internacional
- Cadena de suministros
# Después (con --normalize)
tags:
- gestion_empresarial
- economia_internacional
- cadena_de_suministrosUso rápido:
cd script_tag_manager
# Normalizar todos los tags
python qmd_tag_manager.py --normalize --recursive
# Reemplazar tags específicos
python qmd_tag_manager.py --replace "viejo:nuevo" --recursive
# Agregar tags nuevos
python qmd_tag_manager.py --add "nuevo_tag" --recursive- Python 3.8+
- Conda (recomendado) o pip
- Quarto (para renderizar blogs)
- Git (para control de versiones)
# 1. Clonar el repositorio
git clone https://github.com/achalmed/scripts_for_quarto.git
cd scripts_for_quarto
# 2. Crear entorno conda (recomendado)
conda create -n scripts_quarto python=3.9
conda activate scripts_quarto
# 3. Instalar dependencias generales
pip install pyyaml pandas openpyxl
# 4. Dar permisos de ejecución
chmod +x script_generador_publicacion_similar/generar_indices.sh
chmod +x script_metadata_manager/*.sh
chmod +x script_tag_manager/*.shCada script tiene su propio directorio con instrucciones específicas:
# Script Format YAML
cd script_format_yaml
# Ver README.md
# Generador de Índices
cd script_generador_publicacion_similar
# Ver README.md
# Gestor de Metadatos
cd script_metadata_manager
bash install.sh # Instalación automática
# Gestor de Tags
cd script_tag_manager
# Ver README.md# 1. Activar entorno
conda activate scripts_quarto
# 2. Normalizar formato YAML
cd script_format_yaml
python fix_qmd_files.py --directory ~/Documents/publicaciones --recursive
# 3. Normalizar tags
cd ../script_tag_manager
python qmd_tag_manager.py --normalize --recursive --directory ~/Documents/publicaciones
# 4. Actualizar metadatos desde Excel
cd ../script_metadata_manager
python quarto_metadata_manager.py update ~/Documents/publicaciones \
excel_databases/quarto_metadata.xlsx
# 5. Generar índices
cd ../script_generador_publicacion_similar
./generar_indices.sh
# 6. Renderizar con Quarto
cd ~/Documents/publicaciones/mi-blog
quarto render# 1. Crear estructura
quarto create project blog mi-blog
# 2. Configurar gestor de metadatos
cd scripts_for_quarto/script_metadata_manager
python quarto_metadata_manager.py create-config ~/Documents/mi-blog
# 3. Generar primera base de datos
python quarto_metadata_manager.py create-template ~/Documents/mi-blog# 1. Corregir formato YAML
cd script_format_yaml
python fix_qmd_files.py --directory ~/Documents/blog-viejo --recursive
# 2. Normalizar tags
cd ../script_tag_manager
python qmd_tag_manager.py --normalize --recursive --directory ~/Documents/blog-viejo
# 3. Crear base de datos de metadatos
cd ../script_metadata_manager
python quarto_metadata_manager.py create-template ~/Documents/blog-viejo# 1. Crear Excel con todos los artículos
cd script_metadata_manager
python quarto_metadata_manager.py create-template ~/Documents/publicaciones
# 2. Editar en Excel (cambiar draft: FALSE)
libreoffice excel_databases/quarto_metadata.xlsx
# 3. Aplicar cambios
python quarto_metadata_manager.py update ~/Documents/publicaciones \
excel_databases/quarto_metadata.xlsx
# 4. Generar índices
cd ../script_generador_publicacion_similar
./generar_indices.sh
# 5. Renderizar
cd ~/Documents/publicaciones
quarto render# 1. Actualizar metadatos
cd script_metadata_manager
python quarto_metadata_manager.py create-template ~/Documents/publicaciones
# 2. Revisar y editar Excel
# (Actualizar keywords, categorías, etc.)
# 3. Aplicar cambios
python quarto_metadata_manager.py update ~/Documents/publicaciones \
excel_databases/quarto_metadata.xlsx --dry-run # Simular primero
python quarto_metadata_manager.py update ~/Documents/publicaciones \
excel_databases/quarto_metadata.xlsx # Aplicar| Script | Propósito | Input | Output | Mejor Para |
|---|---|---|---|---|
| Format YAML | Corregir formato | .qmd |
.qmd corregidos |
Normalización inicial |
| Generador Índices | Crear listas | Carpetas con posts | _contenido_*.qmd |
Navegación en blogs |
| Metadata Manager | Gestión masiva | .qmd |
Excel → .qmd |
Edición de metadatos |
| Tag Manager | Normalizar tags | .qmd |
.qmd con tags limpios |
Taxonomía consistente |
¡Las contribuciones son bienvenidas! Si tienes ideas para mejorar estos scripts:
- Fork el repositorio
- Crea una branch para tu feature:
git checkout -b feature/nueva-caracteristica - Commit tus cambios:
git commit -m "Agregar nueva característica" - Push a la branch:
git push origin feature/nueva-caracteristica - Abre un Pull Request
- Interfaz gráfica (GUI) para los scripts
- Soporte para más formatos de documentos
- Integración con GitHub Actions
- Tests automatizados
- Documentación en inglés
Si encuentras un bug o tienes una sugerencia:
- Verifica que estás usando la última versión
- Revisa los Issues existentes
- Crea un nuevo Issue con:
- Descripción del problema
- Pasos para reproducir
- Versión de Python y sistema operativo
- Logs relevantes
Este proyecto está licenciado bajo la licencia MIT - ver el archivo LICENSE para más detalles.
Autor: Edison Achalma
- 🌐 Website: achalmaedison.netlify.app
- 💼 LinkedIn: @achalmaedison
- 🐙 GitHub: @achalmed
- 📧 Email: achalmaedison@gmail.com
- 📍 Ubicación: Ayacucho, Perú
Cada script incluye:
- 📖 README.md - Documentación completa
- 📝 EJEMPLOS.md - Casos de uso detallados
- 🔄 CHANGELOG.md - Historial de versiones (donde aplica)
- 🚀 QUICKSTART.md - Guía de inicio rápido (donde aplica)
Gracias a todos los que han contribuido con ideas, reportes de bugs y sugerencias para mejorar estos scripts.
Especial agradecimiento a:
- La comunidad de Quarto
- Los usuarios beta que probaron las primeras versiones
- Todos los que reportaron bugs y sugirieron mejoras
- ✅ Script Metadata Manager v1.2 - Filtros avanzados, Excel unificado
- ✅ Script Tag Manager v1.1 - Corrección de bugs, mejor normalización
- ✅ Script Format YAML v2.0 - Idempotente, más robusto
- ✅ Generador de Índices v2.0 - Soporte para múltiples estructuras
- 🔜 Interfaz web para Metadata Manager
- 🔜 Integración con CI/CD
- 🔜 Exportación a otros formatos (JSON, CSV)
- 🔜 Validación automática de metadatos
- 🔜 Dashboard de estadísticas de blogs
Si estos scripts te han sido útiles:
- ⭐ Dale una estrella al repositorio
- 🔄 Comparte con otros usuarios de Quarto
- 💬 Comenta tus casos de uso
- 🤝 Contribuye con mejoras
¡Feliz gestión de blogs con Quarto! 🚀📝
Hecho con ❤️ en Ayacucho, Perú
Last Updated: December 2024