Guía completa · Paso a paso

content-agent

Tu IA escribe los guiones. Tú solo grabas.

€4.35/mes de servidor
~30 minpara configurarlo
1 guióndiario automático

Un agente autónomo en Node.js que cada mañana busca tendencias, analiza tus métricas de Instagram y TikTok, y genera un guión personalizado que te llega directo a Telegram. Corre 24/7 en un VPS de €4 al mes.

Detecta tendencias

Brave Search + Claude

Genera guiones

Claude Sonnet 4.6

Llega a Telegram

Con botones inline

Cómo funciona

El pipeline completo que corre solo cada mañana

6:00 AM

Research

Brave Search busca tendencias del nicho. Claude extrae los 8 temas más relevantes.

trends
7:00 AM

Analytics

Se conecta a Instagram Graph API y TikTok Research API para jalarse las métricas.

videos
8:00 AM

Script Gen

Claude genera el guión con contexto de tendencias + métricas + historial + insights.

scripts
8:00 AM

Telegram

Briefing completo: analytics del día + 3 opciones de gancho + desarrollo + CTA.

briefing

Research adicional

El agente también hace refreshes de tendencias a las 12:00 PM, 4:00 PM y 8:00 PM para tener el contexto más actualizado posible al generar el guión del día siguiente.

videos

Métricas de TikTok e Instagram

scripts

Guiones generados y si fueron grabados

trends

Tendencias detectadas por día

insights

Aprendizajes acumulados de lo que funciona

Antes de empezar

Lo que necesitas tener listo

Cuenta en Hetzner Cloud

hetzner.com/cloud — tarjeta de crédito requerida

Cuenta de Telegram

La app en tu celular es suficiente

API Key de Anthropic

console.anthropic.com — requiere pago mínimo ($5)

Repositorio del agente

El código de content-agent en GitHub o localmente

30–60 minutos

La primera vez. Luego actualizar toma 2 minutos

Terminal y SSH básico

Solo necesitas saber conectarte a un servidor remoto

1

Crear VPS en Hetzner

El servidor donde va a correr el agente 24/7 — €4.35/mes

  1. Ve a hetzner.com/cloud → New Project → Add Server
  2. Location: Helsinki o Falkenstein (EU)
  3. Image: Ubuntu 24.04 LTS
  4. Type: CX22 — 2 vCPU, 4GB RAM, €4.35/mes
  5. SSH Key: Agrega tu llave pública (requerido — no uses contraseña)
  6. Click Create & Buy Now — en ~30 segundos tienes la IP
setup-servidor.sh
# Conectar al servidor
ssh root@<IP_DEL_SERVIDOR>

# Actualizar paquetes
apt update && apt upgrade -y

# Instalar Node.js 24
curl -fsSL https://deb.nodesource.com/setup_24.x | bash -
apt install -y nodejs

# Verificar versión
node --version   # v24.x.x
npm --version

# Instalar PM2 (process manager)
npm install -g pm2

# Instalar git
apt install -y git

Guarda la IP del servidor

La necesitas en todos los pasos. Se ve así: 204.168.226.123

2

Setup del servidor

Node.js 24, PM2 y git — verificar que quedó bien instalado

Los comandos del Paso 1 ya incluyen el setup completo. Después de ejecutarlos, verifica:

bash
node --version   # debe ser v24.x.x
pm2 --version    # debe ser 5.x.x o mayor
git --version    # cualquier versión moderna

¿Por qué PM2?

PM2 mantiene el proceso vivo si se cae, lo reinicia automáticamente y guarda los logs. Es el estándar para Node.js en producción en VPS.

3

Obtener API Keys

Consigue las credenciales antes de desplegar

Requerido

Telegram Bot

telegram-bot.sh
# 1. Habla con @BotFather en Telegram
# 2. Envía: /newbot
# 3. Ponle nombre (ej: Mi Content Agent)
# 4. Ponle username (debe terminar en "bot", ej: micontentagent_bot)
# 5. Copia el token que te da → es tu TELEGRAM_BOT_TOKEN

# Para obtener tu TELEGRAM_CHAT_ID:
# Habla con @userinfobot en Telegram — te lo da directamente
Requerido

Anthropic (Claude)

anthropic.sh
# 1. Ve a console.anthropic.com
# 2. Sign Up / Login
# 3. Ve a "API Keys" → "Create Key"
# 4. Copia la key (empieza con sk-ant-...)
# 5. Agrega créditos en "Billing" (mínimo $5)
#    Claude Sonnet 4.6 cuesta ~$0.003 por guión generado
Opcional (recomendado)

Brave Search API

brave-search.sh
# 1. Ve a brave.com/search/api
# 2. Click "Get started for free"
# 3. Crea cuenta → Ve a "API Keys"
# 4. Crea una nueva API key
# Plan gratuito: 2,000 queries/mes
# El agente usa ~120/mes (4 queries x 30 días)
Opcional

Instagram Graph API

