GUÍA DE IMPLEMENTACIÓN

Cómo montar los 6 agentes que hacen marketing local solos

La versión completa de lo que conté en el carrusel: qué hace cada agente, qué necesitás para levantarlo, cuánto cuesta correrlo de verdad y dónde se rompe. Con los archivos de configuración listos para copiar.

Actualizado 29 jul 2026 Lectura ~14 min Nivel: intermedio Claude Opus 5

01Qué vas a montar

Un sistema, no un chatbot. La diferencia importa más de lo que parece.

Un bot recibe una pregunta y devuelve una respuesta. Un sistema de agentes recibe un objetivo — «conseguile clientes a las panaderías de Chapinero» — y lo descompone solo: busca los negocios, los evalúa, arma los entregables y mide qué pasó.

La pieza que lo hace posible es el orquestador: un agente cuyo único trabajo es repartir tareas entre otros cinco, leer lo que devuelven y volver a mandarlos si el resultado es pobre. Ninguno de los cinco sabe que los otros existen.

AGENTE 06 · ORQUESTADORClaude Opus 5 · effort alto
01Maps FinderEncuentra negocios y detecta brechas
02DiagnósticoEvalúa presencia digital real
03Web BuilderConvierte reseñas en sitio web
04Content CreatorPosts, tap cards, postcards
05TrackingResultados en tiempo real

Por qué agentes separados y no un prompt gigante

  • Contexto limpio. Cada subagente arranca con su propia ventana. El que construye el sitio web no arrastra las 4.000 líneas de JSON que devolvió el scraper de Maps.
  • Modelo por tarea. Buscar negocios en una lista es trabajo de un modelo barato. Redactar el copy del sitio no. Podés asignar un modelo distinto a cada agente y la factura baja bastante.
  • Fallan de a uno. Si el generador de contenido se rompe, el resto del pipeline sigue. Con un prompt monolítico se cae todo junto.
El cambio real de 2026. Los subagentes existen hace rato. Lo que cambió con Opus 5 es que el orquestador razona lo suficiente como para corregir a sus subagentes en vez de solo despacharlos: lee lo que devuelven, detecta que está flojo y reasigna. Eso antes lo hacía una persona.

02Antes de empezar

Lo que tenés que tener resuelto antes de escribir la primera línea.

Cuentas y claves

  • Claude Code o el Agent SDK. Claude Code si querés trabajar desde la terminal; el SDK si vas a empotrar los agentes en un producto tuyo.
  • Una API key de Anthropic con crédito cargado, o una suscripción que habilite Claude Code.
  • Google Cloud con Places API (New) habilitada y facturación activa. Sin tarjeta cargada la API responde, pero recortada.
  • Un lugar donde publicar los sitios. Netlify, Vercel o Cloudflare Pages alcanzan y sobran para sitios de una página.

Conocimiento mínimo honesto

No hace falta ser programador, pero sí moverte con soltura en la terminal, entender qué es una variable de entorno y saber leer un JSON. Si nunca abriste una terminal, esta guía te va a frustrar: andá directo a la última sección.

Instalación base

terminal
# Claude Code (CLI)
npm install -g @anthropic-ai/claude-code

# o el SDK, si vas a construir tu propio producto
pip install claude-agent-sdk                 # Python 3.10+
npm install @anthropic-ai/claude-agent-sdk   # TypeScript

# claves
export ANTHROPIC_API_KEY="sk-ant-..."
export GOOGLE_MAPS_API_KEY="AIza..."

Estructura de carpetas

árbol del proyecto
marketing-local/
├── .claude/
│   ├── agents/                # un archivo .md por agente
│   │   ├── maps-finder.md
│   │   ├── diagnostico.md
│   │   ├── web-builder.md
│   │   ├── content-creator.md
│   │   └── tracking.md
│   └── skills/                # procedimientos reutilizables
│       └── informe-cliente/
│           └── SKILL.md
├── .mcp.json                  # conexiones a APIs externas
├── orquestador.py             # el que lanza todo
└── salidas/                   # sitios y contenido generados

03Los 6 agentes, uno por uno

Arriba de cada ficha, qué hace y por qué importa. Abajo, el archivo listo para copiar.

01
Google Maps Finder
Prospección

Barre una zona geográfica y devuelve los negocios que hay, con su ficha completa: rating, cantidad de reseñas, teléfono, sitio web, horarios.

El valor no está en la lista. Está en lo que falta en la lista: el campo website vacío, las 4 reseñas de hace tres años, la ficha sin horarios. Ese hueco es la razón por la que te van a contestar el mensaje.

