פלייבוק חינמי · כלי ב-60 דקות

מערכי שיעור לשנה שלמה עם AI: תוכנית שנתית, מצגות ודפי עבודה בתוך שעה

ההבטחה: בתוך שעה יהיו לכם תוכנית שנתית בטבלה, מערך שיעור, מצגת ודף עבודה לשיעור הראשון.

  • אביעד גינדי

הבהרה: המלצות כלליות בלבד, לא ייעוץ מקצועי. האחריות לבדוק את התוכן ואת התוצרים לפני שימוש בכיתה היא שלכם. מעלים לכלי AI רק ספר שיש לכם רישיון להשתמש בו, ולא מכניסים שמות תלמידים או פרטים מזהים. הנוסח המלא בסוף.

למי זה מתאים

למורות ולמורים שפותחים שנה עם ספר לימוד, תוכנית לימודים ושעות שבועיות, וצריכים להפוך את כל זה לתוכנית עבודה. לרכזי מקצוע שבונים תוכנית אחידה לשכבה. ולמי שמלמד מקצוע או שכבה בפעם הראשונה ורוצה נקודת התחלה מסודרת במקום דף ריק.

לא צריך לדעת לתכנת. משתמשים בכלי AI כללי שכבר יש לכם, ומעתיקים קוד אחד לגיליון Google, פעם אחת. משם הכל עובד מתפריט.

חשוב לדעת: התהליך הזה לא מחליף את שיקול הדעת שלכם. ה-AI מציע חלוקה, מבנה ושאלות. אתם מכירים את הכיתה, ואתם מחליטים מה נכנס לשיעור.

מה יהיה לכם בסוף השעה

  • רשימת יחידות ונושאים מתוך סעיפי תוכנית הלימודים שהדבקתם, בלי נושאים שה-AI המציא.
  • מפת ספר: לכל יחידה, טווח העמודים בספר, המושגים והתרגילים שכבר יש בו.
  • תוכנית שנתית בטבלה: שבוע, יחידה, נושא, עמודים והערכה, לפי לוח החופשות שלכם.
  • מערך שיעור של 45 דקות לשיעור הראשון, עם מטרות, מהלך וזמנים.
  • מצגת Google Slides של 8 עד 12 שקפים, עם הערות למורה.
  • דף עבודה Google Docs בשלוש רמות: בסיס, ליבה ואתגר.
  • גיליון Google עם לשוניות "תוכנית שנתית", "מפת ספר" ו"שיעורים", ותפריט שיוצר מצגת ודף עבודה לכל שיעור שתבחרו.

מה צריך

  • חשבון Google (Sheets, Slides, Docs ו-Drive). חשבון של בית הספר עדיף, אם יש.
  • כלי AI כללי שמאפשר להעלות קבצים לפרויקט: ChatGPT, Claude או Gemini. בחשבון חינמי יש לפעמים מגבלה על גודל הקובץ או על מספר ההודעות.
  • סעיפי תוכנית הלימודים של המקצוע והכיתה, כטקסט שאפשר להעתיק.
  • ספר הלימוד כקובץ PDF, רק אם יש לכם רישיון להשתמש בו כך. אם אין, עובדים בלי להעלות את הספר: מקלידים לבד את תוכן העניינים ואת טווחי העמודים.
  • לוח החופשות של בית הספר ומספר השעות השבועיות במקצוע.

שני כללים שלא מוותרים עליהם:

  • זכויות יוצרים: מעלים לכלי AI רק ספר או PDF שיש לכם רישיון אליו, ולשימוש בכיתה שלכם. לא מפרסמים קטעים מהספר מחוץ לכיתה: לא באתר, לא ברשת חברתית ולא בקבוצה פתוחה. המצגות ודפי העבודה מפנים לעמודים בספר, ולא מעתיקים אותו.
  • פרטיות: לא מכניסים לכלי AI ולגיליון שמות תלמידים, מספרי תעודת זהות או ציונים. כשצריך להבחין בין תלמידים או קבוצות, כותבים "קבוצה א'" או "תלמיד 1".

כלל שלישי, לעבודה עם ה-AI: הוא לא ממציא. סעיף שלא הדבקתם לא נכנס לתוכנית, ועמוד שלא נמצא בקובץ לא נכנס למפה. מה שחסר מסומן [להשלים] או [לא נמצא בספר], ואתם משלימים. עדיף חור גלוי מאשר הפניה לעמוד שלא קיים.


הפלייבוק, צעד אחרי צעד (60 דקות)

צעד 1 (8 דקות): תוכנית הלימודים, המקצוע והכיתה

מה עושים: פותחים פרויקט חדש בכלי ה-AI, ונותנים לו את המסגרת: מקצוע, כיתה, שעות שבועיות וסעיפי תוכנית הלימודים, כפי שהם.

איך:

  1. ב-ChatGPT או ב-Claude: יוצרים Project חדש בשם המקצוע והשכבה, למשל "מדעים ח', תשפ״ז". ב-Gemini: יוצרים Gem חדש, או עובדים בשיחה אחת קבועה. כל העבודה של השנה תשב שם, כך שלא צריך להסביר הכל מחדש בכל פעם.
  2. מעתיקים את סעיפי תוכנית הלימודים מהמסמך הרשמי שבידכם. לא מסכמים במילים שלכם: מדביקים את הנוסח המקורי.
  3. מריצים את הפרומפט הראשון.
