Cómo funciona: stack, pipeline y IA
Stack, pipeline de publicación, IA build-time,
SEO/GEO e infraestructura de despliegue.
El stack
El pipeline de publicación
- Definir tema del artículo o tutorial
- El modelo recibe prompt + guía de estilo del repo
- El modelo genera el .mdx completo con frontmatter
- Revisión humana obligatoria antes de publicar
- Commit y push al repositorio GitHub
- Se ejecuta npm run deploy desde la CLI (el despliegue es manual)
- build:data genera mapa semántico, lecturas IA y radar editorial
- generate-og.mjs genera PNG 1200×630 para el contenido publicado
- Sharp convierte imágenes hero locales a AVIF + srcset cuando existen
- Astro compila HTML estático, llms-full.txt, RSS y sitemap
- Wrangler despliega a la red de Cloudflare en ~90s
Estructura del repositorio
identidad-artificial/
├── source/
│ ├── assets/post/ ← Imágenes hero de los posts
│ ├── content/blog/ ← Posts en .mdx
│ ├── content/tutoriales/ ← Tutoriales IA paso a paso en .mdx
│ ├── components/ ← UI, expediente IA, lecturas y grafo
│ ├── data/generated/ ← Artefactos IA generados en build-time
│ ├── layouts/ ← BaseLayout, PostLayout
│ ├── pages/ ← Rutas del sitio, blog, tutoriales, métricas y legales
│ └── styles/ ← CSS global
├── scripts/
│ ├── content-utils.mjs ← Lectura segura del corpus MDX
│ ├── generate-og.mjs ← Imágenes OG
│ ├── generate-knowledge-map.mjs ← Grafo semántico
│ ├── generate-post-insights.mjs ← Lecturas por artículo
│ ├── generate-editorial-radar.mjs ← Radar editorial
│ ├── google-search-console-*.mjs ← Autenticación, informes e inspección GSC
│ ├── submit-search-console-sitemap.mjs ← Envío de sitemap a GSC
│ └── submit-indexnow.mjs ← Notificación IndexNow (URLs desde sitemap en vivo)
├── docs/
│ ├── guia-crear-post.md ← Instrucciones para generar posts
│ └── guia-crear-tutorial.md ← Instrucciones para generar tutoriales
├── public/
│ ├── fonts/ ← Inter TTF para satori
│ ├── og/ ← Imágenes OG generadas (no en git)
│ ├── llms.txt ← Índice breve para motores de IA
│ └── _headers ← Cabeceras de seguridad para Cloudflare
├── wrangler.toml ← Configuración del despliegue
└── astro.config.mjs Frontmatter de cada post
Metadatos de transparencia validados con Zod en build time y mostrados al pie de cada artículo:
---
title: 'Título del post'
description: 'Descripción para SEO'
pubDate: 2026-04-21
category: 'Modelos'
tags: ['llm', 'agentes']
generatedBy: 'claude-sonnet-4-6'
generatedAt: '2026-04-21T10:00:00Z'
promptBase: 'El prompt que se usó para generar este post'
humanReviewed: true
heroImage: '../../assets/post/imagen-del-post.jpg' # opcional
correctionNote: 'Texto si el post corrige errores de una versión anterior.' # opcional
sourceQuality: 'Media' # opcional
confidenceLevel: 'Media' # opcional
reviewNotes: 'Notas visibles de revisión.' # opcional
claimsReviewed:
- 'Afirmación técnica verificada manualmente.' # opcional
--- correctionNote aparece como bloque de aviso visible en el post cuando se publica una corrección.
heroImage referencia una imagen local que Astro optimiza y convierte a AVIF en build time.
Los campos sourceQuality, confidenceLevel, reviewNotes y
claimsReviewed alimentan el nuevo expediente IA.
Frontmatter de cada tutorial
Los tutoriales viven en una colección separada para tener campos propios: herramienta, dificultad y tiempo estimado.
---
title: 'Título del tutorial'
description: 'Qué aprenderá el lector'
pubDate: 2026-05-18
herramienta: 'ChatGPT'
dificultad: 'Principiante'
tiempoEstimado: '20 minutos'
generatedBy: 'gpt-5'
generatedAt: '2026-05-18T18:00:00Z'
promptBase: 'Resumen del encargo usado para generar el tutorial'
humanReviewed: true
heroImage: '../../assets/post/imagen.jpg' # opcional
correctionNote: 'Texto si el tutorial corrige una versión anterior.' # opcional
--- IA aplicada al sitio
La IA no aparece como un chatbot en vivo. El enfoque es más barato, auditable y estable: el build transforma el corpus en datos derivados que luego se renderizan como páginas estáticas.
npm run build
└── npm run build:data
├── source/data/generated/knowledge-map.ts
├── source/data/generated/post-insights.ts
└── source/data/generated/editorial-radar.ts Rendimiento web
El sitio aplica las APIs modernas del navegador para mejorar Core Web Vitals y la experiencia de navegación sin dependencias extra:
Accesibilidad
El sitio cumple WCAG 2.1 AA como mínimo. Las mejoras se aplican progresivamente sin romper la estética ni añadir dependencias externas:
Infraestructura SEO y GEO
GEO (Generative Engine Optimization) es el equivalente del SEO para motores de respuesta como ChatGPT, Perplexity o Claude. El sitio está preparado para ambos:
Seguridad
Cabeceras HTTP aplicadas a nivel de Cloudflare via public/_headers:
HSTS Fuerza HTTPS durante 1 año con preload X-Frame-Options: DENY Previene clickjacking Content-Security-Policy Restringe el origen de scripts, estilos y fuentes X-Content-Type-Options Evita MIME sniffing Referrer-Policy Limita la información de referencia enviada Permissions-Policy Deshabilita acceso a cámara, micrófono y geolocalización Variables de entorno
Ninguna credencial está en el repositorio. Las variables de entorno se gestionan exclusivamente en el panel de Cloudflare.