Un consejo que ahorra plata: pedile a la Places API solo los campos que vas a usar. Google cobra por grupos de campos, y traer reseñas cuando no las necesitás todavía encarece cada consulta.

API Places API (New) Modelo uno barato alcanza Salida JSON de negocios
Ver el archivo del agente
.claude/agents/maps-finder.md
---
name: maps-finder
description: Busca negocios locales en una zona usando Places API y detecta
  brechas digitales (sin web, sin reseñas recientes, ficha incompleta).
  Usalo cuando haya que prospectar una ciudad, barrio o categoría.
tools: Bash, Read, Write
model: claude-haiku-4-5
---

Sos un prospectador de negocios locales.

## Entrada
Una zona (ciudad o barrio) y una categoría (ej: "panaderías en Chapinero, Bogotá").

## Procedimiento
1. Llamá a Places API Text Search con la consulta.
2. Para cada resultado, pedí Place Details SOLO con estos campos:
   displayName, formattedAddress, rating, userRatingCount,
   websiteUri, nationalPhoneNumber, regularOpeningHours
3. Calculá un puntaje de oportunidad de 0 a 100:
   +40 si no tiene websiteUri
   +25 si userRatingCount < 20
   +20 si no tiene regularOpeningHours
   +15 si rating < 4.0 y userRatingCount > 10
4. Escribí salidas/prospectos.json ordenado por puntaje descendente.

## Reglas
- Nunca inventes un dato que la API no devolvió. Dejalo en null.
- Máximo 60 negocios por corrida. Si hay más, quedate con los de mayor puntaje.
- No pidas el campo de reseñas en esta etapa: lo pide el agente 03 y sale más caro.
02
Diagnóstico
Calificación

Toma cada negocio de la lista y verifica en la vida real qué tan mal está parado: si el sitio existe y carga, si es usable en celular, si aparece cuando lo buscás.

Este agente es el que convierte una lista fría en una conversación. La diferencia entre «hola, ofrecemos servicios de marketing» y «tu sitio tarda 8 segundos en abrir en celular y el 70% de tus clientes te busca desde ahí» es toda la diferencia.

Devuelve un diagnóstico corto por negocio, con los tres problemas más graves y una estimación de qué se gana arreglándolos. Nada de informes de 20 páginas.

Herramientas fetch, PageSpeed Modelo uno de razonamiento Salida ficha por negocio
Ver el archivo del agente
.claude/agents/diagnostico.md
---
name: diagnostico
description: Audita la presencia digital real de un negocio local: sitio,
  velocidad, mobile, reseñas y publicidad. Usalo después de maps-finder,
  antes de armar cualquier propuesta.
tools: Bash, Read, Write, WebFetch
model: claude-opus-5
---

Sos un auditor de presencia digital para negocios locales.

## Para cada negocio, verificá
1. ¿El sitio responde 200? ¿Tiene HTTPS válido?
2. Velocidad en móvil (PageSpeed Insights API).
3. ¿Hay meta description y title propios, o son los del template?
4. ¿Cuántas reseñas tiene y hace cuánto fue la última?
5. ¿Aparece en el top 3 del pack local para su categoría + barrio?

## Salida
Un objeto por negocio con:
- los TRES problemas más graves, ordenados por impacto
- una línea por problema explicando qué pierde el dueño (en plata o clientes)
- veredicto: "vale la pena" | "requiere trabajo" | "descartar"

## Reglas
- Escribí para el dueño de la panadería, no para un SEO.
- Nada de porcentajes inventados: si no medís algo, decí que no lo mediste.
- Si el sitio no existe, no lo trates como error: es la oportunidad más grande.
03
Web Builder
Producción

Construye un sitio de una página usando como materia prima las reseñas reales del negocio. No inventa testimonios: los extrae.

Es el truco más subestimado del sistema. Las reseñas de Google ya contienen el posicionamiento del negocio escrito por sus propios clientes: qué producto nombran, qué palabra repiten, qué los sorprendió. Eso es mejor copy del que podría escribir cualquiera desde afuera.

El agente lee las reseñas, detecta los tres atributos que más se repiten, y arma la página alrededor de eso. Título, sección de beneficios y testimonios salen del mismo lugar.

