איך סוכן AI מתזמן פוסטים לפי החגים של כל קהל, ולא רק לפי לוח אחד?
סוכן שמפרסם לעשרות חשבונות צריך להתאים כל קהל למסורת שלו. כך עובדים עם לוח החגים של שַׁגֵּר, הכלי get_holidays והשדה calendar_notes בלי פוסט צורם ביום אבל.
7 דק׳ קריאה

סוכן שמתזמן פוסטים לעשרות חשבונות צריך לדעת לכל חשבון אילו מסורות חשובות לקהל שלו, ולבדוק כל מועד מול החגים של המסורות האלה לפני שהוא לוחץ על תזמון. בְּשַׁגֵּר זה עובד בשתי שכבות: הכלי get_holidays מחזיר את החגים בטווח תאריכים עם המלצת פרסום לכל יום, וכל פוסט שנוצר או מתוזמן חוזר עם השדה calendar_notes, שמראה מה קורה ביום שבו הוא ייצא. ההתאמה בין קהל למסורת נשארת אצלכם ואצל הסוכן, וזה בדיוק החלק שאסור לדלג עליו.
למה לוח חגים אחד לא מספיק לסוכנות?
תחשבו על חמישה לקוחות שיושבים באותה סביבת עבודה: עסק משפחתי בכפר דרוזי בגליל, רשת מרפאות שרוב המטופלים שלה בחברה הערבית, חנות שמוכרת לקהל חרדי, מרכז קהילתי לדוברי רוסית שחלק מהקהל שלו חוגג לפי הכנסייה האורתודוקסית, ומותג מסחר מקוון שמוכר לאירופה ולארצות הברית. אותו יום שלישי יכול להיות יום רגיל לארבעה מהם ויום שבו פוסט מבצע ייראה רע מאוד אצל החמישי.
אדם שמנהל חמישה לקוחות זוכר את זה בראש. סוכן שמנהל מאה חשבונות לא זוכר שום דבר שלא כתבתם לו. לכן כל מי שמריץ סוכן אחד על הרבה לקוחות צריך לשמור לכל לקוח פרופיל קהל קצר, ובו שורה אחת שחשובה כאן: אילו מסורות רלוונטיות לקהל הזה.
מה יש בלוח החגים של שַׁגֵּר?
הלוח מכסה את המסורות הגדולות: יהודית וישראלית, מוסלמית, נוצרית מערבית, נוצרית אורתודוקסית, דרוזית, בהאית, הינדית, בודהיסטית, סיקית, ג'יינית, סינית ופרסית. בנוסף יש בו ימים בינלאומיים ומסחריים כמו ולנטיין, יום האישה, יום האם ויום האב האמריקאיים, האלווין, יום הרווקים, חג ההודיה, בלאק פריידיי, סייבר מאנדיי וראש השנה האזרחית.
לכל יום מוצמדת המלצת פרסום באחת מארבע רמות:
| המלצה | מה היא אומרת | דוגמאות |
|---|---|---|
avoid |
לא לפרסם תוכן שיווקי לקהל הזה | יום כיפור, יום הזיכרון לשואה ולגבורה, יום הזיכרון לחללי מערכות ישראל |
sensitive |
רק תוכן מכבד ומאופק | צומות, יום שישי הטוב, עאשורא, יום ערפה, ליילת אל קדר |
opportunity |
מקום לברכה או לפוסט בנושא היום | עיד אל פיטר, חג המולד, דיוואלי, ראש השנה הסיני, בלאק פריידיי |
normal |
אין סיבה לשנות את התוכנית | שאר הימים |
באפליקציה עצמה הלוח מציג את כל המסורות עם מסנן, וכל יום צבוע לפי ההמלצה שלו. זה נוח לאדם שרוצה להסתכל על חודש שלם. סוכן צריך את אותו מידע בפורמט שהוא יכול לקרוא.