1. מתוכנית הלימודים לרשימת יחידות
אתה עוזר הוראה שעובד רק מהחומר שאני נותן לו.
מקצוע: [להשלים]. כיתה: [להשלים]. שעות בשבוע: [להשלים].
מספר שבועות לימוד בשנה, אחרי חופשות: [להשלים, או כתוב "לא ידוע"].

הנה סעיפי תוכנית הלימודים, כפי שהם:
[הדביקו כאן]

החזר טבלה: מספר יחידה | שם היחידה | נושאים | מושגי מפתח | מספר שעות מומלץ (אם כתוב בסעיפים).
כללים:
1. אל תוסיף יחידה, נושא או מושג שלא מופיעים בסעיפים שהדבקתי.
2. אם מספר השעות ליחידה לא כתוב, כתוב [להשלים] ואל תנחש.
3. אם סעיף לא ברור או נקטע, כתוב [להשלים] ליד השורה שלו.
4. בסוף הטבלה, רשימה קצרה של כל מה שסימנת [להשלים].

למה ככה: כלי AI יודע הרבה על תוכניות לימודים, וזו בדיוק הבעיה. אם לא תגבילו אותו, הוא ישלים נושאים מתוכנית ישנה, ממדינה אחרת או מספר אחר. הכלל "רק מה שהדבקתי" שומר אתכם בתוך התוכנית שאתם מחויבים אליה.

טעות נפוצה: להדביק רק את שמות היחידות. בלי הנושאים והמושגים, ה-AI ממלא את החסר מהידע הכללי שלו. הדביקו את הסעיפים המלאים, גם אם זה ארוך.

צעד 2 (10 דקות): מעלים את הספר ובונים מפת עמודים

מה עושים: מעלים לפרויקט את ספר הלימוד, ומבקשים מה-AI למפות אותו: לכל יחידה מהצעד הקודם, באילו עמודים היא נמצאת, אילו מושגים מופיעים שם ואילו תרגילים כבר יש בספר.

איך:

  1. בודקים שיש לכם רישיון להשתמש בקובץ כך. ספר שקיבלתם מההוצאה לשימוש מורה, או ספר דיגיטלי שבית הספר רכש, מגיעים לרוב עם תנאי שימוש. קראו אותם. אם הם אוסרים להעלות את הקובץ לשירות חיצוני, מדלגים על ההעלאה, ומקלידים את תוכן העניינים במקום.
  2. בהגדרות של כלי ה-AI, בודקים אם התוכן שלכם משמש לאימון המודל, ומכבים את האפשרות אם יש כזו.
  3. מעלים את הקובץ לפרויקט (Add files / Upload). ספר גדול מדי? מפצלים אותו לקבצים לפי יחידות.
  4. מריצים את הפרומפט, ואז את פרומפט הבדיקה.

שני דברים לבדוק בקובץ לפני שמתחילים:

  • ספר סרוק. אם אי אפשר לסמן מילה בקובץ ולהעתיק אותה, הוא תמונה בלי שכבת טקסט, וה-AI יקרא אותו חלקית או בכלל לא. מעבירים אותו קודם ב-OCR (זיהוי טקסט). דרך פשוטה: מעלים את ה-PDF ל-Drive ופותחים אותו עם Google Docs, או משתמשים בכלי ה-OCR של תוכנת ה-PDF שלכם.
  • מספרי עמודים. מספר העמוד בקובץ ה-PDF לא תמיד זהה למספר המודפס בספר, בגלל כריכה, הקדמה ותוכן עניינים. פתחו את הקובץ ובדקו: אם עמוד 1 המודפס הוא עמוד 9 בקובץ, כתבו את זה בפרומפט. התלמידים מחזיקים את הספר המודפס, אז עובדים לפי המספרים המודפסים.
2. מפת עמודים מהספר
בקובץ שהעליתי יש ספר לימוד שיש לי רישיון להשתמש בו בכיתה שלי.
מספרי העמודים: עמוד 1 המודפס הוא עמוד [להשלים] בקובץ. עבוד לפי המספרים המודפסים.

לכל יחידה מהטבלה שבנינו בשיחה הזאת, החזר טבלה:
יחידה | עמודים | מושגים שמופיעים בעמודים האלה | תרגילים בספר (מספר תרגיל ועמוד)

כללים:
1. כתוב רק עמודים שקיימים בקובץ. אם לא מצאת יחידה בספר, כתוב [לא נמצא בספר].
2. אל תצטט קטעים ארוכים מהספר. מספרי עמודים ומושגים מספיקים.
3. אם חלק מהקובץ לא קריא (סרוק, חתוך), כתוב באילו עמודים זה קרה.
4. בסוף: אילו נושאים מתוכנית הלימודים אין להם כיסוי בספר.
3. בדיקה מדגמית של המפה
בחר 5 שורות אקראיות מהמפה שהחזרת.
לכל אחת: כתוב את מספר העמוד, ואת המשפט הראשון בעמוד הזה, מילה במילה.
אם אתה לא בטוח, כתוב "לא בטוח" ואל תשלים.

פותחים את הספר באותם עמודים ובודקים. אם שניים מתוך חמישה לא תואמים, המפה לא אמינה: בדרך כלל בגלל הפרש במספרי העמודים או ספר סרוק. מתקנים את ההפרש ומריצים שוב.

למה ככה: המפה היא מה שהופך את התוכנית מכללית לשלכם. בזכותה כל שיעור בתוכנית מפנה לעמודים ולתרגילים שכבר יש לתלמידים ביד, ואתם לא כותבים מחדש מה שההוצאה כבר כתבה.

צעד 3 (8 דקות): תוכנית שנתית בטבלה