Entrada reseñas de Places Salida HTML autocontenido Deploy Netlify / Vercel
Ver el archivo del agente
.claude/agents/web-builder.md
---
name: web-builder
description: Construye un sitio de una página para un negocio local a partir
  de sus reseñas reales de Google. Usalo cuando el diagnóstico dice que
  el negocio no tiene sitio o tiene uno inservible.
tools: Bash, Read, Write, WebFetch
model: claude-opus-5
---

Construís sitios de una página para negocios locales.

## Materia prima
Las reseñas del negocio (Place Details, campo de reseñas). Leelas todas antes
de escribir una sola línea.

## Procedimiento
1. Extraé los 3 atributos que más se repiten en las reseñas positivas.
   Usá las palabras exactas de los clientes, no sinónimos "de marketing".
2. Elegí 3 reseñas como testimonios: las más concretas, no las más elogiosas.
3. Armá una página con: hero, los 3 atributos, testimonios, mapa, horarios,
   botón de WhatsApp y teléfono clickeable.
4. HTML de un solo archivo, CSS embebido, sin dependencias externas.
5. Móvil primero. La mayoría del tráfico local entra desde el celular.

## Prohibido
- Inventar testimonios, premios, años de trayectoria o cantidad de clientes.
- Stock photos genéricas de gente sonriendo en oficinas.
- Formularios de contacto de 8 campos. En local gana el botón de WhatsApp.
04
Content Creator
Producción

Genera el material que el negocio necesita para sostener la presencia: posts para redes, tap cards con los datos del local y postcards digitales.

La trampa acá es producir mucho y malo. Un negocio local no necesita 30 posts al mes; necesita cuatro que se puedan publicar sin vergüenza. Ponele el techo al agente en el prompt o te va a llenar la carpeta de relleno.

Lo que sí conviene automatizar del todo son las piezas repetitivas: la tarjeta con horarios, la de «cómo llegar», la de menú o servicios. Eso el agente lo hace perfecto y es lo que más se comparte por WhatsApp.

Salida posts + tap cards Formato 1080×1350 Modelo uno intermedio
Ver el archivo del agente
.claude/agents/content-creator.md
---
name: content-creator
description: Genera posts, tap cards y postcards digitales para un negocio
  local, con su identidad y sus datos reales. Usalo después de web-builder.
tools: Bash, Read, Write
model: claude-sonnet-4-5
---

Producís contenido para negocios locales.

## Qué generás por negocio
- 4 posts (1080×1350), no más. Uno por semana.
- 1 tap card con horarios, dirección y botón de WhatsApp.
- 1 postcard digital para compartir por WhatsApp.

## Cómo
Renderizá cada pieza como HTML y exportala a PNG con Playwright.
Tomá los colores del sitio que armó web-builder para que todo sea la misma marca.

## Reglas de copy
- Hablá como habla el dueño, no como habla una agencia.
- Nada de "¡Descubrí nuestra experiencia única!". Decí qué venden y a qué hora abren.
- Cada pieza tiene UNA sola cosa para hacer.
- Verificá que ningún texto se corte antes de exportar. Medí, no supongas.
05
Tracking
Medición

Recoge lo que pasó después: visitas al sitio, clics al botón de WhatsApp, llamadas desde la ficha de Google. Y lo muestra sobre un globo terrestre en tiempo real.

El globo no es decoración. Cuando le mostrás a un cliente un punto que se enciende cada vez que alguien abre su sitio, la conversación sobre renovar el servicio deja de existir. Es la pieza que más vende de todo el sistema.

Debajo del efecto visual hay algo simple: un endpoint que recibe eventos, una base chiquita y un render. Lo importante es definir desde el día uno qué es una conversión para ese negocio. Para una panadería es un clic a WhatsApp, no una sesión.

Entrada eventos del sitio Salida panel + globo Modelo uno barato
Ver el archivo del agente
.claude/agents/tracking.md
---
name: tracking
description: Consolida eventos de los sitios generados y arma un panel con
  globo terrestre en tiempo real. Usalo para reportes semanales y para
  la reunión de renovación.
tools: Bash, Read, Write
model: claude-haiku-4-5
---

Consolidás y mostrás resultados.

## Eventos que importan
- click_whatsapp  (la conversión real en negocio local)
- click_telefono
- click_como_llegar
- pageview        (contexto, no objetivo)

## Panel
- Globo (globe.gl) con un punto por evento, geolocalizado por IP aproximada.
- Tarjetas arriba: eventos hoy, esta semana, variación contra la anterior.
- Una tabla por negocio ordenada por conversiones.

