# Festività e agenti IA: come pubblicare per pubblici diversi senza passi falsi

_2026-10-13 · Come un agente IA programma attorno alle festività: associa ogni account alle sue tradizioni, chiama get_holidays, legge calendar_notes e blocca la vigilia._

Un agente che pubblica per molti account deve confrontare ogni orario programmato con le festività del pubblico di ciascun account, non con un unico calendario nazionale. In Shager questo significa due controlli: chiamare `get_holidays` per le tradizioni che contano prima di pianificare, poi leggere le `calendar_notes` che tornano su ogni post programmato. L'unica cosa che nessun tool può fare al posto dell'agente è decidere quali tradizioni valgono per quale account, quindi va scritta nero su bianco per ogni cliente.

## Il calendario è facile. Il difficile è l'associazione.

La maggior parte degli errori sulle festività non nasce da dati mancanti, ma dall'idea che tutti i pubblici condividano lo stesso calendario.

Immagina un'agenzia che gestisce questi account da un'unica area di lavoro:

1. Un ristorante a conduzione familiare in un villaggio druso della Galilea.
2. Una catena di studi dentistici i cui pazienti sono in gran parte cittadini arabi di Israele.
3. Un negozio di articoli per la casa che vende a un pubblico haredi.
4. Un centro culturale per russofoni, dove una parte del pubblico segue il calendario della Chiesa ortodossa.
5. Un marchio di e-commerce che spedisce in Europa e in Nord America.

Un allegro post con uno sconto di martedì può andare benissimo per quattro di loro ed essere del tutto fuori luogo per il quinto. Un agente sa solo quello che c'è nelle sue istruzioni. Quindi, prima che qualsiasi strumento descritto qui sotto possa aiutare, ogni profilo cliente ha bisogno di una riga esplicita: le tradizioni che questo pubblico osserva. Se usi già [un solo agente per tanti clienti](/it/blog/one-agent-many-clients), quel profilo è il posto giusto.

## Cosa copre il calendario delle festività di Shager?

Il calendario comprende le festività ebraiche e israeliane, musulmane, cristiane occidentali, cristiane ortodosse, druse, bahá'í, induiste, buddiste, sikh, giainiste, cinesi e persiane. Include anche le giornate internazionali e commerciali: San Valentino, la Giornata internazionale della donna, la Festa della mamma e la Festa del papà statunitensi, Halloween, il Singles' Day, il Thanksgiving, il Black Friday, il Cyber Monday e il Capodanno.

Ogni giornata porta con sé uno di quattro consigli di pubblicazione:

| Consiglio | Cosa deve fare l'agente | Esempi |
| --- | --- | --- |
| `avoid` | Nessun contenuto promozionale per quel pubblico | Yom Kippur; il Giorno della memoria della Shoah e il Giorno del ricordo dei caduti in Israele |
| `sensitive` | Solo contenuti rispettosi, niente vendita aggressiva, niente battute | Giorni di digiuno, Venerdì santo, Ashura, giorno di Arafah, Laylat al-Qadr |
| `opportunity` | Un augurio o un post a tema ci stanno bene | Eid al-Fitr, Natale, Diwali, Capodanno lunare, Black Friday |
| `normal` | Nulla da cambiare | Tutto il resto |

Il calendario dell'app mostra gli stessi dati alle persone, con un filtro per tradizione e un colore per ogni consiglio.

## Chiamare get_holidays

