המדריך השלם: איך בניתי בוט שיווק מבוסס AI בוואטסאפ ב-34 ימים

ככה תבנו לכם "מילה משלכם"

מ-Zero ל-Production: המדריך הטכני, העסקי והפילוסופי לבניית "מילה" – עוזרת ה-Founder Led Marketing האישית שלכם.

יש פרויקטים שמתחילים כרעיון עסקי קטן ("בוא נעשה מיקרו-SaaS ונמכור מנויים ב-10 דולר") ומסתיימים בתובנה שהערך האמיתי שלהם הוא לא בכסף, אלא במסע עצמו ובידע שנצבר. מילה (Milla) היא פרויקט כזה. מה שהתחיל כפתרון אישי לבעיית ה"שוטף שוטף" של יזמים, הפך למערכת מורכבת, חכמה, ואנושית להפליא.

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

למי המדריך הזה מיועד? ליזמים טכנולוגיים, לאנשי אוטומציה שרוצים לעלות רמה, למפתחי Full-Stack שרוצים להבין איך Low-Code משתלב עם קוד אמיתי, ולכל מי שחולם על שיווק אוטומטי שלא נשמע כמו רובוט.

פרק א': ה"למה" – או: איך להילחם ב"שוטף"

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

ואז אתם מגיעים למשרד. ויש מייל דחוף. ויש באג בפרודקשן. והילד חולה. והרעיון? הוא מתפוגג. במקרה הטוב הוא הופך לשורה סתמית ב-Notes בטלפון שלא תפתחו לעולם.

"יום מספר 34 שאני בונה את מילה… כמה פגישות שהיו לי בשבוע האחרון הביאו אותי למסקנה הברורה – הרווח האמיתי, שלי אישית, יהיה לשתף אותו עם כולם. הכל, שקוף, מוכן להעתיק ולהדביק."

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

פרק ב': הארכיטקטורה וה-Stack הטכנולוגי

כדי לבנות מערכת כזו כאדם אחד (One-Man Show) תוך חודש, אי אפשר לכתוב הכל מאפס. צריך לעמוד על כתפי ענקים. בחרתי בארכיטקטורת Low-Code משולבת קוד. זה אומר שאני משתמש בכלי אוטומציה ויזואליים לזרימה הכללית, אבל כותב קוד (JavaScript/Python) היכן שצריך לוגיקה מורכבת.

רשימת המכולת (וכיצד היא מתחברת):

הרכיבהכלי הנבחרלמה דווקא זה?
המוח (AI)Google Gemini API (Flash 2.5 + Pro)חלון הקשר (Context) עצום של עד 1M טוקנים, מהירות תגובה פנומנלית בגרסת Flash, ומחיר זול משמעותית מ-OpenAI בשימוש מאסיבי.
המנוע (Automation)n8n (Self-Hosted)בניגוד ל-Make (זאפייר לשעבר), n8n מאפשר הרצת קוד מורכב, לולאות אינסופיות, ושליטה מלאה בשרת. המעבר ל-Self Hosted חסך אלפי דולרים.
השרתRenderפלטפורמה שמריצה Docker Containers בקלות. הרמתי את n8n שם בעלות של כ-7$ לחודש. יציב כמו בטון.
מסד הנתוניםAirtableהמוח של מילה צריך לזכור. Airtable משמש כ-DB גמיש שקל מאוד לדבג ויזואלית. שם נשמרים המשתמשים, היסטוריית התוכן והפרומפטים האישיים.
הממשקWhatsApp Business APIהחיבור הרשמי של Meta. כן, הבירוקרטיה מעצבנת, אבל זה החיבור היחיד שלא ייחסם לכם אחרי יומיים.

⚠️ אזהרה קריטית: אל תחברו את הבוט למספר הטלפון האישי שלכם! ביום ה-9 לפיתוח, בגלל טעות קטנה בלוגיקה, פייסבוק חסמו לי את הגישה ל-API זמנית. אם זה היה המספר הראשי שלי – הייתי מנותק מהעולם. גשו לקיוסק, קנו סים טוקמן (Prepaid) ב-20 שקל, ושימו אותו בטלפון ישן רק בשביל ה-SMS של האימות.

פרק ג': הלוגיקה – איך בונים "מוח" שמבין כוונה?

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