איך הסוכן מושך את החגים?
דרך שרת MCP זה הכלי get_holidays, ודרך REST זו אותה פעולה בדיוק, כפי שמתוארת במפרט OpenAPI:
curl -s "https://app.shager.ai/api/v1/holidays?from=2026-11-01&to=2026-12-31&traditions=jewish,muslim&language=he" \
-H "Authorization: Bearer $SHAGER_API_KEY"
כשלא שולחים את from ואת to, הטווח הוא מהיום ועוד 60 יום, והטווח המקסימלי הוא 400 יום. הפרמטר traditions מצמצם את התשובה למסורות שביקשתם, והפרמטר language קובע אם שמות החגים יחזרו בעברית או באנגלית. התשובה נראית כך:
{
"data": {
"from": "2026-11-01",
"to": "2026-12-31",
"note": "...",
"holidays": [
{
"date": "YYYY-MM-DD",
"tradition": "muslim",
"name": "...",
"key": "...",
"advice": "sensitive",
"guidance": "...",
"approximate": true
}
]
}
}
השדה guidance הוא משפט הסבר קצר שהסוכן יכול להעביר הלאה לאדם שמאשר. השדה approximate מופיע בתאריכים שעוד עשויים לזוז, ועליו בהמשך.
רצף העבודה: מהחגים ועד פוסט מתוזמן
ככה נראה סבב תזמון אחד אצלנו, בסדר הזה:
1. get_holidays { from: "2026-11-01", to: "2026-11-30", traditions: "jewish,muslim,druze", language: "he" }
2. create_post {
workspace_id: "ws_north",
channel_ids: ["ch_druze_village_fb", "ch_clinic_nazareth_ig"],
caption: "...",
per_channel: [
{ channel_id: "ch_druze_village_fb", caption: "..." },
{ channel_id: "ch_clinic_nazareth_ig", caption: "..." }
],
media_ids: ["med_7c21"]
}
3. schedule_post { workspace_id: "ws_north", post_id: "pst_41b0", schedule_at: "2026-11-17T10:00:00+02:00" }
4. קריאת calendar_notes מהתשובה. אם יש שם יום avoid או sensitive במסורת של אחד החשבונות, cancel_post ותזמון מחדש.
הצעד הראשון קורה לפני שהסוכן כותב מילה. הוא מושך את החגים רק של המסורות שמופיעות בפרופילים של החשבונות בסבב, ומסמן ימים אסורים מראש. הצעד השני משתמש בשדה per_channel, שמאפשר כיתוב שונה לכל חשבון. זה המקום להוסיף ברכה לחג בחשבון אחד ולהשאיר את השני נקי, כמו שהסברתי במאמר על התאמת כיתוב לכל חשבון.
הצעד הרביעי הוא רשת ביטחון. כל פוסט שחוזר מהכלים create_post, get_post וגם schedule_post כולל את calendar_notes, רשימת החגים שחלים ביום המתוזמן שלו עם ההמלצה לכל אחד. גם אם הסוכן פספס משהו בצעד הראשון, למשל כי מישהו שינה מועד ידנית, הוא רואה את זה כאן.
נקודה אחת שקל לפספס: לפוסט אחד יש מועד אחד. אם ביום מסוים חשבון אחד בקבוצה נמצא ביום avoid והשאר לא, per_channel לא יפתור את זה. צריך לפצל לשני פוסטים, אחד לכל קבוצת קהל, עם מועדים שונים.
למה זה משנה ש"החג מתחיל בערב"?
ביהדות כל יום מתחיל בשקיעה, וחג שמופיע בלוח בתאריך מסוים מתחיל בערב שלפניו. האתר של התנועה הרפורמית מסביר שזה נובע מסיפור הבריאה, שבו הערב קודם לבוקר. גם היום המוסלמי מתחיל בשקיעה.
במחשבון של סוכן זה יוצר באג שקט. הלוח אומר שיום כיפור חל בתאריך מסוים, הסוכן בודק את התאריך של הפוסט, רואה תאריך אחר, ומתזמן פוסט מבצע לשבע בערב של היום הקודם. הפוסט ייצא בדיוק בתוך החג.
בימי הזיכרון בישראל העניין חמור יותר כי הוא מעוגן בחוק. לפי הספרייה היהודית הווירטואלית, יום הזיכרון לחללי מערכות ישראל מתחיל בשקיעה בערב שלפני, ומקומות בילוי סגורים בו על פי חוק. גם ביום השואה, מקומות בידור ציבוריים סגורים על פי חוק בערב היום וביום עצמו. מותג שמפרסם באותן שעות פוסט עליז עם קוד הנחה לא עובר על החוק, אבל הקהל שלו יזכור.
הכלל שאני כותב בהוראות: ביום avoid או sensitive, גם אחר הצהריים והערב של היום הקודם נחשבים חלק ממנו. ביום opportunity ההפך עובד לטובתכם, כי ברכה שעולה לפני כניסת החג מגיעה בזמן.
למה תאריכים מוסלמיים מסומנים כמשוערים?
שַׁגֵּר מחשב את התאריכים המוסלמיים לפי לוח אום אל קורא, הלוח הרשמי של ערב הסעודית, ומסמן אותם approximate: true. הסיבה היא שהלוח מחושב מראש, בעוד שתחילת החודשים הדתיים נקבעת לפי ראיית הירח. כתבה באתר The New Arab מצטטת את אתר הלוח עצמו, שכתב שהוא עשוי לא להתאים לנראות בפועל של הסהר. בנוסף, מדינות וקהילות שונות משתמשות בקריטריונים שונים לראייה, ולכן חג עשוי להתחיל ביום אחר במדינות שונות.
בפועל המשמעות היא יום אחד לכאן או לכאן. מה שהסוכן צריך לעשות עם זה:
- ביום
sensitiveמשוער, להשאיר מרווח של יום לפני ויום אחרי. - ביום
opportunityמשוער כמו עיד אל פיטר, להכין את הברכה כטיוטה מראש ולתזמן אותה רק אחרי ההכרזה המקומית, או לנסח אותה כך שתתאים גם ליום שלפני. - אם ללקוח יש קהל בכמה מדינות, לא להניח שהתאריך זהה בכולן.
הנחיה לדוגמה לסוכן
זו ההנחיה שאני נותן לסוכן לפני סבב חודשי. היא נכנסת לקובץ ההוראות שלו, יחד עם הכללים מאסטרטגיית התזמון לסוכנים:
לפני שאתה מתזמן פוסט כלשהו החודש:
1. קרא את פרופיל הקהל של כל לקוח ורשום אילו מסורות רלוונטיות לו.
2. הפעל את get_holidays לטווח של כל החודש, עם המסורות האלה בלבד, language=he.
3. ימים עם advice=avoid: אין פוסט שיווקי לחשבונות של הקהל הזה, כולל אחר הצהריים והערב של היום הקודם.
4. ימים עם advice=sensitive: רק תוכן מכבד, בלי מבצעים, בלי הומור.
5. ימים עם advice=opportunity: הצע ברכה או פוסט בנושא, בכיתוב נפרד לכל חשבון בתוך השדה per_channel.
6. אם approximate=true, השאר יום מרווח או המתן להכרזה.
7. אחרי schedule_post, קרא את calendar_notes. אם יש התנגשות, בטל ותזמן מחדש, ודווח לי מה שינית ולמה.
רשימת בדיקה לפני כל תזמון
- לכל חשבון יש פרופיל קהל עם רשימת מסורות, ולקוח בלי רשימה לא מתוזמן עד שמישהו ממלא אותה.
- החגים נמשכים פעם אחת לכל הסבב, לטווח שמכסה את כל המועדים.
- יום
avoidחוסם גם את הערב שלפניו. - יום
sensitiveמקבל טון אחר, לא רק מועד אחר. - ימי
opportunityנכתבים בנפרד לכל קהל, ולא כברכה כללית אחת לכולם. - תאריכים משוערים מקבלים מרווח של יום.
- כשקהלים באותה קבוצה חלוקים על יום מסוים, הפוסט מתפצל לשניים.
- אחרי כל תזמון הסוכן קורא את
calendar_notesומדווח על כל שינוי.
שבת, אגב, היא כלל קבוע ולא אירוע בלוח. ללקוח שהקהל שלו שומר שבת כדאי לכתוב את זה בפרופיל כחלון זמן אסור, בנפרד מהחגים.
אם הסוכן שלכם עוד לא מחובר, עמוד הסוכנים מסביר איך מתחילים. אחרי החיבור, הצעד הראשון שווה עשר דקות: לכתוב לכל לקוח את שורת המסורות בפרופיל ולהריץ get_holidays על החודשיים הקרובים.
שאלות נפוצות
האם שַׁגֵּר חוסם תזמון ביום שמסומן avoid?
ההמלצה היא מידע, לא חסימה. שַׁגֵּר מחזיר אותה בתשובה של get_holidays ובשדה calendar_notes של כל פוסט, וההחלטה נשארת אצל הסוכן ואצל מי שמאשר. זה מכוון, כי אותו יום יכול להיות אסור לקהל אחד ורגיל לגמרי לקהל אחר.
איך הסוכן יודע לאיזו מסורת שייך כל חשבון?
הוא לא יודע לבד, ולא כדאי שינחש לפי שם העסק או לפי העיר. כתבו לכל לקוח בפרופיל הקהל את רשימת המסורות במפורש, ותנו לסוכן לקרוא אותה לפני כל סבב. כשהרשימה חסרה, ההוראה הנכונה היא לעצור ולשאול.
מה עושים עם מותג בינלאומי שהקהל שלו מגוון?
מותג כזה צריך בעיקר את הימים הבינלאומיים והמסחריים, ובנוסף את המסורות של השווקים הגדולים שלו. כדאי לפצל את החשבונות שלו לקבוצות לפי שוק, ולבדוק כל קבוצה מול המסורות שלה. ככה ברכה לחג המולד לא תצא לחשבון שפונה לקהל שחוגג באותו שבוע משהו אחר לגמרי.