## Reglas
- Nunca guardes la IP completa. Truncá el último octeto y descartá el resto.
- Si un negocio tiene menos de 30 eventos, no muestres porcentajes de variación:
  no significan nada y erosionan la confianza del cliente.
06
Orquestador
Coordinación

No hace ninguna de las tareas. Decide quién hace qué, en qué orden, lee lo que vuelve y manda a rehacer lo que está flojo.

Es el único agente que conviene correr con el modelo más caro y el nivel de esfuerzo más alto. Todo lo que ahorrás poniendo modelos baratos en los otros cinco lo invertís acá, y es la inversión que más rinde: un orquestador tonto convierte cinco agentes buenos en un desastre coordinado.

Los agentes 01 y 02 corren en secuencia — necesitás la lista antes de auditarla. Del 03 al 05 corren en paralelo, uno por negocio. Ahí está la ganancia de tiempo.

Modelo claude-opus-5 Effort high / max Patrón fan-out + verificación
Ver el orquestador en Python
orquestador.py
import asyncio, json
from claude_agent_sdk import query, ClaudeAgentOptions

MAX_PARALELO = 5   # subilo con cuidado: cada uno consume tokens aparte

async def correr(agente: str, prompt: str) -> str:
    """Lanza un subagente y devuelve su texto final."""
    opciones = ClaudeAgentOptions(
        system_prompt=f"Actuá como el agente {agente}.",
        permission_mode="acceptEdits",
    )
    partes = []
    async for msg in query(prompt=prompt, options=opciones):
        partes.append(str(msg))
    return "\n".join(partes)

async def procesar_negocio(negocio: dict, sem: asyncio.Semaphore):
    async with sem:
        # estos tres son independientes entre sí: van juntos
        web, contenido, medicion = await asyncio.gather(
            correr("web-builder",     json.dumps(negocio)),
            correr("content-creator",  json.dumps(negocio)),
            correr("tracking",         json.dumps(negocio)),
            return_exceptions=True,
        )
        return {"negocio": negocio["nombre"], "web": web,
                "contenido": contenido, "medicion": medicion}

async def main(zona: str):
    # 1 y 2 en secuencia: no podés auditar lo que todavía no encontraste
    prospectos = json.loads(await correr("maps-finder", zona))
    auditados  = json.loads(await correr("diagnostico", json.dumps(prospectos)))

    vale_la_pena = [n for n in auditados if n["veredicto"] != "descartar"]

    # 3, 4 y 5 en paralelo, un lote por negocio
    sem = asyncio.Semaphore(MAX_PARALELO)
    resultados = await asyncio.gather(
        *[procesar_negocio(n, sem) for n in vale_la_pena]
    )

    print(f"listos: {len(resultados)} de {len(prospectos)} prospectos")
    return resultados

asyncio.run(main("panaderías en Chapinero, Bogotá"))

04Ponerlo a andar

De carpeta vacía a primera corrida. Contando lento, una tarde.

1

Creá el proyecto y los agentes

Una carpeta, adentro .claude/agents/, y ahí un archivo .md por cada agente con el contenido de las fichas de arriba. El bloque entre guiones al principio es lo que Claude lee para decidir cuándo usar cada agente: si la descripción es vaga, el orquestador no lo va a llamar nunca.

2

Conectá las APIs con MCP

MCP es el protocolo por el que Claude habla con servicios externos. Se declara en un .mcp.json en la raíz del proyecto.

.mcp.json
{
  "mcpServers": {
    "google-maps": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-google-maps"],
      "env": { "GOOGLE_MAPS_API_KEY": "${GOOGLE_MAPS_API_KEY}" }
    },
    "playwright": {
      "command": "npx",
      "args": ["-y", "@playwright/mcp"]
    }
  }
}

Después, desde la terminal, claude mcp list te confirma que quedaron conectados. Si un server no aparece, casi siempre es la variable de entorno que no está exportada en la sesión donde corrés Claude.

3

Probá un agente solo antes de encadenar

Este es el paso que todo el mundo se saltea y después pierde una tarde. Abrí Claude Code en la carpeta y pedile al maps-finder que busque diez negocios de una categoría que conozcas bien. Si la salida está mal, arreglala ahí. Un agente flojo en el paso 1 contamina todo lo que viene después.

4

Encadená y bajá el paralelismo

Recién ahora corré el orquestador, y arrancá con MAX_PARALELO = 2. Cada subagente en paralelo consume su propia ventana de contexto y su propia cuota. Subir el número multiplica la factura y te acerca al límite de la API mucho antes de lo que imaginás.