הגישה הישנה הייתה לכתוב תנאי If/Else אינסופיים: אם ההודעה מכילה "פוסט" אז.... זה נכשל מהר מאוד.

הפתרון: ה-Router מבוסס ה-LLM

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

1. הטקסט מתאר אירוע/סיפור שצריך להכניס לזיכרון.
2. בקשה ליצירת פוסט/תמונה.
3. שאלה כללית שלא קשורה ('מה שלומך').
4. שאלה תפעולית ('איך משתמשים בך').
5. לא ברור / הודעת סתם.
6. המשתמש ביקש מידע על המנוי שלו.
7. המשתמש מבקש למחוק את המידע האחרון.

זה מה שהמשתמש שלח לי: {{user_input}}"

המודל מחזיר רק מספר (למשל: "2"). ב-n8n, צומת מסוג Switch קולט את המספר הזה ומנתב את המשתמש למסלול המתאים (Flow). זה הופך את המערכת לחסינה כמעט לטעויות הבנה, ומאפשר לה להבין ניואנסים מורכבים.

פרק ד': צלילה לתוך הקישקה – האתגרים הטכניים והפתרונות

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

1. משבר ה-PDF והשגיאה המסתורית (Authentication Error 401)

רציתי שמילה תדע לקרוא סיכומי פגישות. המשתמש זורק PDF, ומילה מוציאה פוסט. וואטסאפ מאפשרים לשלוח קבצים, והם מספקים URL להורדה. פשוט, לא?

לא. כשניסיתי לשלוח את ה-URL הזה ישירות ל-Gemini, קיבלתי את השגיאה הארורה הזו:

Error: {"title":"Authentication Error","detail":"Authentication Error","status":401}

הסיבה: הלינק של וואטסאפ אינו ציבורי. הוא דורש טוקן אימות (Bearer Token) בכותרת ה-HTTP כדי לגשת אליו. ג'ימיני, כמודל AI, לא יודע "להזדהות" מול השרתים של מטא.

הפתרון (The Workaround): בניתי ב-n8n תהליך "צינור" (Pipeline) שעוקף את הבעיה:

  1. הורדה לשרת הביניים: שימוש בצומת HTTP Request ב-n8n שמבצע GET ל-URL של וואטסאפ, כשהוא מצויד בטוקן המתאים. התוצאה היא קובץ בינארי בזיכרון של n8n.
  2. העלאה לגוגל: שימוש בצומת ייעודי שמעלה את הקובץ הבינארי ל-Google AI File API.
  3. קבלת מפתח: גוגל מחזיר לנו file_uri פנימי.
  4. הזרקה למודל: את ה-URI הזה אנחנו שולחים בפרומפט ל-Gemini Pro 1.5, שיודע "לקרוא" אותו.

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

2. חווית המשתמש והמאבק ב"שקט"

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

בעולם ה-AI, לייטנסי (Latency) הוא האויב. תמלול + ניתוח + יצירה יכול לקחת זמן. בוואטסאפ, שקט של 20 שניות מרגיש כמו נצח. המשתמש בטוח שהבוט מת.

הפתרון: Feedback Loops (לולאות משוב). הטמעתי מנגנון שמעדכן את המשתמש בכל שלב:

  • מיד עם קבלת ההודעה -> שליחת קריאת API שמציגה "מקלידה…" בראש הצ'אט.
  • מיד לאחר זיהוי הכוונה -> הודעת טקסט קצרה: "קיבלתי את ההקלטה, אני מתחילה לעבוד עליה".
  • אם העיבוד מתארך (למשל ביצירת תמונות) -> הודעת ביניים: "אני מנקה את העדשה… עוד רגע התמונה מוכנה".

השינוי הקטן הזה הפך את מילה מ"תוכנה" ל"עוזרת". היא מתקשרת, היא מודיעה, היא נוכחת.

3. פרואקטיביות: המעבר מ"להגיב" ל"ליזום"

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

חיברתי אותה ל-Google Calendar API. בניתי ב-n8n תהליך שרץ כל שעה עגולה (Cron Job) ומבצע לוגיקת סינון חכמה:


// קוד JavaScript שרץ ב-n8n לסינון פגישות רלוונטיות
return $input.all().filter(item => { 
  const event = item.json;
  
  // 1. האם יש משתתפים נוספים? (לא פגישה עם עצמי או "זמן פוקוס")
  const hasAttendees = event.attendees && event.attendees.length > 0;
  
  // 2. האם הפגישה באמת הסתיימה ב-20 דקות האחרונות?
  const endTime = new Date(event.end.dateTime);
  const now = new Date();
  const isFinished = now >= endTime;
  
  // 3. סינון אירועים שהם יום שלם (חגים וכו')
  const isNotAllDay = !!event.start.dateTime;

  return hasAttendees && isFinished && isNotAllDay;
});
    

אם התנאים מתקיימים, מילה שולחת הודעה יזומה: "היי אמיר, ראיתי שסיימת פגישה עם [שם האורח]. היה משהו מעניין ששווה להפוך לתוכן?". זה ה-Game Changer האמיתי ב-Engagement.

פרק ה': אונבורדינג ואימות משתמשים

איך מזהים משתמש חדש? איך מונעים ספאם? איך מחברים את הוואטסאפ ליומן הגוגל של המשתמש בצורה מאובטחת?

בהתחלה ניסיתי לשלוח "טופס" ארוך בוואטסאפ. המרה אפסית. אנשים נבהלו. חזרתי לשיחה פשוטה, אבל הייתי חייב לאמת את המייל.

השתמשתי ב-Resend כדי לבנות מנגנון OTP (One Time Password):

  1. המשתמש שולח את המייל שלו למילה בוואטסאפ.
  2. n8n מייצר מספר רנדומלי (למשל 5824).
  3. קריאת API ל-Resend שולחת את הקוד למייל של המשתמש.
  4. המשתמש מזין את הקוד בוואטסאפ.
  5. אם הקוד תואם -> המייל נשמר ב-Airtable והמשתמש מאומת.

זה תהליך שנותן תחושת אבטחה של אפליקציה גדולה ("כמו הבנקים"), אבל נבנה ב-10 דקות ב-n8n.

פרק ו': המודל העסקי (Monetization)

מילה תוכננה כמוצר SaaS לכל דבר. לא רציתי למכור אותה, אבל רציתי שהקוד יתמוך בזה למקרה שמישהו מכם ירצה.

ב-Airtable, לכל משתמש יש שדות: User TierCredits Left, ו-Expiry Date.

  • Trial: כל משתמש חדש מקבל אוטומטית שבוע חינם עם 14 פוסטים ו-14 תמונות.
  • Subscription: בניתי אינטגרציה עם מערכת סליקה (Grow/Meshulam) ששולחת Webhook ל-n8n ברגע שמתבצע תשלום, ומעדכנת את הסטטוס ב-Airtable.

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

סיכום וקריאה לפעולה: הכוח בידיים שלכם

הפרויקט הזה לימד אותי שיעור חשוב: אנחנו חיים בעידן הזהב של ה-Builders. פעם, כדי לבנות מערכת כמו מילה, הייתם צריכים צוות של מפתח Backend, מפתח Frontend, איש DevOps ומנהל מוצר. היום? אדם אחד, עם קצת סקרנות, חיבור לאינטרנט וגישה ל-AI, יכול להרים אופרציה כזו ב-34 ימים (כולל ימי מחלה!).

שחררתי את מילה כ-Open Source כי אני מאמין שהכוח של AI הוא בפרסונליזציה. כשאתם מריצים את מילה אצלכם, היא שלכם. הדאטה שלכם. הסודות העסקיים שלכם נשארים אצלכם. אתם יכולים לשנות לה את האופי, להחליף את המודל ל-Claude, או לחבר אותה ל-Notion שלכם.

מוכנים לבנות את מילה שלכם?

ארזתי עבורכם את הכל: קבצי ה-JSON המלאים של ה-Workflow, סכימת ה-Airtable המדויקת, והנחיות התקנה צעד-אחר-צעד.???? להורדת הפרויקט המלא (GitHub)

???? בונוס: מנוע תמלול בעברית

חלק מהקסם של מילה הוא היכולת לתמלל הקלטות וואטסאפ בעברית בצורה מושלמת (כולל פיסוק!). שחררתי גם את המנוע הזה כפרויקט נפרד.????️ לפרויקט התמלול ב-GitHub

לדוקומנטציה מלאה והסברים נוספים: ivrit.ai