מה עושים: מבקשים מה-AI לחלק את היחידות על פני השבועות של השנה, לפי השעות השבועיות ולוח החופשות שלכם.

איך: מעתיקים את לוח החופשות של בית הספר (תאריכים בלבד), ומריצים את הפרומפט. לא צריך לקבל 35 שבועות בבת אחת: מבקשים קודם את השיטה ואת ארבעת השבועות הראשונים, בודקים, ורק אז את השאר.

4. תוכנית שנתית
על סמך טבלת היחידות ומפת הספר מהשיחה הזאת, בנה תוכנית שנתית.
תאריך פתיחת שנת הלימודים: [להשלים]. תאריך סיום: [להשלים].
חופשות וימים בלי לימודים: [הדביקו תאריכים].
שעות בשבוע: [להשלים]. מבחנים או משימות הערכה שכבר קבועים: [להשלים, או "אין"].

שלב א: כתוב בחמש שורות איך חילקת: כמה שבועות לכל יחידה ולמה, ואיפה השארת שבועות רזרבה לחזרה ולהשלמות.
שלב ב: החזר טבלה רק לארבעת השבועות הראשונים:
שבוע | תאריכים | יחידה | נושא | עמודים בספר | הערכה (בוחן, משימה, תוצר, או ריק)

כללים:
1. עמודים רק מהמפה. אם אין, כתוב [לא נמצא בספר].
2. אל תמציא מבחנים. הערכה רק אם ביקשתי, או כהצעה מסומנת "הצעה:".
3. השאר לפחות שבוע רזרבה אחד בכל מחצית.
אחרי שאאשר, אבקש את שאר השבועות.

למה ככה: תוכנית שנתית של 35 שורות שנוצרת בבת אחת נראית מסודרת, אבל קשה לבדוק אותה. כשהשיטה כתובה למעלה ("שישה שבועות ליחידה 1 כי היא בסיס לשאר"), קל לראות איפה החלוקה לא מתאימה לכיתה שלכם ולתקן לפני שממשיכים.

טעות נפוצה: לתכנן כל שבוע מלא. בפועל יש טיולים, ימי שיא, מבחני מיצב ושיעורים שנופלים. בלי שבועות רזרבה, התוכנית מתפרקת כבר בנובמבר.

כשהטבלה מוכנה, מעתיקים אותה (מסמנים את הטבלה בתשובה ומעתיקים) ומדביקים בלשונית "תוכנית שנתית" בגיליון שתכינו בצעד 7. אפשר גם לחכות לסוף השעה ולהדביק הכל ביחד.

צעד 4 (8 דקות): מערך שיעור של 45 דקות

מה עושים: בוחרים את השיעור הראשון מהתוכנית, ומבקשים מערך שיעור מלא. התשובה מגיעה בשני חלקים: מערך קריא בשבילכם, ושורת JSON שהגיליון יקרא בצעד 7.

5. מערך שיעור של 45 דקות
בנה מערך שיעור לשיעור [מספר] בתוכנית השנתית: [נושא], עמודים [להשלים].
אורך: 45 דקות. מספר תלמידים בכיתה: [להשלים]. ידע קודם של הכיתה: [להשלים].

חלק א, מערך קריא:
1. 2 עד 3 מטרות, כל אחת מתחילה בפועל שאפשר לבדוק ("התלמידים יסבירו...", "יזהו...").
2. מהלך השיעור עם זמנים שמסתכמים ב-45 דקות: פתיחה, הקניה, תרגול, בדיקת הבנה, סיכום.
3. ליד כל חלק: מה המורה עושה, מה התלמידים עושים, ואיזה עמוד או תרגיל בספר.
4. שאלה אחת לבדיקת הבנה בסוף, שאפשר לענות עליה בדקה.
5. התאמה אחת לתלמידים שצריכים יותר תמיכה, ואחת לתלמידים שמסיימים מהר. בלי שמות: "קבוצה א'", "תלמיד 1".

חלק ב, שורת JSON אחת, בשורה אחת, בלי טקסט לפניה או אחריה:
{"lesson":{"title":"","goals":[],"pages":""}}

כללים: עמודים ותרגילים רק מהמפה. מה שחסר: [להשלים].

למה ככה: מטרה כמו "התלמידים יבינו תאים" קשה לבדוק. "התלמידים יזהו שלושה חלקים של תא בשרטוט" אפשר לבדוק בדקה. כשהמטרות כתובות כך, גם שאלת הסיום ודף העבודה נבנים סביבן.

טעות נפוצה: לקבל מערך שבו כל החלקים מסתכמים ב-60 דקות. בדקו את סכום הזמנים. אם הוא לא 45, כתבו לו "הזמנים מסתכמים ב-X, קצר ל-45".

צעד 5 (8 דקות): מצגת של 8 עד 12 שקפים

מה עושים: באותה שיחה, מבקשים את השקפים לשיעור. ה-AI לא מעצב את המצגת: הוא כותב כותרות, נקודות והערות למורה, והסקריפט בצעד 7 יבנה מהם קובץ Google Slides.

6. שקפים לשיעור
על סמך מערך השיעור שבנית, כתוב 8 עד 12 שקפים.
לכל שקף: כותרת עד 7 מילים, 2 עד 4 נקודות קצרות (עד 12 מילים לנקודה), והערה למורה: מה אומרים או שואלים בשקף הזה.
שקף 1: מטרות השיעור. השקף האחרון: שאלת הסיום.
אל תעתיק פסקאות מהספר. הפנה לעמוד: "ראו עמוד 14".
אל תכתוב שמות של תלמידים.

