כל הפרויקטים

צינור חדשות אוטומטי — Nodo.ia

פייפליין יומי לחדשות בספרדית: RSS → שכתוב LLM + אימות → תמונות מותאמות → PR בגיטהאב.

המטרה

שמירת מדור החדשות בספרדית של Nodo.ia טרי כל יום בלי עורך ידני — pipeline אוטומטי מקצה לקצה שמושך, משכתב, מאמת, מטפל בתמונות, ופותח PR מול ריפו התוכן, עם digest שבועי.

הפתרון

מודול Node.js (src/newsPipeline/) משולב ב-backend של Nodo.ia שרץ עם node-cron (ברירת מחדל 06:15 America/Santo_Domingo), קורא כתבות/קטגוריות מ-GitHub עם fallback ל-local/MinIO, מושך RSS, scraping למקור, שכתוב עם gpt-4o-mini תחת verify-and-repair, ייצור תמונות webp, הוספה ל-nodo-lab-articles.json ופתיחת PR דרך GitHub App או PAT. Job שבועי נפרד מייצר digest מבוסס analytics.

עיקרי הדברים

  • לולאת verify-and-repair מסלקת את רוב ה-hallucinations לפני פרסום
  • אספקה בשליטת העורך: PRs במקום כתיבה ישירה
  • אותו מודול נפרס ל-dev/staging/prod ללא שינוי — הכל מונע ENV
  • תמונות .webp מותאמות מובייל עם תקציב 150KB

האתגר

בקשת שכתוב נאיבית מ-LLM מכניסה hallucinations — שמות, תאריכים, מספרים שגויים.

לולאת verify-and-repair דו-שלבית: אחרי השכתוב קריאה שנייה מוודאת טענות מול המקור; כישלון מפעיל repair עד N ניסיונות, אחרת הכתבה מושלכת.

הצוות רצה אוטומציה אבל לא כתיבות לא מפוקחות לריפו הפרודקשן.

Pipeline פותח PR מול ה-base branch המוגדר (staging ב-dev, main ב-prod) — עורכים מאשרים וממזגים. אימות דרך GitHub App עם fallback ל-PAT.

dev/staging/prod מצפים לרשימות כתבות מעט שונות — סנכרון ידני רגיש לטעויות.

שרשרת load-order GitHub → local → MinIO → defaults, עם NEWS_GITHUB_SOURCE_BRANCH מיושר ל-PR base branch כך שכל סביבה קוראת את המצב שלה.

תמונות RSS/scrape גולמיות כבדות ומאיטות את ה-headers באפליקציה.

כל ריצה מייצרת .webp ברוחב 1024px, גובה 576, תקרת 150KB, עולה ל-MinIO (או local ב-dev) עם feature flags.

iteration מקומי הוביל לעלויות LLM מיותרות ולוגים רועשים.

Mock mode + fixtures דטרמיניסטיים + log file ייעודי רק ל-[news] לניפוי ממוקד.

מה נמסר

  • מודול src/newsPipeline/ משולב ב-backend
  • RSS fetcher ו-source scraper
  • שכבת LLM rewrite + verify-and-repair על gpt-4o-mini
  • PR flow ל-GitHub עם App/PAT auth ו-base branches לכל סביבה
  • אופטימיזר .webp + אינטגרציית MinIO/local
  • Job דיגסט שבועי מבוסס analytics
  • תמיכה mock/dry-run + fixtures
  • README מתעד את כל משטח NEWS_* env
  • ערוץ לוגים [news] ייעודי

תוצאות

Daily 06:15

קצב

GitHub PR/run

אספקה

≤150KB .webp

תקציב תמונה

Weekly LLM

דיגסט

מה זה לימד אותי

  • לולאת verify-and-repair חובה לכל pipeline שמפרסם למשתמשי קצה
  • אספקה דרך PR במקום כתיבה ישירה שומרת שליטה של העורך
  • עיצוב config-first (NEWS_* env) מאפשר לאותו pipeline לרוץ ללא שינוי ב-dev/staging/prod