דלג לתוכן הראשי
מדריכים ספריית סקריפטים
עודכן: אוגוסט 2026 · מתעדכן דו-שבועית

ספריית סקריפטים

סקריפטים ואוטומציות מוכנים — workflows ל-n8n, קוד Python לקריאת מודלים ו-RAG, ופקודות Shell. העתק, הורד, והרץ אצלך. הכל בחינם.

— סקריפטים

איך משתמשים

1. הורד / העתק

כל סקריפט ניתן להעתקה או להורדה כקובץ מוכן (‎.json / .py / .sh‎).

2. הכנס מפתחות

החלף YOUR_API_KEY ופרטים בסוגריים [כך] בשלך.

3. הרץ

workflows של n8n מייבאים דרך Import from File; Python/Shell מריצים ישירות.

בטיחות: אף פעם אל תכניס מפתח API לתוך קוד ששיתפת. השתמש במשתני סביבה (OPENAI_API_KEY) או בקובץ .env. מזהי המודלים בדוגמאות נכונים לאוגוסט 2026 וייתכן שיתעדכנו.

מה יש כאן ומה אין

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

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

איזה סקריפט לקחת

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

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

מפתחות, סודות, וטעות אחת שעולה כסף

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

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

n8n Workflows

Webhook → AI → תשובה
n8nJSON
{
  "name": "Webhook to AI Reply",
  "nodes": [
    { "parameters": { "httpMethod": "POST", "path": "ai-reply" },
      "name": "Webhook", "type": "n8n-nodes-base.webhook",
      "typeVersion": 1, "position": [400, 300] },
    { "parameters": { "url": "https://api.openai.com/v1/chat/completions",
        "method": "POST", "sendHeaders": true,
        "headerParameters": { "parameters": [
          { "name": "Authorization", "value": "Bearer YOUR_API_KEY" },
          { "name": "Content-Type", "value": "application/json" } ] },
        "sendBody": true, "specifyBody": "json",
        "jsonBody": "={\"model\":\"gpt-5.6\",\"messages\":[{\"role\":\"user\",\"content\":$json.body.message}]}" },
      "name": "OpenAI", "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4, "position": [640, 300] },
    { "parameters": { "respondWith": "json",
        "responseBody": "={{ $json.choices[0].message.content }}" },
      "name": "Respond", "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1, "position": [880, 300] }
  ],
  "connections": {
    "Webhook": { "main": [[{ "node": "OpenAI", "type": "main", "index": 0 }]] },
    "OpenAI": { "main": [[{ "node": "Respond", "type": "main", "index": 0 }]] }
  }
}

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

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

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

מתוזמן — סיכום יומי למייל
n8nJSON
{
  "name": "Daily Digest to Email",
  "nodes": [
    { "parameters": { "rule": { "interval": [{ "field": "cronExpression", "expression": "0 8 * * *" }] } },
      "name": "Every day 08:00", "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1, "position": [400, 300] },
    { "parameters": { "url": "[YOUR_DATA_SOURCE_URL]" },
      "name": "Fetch Data", "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4, "position": [640, 300] },
    { "parameters": { "url": "https://api.openai.com/v1/chat/completions",
        "method": "POST", "sendHeaders": true,
        "headerParameters": { "parameters": [
          { "name": "Authorization", "value": "Bearer YOUR_API_KEY" } ] },
        "sendBody": true, "specifyBody": "json",
        "jsonBody": "={\"model\":\"gpt-5.6\",\"messages\":[{\"role\":\"user\",\"content\":\"סכם ל-5 נקודות: \"+ $json.data}]}" },
      "name": "Summarize", "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4, "position": [880, 300] },
    { "parameters": { "toEmail": "[YOUR_EMAIL]", "subject": "סיכום יומי",
        "text": "={{ $json.choices[0].message.content }}" },
      "name": "Send Email", "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2, "position": [1120, 300] }
  ],
  "connections": {
    "Every day 08:00": { "main": [[{ "node": "Fetch Data", "type": "main", "index": 0 }]] },
    "Fetch Data": { "main": [[{ "node": "Summarize", "type": "main", "index": 0 }]] },
    "Summarize": { "main": [[{ "node": "Send Email", "type": "main", "index": 0 }]] }
  }
}

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

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

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

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

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

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

Python — AI

OpenAI — קריאת צ'אט
PythonOpenAI
# pip install openai   |   export OPENAI_API_KEY="sk-..."
from openai import OpenAI

client = OpenAI()  # reads OPENAI_API_KEY from env

resp = client.chat.completions.create(
    model="gpt-5.6",
    messages=[
        {"role": "system", "content": "ענה בעברית, תמציתי."},
        {"role": "user", "content": "[הבקשה שלך כאן]"},
    ],
)
print(resp.choices[0].message.content)

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

מה לשנות: את הנתיב, את סוג הקבצים, ואת מה שמבקשים מכל קובץ.

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

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

מה לשנות: מזהה המודל ו-max_tokens, שכאן הוא פרמטר חובה ולא ברירת מחדל.

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

Claude — קריאת הודעה
PythonAnthropic
# pip install anthropic   |   export ANTHROPIC_API_KEY="sk-ant-..."
import anthropic

client = anthropic.Anthropic()

msg = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "[הבקשה שלך כאן]"}],
)
print(msg.content[0].text)

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

מה לשנות: את שם המודל וגודלו, לפי הזיכרון שיש לכם.

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

מתי זה מתאים: כשרוצים לשאול שאלות על מסמכים שלכם והתשובות חייבות לבוא מהם ולא מהידע הכללי של המודל.

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

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

עיבוד Batch של קבצים
PythonBatch
# עיבוד כל קובצי הטקסט בתיקייה עם מודל זול
import os, glob
from openai import OpenAI

client = OpenAI()

for path in glob.glob("input/*.txt"):
    text = open(path, encoding="utf-8").read()
    resp = client.chat.completions.create(
        model="gpt-5.6",  # לנפח גדול שקול מודל זול יותר
        messages=[{"role": "user", "content": f"סכם ב-3 נקודות:\n{text}"}],
    )
    out = path.replace("input/", "output/")
    os.makedirs("output", exist_ok=True)
    open(out, "w", encoding="utf-8").write(resp.choices[0].message.content)
    print("done:", out)

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

מה לשנות: את המודל ואת תוכן ההודעה. את המפתח קחו ממשתנה סביבה — $OPENAI_API_KEY — ולא כטקסט בפקודה, אחרת הוא נשמר בהיסטוריית השל.

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

RAG — שאילתה על מסמכים
PythonRAG
# RAG מינימלי: embed -> retrieve -> answer
from openai import OpenAI
import numpy as np

client = OpenAI()
docs = ["[מסמך 1]", "[מסמך 2]", "[מסמך 3]"]

def embed(texts):
    r = client.embeddings.create(model="text-embedding-3-small", input=texts)
    return np.array([e.embedding for e in r.data])

doc_vecs = embed(docs)

def ask(question):
    q = embed([question])[0]
    sims = doc_vecs @ q
    top = docs[int(sims.argmax())]  # הקטע הרלוונטי ביותר
    r = client.chat.completions.create(
        model="gpt-5.6",
        messages=[{"role": "system", "content": f"ענה רק לפי:\n{top}\nאם אין תשובה - אמור 'לא יודע'."},
                  {"role": "user", "content": question}],
    )
    return r.choices[0].message.content

print(ask("[השאלה שלך]"))

Shell / CLI

הרצת מודל מקומי (Ollama)
Shellמקומי · חינם
# התקן Ollama מ- https://ollama.com , ואז:
ollama run qwen3            # צ'אט אינטראקטיבי, רץ מקומית בחינם

# או דרך ה-API המקומי (פורט 11434):
curl http://localhost:11434/api/generate -d '{
  "model": "qwen3",
  "prompt": "כתוב פונקציית Python שמחזירה מספרי פיבונאצ׳י",
  "stream": false
}'
קריאה ל-OpenAI מה-CLI (curl)
Shellcurl
export OPENAI_API_KEY="sk-..."

curl https://api.openai.com/v1/chat/completions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6",
    "messages": [{"role": "user", "content": "[הבקשה שלך]"}]
  }'

לחבר בין הסקריפטים

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

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

מה ללמוד אחרי שהריצו

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

לחשב כמה זה יעלה, לפני שמריצים

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

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

כשזה לא עובד — סדר בדיקה

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

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

איך להפוך סקריפט למשהו שאפשר להפעיל

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

מה שונה כשהתוכן בעברית

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

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

רוצה יותר?

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