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

סוכן שמתזמן פוסטים צריך ארבעה כללים, לא יותר: לכתוב כל מועד בפורמט ISO 8601 עם היסט מפורש, לבדוק את המועד מול לוח החגים של הלקוח, להשאיר זמן לאישור ולפריסה המדורגת, ולבדוק אחרי הפרסום שהכל באמת עלה. רוב התקלות שראיתי בתזמון אוטומטי לא נבעו מהמודל אלא מהוראה עמומה כמו "תפרסם מחר בבוקר".
המאמר הזה מסביר איך להפוך את ההוראה העמומה לכללים שסוכן יכול לבצע, עם הכלים של שַׁגֵּר: create_post עם schedule_at, schedule_post וcancel_post.
איך הסוכן כותב מועד כך שלא יהיו הפתעות?
השדה schedule_at מקבל מועד בפורמט ISO 8601 עם היסט, למשל 2026-10-20T09:00:00+03:00. המפרט בOpenAPI של שַׁגֵּר לא מקבל מועד בלי היסט או בלי Z, וזה מכוון. מועד בלי אזור זמן הוא ניחוש, וסוכן שרץ על שרת באירופה ינחש אחרת מסוכן שרץ על המחשב שלכם.
בישראל יש פח מוכר: מעבר שעון. לפי מסד אזורי הזמן של IANA, שעון הקיץ בישראל מסתיים השנה ביום ראשון, 25 באוקטובר 2026, וממנו ואילך ההיסט של Asia/Jerusalem הוא +02:00 ולא +03:00. סוכן שמעתיק את ההיסט מהפוסט של שבוע שעבר יפרסם שעה מוקדם או מאוחר מדי. ההוראה הנכונה היא לחשב את ההיסט לכל תאריך מחדש, לא להעתיק אותו.
סביבת עבודה חדשה בְּשַׁגֵּר נוצרת עם אזור זמן Asia/Jerusalem כברירת מחדל, ואפשר להעביר timezone אחר בcreate_workspace ללקוח בחו"ל. כדאי שהסוכן יקרא את אזור הזמן של סביבת העבודה ויעבוד לפיו, ולא לפי אזור הזמן של המחשב שעליו הוא רץ.
טיוטה קודם, תזמון אחר כך
יש שתי דרכים לתזמן בְּשַׁגֵּר. אפשר לקרוא לcreate_post עם schedule_at, ואז הפוסט נבדק ומתוזמן מיד. ואפשר ליצור טיוטה בלי schedule_at, להציג אותה, ורק אחר כך לקרוא לschedule_post עם המועד. אני כמעט תמיד בוחר בדרך השנייה, משתי סיבות.
הראשונה היא שהטיוטה נותנת נקודת עצירה. אדם יכול להסתכל, הלקוח יכול לאשר, והסוכן יכול לתקן. השנייה היא שschedule_post נכשל עם סיבה ברורה אם חשבון כלשהו היה דוחה את הפוסט או אם חסר אישור לקוח, כך שהבדיקה קורית ברגע שבו עוד אפשר לתקן בנחת.
create_post {
"workspace_id": "ws_dental_group",
"label": "טיפ שבועי: הלבנה",
"caption": "...",
"group_ids": ["grp_all_clinics"],
"media_ids": ["med_31ff"]
}
schedule_post {
"workspace_id": "ws_dental_group",
"post_id": "pst_9a02",
"schedule_at": "2026-10-27T08:30:00+02:00"
}
שימו לב שהתאריך בדוגמה הוא אחרי סוף שעון הקיץ, ולכן ההיסט הוא +02:00.
תזמון ופרסום דורשים מפתח עם הרשאת publish. סוכן בסנדבוקס שעוד לא נתבע יקבל שגיאה sandbox_unclaimed, וזה בדיוק ההתנהגות הרצויה. על ההרשאות בהרחבה כתבתי במאמר על מפתחות, הרשאות ויומן פעולות.

