Cron Scheduler

Cos'è il Cron Scheduler

Il Cron Scheduler è il sistema di automazione di Akendor che permette di generare idee e scrivere articoli automaticamente secondo una programmazione definita.

Utilizza le API esterne per creare contenuti basati su cluster tematici e li salva automaticamente nelle bozze dell'utente.

Struttura Configurazione

Percorso Database

users/[uid]/config/agente

Struttura del Documento

{
  "cron_scheduler": {
    "generic": {
      "ideas": {
        "enabled": true,
        "days": ["Mon", "Wed", "Fri"],
        "workHours": {
          "start": "09:00",
          "end": "18:00"
        },
        "frequency": "120",
        "last_run": Timestamp
      },
      "writing": {
        "enabled": true,
        "days": ["Tue", "Thu"],
        "workHours": {
          "start": "10:00",
          "end": "17:00"
        },
        "frequency": "180",
        "last_run": Timestamp
      }
    },
    "cluster_id_1": {
      "ideas": { ... },
      "writing": { ... }
    }
  }
}

Parametri di Configurazione

Parametri Base

  • enabled: boolean - Attiva/disattiva il job
  • days: array[] - Giorni della settimana (Mon, Tue, etc.)
  • frequency: string - Frequenza in minuti
  • last_run: Timestamp - Ultima esecuzione

Work Hours

  • start: string - Ora inizio (HH:mm)
  • end: string - Ora fine (HH:mm)
  • timezone: Europe/Rome (fisso)

Endpoint API

GET /api/cron

Endpoint principale per eseguire il cron scheduler

Headers Richiesti:

Authorization: Bearer {CRON_SECRET}
x-user-id: {USER_ID}

Response:

{
  "success": true,
  "executed": [
    {
      "userId": "b7TGQPlizbOvZzjlmd0b2DkBQjV2",
      "type": "generic_ideas",
      "status": 200
    }
  ]
}

Flusso di Esecuzione

1

Validazione Autenticazione

Verifica del CRON_SECRET e validazione userId

2

Lettura Configurazione

Caricamento della configurazione da users/[uid]/config/agente

3

Controllo Schedule

Verifica giorno, ora e frequenza per ogni job configurato

4

Esecuzione Job

Chiamate API per generazione idee o scrittura articoli

5

Aggiornamento Timestamp

Salvataggio last_run per evitare esecuzioni duplicate

Setup con Cron-job.org

⚠️ Nota Importante

Per testing locale, usa ngrok per esporre localhost:3000 a internet.

Configurazione Cron-job.org:

URL: https://tuo-dominio.com/api/cron
Method: GET
Headers:
  Authorization: Bearer {CRON_SECRET}
  x-user-id: {USER_ID}
Schedule: */15 * * * * (ogni 15 minuti)

Troubleshooting

Error 401 Unauthorized

Verifica che CRON_SECRET sia corretto nell'header Authorization.

Job non eseguito

Controlla: giorno della settimana, orario workHours, frequency, last_run.

API esterne non rispondono

Verifica che BASE_URL sia corretto e che i servizi esterni siano raggiungibili.