# Como um agente de IA deve lidar com feriados quando publica para públicos muito diferentes?

_2026-10-13 · Como um agente de IA deve agendar em torno de feriados: ligar cada conta às suas tradições, chamar get_holidays, ler calendar_notes e bloquear a véspera._

Um agente que publica para muitas contas deve conferir cada horário agendado com os feriados do público de cada conta, e não com um único calendário nacional. No Shager, isso significa duas verificações: chamar `get_holidays` para as tradições que importam antes de planejar e, depois, ler as `calendar_notes` que voltam em cada post agendado. A parte que nenhuma ferramenta faz pelo agente é decidir quais tradições valem para qual conta, e por isso isso precisa estar escrito, cliente por cliente.

## O calendário é a parte fácil. O difícil é o mapeamento.

A maioria dos erros com feriados vem de presumir que todo público segue o mesmo calendário, e não da falta de dados.

Imagine uma agência que cuida destas contas a partir de um mesmo espaço de trabalho:

1. Um restaurante familiar em uma aldeia drusa na Galileia.
2. Uma rede de clínicas odontológicas cujos pacientes são, em sua maioria, cidadãos árabes de Israel.
3. Uma loja de utilidades domésticas que vende para um público judeu ultraortodoxo (haredi).
4. Um centro comunitário para falantes de russo, em que parte do público segue o calendário da Igreja Ortodoxa.
5. Uma marca de e-commerce que entrega na Europa e na América do Norte.

Um post animado de desconto numa terça-feira pode cair bem para quatro deles e muito mal para o quinto. O agente só sabe o que está nas instruções dele. Então, antes que qualquer ferramenta abaixo ajude, o perfil de cada cliente precisa de uma linha explícita: as tradições que esse público segue. Se você já usa [um agente para muitos clientes](/en/blog/one-agent-many-clients), é nesse perfil que essa linha deve ficar.

## O que o calendário de feriados do Shager cobre?

O calendário inclui feriados judaicos e israelenses, muçulmanos, cristãos ocidentais, cristãos ortodoxos, drusos, bahá'ís, hindus, budistas, sikhs, jainistas, chineses e persas. Também inclui datas internacionais e comerciais: Valentine's Day, Dia Internacional da Mulher, Dia das Mães e Dia dos Pais dos Estados Unidos, Halloween, Singles' Day, Thanksgiving, Black Friday, Cyber Monday e Ano-Novo.

Cada dia traz uma de quatro recomendações de publicação:

| Recomendação | O que o agente deve fazer | Exemplos |
| --- | --- | --- |
| `avoid` | Nenhum conteúdo promocional para esse público | Yom Kipur; Dia da Memória do Holocausto e Dia da Memória (Yom HaZikaron) em Israel |
| `sensitive` | Só conteúdo respeitoso, sem venda agressiva, sem piadas | Dias de jejum, Sexta-feira Santa, Ashura, Dia de Arafat, Laylat al-Qadr |
| `opportunity` | Cabe uma saudação ou um post temático | Eid al-Fitr, Natal, Diwali, Ano-Novo Lunar, Black Friday |
| `normal` | Nada a mudar | Todo o resto |

O calendário do app mostra os mesmos dados para as pessoas, com filtro por tradição e uma cor para cada recomendação.

## Chamando o get_holidays