החזר את ה-JSON המלא עד עכשיו, בשורה אחת, בלי טקסט לפניו או אחריו:
{"lesson":{"title":"","goals":[],"pages":""},"slides":[{"title":"","bullets":[],"notes":""}]}

למה ככה: שקף עם פסקה שלמה מעביר את תשומת הלב של הכיתה מכם לקיר. נקודות קצרות והערה למורה מחלקות את העבודה: השקף מזכיר, ואתם מסבירים. ההפניה לעמוד במקום העתקה שומרת גם על זכויות היוצרים של הספר.

צעד 6 (8 דקות): דף עבודה בשלוש רמות

מה עושים: מבקשים דף עבודה לאותו שיעור, בשלוש רמות, ומקבלים את ה-JSON הסופי שנכנס לגיליון.

7. דף עבודה בשלוש רמות
כתוב דף עבודה לשיעור הזה, בשלוש רמות:
basic (בסיס): 4 שאלות. זיהוי, השלמה, התאמה. שאלה אחת לפחות מפנה לעמוד בספר.
core (ליבה): 4 שאלות. הסבר במילים שלך, השוואה, דוגמה מהחיים.
challenge (אתגר): 2 שאלות. יישום במצב חדש, או שאלה פתוחה עם נימוק.
כל שאלה קשורה לאחת ממטרות השיעור. בלי שמות תלמידים, בלי פרטים אישיים.
אם תרגיל מהספר מתאים, הפנה אליו ("תרגיל 3 בעמוד 15") במקום להעתיק אותו.

החזר את ה-JSON המלא והסופי, בשורה אחת, בלי טקסט לפניו או אחריו:
{"lesson":{"title":"","goals":[],"pages":""},"slides":[{"title":"","bullets":[],"notes":""}],"worksheet":{"basic":[],"core":[],"challenge":[]}}

למה ככה: שלוש רמות באותו דף נותנות לכל תלמיד מקום להתחיל, בלי להכין שלושה דפים שונים. מי שמסיים את הבסיס ממשיך לליבה, ומי שמסיים מהר יש לו אתגר. ה-AI טוב בניסוח שאלות דומות ברמות שונות, וזה בדיוק החלק שלוקח הכי הרבה זמן כשעושים אותו לבד.

טעות נפוצה: להדביק את ה-JSON מהצעד הקודם במקום מזה. ה-JSON של צעד 6 הוא המלא: יש בו lesson, slides ו-worksheet. בלי slides או worksheet הסקריפט יעצור ויגיד מה חסר.

צעד 7 (10 דקות): הגיליון והסקריפט שמייצרים את הקבצים

מה עושים: פותחים גיליון Google, מדביקים את הקוד מהנספח, ומקבלים תפריט שיוצר מצגת ודף עבודה מכל שורה בלשונית "שיעורים".

איך:

  1. פותחים גיליון Google חדש ונותנים לו שם, למשל "מערכי שיעור: מדעים ח'".
  2. בגיליון: תוספים > Apps Script (Extensions > Apps Script). נפתח קובץ Code.gs.
  3. מוחקים את מה שיש בו, מדביקים את כל הקוד מהנספח שבסוף הפלייבוק, ושומרים. השורה הראשונה היא var LANG = 'he';: משאירים אותה כך לתפריט ולכותרות בעברית.
  4. למעלה בוחרים את הפונקציה setup ולוחצים הפעלה (Run). Google תבקש הרשאות לגיליון, למצגות ולמסמכים. מאשרים. אם מופיע "Google לא אימתה את האפליקציה הזאת", לוחצים מתקדם ואז מעבר אל הפרויקט. זה הקוד שלכם, בחשבון שלכם.
  5. חוזרים לגיליון ומרעננים. מופיעות שלוש לשוניות, "תוכנית שנתית", "מפת ספר" ו"שיעורים", ותפריט חדש בשם מערכי שיעור.
  6. מדביקים את התוכנית השנתית מצעד 3 ואת מפת הספר מצעד 2 ללשוניות שלהן, מתא A2.
  7. בלשונית "שיעורים", בשורה 2: שבוע, נושא ועמודים. בעמודה D (JSON): לוחצים פעמיים על התא, ורק אז מדביקים את ה-JSON מצעד 6. ככה הוא נשאר בתא אחד.
  8. עומדים על השורה, ובתפריט: מערכי שיעור > מצגת ודף עבודה לשורה.
  9. אחרי כמה שניות מופיעה הודעה, ובעמודות E ו-F נכתבים קישורים למצגת ולדף העבודה. הקבצים נשמרים ב-Drive שלכם, בתיקייה הראשית. הטקסט במצגת מיושר לימין. אם התבליטים עדיין מופיעים בצד שמאל, הפיכת הכיוון לימין-לשמאל היא לחיצה אחת: מסמנים את הטקסט ולוחצים על כפתור הכיוון מימין לשמאל בסרגל הכלים (או עיצוב > יישור וכניסות).
לשונית שיעורים, לדוגמה (מופרד בטאבים)
שבוע	נושא	עמודים	JSON	מצגת	דף עבודה	נוצר
1	[נושא]	[עמודים]	[ה-JSON מצעד 6]			
2	[נושא]	[עמודים]	[ה-JSON מצעד 6]			