instagram.sh
# 1. Ve a developers.facebook.com
# 2. Crea una App → tipo "Business"
# 3. Agrega el producto "Instagram Graph API"
# 4. Conecta tu cuenta Instagram Professional (Business o Creator)
# 5. Genera un Long-Lived Token (válido 60 días)
# 6. Obtén tu INSTAGRAM_ACCOUNT_ID con Graph API Explorer:
#    GET /me?fields=id&access_token=TOKEN

TikTok Research API requiere aprobación manual de TikTok (puede tomar días). Ve a developers.tiktok.com → Research API. El agente funciona perfectamente sin TikTok al inicio.

4

Desplegar el código

Subir el agente al servidor

deploy.sh
# En el servidor — crear directorio
mkdir -p /opt/content-agent
cd /opt/content-agent

# Opción A: clonar desde GitHub (recomendado)
git clone https://github.com/<tu-usuario>/content-agent.git .

# Opción B: copiar desde tu Mac con scp
# (ejecutar esto en tu Mac, no en el servidor)
scp -r /ruta/al/proyecto/* root@<IP>:/opt/content-agent/

Recomendación: usa GitHub

Sube el código a un repo privado. Así actualizas con git pull && npm run build && pm2 restart content-agent.

5

Configurar variables de entorno

El .env es lo más importante — aquí van todas las credenciales

bash
# Crear el archivo .env
cd /opt/content-agent
nano .env
# Pega la plantilla de abajo y completa los valores

Variables de entorno

Solo las 3 primeras son obligatorias. El agente detecta automáticamente qué plataformas están configuradas.

VariableEstadoDescripción
ANTHROPIC_API_KEYRequeridaAPI key de Claude — el cerebro del agente
TELEGRAM_BOT_TOKENRequeridaToken del bot de Telegram que te envía los guiones
TELEGRAM_CHAT_IDRequeridaTu ID personal de Telegram para recibir los mensajes
BRAVE_SEARCH_API_KEYOpcionalAPI de búsqueda para detectar tendencias (2,000 req/mes gratis)
META_ACCESS_TOKENOpcionalLong-lived token de Instagram (expira cada 60 días)
INSTAGRAM_ACCOUNT_IDOpcionalID de tu cuenta de Instagram Business/Creator
META_APP_IDOpcionalID de tu app en Meta for Developers
META_APP_SECRETOpcionalSecret de tu app en Meta for Developers
TIKTOK_ACCESS_TOKENOpcionalToken OAuth de TikTok Research API
TIKTOK_APP_IDOpcionalID de tu app en TikTok for Developers
TIKTOK_APP_SECRETOpcionalSecret de tu app de TikTok
TIKTOK_OPEN_IDOpcionalOpen ID de tu cuenta TikTok
AGENT_TIMEZONE

default: America/Bogota

OpcionalZona horaria para los cron jobs
DAILY_SCRIPT_HOUR

default: 8

OpcionalHora en que se genera y envía el guión diario (0-23)
DAILY_SCRIPT_MINUTE

default: 0

OpcionalMinuto del envío diario
RESEARCH_HOUR

default: 6

OpcionalHora del research matutino de tendencias
SCRIPT_MEMORY_WINDOW

default: 15

OpcionalCuántos guiones anteriores incluir como contexto para Claude

Plantilla lista para copiar:

.env
# REQUERIDAS
ANTHROPIC_API_KEY=sk-ant-...
TELEGRAM_BOT_TOKEN=123456:ABC...
TELEGRAM_CHAT_ID=123456789

# INSTAGRAM (opcional)
META_ACCESS_TOKEN=
INSTAGRAM_ACCOUNT_ID=
META_APP_ID=
META_APP_SECRET=

# TIKTOK (opcional)
TIKTOK_ACCESS_TOKEN=
TIKTOK_APP_ID=
TIKTOK_APP_SECRET=
TIKTOK_OPEN_ID=

# RESEARCH (opcional pero recomendado)
BRAVE_SEARCH_API_KEY=

# TIMING (opcionales — valores por defecto ya funcionan)
AGENT_TIMEZONE=America/Bogota
DAILY_SCRIPT_HOUR=8
DAILY_SCRIPT_MINUTE=0
RESEARCH_HOUR=6
SCRIPT_MEMORY_WINDOW=15
6

Build y arrancar con PM2

Compilar TypeScript y dejar el agente corriendo

start-agent.sh
cd /opt/content-agent

# Instalar dependencias
npm install --omit=dev

# Compilar TypeScript
npm run build

# Crear directorio de logs
mkdir -p logs

# Iniciar con PM2
pm2 start ecosystem.config.js

# Guardar la lista de procesos (para que sobreviva reboots)
pm2 save

# Configurar autostart al reiniciar el servidor
pm2 startup
# Copia y ejecuta el comando que muestra este último step

Importante: ejecuta pm2 startup

pm2 startup genera un comando específico para tu sistema. Cópialo y ejecútalo — hace que el agente arranque automáticamente si el servidor se reinicia.

7

Verificar que funciona

Si ves 'online' en pm2 status, el agente está vivo

verificar.sh
# Ver estado del proceso
pm2 status
# Debe mostrar: content-agent | online

# Ver logs en tiempo real
pm2 logs content-agent --lines 50

# Si ves errores, verificar .env:
cat /opt/content-agent/.env

Prueba desde Telegram

Abre el chat con tu bot y prueba estos comandos:

comandos-telegram.txt
/start      → Muestra el menú de comandos
/status     → Métricas y estado del agente
/script     → Genera un guión ahora mismo
/analytics  → Jala métricas de Instagram/TikTok
/history    → Últimos 5 guiones generados

Comandos útiles de PM2

bash
pm2 restart content-agent   # Reiniciar
pm2 stop content-agent      # Detener
pm2 logs content-agent      # Logs en tiempo real
pm2 monit                   # Dashboard de procesos

# Actualizar el agente
cd /opt/content-agent && git pull && npm run build && pm2 restart content-agent

El system prompt de Claude

El ADN del agente — aquí defines quién eres

Personaliza esto primero

Este prompt está escrito para Juan David Sierra. Cámbialo con tu nombre, tu nicho, tus empresas, cómo hablas y a quién le hablas. Cuanto más específico seas, más te va a sonar el guión. El archivo está en src/agents/script-agent.ts → variable JUAN_DAVID_SYSTEM.

Ver system prompt completo▶ Expandir
src/agents/script-agent.ts → JUAN_DAVID_SYSTEM
Eres el asistente creativo de Juan David Sierra, emprendedor colombiano de 21 años.

## Quién es Juan David
- Programador y estudiante de Ingeniería de Sistemas (último año)
- Fundador de Digit Deck: agencia digital con clientes internacionales, se posiciona como referente en el mercado
- Fundador de Growthly: SaaS para democratizar el CRO (Conversion Rate Optimization) para ecommerce
- Aprende constantemente sobre IA y soluciones de IA para ecommerce
- Practica boxeo, hace deporte regularmente
- Vive en Colombia, habla en español natural/colombiano (no muy formal, tampoco muy callejero)
- 21 años, en proceso — no millonario todavía pero construyendo activamente
- Tiene meses buenos y malos en facturación — es transparente con eso
- No quiere ser un "gurú" ni vender un lifestyle falso

## Su marca personal
- **Autenticidad ante todo**: habla desde su experiencia real, no desde donde quisiera estar
- **Aspiracional pero honesto**: inspira sin mentir, muestra el proceso real
- **Nicho = él mismo**: no se limita a un solo tema, conecta emprendimiento + programación + IA + vida
- **Tono**: cercano, directo, con confianza pero sin arrogancia, a veces vulnerable
- **No habla de**: política, temas polémicos sin relación a su marca
- **Siempre conecta con**: su audiencia de jóvenes latinoamericanos que quieren emprender o ya lo intentan

## Formato de videos (TikTok + Instagram Reels)
- Duración objetivo: 45-75 segundos
- Hook en los primeros 3 segundos: pregunta provocadora, dato sorprendente, o afirmación contraintuitiva
- Habla directamente a cámara, primera persona
- Un solo mensaje claro por video — no tratar de explicar todo
- CTA al final: siempre pedir algo concreto (seguir, comentar, compartir, guardar)
- Puede grabar caminando, en su escritorio, en el gym, en la calle

## Tu rol
Generas guiones completos listos para grabar. Los guiones deben sonar como Juan David habla, no como un texto corporativo.
Usas datos reales de performance y tendencias para decidir qué grabar.

Contexto adicional que Claude recibe en cada guión

Analytics últimos 7 díasPromedio de vistas, top y bottom videos
Tendencias del díaTop 6 temas detectados por Brave Search
Últimos 15 guionesPara no repetir temas ni ganchos recientes
Insights acumuladosAprendizajes de qué ha funcionado

Costos mensuales

Todo en, menos de lo que te cuesta un café al día

ServicioCosto
Hetzner CX22 VPS€4.35/mes
Anthropic Claude Sonnet 4.6~$2–5/mes
Brave Search APIGratis
Instagram Graph APIGratis
TikTok Research APIGratis
Telegram BotGratis
Total~€8–10/mes

* Claude Sonnet 4.6 cobra por tokens. 30 guiones/mes + research diario ≈ $2–5 USD. Puedes ajustar la frecuencia cambiando los cron jobs en src/scheduler/cron.ts.

Token de Instagram — expira cada 60 días

El long-lived token de Instagram dura exactamente 60 días. Si no lo renuevas, el agente deja de jalar métricas (sigue funcionando, solo sin datos de Instagram). Pon un recordatorio en tu calendario cada 50 días.

renovar token de Instagram
# En el servidor
curl "https://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&access_token=TU_TOKEN_ACTUAL"

# Copia el nuevo access_token de la respuesta JSON
# Luego actualiza el .env:
nano /opt/content-agent/.env
# Cambia META_ACCESS_TOKEN=nuevo_token_aqui

# Reinicia el agente
pm2 restart content-agent

• El token nuevo también dura 60 días desde el momento de renovación

• Solo funciona si el token actual todavía no ha expirado

• Si ya expiró, necesitas generar uno nuevo completo desde developers.facebook.com

Problemas comunes

Las cosas que más fallan la primera vez