---
allowed-tools: Read Grep Glob Bash WebSearch WebFetch TaskCreate TaskUpdate mcp__osint-db__list_tables mcp__osint-db__describe_table mcp__osint-db__query_db mcp__osint-db__search_entity mcp__osint-db__new_since
name: osint-daily-leads
description: דייג'סט בוקר של לידים תחקיריים — מה חדש ב-osint-db מאז הסריקה הקודמת — עבור דסק "המקום הכי חם בגיהנום". סורק במקביל את exemptions, legislation, mevaker_reports, mavat_plans, yosh_plans, decisions, knesset_bills ו-police_announcements דרך new_since(table, since), קובע את חלון הזמן מהריצה הקודמת (scrape_runs) או ברירת מחדל ל-24-48 השעות האחרונות, ומדרג לידים לפי עניין עיתונאי — סכומים גדולים, משרדים רגישים, תזכירים שחלון ההערות שלהם נסגר, ותוכניות ענק. מתוכנן לרוץ כמשימה מתוזמנת בבוקר. הפעל כשדור כותב "לידים יומיים", "מה חדש במאגר", "תסרוק מה נכנס היום", "דייג'סט בוקר osint", "מה התחדש מאתמול", "תביא לי את הלידים של הבוקר". כל פריט הוא ליד לבדיקה עם עדיפות — לא ממצא מאומת; אימות מול ה-URL הרשמי לפני פרסום. לתיק על ישות ראה osint-entity-dossier; לסריקת פטורים לעומק ראה osint-exemptions.
---

# osint-daily-leads — דייג'סט בוקר של לידים

סקיל ליצירת תקציר יומי של מה שנכנס ל-osint-db מאז הסריקה הקודמת, מדורג לפי עניין עיתונאי. מתוכנן לרוץ כ**משימה מתוזמנת בבוקר** ולהניח על שולחן הדסק רשימת **לידים לבדיקה** — לא כותרות מוכנות. כל פריט טעון אימות מול מקורו הרשמי.

## עקרונות יסוד

1. **חדש במאגר ≠ סיפור.** רשומה שנכנסה הלילה היא ליד גולמי. הדירוג קובע למה לתת תשומת לב; האימות מול ה-URL הרשמי קובע אם זה סיפור.
2. **קבע את החלון נכון.** "חדש" מוגדר מול הריצה הקודמת. מצא את חותמת הזמן של הסריקה הקודמת ב-`scrape_runs`; אם אין — ברירת מחדל ל-24-48 השעות האחרונות. אל תסרוק שוב מה שכבר דיווחת.
3. **pub_date לא אמין לעדכניות.** בחלק מהטבלאות `pub_date` ריק. החתך לעדכניות הוא `first_seen_at` — וזה בדיוק מה ש-`new_since` משתמש בו.
4. **דרג לפי עניין, לא לפי כמות.** סכום גדול, משרד רגיש, חלון הערות שנסגר בקרוב, ותוכנית ענק קודמים לרשומה שגרתית. מסנן הרעש חשוב כמו הסריקה.
5. **כשאי-אפשר לקבוע — הערך כיוון והסתברות.** לכל ליד תן עדיפות + מה הראיה החסרה. הדייג'סט מכוון את העורך, לא קובע עובדות.

## שלב 1 — קביעת חלון הזמן

מצא מתי רצה הסריקה הקודמת:
```sql
SELECT * FROM scrape_runs ORDER BY rowid DESC LIMIT 10
```
קח את חותמת הזמן של הריצה המוצלחת הקודמת כ-`since`. אם לא ברור — השתמש ב-48 שעות אחורה (לדוגמה `'2026-06-14'` כשהיום 2026-06-16). תעד בדוח את החלון שנבחר.

## שלב 2 — סריקה מקבילה לכל הטבלאות

הרץ `new_since(table, since)` לכל אחת מהטבלאות העיקריות:
```
new_since("exemptions", "2026-06-14")
new_since("legislation", "2026-06-14")
new_since("mevaker_reports", "2026-06-14")
new_since("mavat_plans", "2026-06-14")
new_since("yosh_plans", "2026-06-14")
new_since("decisions", "2026-06-14")
new_since("knesset_bills", "2026-06-14")
new_since("police_announcements", "2026-06-14")
```
כל קריאה מחזירה את הרשומות שנראו לראשונה מאז `since`, מהחדש לישן.