È disponibile come tool MCP `get_holidays` e come operazione REST documentata nella [specifica OpenAPI](https://app.shager.ai/api/v1/openapi.json):

```bash
curl -s "https://app.shager.ai/api/v1/holidays?from=2026-11-20&to=2026-12-05&traditions=jewish,muslim&language=en" \
  -H "Authorization: Bearer $SHAGER_API_KEY"
```

Senza `from` e `to`, l'intervallo va da oggi ai 60 giorni successivi. Il massimo è 400 giorni. `traditions` filtra solo quelle che indichi, e `language` restituisce i nomi in inglese o in ebraico. La risposta ha questa forma:

```json
{
  "data": {
    "from": "2026-11-20",
    "to": "2026-12-05",
    "note": "...",
    "holidays": [
      {
        "date": "YYYY-MM-DD",
        "tradition": "...",
        "name": "...",
        "key": "...",
        "advice": "opportunity",
        "guidance": "...",
        "approximate": true
      }
    ]
  }
}
```

Passa `guidance` al revisore umano: spiega in una frase perché un post è stato spostato.

## La sequenza di chiamate, dall'inizio alla fine

Questo è l'ordine che uso per un'esecuzione settimanale. Prendiamo come esempio la fine di novembre 2026: il Thanksgiving cade giovedì 26, il Black Friday il 27 e il Cyber Monday il 30. Per il marchio di e-commerce è una serie di giornate `opportunity`. Per il negozio haredi o per il ristorante druso, quegli stessi giorni possono essere semplicemente `normal`, e non valere affatto un post a tema.

```text
get_holidays  { from: "2026-11-20", to: "2026-12-05", traditions: <union of all profiles in this run> }

create_post   { workspace_id: "ws_retail",
                channel_ids: ["ch_shop_eu_ig", "ch_shop_us_fb"],
                caption: "...",
                per_channel: [
                  { channel_id: "ch_shop_eu_ig", caption: "..." },
                  { channel_id: "ch_shop_us_fb", caption: "..." }
                ],
                media_ids: ["med_19ae"] }

schedule_post { workspace_id: "ws_retail", post_id: "pst_5d2c",
                schedule_at: "2026-11-27T09:00:00-05:00" }

read calendar_notes on the returned post
  if any entry is avoid or sensitive for a tradition in this account's profile:
    cancel_post, pick a new time, schedule again, and log why
```

Primo: `per_channel` permette a un solo post di avere un testo diverso per ogni account, così la pagina statunitense può citare il weekend del Thanksgiving mentre quella europea parla di Black Friday senza l'impostazione americana. Ne ho scritto di più in [variare i testi per ogni account](/it/blog/caption-variation-per-account-with-ai).

Secondo: un post ha un solo orario di programmazione. Quando due pubblici dello stesso gruppo non sono d'accordo su un giorno, i testi non bastano a risolvere. Dividili in post separati con orari separati.

`calendar_notes` torna su ogni post restituito da `create_post`, `get_post` e `schedule_post`, ed elenca le festività del giorno programmato con i relativi consigli. Intercetta quello che la pianificazione si è lasciata sfuggire, compreso un orario cambiato a mano da qualcuno.

## Perché «inizia la sera prima» manda in crisi i controlli sulle date

Le festività ebraiche iniziano al tramonto della sera precedente alla data indicata sul calendario. La [spiegazione del movimento riformato](https://reformjudaism.org/learning/answers-jewish-questions/why-do-jewish-holidays-begin-night) fa risalire questa regola al racconto della creazione, in cui la sera viene prima del mattino. Anche il giorno islamico inizia al tramonto.

Un agente che confronta solo le date sbaglierà in modo prevedibile. Il calendario indica lo Yom Kippur in una certa data. L'agente controlla una promozione programmata per le 19:00 del giorno prima, non trova corrispondenze e pubblica proprio all'inizio del digiuno.

In Israele la posta in gioco è più alta nei due giorni della memoria. Il Giorno del ricordo dei caduti inizia al tramonto della sera precedente e durante la giornata [i locali di intrattenimento restano chiusi per legge](https://www.jewishvirtuallibrary.org/yom-hazikaron-israeli-memorial-day). Nel Giorno della memoria della Shoah, [i luoghi di intrattenimento pubblico sono chiusi per legge](https://en.wikipedia.org/wiki/Yom_HaShoah) la vigilia e il giorno stesso. Un marchio che quella sera pubblica una promozione scherzosa non infrange alcuna legge, ma il pubblico se ne accorge.

La mia regola nelle istruzioni degli agenti è semplice: per le giornate `avoid` e `sensitive`, il pomeriggio e la sera del giorno prima fanno parte della giornata. Per le giornate `opportunity`, l'inizio serale gioca a tuo favore, perché un augurio che arriva prima dell'inizio della festa arriva puntuale.

## Perché le date islamiche sono indicate come approssimative?

Shager calcola le date islamiche dal calendario Umm al-Qura e le contrassegna con `approximate: true`. Umm al-Qura è il calendario ufficiale dell'Arabia Saudita ed è calcolato in anticipo, mentre l'inizio dei mesi religiosi dipende dall'avvistamento della luna crescente. [The New Arab cita il vecchio sito ufficiale dello stesso calendario](https://www.newarab.com/news/will-saudi-arabia-announce-wrong-date-ramadan), secondo cui le date possono non coincidere con l'effettiva visibilità della falce di luna. I paesi applicano inoltre criteri di avvistamento diversi, quindi [l'Eid può cadere in giorni diversi a seconda del paese](https://www.aljazeera.com/news/2023/3/16/infographic-when-is-ramadan-2023).

Lo scarto è di circa un giorno. Per la catena di studi dentistici significa: prepara per tempo l'augurio per l'Eid al-Fitr come bozza e programmalo dopo l'annuncio locale, oppure scrivilo in modo che funzioni anche con un giorno di anticipo. Per una giornata `sensitive` approssimativa, lascia un giorno di margine prima e dopo. Per pubblici distribuiti in più paesi, non dare per scontato che una sola data vada bene per tutti.

## Un prompt da adattare

```text
Before scheduling anything this week:
1. Read each client's audience profile and list its traditions. If a profile has none, stop and ask me.
2. Call get_holidays once for the whole week, with the union of those traditions.
3. avoid: no promotional posts to that audience, including the afternoon and evening before.
4. sensitive: respectful tone only. No discounts, no humour, no countdowns.
5. opportunity: propose a greeting or themed post, written separately per account with per_channel.
6. approximate=true: keep a one day buffer, or wait for the local announcement.
7. After schedule_post, read calendar_notes. On a conflict, cancel, reschedule and tell me what changed.
```

Abbinalo alle regole sugli orari di [strategia di programmazione per gli agenti](/it/blog/scheduling-strategy-for-agents), così fusi orari e festività vengono gestiti nello stesso passaggio.

## Checklist prima di ogni esecuzione programmata

1. Ogni account ha un profilo del pubblico con un elenco esplicito di tradizioni.
2. Una sola chiamata a `get_holidays` copre l'intero intervallo di date dell'esecuzione.
3. Una giornata `avoid` blocca anche la sera precedente.
4. Una giornata `sensitive` cambia il tono, non solo l'orario.
5. I post `opportunity` sono scritti per ogni pubblico, mai un augurio generico uguale per tutti.
6. Le date approssimative hanno un giorno di margine.
7. I pubblici misti in un giorno conteso vengono divisi in post separati.
8. Dopo la programmazione, l'agente legge `calendar_notes` e riferisce ogni modifica fatta.

I giorni di riposo settimanale come lo Shabbat sono una regola fissa più che una voce di calendario, quindi inseriscili nel profilo del pubblico come fasce orarie bloccate.

Se il tuo agente non è ancora collegato, la [pagina dedicata agli agenti](/it/agents) ti guida nella configurazione. Una volta collegato, il primo lavoro utile è piccolo: aggiungi la riga delle tradizioni a ogni profilo cliente ed esegui `get_holidays` sui prossimi due mesi per vedere cosa ti aspetta.

## Domande frequenti

### Shager blocca la programmazione in una giornata avoid?

No. Il consiglio è un'informazione, restituita da `get_holidays` e nelle `calendar_notes` di ogni post. La decisione resta all'agente e a chi ne approva il lavoro, perché lo stesso giorno può essere solenne per un pubblico e del tutto normale per un altro.

### Come fa l'agente a sapere quali tradizioni valgono per un account?

Non deve dedurlo dal nome di un'attività o da una città. Scrivi le tradizioni nel profilo del pubblico di ogni cliente e istruisci l'agente a fermarsi e chiedere quando quella riga manca.

### Un marchio di e-commerce globale deve davvero occuparsi delle festività religiose?

Sì, soprattutto per i suoi mercati principali. Raggruppa gli account per mercato, confronta ogni gruppo con le giornate commerciali e con le tradizioni diffuse in quel mercato, e scrivi auguri diversi per ogni gruppo. Un post di Natale è un'occasione in un mercato e irrilevante, o persino fuori luogo, in un altro.

---
Source: https://shager.ai/it/blog/holiday-aware-posting-for-agents