Ele está disponível como a ferramenta MCP `get_holidays` e como uma operação REST documentada na [especificação 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"
```

Sem `from` e `to`, o período é de hoje até 60 dias à frente. O máximo é de 400 dias. `traditions` filtra pelas tradições que você indicar, e `language` devolve os nomes em inglês ou em hebraico. A resposta tem este formato:

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

Repasse o `guidance` para o revisor humano; ele explica em uma frase por que um post mudou de horário.

## A sequência de chamadas, de ponta a ponta

Esta é a ordem que eu uso numa rodada semanal. Tome como exemplo o fim de novembro de 2026: o Thanksgiving cai na quinta-feira, dia 26, a Black Friday no dia 27 e a Cyber Monday no dia 30. Para a marca de e-commerce, isso é uma sequência de dias `opportunity`. Para a loja haredi ou para o restaurante druso, esses dias podem ser apenas `normal`, e nem valer um post temático.

```text
get_holidays  { from: "2026-11-20", to: "2026-12-05", traditions: <união de todos os perfis desta rodada> }

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" }

ler as calendar_notes do post retornado
  se alguma entrada for avoid ou sensitive para uma tradição do perfil desta conta:
    cancel_post, escolher outro horário, agendar de novo e registrar o motivo
```

Primeiro, o `per_channel` permite que um mesmo post leve uma legenda diferente para cada conta; assim, a página dos Estados Unidos pode falar do fim de semana de Thanksgiving, enquanto a página da Europa fala de Black Friday sem o enquadramento americano. Escrevi mais sobre isso em [variação de legendas por conta](/en/blog/caption-variation-per-account-with-ai).

Segundo, um post tem um único horário de agendamento. Quando dois públicos do mesmo grupo divergem sobre um dia, a legenda não resolve. Separe-os em posts diferentes, com horários diferentes.

As `calendar_notes` voltam em todo post retornado por `create_post`, `get_post` e `schedule_post`, listando os feriados do dia agendado daquele post com as respectivas recomendações. Elas pegam o que escapou no planejamento, inclusive um horário que alguém mudou à mão.

## Por que "começa na véspera" quebra verificações ingênuas de data

Os feriados judaicos começam ao pôr do sol da véspera da data que aparece no calendário. A [explicação do movimento reformista](https://reformjudaism.org/learning/answers-jewish-questions/why-do-jewish-holidays-begin-night) remonta isso à narrativa da criação, em que a tarde vem antes da manhã. O dia islâmico também começa ao pôr do sol.

Um agente que compara só datas vai errar de um jeito previsível. O calendário mostra o Yom Kipur em uma data. O agente confere uma promoção agendada para as 19h da data anterior, não vê conflito e publica bem no começo do jejum.

Em Israel, os dois dias de memória pesam ainda mais. O Dia da Memória dos soldados mortos começa ao pôr do sol da noite anterior, e [os locais de entretenimento ficam fechados por lei](https://www.jewishvirtuallibrary.org/yom-hazikaron-israeli-memorial-day) durante o dia. No Dia da Memória do Holocausto, [os locais de entretenimento público ficam fechados por lei](https://en.wikipedia.org/wiki/Yom_HaShoah) na véspera e no próprio dia. Uma marca que publica uma promoção descontraída nessa noite não infringe lei nenhuma, mas o público percebe.

A minha regra nas instruções do agente é simples: nos dias `avoid` e `sensitive`, a tarde e a noite da véspera contam como parte do dia. Nos dias `opportunity`, o início à noite joga a seu favor, porque uma saudação publicada antes de o feriado começar chega na hora certa.

## Por que as datas islâmicas aparecem como aproximadas?

O Shager calcula as datas islâmicas a partir do calendário Umm al-Qura e as marca com `approximate: true`. O Umm al-Qura é o calendário oficial da Arábia Saudita e é calculado com antecedência, enquanto o início dos meses religiosos depende da observação da lua crescente. [O The New Arab cita o antigo site do próprio calendário](https://www.newarab.com/news/will-saudi-arabia-announce-wrong-date-ramadan) dizendo que ele pode não coincidir com a visibilidade real da lua. Os países também aplicam critérios diferentes de observação, então [o Eid pode cair em dias diferentes em cada país](https://www.aljazeera.com/news/2023/3/16/infographic-when-is-ramadan-2023).

A diferença é de cerca de um dia. Para a rede de clínicas, isso significa preparar a saudação de Eid al-Fitr como rascunho com antecedência e agendá-la depois do anúncio local, ou escrevê-la de um jeito que ainda funcione se sair um dia antes. Num dia `sensitive` aproximado, deixe um dia de margem de cada lado. Para públicos espalhados por vários países, não presuma que uma única data serve para todos.

## Um prompt para adaptar

```text
Antes de agendar qualquer coisa nesta semana:
1. Leia o perfil de público de cada cliente e liste as tradições. Se um perfil não tiver nenhuma, pare e me pergunte.
2. Chame get_holidays uma única vez para a semana toda, com a união dessas tradições.
3. avoid: nenhum post promocional para esse público, inclusive na tarde e na noite da véspera.
4. sensitive: só tom respeitoso. Sem descontos, sem humor, sem contagem regressiva.
5. opportunity: proponha uma saudação ou um post temático, escrito separadamente para cada conta com per_channel.
6. approximate=true: mantenha um dia de margem ou espere o anúncio local.
7. Depois do schedule_post, leia as calendar_notes. Se houver conflito, cancele, reagende e me diga o que mudou.
```

Combine com as regras de horário de [estratégia de agendamento para agentes](/en/blog/scheduling-strategy-for-agents), para que offsets e feriados sejam tratados na mesma passada.

## Checklist antes de cada rodada agendada

1. Toda conta tem um perfil de público com uma lista explícita de tradições.
2. Uma única chamada `get_holidays` cobre todo o período da rodada.
3. Um dia `avoid` também bloqueia a noite anterior.
4. Um dia `sensitive` muda o tom, e não só o horário.
5. Os posts `opportunity` são escritos para cada público, nunca uma saudação genérica para todos.
6. Datas aproximadas ganham um dia de margem.
7. Públicos mistos num dia controverso são separados em posts diferentes.
8. Depois do agendamento, o agente lê as `calendar_notes` e informa cada mudança que fez.

Dias de descanso semanal, como o Shabat, são uma regra fixa, e não uma entrada do calendário; por isso, coloque-os no perfil de público como faixas de horário bloqueadas.

Se o seu agente ainda não está conectado, a [página de entrada para agentes](/en/agents) mostra a configuração passo a passo. Depois que estiver, o primeiro trabalho útil é pequeno: adicione a linha de tradições ao perfil de cada cliente e rode `get_holidays` para os próximos dois meses, para ver o que vem pela frente.

## Perguntas frequentes

### O Shager bloqueia o agendamento num dia avoid?

Não. A recomendação é uma informação, devolvida pelo `get_holidays` e pelas `calendar_notes` de cada post. A decisão fica com o agente e com quem aprova o trabalho dele, porque o mesmo dia pode ser solene para um público e comum para outro.

### Como o agente sabe quais tradições valem para uma conta?

Ele não deve adivinhar pelo nome da empresa ou pela cidade. Escreva as tradições no perfil de público de cada cliente e instrua o agente a parar e perguntar quando essa linha estiver faltando.

### Uma marca global de e-commerce precisa se preocupar com feriados religiosos?

Precisa, principalmente nos mercados maiores. Agrupe as contas por mercado, confira cada grupo com as datas comerciais e com as tradições mais comuns naquele mercado, e escreva as saudações por grupo. Um post de Natal é uma oportunidade em um mercado e irrelevante, ou até constrangedor, em outro.

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