למה ככה: הסקריפט לא שולח מיילים ולא משתף קבצים עם אף אחד. הוא רק יוצר שני קבצים בתיקייה שלכם וכותב את הקישורים לשורה. אתם פותחים, עוברים, מתקנים, ומחליטים מה מגיע לכיתה. אם רוצים לשתף את המצגת עם עמית או עם הכיתה, עושים את זה ידנית מ-Drive, כמו כל קובץ אחר.

השיעור הבא: מכאן כל שיעור לוקח כמה דקות. באותה שיחה בפרויקט מריצים את הפרומפט הזה, מדביקים את ה-JSON בשורה חדשה, ומפעילים את התפריט.

8. השיעור הבא בתוכנית
עכשיו שיעור [מספר] בתוכנית השנתית: [נושא], עמודים [להשלים].
באותו מבנה כמו השיעור הקודם: מטרות, 8 עד 12 שקפים עם הערות למורה, ודף עבודה בשלוש רמות.
התחל בשקף שמחבר לשיעור הקודם בשאלה אחת.
עמודים ותרגילים רק מהמפה. בלי שמות תלמידים.
החזר רק את ה-JSON המלא, בשורה אחת:
{"lesson":{"title":"","goals":[],"pages":""},"slides":[{"title":"","bullets":[],"notes":""}],"worksheet":{"basic":[],"core":[],"challenge":[]}}

זכויות יוצרים ופרטיות, בקצרה

  • הספר שייך להוצאה. רישיון לשימוש בכיתה לא תמיד כולל העלאה לשירות חיצוני. קראו את תנאי הרישיון לפני ההעלאה, ושאלו את ההוצאה או את הנהלת בית הספר אם לא ברור.
  • התוצרים מפנים, לא מעתיקים. שקף או דף עבודה שמצטטים עמוד שלם מהספר הם העתקה. כתבו "ראו עמוד 14", והשתמשו בתרגילים מהספר דרך הפניה.
  • לא מפרסמים מחוץ לכיתה. מצגת שנבנתה על ספר מסוים נשארת בכיתה שלכם, או בסביבה הסגורה של בית הספר. לא באתר פתוח ולא ברשת חברתית.
  • בלי שמות תלמידים. לא בפרומפטים, לא בגיליון ולא בדפי העבודה שנוצרים. דף העבודה מגיע עם שורה "קבוצה: ___ תאריך: ___", והתלמידים ממלאים ביד.
  • בלי ציונים ובלי מידע אישי. הגיליון הזה הוא לתכנון בלבד. מעקב אחרי תלמידים נשאר במערכות שבית הספר אישר.
  • הגיליון שלכם. שתפו אותו רק עם מי שמלמד איתכם. כל מי שיש לו הרשאת עריכה יכול להפעיל את התפריט.

כשמשהו לא עובד

מה רואים מה עושים
"ה-JSON לא תקין" ה-AI הוסיף טקסט, או שה-JSON נקטע. בקשו ממנו: "החזר רק את ה-JSON המלא, בשורה אחת", והדביקו שוב.
ה-JSON התפזר על כמה שורות בגיליון הדבקתם בלי ללחוץ פעמיים על התא. מוחקים, לוחצים פעמיים על תא בעמודה D, ומדביקים.
הודעה על slides או worksheet חסרים הדבקתם JSON מצעד 4 או 5. מדביקים את ה-JSON המלא מצעד 6.
"עמדו על שורה של שיעור" הסמן לא בלשונית "שיעורים", או שהוא על שורת הכותרות.
אין תפריט "מערכי שיעור" רעננו את הגיליון. אם עדיין אין, הריצו את onOpen מתוך Apps Script.
עמודים לא נכונים במצגת מספרי העמודים בקובץ שונים מהמודפסים. תקנו את ההפרש בפרומפט של צעד 2, ובנו את המפה מחדש.
ה-AI לא מוצא כלום בספר הקובץ סרוק בלי טקסט. מעבירים ב-OCR (צעד 2) ומעלים שוב.

דוגמה מלאה: שכבת ח', מדעים, בית ספר "אופק" (בית ספר בדוי)

כל מה שבדוגמה בדוי: בית הספר, הספר, מספרי העמודים והשאלות. אין בה שמות של תלמידים, וגם לא צריך.

המסגרת: מדעים בשכבת ח', 3 שעות בשבוע, שלוש כיתות. המורה הדביקה את סעיפי היחידה הראשונה מתוכנית הלימודים, והעלתה לפרויקט את ספר הלימוד של השכבה, שבית הספר רכש לו רישיון דיגיטלי. עמוד 1 המודפס הוא עמוד 7 בקובץ.

מה חזר בצעד 1 (מקוצר):

יחידה נושאים מושגי מפתח שעות
1. תאים מהו תא, תא צמחי ותא בעלי חיים, מיקרוסקופ תא, קרום, גרעין, דופן 18
2. מערכות בגוף מערכת העיכול, מערכת הנשימה איבר, מערכת, אנזים [להשלים]

ליחידה 2 לא היה כתוב מספר שעות בסעיפים שהודבקו, אז ה-AI סימן [להשלים] ולא ניחש. המורה בדקה בתוכנית הלימודים והשלימה 24.

מפת הספר (צעד 2, מקוצר):

יחידה עמודים מושגים תרגילים בספר
1. תאים 12-41 תא, קרום, גרעין, דופן, מיקרוסקופ תרגיל 1-4 בעמוד 15, תרגיל 1-6 בעמוד 28
2. מערכות בגוף 42-77 איבר, מערכת, אנזים תרגיל 1-5 בעמוד 50
מיקרוסקופ: עבודה במעבדה [לא נמצא בספר]

