Agente de frases motivacionales con Claude Code y cron

Tiempo de lectura: 2 minutos

Vamos a generar un primer agente con Claude Code y se ejecutará de forma automática cada hora con un cron y subirá a github el contenido generado.

1️ Estructura de carpetas

Crea la carpeta de tu agente:

mkdir -p ~/motivational-agent/md
mkdir -p ~/motivational-agent/data
cd ~/motivational-agent

La estructura final quedará así:

motivational-agent/
│
├─ md/
│   └─ claude.md        # contexto y estilo de frases
├─ data/
│   └─ frases.json      # histórico de frases
├─ claude-config.json   # configuración de Claude
└─ run-agent.js         # script que genera frases + commits

2️ Crear claude.md (contexto)

Este archivo le da a Claude la personalidad y estilo de las frases.
Crea el archivo:

nano ~/motivational-agent/md/claude.md

Pega este contenido:

# Contexto para generar frases motivacionales

1. Genera frases **positivas, breves y motivadoras**.
2. Inspírate en filosofía, libros de autoayuda y citas de personas famosas.
3. Nunca repitas frases que ya estén en el archivo de frases existentes.
4. El formato final debe ser JSON:

{
  "frase": "Aquí va la frase motivacional",
  "autor": "Opcional"
}

Guarda y cierra.

3️ Crear claude-config.json

Configura tu modelo, paths y autor de commits:

nano ~/motivational-agent/claude-config.json

Pega esto:

{
  "model": "claude-instant-1",
  "temperature": 0.7,
  "max_tokens": 200,
  "md_path": "/motivational-agent/md",
  "data_path": "/motivational-agent/data/frases.json",
  "repo_path": "/motivational-agent",
  "commit_author": "Isma",
  "commit_email": "[email protected]"
}

4️ Crear el script run-agent.js

Este script:

  1. Lee el prompt (claude.md)
  2. Llama a Claude Code
  3. Guarda la frase en frases.json
  4. Hace commit y push automáticamente
nano ~/motivational-agent/run-agent.js

Pega este código:

const fs = require('fs');
const { execSync } = require('child_process');

const config = JSON.parse(fs.readFileSync('claude-config.json'));
const prompt = fs.readFileSync(`${config.md_path}/claude.md`, 'utf8');

try {
    // Ejecuta Claude Code
    const output = execSync(`claude "${prompt}" --model ${config.model}`);
    const frase = output.toString().trim();

    // Leer frases existentes
    let frases = [];
    if (fs.existsSync(config.data_path)) {
        frases = JSON.parse(fs.readFileSync(config.data_path, 'utf8'));
    }

    // Agregar nueva frase
    frases.push({ frase, fecha: new Date().toISOString() });

    // Guardar archivo
    fs.writeFileSync(config.data_path, JSON.stringify(frases, null, 2));
    console.log("Frase generada:", frase);

    // Commit y push
    execSync(`cd ${config.repo_path} && git add data/frases.json`);
    execSync(`cd ${config.repo_path} && git commit -m "Añadida nueva frase motivacional" --author="${config.commit_author} <${config.commit_email}>"`);
    execSync(`cd ${config.repo_path} && git push`);
    console.log("Commit y push realizados");

} catch (err) {
    console.error(err.toString());
}

5️ Inicializar Git

Si aún no lo has hecho:

cd ~/motivational-agent
git init
git remote add origin [email protected]:TuUsuario/motivational-agent.git
git add .
git commit -m "Inicializar repo agente motivacional"
git push -u origin master

Recuerda reemplazar TuUsuario por tu usuario de GitHub y que tu SSH esté configurada.

6️ Probar el script manualmente

cd ~/motivational-agent
node run-agent.js
  • Deberías ver en consola:
    • “Frase generada: …”
    • “Commit y push realizados ”
  • En GitHub aparecerá la nueva frase en frases.json.

7️ Configurar cron para automatizar

  1. Abre crontab:
crontab -e
  1. Añade la línea para generar una frase cada hora:
0 * * * * /usr/bin/node /home/raspi4/motivational-agent/run-agent.js >> /home/raspi4/motivational-agent/cron.log 2>&1
  • 0 * * * * → cada hora en minuto 0
  • >> cron.log 2>&1 → guarda logs de salida y errores
  1. Guarda y cierra. Cron ahora ejecutará tu agente automáticamente.

8️ Comprobar cron

grep CRON /var/log/syslog

Deja un comentario