כמה זמן לוקחת הפריסה המדורגת?
מועד הפרסום הוא המועד שבו מתחיל הפרסום, לא המועד שבו כל החשבונות כבר מפורסמים. שַׁגֵּר מפרסם בכל חשבון בזמן מדורג משלו: בין חשבון לחשבון באותה רשת יש הפסקה אקראית בטווח stagger_seconds, שברירת המחדל שלו היא [30, 90] שניות.
הסוכן צריך לדעת לחשב את זה. נוסחה פשוטה שמספיקה לתכנון: מספר החשבונות ברשת כפול ממוצע הטווח. עם ברירת המחדל הממוצע הוא שישים שניות, כך שארבעים עמודי פייסבוק יתפרסו על פני כארבעים דקות. אם הלקוח רוצה שהכל יהיה באוויר עד עשר, הסוכן מתחיל קודם.
| מספר חשבונות ברשת | טווח stagger_seconds |
זמן פריסה משוער |
|---|---|---|
| 10 | [30, 90] |
כעשר דקות |
| 40 | [30, 90] |
כארבעים דקות |
| 40 | [60, 180] |
כשמונים דקות |
| 120 | [30, 90] |
כשעתיים |
הטבלה היא חשבון, לא מדידה. בפועל העלאת וידאו לוקחת זמן נוסף בצד הרשת. ההמלצה שלי לסוכנים היא לא לקצר את הטווח מתחת לברירת המחדל כדי "לסיים מהר". הפריסה המדורגת היא חלק מההגנה על החשבונות, כמו שהסברתי בכללי הבטיחות לסוכנים שמפרסמים בהיקף.
חגים, שבת ומועדים מקומיים
לוח השנה העברי זז ביחס ללוח הלועזי, ולכן "הפוסט של ראש השנה" לא נופל באותו תאריך כל שנה. בְּשַׁגֵּר יש לוח עם חגי ישראל, אבל הסוכן צריך גם הוראה מפורשת מה לעשות סביבם. דוגמה לכללים שאני כותב בהוראות הקבועות של סוכן שעובד עם לקוחות ישראלים:
כללי תזמון ללקוחות בישראל:
1. אל תתזמן פוסטים מכניסת שבת ועד צאתה ללקוחות שמסומנים "שומרי שבת" בבריף.
2. ערב חג נחשב כמו ערב שבת. בדוק את התאריך בלוח החגים לפני כל תזמון.
3. ביום הזיכרון וביום השואה אל תתזמן תוכן שיווקי. אם יש פוסט מתוזמן, עצור והתייעץ איתי.
4. פוסט ברכה לחג מתוזמן לבוקר של ערב החג, לא ליום החג עצמו.
5. אם המועד שביקשתי נופל על אחד מהמקרים האלה, אל תזיז אותו בעצמך. הצע שני מועדים חלופיים.
הסעיף השלישי חשוב במיוחד. סוכן לא יודע לבד שקמפיין מבצעים ביום הזיכרון הוא טעות, אלא אם אמרתם לו.
מה עושים כשצריך לבטל?
cancel_post מבטל תזמון של פוסט שעוד לא התחיל להתפרסם, והפוסט נשאר טיוטה מאושרת שאפשר לתזמן מחדש. אחרי שהפרסום התחיל, חלק מהחשבונות כבר מפורסמים, וביטול לא מחזיר אותם. לכן ההוראה לסוכן צריכה להיות ברורה: אירוע חדשותי, תקלה אצל הלקוח או בקשה דחופה לעצירה מתחילים בlist_posts עם status של SCHEDULED, ואז cancel_post לכל פוסט רלוונטי.
curl "https://app.shager.ai/api/v1/workspaces/ws_dental_group/posts?status=SCHEDULED&limit=50" \
-H "Authorization: Bearer $SHAGER_API_KEY"
curl -X POST "https://app.shager.ai/api/v1/workspaces/ws_dental_group/posts/pst_9a02/cancel" \
-H "Authorization: Bearer $SHAGER_API_KEY"
להשאיר זמן לאישור לקוח
אם סביבת העבודה מוגדרת עם approval_required, פוסט לא יתוזמן בלי אישור. סוכן שמכין את התוכן ביום ראשון לפוסט של יום שני בבוקר מכניס את הלקוח ללחץ מיותר. כלל אצבע שעובד אצלנו: הטיוטה ובקשת האישור יוצאות לפחות יומיים עסקים לפני המועד, והסוכן בודק את סטטוס הפוסטים עם list_posts בבוקר שלפני. על תהליך האישור עצמו יש מאמר נפרד.
בדיקה אחרי המועד
תזמון לא נגמר בתזמון. הסוכן צריך לחזור לפוסט אחרי שהפריסה הסתיימה, לקרוא לget_post, ולוודא שכל חשבון במצב פורסם. פוסט במצב PARTIALLY_PUBLISHED אומר שחלק מהחשבונות נכשלו, וget_post מחזיר את הסיבה לכל אחד. זו נקודה שבה סוכן חוסך עבודה אמיתית: הוא רואה את הכשל לפני הלקוח.
גם מגבלת הקצב רלוונטית כאן. שַׁגֵּר מאפשר 120 בקשות לדקה לכל מפתח, כך שסוכן שבודק מאה פוסטים בלולאה צריך לפזר את הבקשות או לחכות כשהוא מקבל rate_limited.
כשהכללים האלה כתובים בהוראות של הסוכן, אפשר להעביר לו את לוח התוכן השבועי כולו. הצעד הבא הוא לארוז אותם כשגרת הפצה שבועית בתוך סקיל, ואם עוד לא חיברתם סוכן, עמוד הסוכנים מתחיל משם.
שאלות נפוצות
מה ההבדל בין schedule_at בתוך create_post לבין schedule_post?
שניהם מתזמנים. schedule_at בתוך create_post יוצר ומתזמן בקריאה אחת, וschedule_post מתזמן טיוטה או פוסט מאושר שכבר קיימים. כשיש אדם או לקוח שצריך לראות את הפוסט לפני, עדיף ליצור טיוטה ולתזמן אחר כך.
האם אפשר לתת לסוכן לבחור את שעת הפרסום לבד?
אפשר, אבל רק בתוך מסגרת שהגדרתם: חלונות זמן מותרים לכל לקוח, ימים אסורים ורשימת חגים. בלי מסגרת כזו הסוכן ימציא הנחות על "השעה הטובה ביותר" שאין לו נתונים לגביהן.
מה קורה אם הסוכן שולח מועד בעבר?
כדאי שההוראות יחייבו את הסוכן לבדוק את השעה הנוכחית באזור הזמן של סביבת העבודה לפני כל תזמון, ולעצור אם המועד כבר עבר. זה זול יותר מלגלות אחר כך שהפוסט לא יצא כמתוכנן.