בבדיקה המדגמית, ארבעה מתוך חמישה משפטים התאימו. החמישי היה מעמוד עם טבלה, וה-AI כתב "לא בטוח". זה בסדר: הוא לא המציא.

התוכנית השנתית, ארבעת השבועות הראשונים (צעד 3):

שבוע יחידה נושא עמודים הערכה
1 תאים מהו תא 12-15
2 תאים תא צמחי ותא בעלי חיים 16-22
3 תאים מיקרוסקופ: איך מסתכלים על תא 23-27 הצעה: תוצר מעבדה בקבוצות
4 תאים חזרה ובוחן קצר 28-29 בוחן
ה-JSON מצעד 6, לשיעור הראשון (מקוצר):
{"lesson":{"title":"מהו תא","goals":["התלמידים יגדירו מהו תא במשפט אחד","התלמידים יזהו שלושה חלקים של תא בשרטוט"],"pages":"12-15"},"slides":[{"title":"מטרות השיעור","bullets":["מהו תא","שלושה חלקים של תא"],"notes":"שאלו: ממה בנוי עלה?"},{"title":"הכל בנוי מתאים","bullets":["כל יצור חי בנוי מתאים","ראו עמוד 12"],"notes":"הראו את התמונה בעמוד 12"},{"title":"שאלת סיום","bullets":["מה ההבדל בין תא לאיבר?"],"notes":"דקה אחת, תשובה בכתב"}],"worksheet":{"basic":["השלימו: כל יצור חי בנוי מ______","סמנו בשרטוט בעמוד 13 את הקרום"],"core":["הסבירו במילים שלכם למה תא נקרא יחידת החיים"],"challenge":["אם תא אחד נפגע, האם האיבר כולו מפסיק לעבוד? נמקו"]}}

מה קרה בגיליון: בלשונית "שיעורים", בשורה של שבוע 1, נכתבו שני קישורים. המצגת נפתחה עם שקף שער ("מהו תא", "עמודים בספר: 12-15") ועוד שלושה שקפים, כל אחד עם הערה למורה. דף העבודה נפתח עם כותרת, שורת "קבוצה ותאריך", מטרות השיעור ושלוש רמות של שאלות.

שימו לב לשלושה דברים: השקפים מפנים לעמוד 12 ולא מעתיקים ממנו. עבודת המעבדה במיקרוסקופ לא נמצאה בספר, אז המורה תכין אותה לבד ולא תקבל עמודים מומצאים. ובכל הדרך לא הוזכר אף תלמיד בשם.


צ'קליסט לפני שמשהו מגיע לכיתה

  • יש לכם רישיון להשתמש בספר כך, ובדקתם את תנאי הרישיון
  • אין בפרומפטים, בגיליון או בדף העבודה שמות תלמידים, תעודות זהות או ציונים
  • כל נושא בתוכנית מופיע בסעיפי תוכנית הלימודים שהדבקתם
  • בדקתם במדגם שמספרי העמודים במפה נכונים
  • הזמנים במערך השיעור מסתכמים ב-45 דקות
  • אין בשקפים או בדף העבודה קטעים ארוכים שהועתקו מהספר
  • עברתם על המצגת ועל דף העבודה ותיקנתם לפני השיעור
  • כל [להשלים] ו-[לא נמצא בספר] טופלו

נספח: הקוד המלא (Code.gs)

מעתיקים הכל, מהשורה הראשונה עד האחרונה, לקובץ Code.gs. אין צורך לשנות שום שורה. השורה הראשונה, var LANG = 'he';, קובעת שהתפריט, הלשוניות והקבצים יהיו בעברית.

Code.gs: הקוד המלא להעתקה
var LANG = 'he'; // 'he' or 'en': the menu, tab names, headers and file texts

/**
 * Lesson plans -> Google Slides + a Google Docs worksheet (free kit, gindiinnovation.com)
 *
 * Bound to a Google Sheet with three tabs (created by setup):
 *   Annual plan: week | unit | topic | pages | assessment | notes
 *   Book map:    unit | pages | concepts | exercises in the book
 *   Lessons:     week | topic | pages | JSON | slides | worksheet | created
 *
 * No AI key here: you run the prompts in your own AI tool and paste its JSON
 * into column D of the Lessons tab. The script only checks the JSON and creates
 * two files in your own Drive. It does not send anything and does not share anything.
 */

