Files
wehub-resource-sync bb5c75ce05
Component Security Validation / Security Audit (push) Has been cancelled
Deploy to Cloudflare Pages / deploy (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:38:58 +08:00
..

Blog Management System

Este blog utiliza un sistema dinámico de gestión de artículos basado en JSON.

📁 Estructura de Archivos

docs/blog/
├── index.html              # Página principal del blog
├── blog-articles.json      # Base de datos de artículos
├── js/
│   └── blog-loader.js      # Cargador dinámico de artículos
└── assets/                 # Imágenes y recursos

🚀 Cómo Agregar Nuevos Artículos

Para agregar un nuevo artículo al blog, simplemente edita el archivo blog-articles.json:

1. Abre el archivo blog-articles.json

2. Agrega un nuevo objeto en el array articles:

{
  "id": "unique-article-id",
  "title": "Título del Artículo",
  "description": "Descripción breve del artículo (1-2 líneas)",
  "url": "https://medium.com/@tu-usuario/url-del-articulo",
  "image": "https://www.aitmpl.com/blog/assets/imagen-cover.png",
  "category": "Categoría",
  "publishDate": "2025-02-10",
  "readTime": "5 min read",
  "tags": ["Tag1", "Tag2", "Tag3"],
  "platform": "medium",
  "order": 5
}

3. Actualiza los metadatos al final del archivo:

"metadata": {
  "lastUpdated": "2025-02-10",
  "totalArticles": 5,
  "platforms": {
    "medium": 5,
    "local": 0
  }
}

📝 Campos Explicados

Campo Tipo Descripción Ejemplo
id string Identificador único del artículo "supabase-integration"
title string Título completo del artículo "Claude Code + Supabase Integration"
description string Descripción breve (1-2 líneas) "Learn how to integrate..."
url string URL completa del artículo "https://medium.com/@..."
image string URL de la imagen de portada "https://www.aitmpl.com/blog/assets/..."
category string Categoría del artículo "Database", "Development", etc.
publishDate string Fecha de publicación (YYYY-MM-DD) "2025-02-10"
readTime string Tiempo estimado de lectura "5 min read"
tags array Array de tags/etiquetas ["Supabase", "Database", "MCP"]
difficulty string Nivel de dificultad del artículo "basic", "intermediate", "advanced"
order number Orden de aparición (menor = primero) 1, 2, 3, etc.

🎨 Categorías Recomendadas

  • Database - Artículos sobre bases de datos
  • Development - Desarrollo general
  • Cloud & AI - Cloud computing e inteligencia artificial
  • Documentation - Documentación y guías
  • Frontend - Desarrollo frontend
  • Backend - Desarrollo backend
  • DevOps - DevOps y CI/CD
  • Security - Seguridad

🎓 Niveles de Dificultad

Clasifica cada artículo según su complejidad:

  • basic - Verde (#00D084): Artículos introductorios, tutoriales para principiantes
  • intermediate - Naranja (#FFA500): Requiere conocimientos previos, configuraciones más avanzadas
  • advanced - Rojo (#FF4444): Temas complejos, integraciones avanzadas, arquitecturas elaboradas

El badge de dificultad se muestra automáticamente en la metadata del artículo.

🏷️ Tags Recomendados

Usa tags específicos y relevantes:

  • Tecnologías: Supabase, Next.js, React, Node.js
  • Conceptos: Agents, Commands, MCP, Automation
  • Herramientas: Git, Docker, Kubernetes
  • Plataformas: Vercel, Google Cloud, AWS

📊 Orden de Artículos

Los artículos se muestran según el campo order:

  • Menor número = Aparece primero
  • Usa números consecutivos: 1, 2, 3, 4, 5...
  • Para reordenar, simplemente cambia los números

🔄 Proceso de Publicación

  1. Publica tu artículo en Medium u otra plataforma
  2. Copia la URL del artículo publicado
  3. Edita blog-articles.json
  4. Agrega el nuevo artículo con todos los campos
  5. Actualiza los metadatos (totalArticles, lastUpdated)
  6. Commit y push los cambios
git add docs/blog/blog-articles.json
git commit -m "Add new blog article: [Título]"
git push

🎯 Badges de Dificultad

El sistema automáticamente muestra un badge de dificultad con colores específicos:

  • Basic (Verde): Para artículos introductorios y guías básicas
  • Intermediate (Naranja): Para configuraciones más avanzadas
  • Advanced (Rojo): Para temas complejos y arquitecturas avanzadas

Características

  • Carga Dinámica: Los artículos se cargan automáticamente desde JSON
  • Ordenamiento: Controla el orden con el campo order
  • Seguridad: HTML escapado automáticamente (prevención XSS)
  • Performance: Lazy loading de imágenes
  • Responsive: Diseño adaptable a móviles
  • Loading States: Indicadores de carga mientras se obtienen los datos

🐛 Troubleshooting

Los artículos no se cargan

  1. Verifica que blog-articles.json esté en la raíz de /docs/blog/
  2. Revisa la consola del navegador para errores
  3. Asegúrate de que el JSON sea válido (usa un validador JSON online)

Error de JSON inválido

  • Verifica que todas las comillas sean dobles (")
  • Asegúrate de que no falten comas entre objetos
  • El último elemento del array no debe tener coma final

Las imágenes no se muestran

  • Verifica que las URLs de las imágenes sean accesibles
  • Usa URLs completas (no relativas)
  • Asegúrate de que las imágenes estén en /docs/blog/assets/

📱 Testing Local

Para probar localmente:

cd docs/blog
python -m http.server 8000
# o
npx http-server

Luego abre: http://localhost:8000

🎉 Ejemplo Completo

{
  "articles": [
    {
      "id": "my-new-article",
      "title": "Amazing New Feature in Claude Code",
      "description": "Discover how to use the latest feature that will revolutionize your workflow.",
      "url": "https://medium.com/@dan.avila7/amazing-new-feature-12345",
      "image": "https://www.aitmpl.com/blog/assets/new-feature-cover.png",
      "category": "Development",
      "publishDate": "2025-02-10",
      "readTime": "6 min read",
      "tags": ["Claude Code", "Productivity", "Automation"],
      "difficulty": "intermediate",
      "order": 1
    }
  ],
  "metadata": {
    "lastUpdated": "2025-02-10",
    "totalArticles": 5,
    "difficultyLevels": {
      "basic": 2,
      "intermediate": 2,
      "advanced": 1
    }
  }
}

¡Eso es todo! Ahora puedes agregar artículos fácilmente sin tocar el HTML. 🚀