Cuidado con esto. Corré la primera vez sobre 5 negocios, no sobre 60. Un error de configuración a escala 60 se paga en dólares y en un rato largo de limpiar archivos.
5

Revisá a mano lo que salió

Antes de mandarle nada a un negocio real, abrí los cinco sitios generados y leelos. El sistema acelera la producción, no reemplaza el criterio. La primera vez vas a encontrar cosas para corregir en los prompts; a partir de la tercera corrida, casi nada.

05Cuánto cuesta de verdad

Los números que nadie pone en los hilos de Twitter.

Google Places API (New)

Se paga por cada 1.000 consultas, y el precio cambia según qué campos pidas. Google da USD 200 de crédito gratis por mes, que para prospección modesta alcanza bastante.

Tipo de consultaCosto / 1.000Cuándo la usás
Text SearchUSD 32Buscar negocios por zona y categoría
Nearby SearchUSD 32Barrer un radio alrededor de un punto
Place Details (básico)USD 17Ficha de cada negocio
+ datos de contactoUSD 3Teléfono y sitio web
+ reseñasUSD 5Solo cuando vayas a armar el sitio
Qué significa esto en la práctica. Con los USD 200 de crédito mensual podés levantar la ficha básica más el contacto de unos 8.000 negocios sin pagar un peso. Prospectar 500 pidiendo todo, reseñas incluidas, cuesta cerca de USD 13. Por eso el agente 01 no pide reseñas y el 03 sí: las pagás solo por los negocios que efectivamente vas a trabajar.

Claude

Claude Opus 5 tiene una ventana de contexto de 1M de tokens y hasta 128k de salida, con precio de referencia de USD 5 por millón de tokens de entrada y USD 25 por millón de salida. Verificá los valores vigentes en la documentación oficial, porque cambian.

La palanca que más mueve la factura no es el precio: es qué modelo le ponés a cada agente. Los agentes 01 y 05 hacen trabajo mecánico y andan bien con un modelo barato. Reservá Opus para el 02, el 03 y el orquestador.

La segunda palanca es el effort: Opus 5 razona por defecto y podés regularlo entre low y max. Bajarlo en los agentes mecánicos se nota en la cuenta y no en el resultado.

06Dónde se rompe

Lo que aprendí rompiéndolo, para que no lo aprendas igual.

El orquestador no llama a un agente

Casi siempre es la description del agente. Claude decide a quién llamar leyendo esa línea, así que tiene que decir cuándo usarlo, no solo qué hace. «Analiza sitios web» es malo; «Usalo después de maps-finder para auditar cada negocio antes de armar una propuesta» funciona.

La factura se disparó

Dos culpables habituales. Uno: todos los agentes corriendo con el modelo más caro. Dos: paralelismo alto — cada subagente concurrente consume tokens por su cuenta, así que diez en paralelo cuestan diez veces, no una vez más rápido.

Los sitios generados se parecen todos

Pasa cuando el web-builder no está leyendo las reseñas de verdad y cae en su plantilla mental por defecto. La señal es que aparecen frases como «calidad y servicio desde hace años» en negocios distintos. Reforzá en el prompt que use las palabras textuales de los clientes y prohibí explícitamente el relleno.

Se corta el texto en las piezas gráficas

El error más común al exportar a PNG: se elige un tamaño de fuente fijo y se asume que el texto entra. No entra. La solución es medir el ancho de cada línea con la tipografía real y bajar el cuerpo hasta que quepa, antes de dibujar.

La Places API devuelve menos de lo esperado

Suele ser facturación sin activar en Google Cloud, o la API vieja habilitada en lugar de Places API (New). Revisá también las restricciones de la clave: si la limitaste por IP y corrés desde otra máquina, falla en silencio.

La regla que más me sirvió. Nunca dejes que un agente escriba algo que no pueda verificar. Si genera un dato, que lo cite. Si genera un diseño, que lo mida. Si genera un testimonio, que lo copie de una reseña real. Un sistema autónomo sin verificación no es autonomía: es velocidad para equivocarse.

¿Preferís que lo arme yo?

Si leíste hasta acá y pensaste «esto sirve, pero no tengo la tarde», es exactamente lo que hago.

Monto el sistema completo adaptado a tu operación: tus zonas, tus categorías, tu marca. Te lo entrego funcionando y te enseño a correrlo.

Escribime por WhatsApp
O mandame un DM a @saraga.marketing con la palabra AGENTES.
Scroll to Top