var TEXT = {
  he: {
    menu: 'מערכי שיעור',
    menuSetup: 'הכנת הגיליון',
    menuBuild: 'מצגת ודף עבודה לשורה',
    plan: 'תוכנית שנתית',
    map: 'מפת ספר',
    lessons: 'שיעורים',
    planHeaders: ['שבוע', 'יחידה', 'נושא', 'עמודים', 'הערכה', 'הערות'],
    mapHeaders: ['יחידה', 'עמודים', 'מושגים', 'תרגילים בספר'],
    lessonHeaders: ['שבוע', 'נושא', 'עמודים', 'JSON', 'מצגת', 'דף עבודה', 'נוצר'],
    levels: { basic: 'רמה בסיסית', core: 'רמת ליבה', challenge: 'רמת אתגר' },
    week: 'שבוע ',
    goals: 'מטרות השיעור',
    pages: 'עמודים בספר: ',
    worksheet: 'דף עבודה: ',
    group: 'קבוצה: ________   תאריך: ________',
    untitled: 'שיעור',
    setupOk: 'הלשוניות מוכנות. מלאו את התוכנית השנתית, והדביקו JSON בעמודה D בלשונית "שיעורים".',
    pickRow: 'עמדו על שורה של שיעור בלשונית "שיעורים" (לא על שורת הכותרות), ונסו שוב.',
    noJson: 'בשורה הזאת אין JSON בעמודה D.',
    badJson: 'ה-JSON לא תקין: ',
    done: 'נוצרו מצגת ודף עבודה ב-Drive שלכם. הקישורים נכתבו בשורה.',
  },
  en: {
    menu: 'Lesson plans',
    menuSetup: 'Set up the sheet',
    menuBuild: 'Slides and worksheet for this row',
    plan: 'Annual plan',
    map: 'Book map',
    lessons: 'Lessons',
    planHeaders: ['Week', 'Unit', 'Topic', 'Pages', 'Assessment', 'Notes'],
    mapHeaders: ['Unit', 'Pages', 'Concepts', 'Exercises in the book'],
    lessonHeaders: ['Week', 'Topic', 'Pages', 'JSON', 'Slides', 'Worksheet', 'Created'],
    levels: { basic: 'Basic', core: 'Core', challenge: 'Challenge' },
    week: 'Week ',
    goals: 'Lesson goals',
    pages: 'Pages in the book: ',
    worksheet: 'Worksheet: ',
    group: 'Group: ________   Date: ________',
    untitled: 'Lesson',
    setupOk: 'The tabs are ready. Fill in the annual plan, and paste JSON into column D of the "Lessons" tab.',
    pickRow: 'Select a lesson row in the "Lessons" tab (not the header row) and try again.',
    noJson: 'This row has no JSON in column D.',
    badJson: 'The JSON is not valid: ',
    done: 'Slides and a worksheet were created in your Drive. The links are in the row.',
  },
};

function t_() { return TEXT[LANG === 'en' ? 'en' : 'he']; }

function onOpen() {
  var t = t_();
  SpreadsheetApp.getUi().createMenu(t.menu)
    .addItem(t.menuSetup, 'setup')
    .addItem(t.menuBuild, 'buildLesson')
    .addToUi();
}

/** Creates the three tabs with their headers, if they are missing. Run once. */
function setup() {
  var t = t_();
  var ss = SpreadsheetApp.getActive();
  [[t.plan, t.planHeaders], [t.map, t.mapHeaders], [t.lessons, t.lessonHeaders]].forEach(function (s) {
    var sh = ss.getSheetByName(s[0]) || ss.insertSheet(s[0]);
    if (sh.getLastRow() === 0) {
      sh.getRange(1, 1, 1, s[1].length).setValues([s[1]]).setFontWeight('bold');
      sh.setFrozenRows(1);
    }
  });
  onOpen();
  SpreadsheetApp.getUi().alert(t.setupOk);
}

// ---------- Pure helpers (no Google services, testable anywhere) ----------

/** Accepts the model's answer even with a json code fence or text around it */
function parseLessonJson(text) {
  var s = String(text || '').trim().replace(/^`{3}[a-zA-Z]*\s*/, '').replace(/\s*`{3}$/, '');
  var start = s.indexOf('{');
  var end = s.lastIndexOf('}');
  if (start < 0 || end <= start) throw new Error('no { ... } found');
  var data = JSON.parse(s.slice(start, end + 1));
  if (!data || typeof data !== 'object') throw new Error('not an object');
  var slides = Array.isArray(data.slides) ? data.slides : [];
  slides = slides
    .filter(function (x) { return x && String(x.title || '').trim(); })
    .map(function (x) {
      return {
        title: String(x.title).trim(),
        bullets: Array.isArray(x.bullets) ? x.bullets.map(function (b) { return String(b).trim(); }).filter(String) : [],
        notes: String(x.notes || '').trim(),
      };
    });
  if (!slides.length) throw new Error('missing "slides": at least one slide with a title is needed');
  if (!data.worksheet || typeof data.worksheet !== 'object' || Array.isArray(data.worksheet)) throw new Error('missing "worksheet"');
  var lesson = data.lesson && typeof data.lesson === 'object' ? data.lesson : {};
  return {
    lesson: {
      title: String(lesson.title || '').trim(),
      goals: Array.isArray(lesson.goals) ? lesson.goals.map(function (g) { return String(g).trim(); }).filter(String) : [],
      pages: String(lesson.pages || '').trim(),
    },
    slides: slides,
    worksheet: data.worksheet,
  };
}

/** Worksheet object -> lines: a header per level, then numbered questions. Empty levels are skipped. */
function worksheetLines(worksheet, labels) {
  var l = labels || t_().levels;
  var out = [];
  ['basic', 'core', 'challenge'].forEach(function (k) {
    var items = Array.isArray(worksheet && worksheet[k]) ? worksheet[k] : [];
    items = items.map(function (q) { return String(q == null ? '' : q).trim(); }).filter(String);
    if (!items.length) return;
    if (out.length) out.push('');
    out.push(l[k]);
    items.forEach(function (q, i) { out.push((i + 1) + '. ' + q); });
  });
  return out;
}

// ---------- Google Sheets, Slides and Docs ----------

/** Right-aligns a Slides text range when LANG is not English (full RTL direction is one click in Slides) */
function alignText_(text) {
  if (LANG !== 'en' && !text.isEmpty()) text.getParagraphStyle().setParagraphAlignment(SlidesApp.ParagraphAlignment.END);
}

function setPlaceholder_(slide, type, text) {
  var ph = slide.getPlaceholder(type);
  if (!ph) return;
  var range = ph.asShape().getText();
  range.setText(text);
  alignText_(range);
}