**חלופת SQL ב-`query_db`** (כשרוצים שדות נבחרים בלבד או מיון, למשל לפטורים) — `new_since` נוח, אבל `query_db` נותן שליטה מלאה:
```sql
SELECT id, title, publisher, supplier_names, amount_ils, first_seen_at, detail_url
FROM exemptions
WHERE first_seen_at >= '2026-06-14'
ORDER BY amount_ils DESC
```

## שלב 3 — דירוג לפי עניין עיתונאי

מיין את הלידים מכל הטבלאות לפי אותות העניין:

- **סכום גדול** ב-`exemptions` (`amount_ils` גבוה) — קודם.
- **משרד/גוף רגיש** כמפרסם (ביטחון, בריאות, אוצר, ראש הממשלה) — העלה עדיפות.
- **תזכיר חוק שחלון ההערות שלו נסגר בקרוב** — ב-`legislation` בדוק `is_open=1` ו-`comment_deadline` קרוב; זה ליד תלוי-זמן.
- **דוח מבקר חדש** (`mevaker_reports`) — כמעט תמיד ליד.
- **תוכנית ענק** (`mavat_plans` / `yosh_plans`) — `pl_area_dunam` גדול או `quantity_delta_*` גבוה (יח"ד).
- **החלטת ממשלה/רשות** (`decisions`) ו**הצעת חוק חדשה** (`knesset_bills`) לפי נושא.
- **הודעת משטרה** (`police_announcements`) לפי נושא/חריגות.

תן לכל ליד עדיפות: גבוהה / בינונית / נמוכה.

**תזכירים עם דדליין מתקרב (תלוי-זמן):**
```sql
SELECT id, title, ministry, comment_deadline, is_open, url
FROM legislation
WHERE is_open = 1 AND comment_deadline >= '2026-06-16'
ORDER BY comment_deadline ASC
```

## שלב 4 — העשרה ואימות

לכל ליד בעדיפות גבוהה, פתח את ה-URL הרשמי (`detail_url` / `url` / `pl_url` / אתר הכנסת) ואמת את הליבה לפני שהוא נכנס לדוח כ"ראוי לבדיקה". אל תכתוב סכום או טענה בלי שראית את הרשומה הרשמית.

## הרצה כמשימה מתוזמנת

הסקיל בנוי לרוץ אוטומטית בבוקר. אפשר להגדירו כמשימה מתוזמנת שמריצה את שלבים 1-3 ומניחה דייג'סט מדורג. גם בריצה אוטומטית — הפלט הוא **לידים לבדיקה**, והאימות בשלב 4 נשאר באחריות אדם לפני פרסום.

## התמודדות עם תקלות

| תקלה | פתרון |
|---|---|
| scrape_runs לא נותן חותמת ברורה | ברירת מחדל ל-48 שעות אחורה; ציין בדוח שהחלון משוער |
| new_since מחזיר "no first_seen_at column" | אותה טבלה לא נסרקת כך; דלג עליה וציין |
| יותר מדי רשומות חדשות (מעל ה-limit) | הגדל limit עד 500, או צמצם חלון; לפטורים — מיין לפי amount_ils ב-SQL |
| pub_date ריק | זה צפוי — הסתמך על first_seen_at (כך new_since עובד) |
| URL רשמי לא נפתח | סמן הליד "לא אומת מול מקור"; אל תכלול את הסכום כעובדה |

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

## ניהול העבודה

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

## דוח הדסק — מבנה קבוע

```markdown
# דייג'סט בוקר — לידים מ-osint-db

## חלון הסריקה
[מאיזו חותמת זמן עד מתי, ומאיפה היא נקבעה (scrape_runs / ברירת מחדל)]

## לידים מובילים (עדיפות גבוהה)
לכל ליד:
- **הליד:** [תיאור קצר — מה נכנס, מאיזו טבלה]
- **למה זה מעניין:** [סכום / משרד רגיש / דדליין מתקרב / גודל תוכנית]
- **תלוי-זמן?** [אם יש דדליין הערות/הפקדה — מתי]
- **המקור:** [URL רשמי + הטבלה]

## שאר הלידים (בינונית/נמוכה)
[רשימה תמציתית מקובצת לפי טבלה]

## ספירה לפי טבלה
[כמה רשומות חדשות בכל טבלה בחלון]

**שורה תחתונה לדסק:** [הליד אחד שהכי כדאי לרדוף אחריו היום, ולמה]

Sources: [קריאות new_since + שאילתות + קישורי מקור שנבדקו]
```

כתוב בעברית, בלי אימוג'ים, חד וקצר. הדייג'סט צריך לתת לעורך תוך דקה את התמונה של מה שנכנס למאגר ומה דורש תשומת לב — בלי להגיש אף ליד כעובדה מאומתת.
