Skip to content
Volver al Portafolio

Fast SEO Platform

Sistema a MedidaDiseño UI/UX

Automatización inteligente de contenido SEO: de la estrategia a la publicación, con IA y supervisión humana

800+
Tests
Suite completa de tests unitarios, integración y E2E, 0 errores de TypeScript
18
Hallazgos remediados
Auditoría de seguridad: 3 críticos, 6 altos, 7 medios, 2 bajos, todos resueltos
310ms
Build cacheado
Segunda build con Turborepo: de 30s a 310ms vía content-hash invalidation
Problema

El negocio de topografía aérea depende fuertemente de SEO local para atraer clientes.

Cada proyecto resuelto es un caso de estudio potencial. Pero el equipo técnico no tiene tiempo para escribir, diseñar imágenes, optimizar SEO y publicar cada artículo manualmente. El problema tenía múltiples capas: generación de contenido que suene natural, ilustración automática sin bancos genéricos, optimización on-page, detección de alucinaciones de IA, gestión de cola de publicaciones, y supervisión humana sin revisar cada línea.

Proceso
  1. 01

    Arquitectura

    Monorepo con pnpm workspaces: pipeline de contenido (bot), interfaz de operaciones (dashboard), asistente conversacional (planner), y MCP server. Cada módulo independiente con tipos compartidos.

  2. 02

    Pipeline de Contenido

    5 etapas encadenadas: escritor (genera el post), ilustrador (genera imagen con Imagen 3), enlazador (agrega links internos), QA (valida calidad), y publicador (sube a Payload CMS). Cada etapa atómica y transaccional.

  3. 03

    Dashboard de Operaciones

    Interfaz Next.js con cola de publicaciones, monitoreo en tiempo real, configuración de proveedores IA con credenciales encriptadas (AES-256-GCM), y editor de prompts.

  4. 04

    Planner Conversacional

    Asistente IA con function calling (12 herramientas) para gestionar contenido via chat. Evolucionamos de MCP a function calling tras evaluación con 7 expertos.

  5. 05

    Hardening

    Auditoría de seguridad con 18 hallazgos remediados (3 críticos, 6 altos), migración completa a TypeScript, 800+ tests, y optimización de builds con Turborepo (de 30s a 310ms).

Automatizar todo el pipeline manteniendo calidad editorial y coherencia con la marca.
Construcción

Monorepo con 4 apps y 2 packages compartidos.

Pipeline de 5 etapas atómicas: writer, imager (Imagen 3), linker, QA, publisher (Payload CMS).

Dashboard Next.js con cola de publicaciones, monitoreo en tiempo real, credenciales encriptadas (AES-256-GCM).

Planner conversacional con 12 herramientas function calling.

800+ tests, auditoría de seguridad con 18 hallazgos remediados, builds optimizados de 30s a 310ms con Turborepo.

Resultado

Plataforma completa de automatización de contenido SEO con pipeline de 5 etapas, dashboard de operaciones en tiempo real, planner conversacional con 12 herramientas, 800+ tests, 18 hallazgos de seguridad remediados, y builds optimizados de 30s a 310ms.

Artefactos del Sistema

Arquitectura Monorepo

Estructura de 4 apps + 2 packages compartidos con tipos y validación centralizada.

pnpm-workspace.yamlyaml
packages:
  - apps/dashboard    # Next.js 16, 7 rutas
  - packages/bot      # Pipeline de contenido
  - packages/shared   # Tipos, validación Zod
  - packages/mcp      # Herramientas externas

Pipeline de Contenido

Flujo de 5 etapas: writer → imager → linker → QA → publisher. Cada etapa atómica y transaccional.

orchestrator.tstypescript
type PipelineStage = "writing" | "illustrating" | "linking" | "qa" | "publishing";

async function runPipeline(post: QueueItem) {
  for (const stage of stages) {
    const result = await executeStage(stage, post);
    if (!result.ok) {
      await rollbackPartial(post, stage);
      return { ok: false, error: result.error };
    }
  }
  return { ok: true, value: post };
}

Planner Function Calling

12 herramientas Zod-validated para gestión de contenido via chat con el operador.

planner-tools.tstypescript
const tools = [
  {
    name: "schedule_post",
    description: "Programa un post para publicación",
    parameters: z.object({
      title: z.string().min(1).max(200),
      surface: z.enum(["blog", "case-study"]),
      scheduled_date: z.string().datetime(),
    }),
  },
];
Stack Tecnológico
Next.js 16 + React 19Node.js ESMTypeScriptTailwind CSS v4OpenRouter (GPT-4o-mini)Google Imagen 3Payload CMSSQLite (better-sqlite3)TurborepoVitestZodAES-256-GCMpnpm workspaces

¿Te gustaría construir algo así?

[Hablemos]