/** Menu: reads the JSON in the selected row of Lessons, creates the slides and the worksheet, writes the links back */
function buildLesson() {
  var t = t_();
  var ui = SpreadsheetApp.getUi();
  var sheet = SpreadsheetApp.getActiveSheet();
  var row = sheet.getActiveRange().getRow();
  if (sheet.getName() !== t.lessons || row < 2) { ui.alert(t.pickRow); return; }
  var values = sheet.getRange(row, 1, 1, 7).getValues()[0];
  if (!String(values[3]).trim()) { ui.alert(t.noJson); return; }
  var data;
  try { data = parseLessonJson(values[3]); } catch (e) { ui.alert(t.badJson + e.message); return; }

  var week = String(values[0]).trim();
  var title = data.lesson.title || String(values[1]).trim() || t.untitled;
  var name = (week ? t.week + week + ': ' : '') + title;
  var pages = data.lesson.pages || String(values[2]).trim();

  // Slides: a title slide, then one slide per item, speaker notes when there are any
  var deck = SlidesApp.create(name);
  var cover = deck.getSlides()[0];
  setPlaceholder_(cover, SlidesApp.PlaceholderType.CENTERED_TITLE, title);
  setPlaceholder_(cover, SlidesApp.PlaceholderType.SUBTITLE, pages ? t.pages + pages : '');
  data.slides.forEach(function (s) {
    var slide = deck.appendSlide(SlidesApp.PredefinedLayout.TITLE_AND_BODY);
    setPlaceholder_(slide, SlidesApp.PlaceholderType.TITLE, s.title);
    setPlaceholder_(slide, SlidesApp.PlaceholderType.BODY, s.bullets.join('\n'));
    if (s.notes) {
      var notes = slide.getNotesPage().getSpeakerNotesShape().getText();
      notes.setText(s.notes);
      alignText_(notes);
    }
  });
  var deckUrl = deck.getUrl();
  deck.saveAndClose();

  // Worksheet: a title, the group and date line (no student names), the goals, then the three levels
  var doc = DocumentApp.create(t.worksheet + name);
  var body = doc.getBody();
  var first = body.getParagraphs()[0];
  first.setText(t.worksheet + title);
  first.setHeading(DocumentApp.ParagraphHeading.HEADING1);
  body.appendParagraph(t.group).setHeading(DocumentApp.ParagraphHeading.NORMAL);
  if (pages) body.appendParagraph(t.pages + pages).setHeading(DocumentApp.ParagraphHeading.NORMAL);
  if (data.lesson.goals.length) {
    body.appendParagraph(t.goals).setHeading(DocumentApp.ParagraphHeading.HEADING2);
    data.lesson.goals.forEach(function (g) { body.appendListItem(g); });
  }
  var headers = [t.levels.basic, t.levels.core, t.levels.challenge];
  worksheetLines(data.worksheet, t.levels).forEach(function (line) {
    var p = body.appendParagraph(line);
    p.setHeading(headers.indexOf(line) >= 0 ? DocumentApp.ParagraphHeading.HEADING2 : DocumentApp.ParagraphHeading.NORMAL);
  });
  if (LANG !== 'en') body.getParagraphs().forEach(function (p) { p.setLeftToRight(false); });
  var docUrl = doc.getUrl();
  doc.saveAndClose();

  if (!String(values[1]).trim()) sheet.getRange(row, 2).setValue(title);
  if (!String(values[2]).trim() && pages) sheet.getRange(row, 3).setValue(pages);
  sheet.getRange(row, 5, 1, 3).setValues([[deckUrl, docUrl, new Date()]]);
  ui.alert(t.done);
}

// For local tests only (Node). Apps Script has no `module`, so this line does nothing there.
if (typeof module !== 'undefined') module.exports = { parseLessonJson, worksheetLines };

הבהרה

התוכן כאן הוא המלצות כלליות בלבד, ולא ייעוץ מקצועי, משפטי, חשבונאי או מיסויי. כל בית ספר, מקצוע וכיתה שונים. האחריות לבדוק שהתוכן מתאים לכם, ולבדוק את התוכנית, הפרומפטים, התוצרים של כלי ה-AI והקוד לפני שימוש בכיתה, היא שלכם. כלים, מחירים ותנאי שימוש של שירותים חיצוניים משתנים, ולכן כדאי לבדוק אותם במקור. בשאלות של זכויות יוצרים ורישיון, בדקו את תנאי הרישיון של הספר או התייעצו עם עורך דין. בשמירת מידע על תלמידים פעלו לפי הנחיות בית הספר ומשרד החינוך, ואל תכניסו שמות תלמידים או פרטים מזהים לכלי AI.

התוכן, הפרומפטים, התבניות והקוד ניתנים כמות שהם (AS IS), בלי התחייבות שהם מתאימים למטרה מסוימת או נקיים מטעויות. Gindi Innovation ואביעד גינדי לא יישאו באחריות לכל נזק, ישיר או עקיף, שייגרם משימוש בהם או מהסתמכות עליהם, ובכלל זה מתוצרים של כלי AI. השימוש כפוף לתקנון האתר.


ומה הלאה

הפלייבוק הזה עובד עם הדבקה אחת לכל שיעור: אתם מעבירים את ה-JSON מה-AI לגיליון. אפשר לחבר את אותו תהליך כך שכל השיעורים של יחידה שלמה ייבנו בבת אחת, בתבנית המצגת של בית הספר, ויחכו לכם בתיקייה לבדיקה. ההחלטה מה נכנס לכיתה נשארת שלכם.