# חילוץ שדה

> שולפים שדה אחד או נתיב מקונן, כגון title או authorMeta.name, מנתוני JSON, ושולחים אותו הלאה כטקסט, כרשימה להרצה אחת לכל פריט או כ-JSON.

Source: https://nodaro.ai/he/docs/nodes/automate/extract-field

רכיב **חילוץ שדה** שולף שדה אחד, או נתיב מקונן של שדות, מנתוני JSON. בחרו את השדה מתוך השדות שזוהו בנתונים של הרכיב שבמעלה הזרם, או הקלידו נתיב בסימון נקודות, כגון `authorMeta.name`. הרכיב שולח את התוצאה כטקסט אחד, כרשימה שיכולה להריץ את הרכיב הבא פעם אחת לכל ערך, או כ-JSON גולמי. רכיב חילוץ שדה רץ מיד ולא עולה קרדיטים.

- Found in: Automate › Logic & Data
- Output: data
- API type: `extract-field`

## מתי להשתמש
- שליפת השדה `title` או `url` של כל תוצאת חיפוש מרכיב [גריפת אתר](https://nodaro.ai/docs/nodes/automate/web-scrape), לפני אצווה.
- שליפת ערך מקונן, כגון שם הכותב בתוך כל פוסט שנגרף.
- הפיכת מערך JSON לרשימת טקסטים בשביל רכיב [יצירת טקסט - כל LLM](https://nodaro.ai/docs/nodes/automate/prompt).
- הגעה לנתונים שמקוננים עמוק, בשרשור של שני רכיבי חילוץ שדה.

## התחלה מהירה
### הוספת הרכיב
הקישו Tab על הקנבס ובחרו **אוטומציה › לוגיקה ונתונים › חילוץ שדה**.

### חיבור נתוני JSON
חברו לקלט **מקור** רכיב ששולח JSON, למשל רכיב [גריפת אתר](https://nodaro.ai/docs/nodes/automate/web-scrape) או רכיב [יצירת טקסט - כל LLM](https://nodaro.ai/docs/nodes/automate/prompt) שעונה ב-JSON.

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

### בחירת סוג הפלט והרצה
בהגדרה **סוג פלט**, בחרו **טקסט**, **רשימה** או **JSON**, והריצו את הרכיב. השדה **תצוגה מקדימה של הפלט** מציג את התוצאה.

Workflow: רכיב חילוץ שדה לוקח את הכותרת של כל תוצאת חיפוש כרשימה, ורכיב יצירת תמונה יוצר תמונה אחת לכל כותרת.

- גריפת אתר → חילוץ שדה (מקור)
- חילוץ שדה → יצירת תמונה (פרומפט · כל אחד)

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

## הגדרות
| הגדרה | מה היא עושה |
| --- | --- |
| **שדה** | השדה לחילוץ. שדות שזוהו מופיעים ברגע שרכיב שבמעלה הזרם מחובר ויש לו נתונים. האפשרות **(הפריט כולו)** משתמשת בכל איבר של מערך כמו שהוא. האפשרות **נתיב מותאם אישית…** עוברת לשדה **נתיב**, שבו מקלידים את הנתיב. |
| **נתיב** | נתיב בסימון נקודות, כגון `caption` או `authorMeta.name`. כשהנתונים הם מערך, הנתיב חל על כל איבר. השאירו אותו ריק כדי להשתמש בכל איבר כמו שהוא. הכפתור **→ חזרה לרשימת השדות** מחזיר לשדות שזוהו. |
| **סוג פלט** | האפשרות **טקסט**, ברירת המחדל, מאחדת את הערכים לטקסט אחד, ערך בכל שורה. האפשרות **רשימה** שולחת כל ערך כפריט נפרד, והיא עובדת עם מצבי החיבור **פריט** ו**כל אחד**. האפשרות **JSON** שולחת את הערך הגולמי, כדי לשרשר רכיב חילוץ שדה נוסף או רכיב שקורא JSON. |

## שמירה על התאמה בין שני שדות
כדי להשתמש יחד בשני שדות מאותו מערך, למשל `prompt` ו-`negative` מתוך רשימה של קונספטים:

1. הוסיפו רכיב חילוץ שדה אחד לכל שדה, ובשניהם בחרו **רשימה** בהגדרה **סוג פלט**.
2. חברו כל אחד מהם לקלט משלו ברכיב הבא, כששני החיבורים במצב **כל אחד**. אפשר גם לחבר אותם לשתי עמודות של רכיב [רשימה](https://nodaro.ai/docs/nodes/automate/list).

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

בחירה לפי מיקום סופרת רק את הערכים שקיימים. המצב **פריט N**, הטווחים והמצב **חבילה** סופרים ערכים קיימים, והפלט **טקסט** מציג את הערכים הקיימים, ערך בכל שורה.

## כשה-JSON מגיע ממודל AI
כשרכיב [יצירת טקסט - כל LLM](https://nodaro.ai/docs/nodes/automate/prompt) כותב את ה-JSON, בקשו ממנו להחזיר JSON גולמי בלבד, בלי סימוני קוד מסביב ובלי משפט לפניו או אחריו. אחרת, רכיב חילוץ שדה נכשל עם השגיאה "Input is not valid JSON" (הקלט הוא לא JSON תקין).

## קרדיטים
רכיב חילוץ שדה לא עולה כלום.

## טיפים
- **קודם מחברים, אחר כך בוחרים.** הרשימה **שדה** מתמלאת מהנתונים שבמעלה הזרם, ולכן לא צריך לזכור שמות של מפתחות.
- **רשימות שטוחות.** כשה-JSON הוא כבר רשימה שטוחה, כגון `["a", "b", "c"]`, השאירו את ההגדרה **שדה** על **(הפריט כולו)** ובחרו **רשימה** בהגדרה **סוג פלט**.
- **אובייקטים מקוננים.** השתמשו בסימון נקודות בשדה **נתיב**, כגון `videoMeta.duration`.
- **מערכים באמצע נתיב.** שרשרו שני רכיבים. הראשון מחלץ את `items`, עם **JSON** בהגדרה **סוג פלט**; השני מחלץ את `title` מכל פריט.
- **קודם מסננים.** כדי להשאיר רק חלק מהפריטים לפני החילוץ, השתמשו ברכיב [סינון רשימה](https://nodaro.ai/docs/nodes/automate/filter-list).

## שאלות נפוצות

### איך שולפים את הכותרות מתוצאות שנגרפו?

חברו את רכיב הגריפה לרכיב חילוץ שדה, ובהגדרה שדה בחרו title. בהגדרה סוג פלט, בחרו רשימה כדי להריץ את הרכיב הבא פעם אחת לכל כותרת, או טקסט כדי לקבל את כל הכותרות בטקסט אחד, כותרת בכל שורה.

### מה ההבדל בין סוגי הפלט טקסט, רשימה ו-JSON?

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

### למה רכיב חילוץ שדה מציג את השגיאה "Input is not valid JSON" (הקלט הוא לא JSON תקין)?

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

### איך שומרים יחד שני שדות של אותו פריט, כגון prompt ו-negative?

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

### האם רכיב חילוץ שדה עולה קרדיטים?

לא. רכיב חילוץ שדה רץ מיד ולא עולה כלום.
