# הוספת כתוביות

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

Source: https://nodaro.ai/he/docs/nodes/video/add-captions

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

- Found in: Video › Titles, Graphics & Captions
- Output: video
- API type: `add-captions`

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

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

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

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

### הרצה
לחצו על **הרצה**. הסרטון עם הכתוביות מופיע על הרכיב.

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

- העלאת וידאו → חילוץ אודיו (וידאו)
- חילוץ אודיו → תמלול (אודיו)
- העלאת וידאו → הוספת כתוביות (וידאו)
- תמלול → הוספת כתוביות (תמלול)
- הוספת כתוביות → פוסט לטיקטוק

## קלטים
| קלט | מקבל | מה הוא עושה |
| --- | --- | --- |
| **וידאו** | רכיבי וידאו | הסרטון שמוסיפים לו כתוביות. נדרש. |
| **תמלול** | תמלול מהרכיבים [תמלול](https://nodaro.ai/docs/nodes/audio/transcribe), [החלת רשימת עריכה](https://nodaro.ai/docs/nodes/video/apply-edl), [טקסט לדיאלוג](https://nodaro.ai/docs/nodes/audio/text-to-dialogue), תצוגת דוברים או מחליף מצלמות | אופציונלי. המילים והתזמונים שלהן. בלי תמלול מחובר, הרכיב מתמלל את הדיבור בסרטון. |
| **תוכנית כתוביות** | תוכנית כתוביות מתוזמנת | אופציונלי. כתוביות שכבר מתוזמנות, עם שורת פתיחה. ראו את הסעיף [קלט תוכנית הכתוביות](#caption-plan-input). |

הפלט, **וידאו**, הוא הסרטון עם הכתוביות הצרובות בו.

## הגדרות
| הגדרה | מה היא עושה |
| --- | --- |
| **סגנון** | איך הכתוביות מופיעות. ברירת המחדל היא **כתובית (סטטית)**. חמשת הסגנונות האחרים מונפשים. ראו את הסעיף [סגנונות כתוביות](#caption-styles). |
| **מראה** | שילוב מוגדר מראש של גופן, קו מתאר, אותיות רישיות וצבע המילה הנאמרת: **מתאר (TikTok)** או **נקי**. הסגנון **כתובית** מציע גם את האפשרות **ללא (רגיל)**, ברירת המחדל שלו. הבקרות שבהמשך הטבלה דורסות חלקים בודדים של המראה. ראו את הסעיף [מראות](#looks). |
| **מיקום** | **למטה** (ברירת המחדל), **למעלה** או **במרכז**. ראו את הסעיף [מיקום](#position). |
| **מיקום אנכי** | מחוון מ-0 עד 100%: הגובה של מרכז גוש הכתוביות. אחרי שקובעים אותו, הוא דורס את ההגדרה **מיקום**. הכפתור **אוטומטי** מחזיר את קביעת המיקום להגדרה **מיקום**. |
| **גודל הגופן** | מ-12 עד 200 פיקסלים. ברירת המחדל היא 32. כשעוברים לסגנון מונפש, גודל גופן שנשאר על 32 משתנה ל-64, ולהפך. |
| **צבע** | צבע הטקסט. ברירת המחדל היא לבן (`#FFFFFF`). |
| **גופן** | **אוטומטי (לפי המראה)** או אחד מ-24 גופנים, כגון Montserrat, Inter, Anton, Bebas Neue, Oswald ו-Poppins. |
| **עובי הגופן** | **אוטומטי (ברירת המחדל של המראה)**, או עובי מ-**100 דק מאוד** עד **900 שחור**. אם לגופן אין עובי כזה, הרכיב משתמש בעובי הקרוב ביותר. |
| **מקסימום מילים בשורה** | מ-1 עד 20. כשהשדה ריק, נכנסות לשורה מילים רבות ככל שרוחב הפריים מאפשר. מוסתר בסגנון **קפיצת מילה**, שתמיד מציג מילה אחת. ראו את הסעיף [מקסימום מילים בשורה](#max-words-per-line). |
| **אותיות רישיות** | מציג את הכתוביות באותיות רישיות. |
| **צבע המתאר** | צבע קו המתאר סביב הטקסט. הכפתור **אוטומטי** מחזיר את בחירת הצבע למראה. |
| **עובי המתאר** | מ-0 עד 40 פיקסלים. כשהשדה ריק, העובי נקבע לפי המראה, ו-`0` פירושו בלי קו מתאר. |
| **צבע המילה הנאמרת** | בסגנונות מונפשים בלבד. הצבע של המילה שנאמרת באותו רגע. הכפתור **אוטומטי** מחזיר את בחירת הצבע למראה. |
| **אנימציה** | בסגנונות מונפשים בלבד. המתג מופעל כברירת מחדל. כבו אותו כדי להקפיא את התנועה של המילים. ראו את הסעיף [אנימציה](#animate). |
| **כתוביות ברמת מילה** | בסגנונות מונפשים בלבד. המתג מופעל כברירת מחדל: כתובית אחת לכל מילה. כבו אותו כדי לקבץ לשורות את המילים של תמלול מחובר. |

![חלונית ההגדרות של רכיב הוספת כתוביות עם הסגנון מילים בסגנון TikTok, המראה מתאר, תצוגה מקדימה חיה של הכתוביות, והגדרות המיקום וגודל הגופן.](https://nodaro.ai/docs-media/screens/en/nodes/add-captions/settings.light.webp)

### גופנים
ברשימה **גופן** יש 24 גופנים:

| סוג | גופנים |
| --- | --- |
| סנס־סריף | Inter, Roboto, Open Sans, Montserrat, Poppins, Raleway, Nunito, Lato, Rubik, Heebo, Cairo, Tajawal |
| סריף | Playfair Display, Merriweather, Lora, EB Garamond |
| גופני תצוגה צרים | Bebas Neue, Oswald, Anton |
| כתב יד | Dancing Script, Pacifico, Caveat |
| רוחב אחיד | Roboto Mono, Fira Code |

הגופנים Rubik, Heebo, Cairo ו-Tajawal מכסים עברית וערבית. כתוביות בעברית ובערבית מוצגות מימין לשמאל. הכיוון נקבע לפי השפה של רוב הכתוביות, ולכן שם מותג באותיות לטיניות בתחילת קליפ בעברית לא הופך את כיוון השורות שלו.

## סגנונות כתוביות
| סגנון | מה רואים |
| --- | --- |
| **כתובית (סטטית)** | כתובית רגילה. דיבור מתומלל מוצג כשורת משפט אחת בכל פעם, והשורה נשארת על המסך. |
| **הדגשת מילה (קינטית)** | שורה אחת בכל פעם, והמילה הנאמרת מודגשת. |
| **קריוקי (קינטית)** | שורה אחת בכל פעם, שמתמלאת מילה אחר מילה תוך כדי הדיבור. |
| **מילים בסגנון TikTok (קינטית)** | קבוצות של 1–4 מילים שקופצות למסך. קבוצה לעולם לא חוצה סוף משפט או הפסקה. |
| **קפיצת מילה (קינטית)** | מילה אחת בכל פעם, שנכנסת בקפיצה. כל מילה נשארת עד שהבאה אחריה מתחילה. |
| **מקפצת (קינטית)** | שורה אחת בכל פעם, וכל מילה מקפצת כשהיא נאמרת. |

חמשת הסגנונות המונפשים נקראים באפליקציה סגנונות קינטיים.

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

| מראה | מה הוא מרנדר |
| --- | --- |
| **מתאר (TikTok)** | Montserrat Black (עובי 900) באותיות רישיות, טקסט לבן עם קו מתאר שחור עבה, ומילה נאמרת בצהוב. ברירת המחדל של הסגנונות המונפשים. |
| **נקי** | Inter, בלי קו מתאר ובלי אותיות רישיות. |
| **ללא (רגיל)** | בסגנון **כתובית** בלבד, וברירת המחדל שלו: כתובית ניטרלית ב-Inter, בלי קו מתאר ובלי אותיות רישיות. |

- **הבקרות דורסות חלקים בודדים של המראה.** במראה **מתאר (TikTok)**, שינוי של ההגדרה **צבע המילה הנאמרת** בלבד שומר על הגופן, על האותיות הרישיות ועל קו המתאר.
- **צבע המילה הנאמרת מופיע בשלושה סגנונות.** רק הסגנונות **מילים בסגנון TikTok**, **קריוקי** ו**הדגשת מילה** מסמנים מילה אחת בכל פעם. הסגנונות **כתובית** ו**קפיצת מילה** משתמשים בגופן, בקו המתאר ובסוג האותיות של המראה, בצבע אחד.
- **גודל הגופן תלוי בגופן של המראה.** Montserrat Black באותיות רישיות רחב בכ-30% לכל תו מ-Inter באותיות רגילות. לכן, עם אותו ערך בהגדרה **גודל הגופן**, נכנסות פחות מילים לשורה במראה **מתאר (TikTok)**. בחרו במראה **נקי**, בגופן צר כגון Bebas Neue, Anton או Oswald, או בגודל קטן יותר.
- **קו המתאר גדל עם הטקסט.** כשקו המתאר בא מהמראה, העובי שלו הוא 10% מגודל הגופן, מעוגל, ולפחות 2 פיקסלים. חצי ממנו נמצא מחוץ לאותיות, ולכן החלק הנראה של קו המתאר הוא כ-5% מגודל הגופן: קו מתאר של 6 פיקסלים בגודל 64, וקו מתאר של 3 פיקסלים בגודל 32. קבעו ערך בהגדרה **עובי המתאר** כדי לבחור עובי משלכם, או `0` כדי לוותר על קו המתאר.

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

- שורה מתמלאת במילים עד כ-85% מרוחב הפריים, בגודל הגופן ובגופן שנבחרו.
- שורה מסתיימת מוקדם יותר בסוף משפט, שמסומן ב-`.`, `!`, `?` או `…`, או בהפסקה של 0.5 שנייה או יותר בין שתי מילים.
- משפט ארוך מדי לשורה אחת מתפצל לשורות מאוזנות, כך שהמילה האחרונה שלו לעולם לא נשארת לבד. למשל, `OK SO I BUILT` / `A WORLD IN` / `NODARO STUDIO.`, במקום לסיים במילה `STUDIO.` לבדה.
- שורה נשארת על המסך עד 1.5 שניות אחרי המילה האחרונה שלה, והשורה הבאה מחליפה אותה ברגע שהיא מתחילה. הפסקות בתוך שורה והפסקות קצרות בין שורות לעולם לא משאירות פריים ריק. שקט של יותר מ-1.5 שניות מעלים את הכתובית מהמסך.
- שורה לעולם לא מתחילה או מסתיימת בקו מפריד בודד. קו מפריד בין שני רווחים, כמו ב-`Nodaro — every model`, מתוזמן לעיתים קרובות כמילה בפני עצמה. כשמעבר שורה נופל ממש לפני הקו המפריד הזה או ממש אחריו, הקו המפריד לא מוצג בשורה, והמילים שומרות על התזמונים שלהן. קו מפריד בתוך שורה נשאר. אותו כלל חל על קבוצה של **מילים בסגנון TikTok**, על מילה בסגנון **קפיצת מילה** — שם המילה שלפני קו מפריד בודד נשארת על המסך במקומו — ועל גוש טקסט שנשבר לשורות לפי ההגדרה **מקסימום מילים בשורה**.
- בתוך השורה, האפקט עובר ממילה למילה: ההדגשה, המילוי או הקפיצה. בזמן הפסקה, המילה האחרונה שנאמרה נשארת פעילה. בשורה של כתובית סטטית אין אפקט לכל מילה.

שני הסגנונות שלא מציגים שורות פועלים לפי אותם כללים:

- הסגנון **קפיצת מילה** משאיר כל מילה על המסך עד שהמילה הבאה מתחילה, ולכל היותר 1.5 שניות אחרי שהמילה נגמרת.
- הסגנון **מילים בסגנון TikTok** לעולם לא פורש קבוצה על פני סוף משפט או הפסקה של 0.5 שנייה או יותר. כל קבוצה נשארת עד שהקבוצה הבאה מתחילה, ולכל היותר 1.5 שניות אחרי המילה האחרונה שלה.

## מקסימום מילים בשורה
ההגדרה **מקסימום מילים בשורה** מגבילה את מספר המילים בשורה אחת, או בקבוצה אחת של **מילים בסגנון TikTok**. היא פועלת בנוסף לכללים שלמעלה: שורה עדיין מסתיימת ב-85% מרוחב הפריים, בסוף משפט ובהפסקה. המגבלה יכולה רק לקצר שורות. כתבו 1 או 2 לכתוביות קצרות וקולעות, או השאירו את השדה ריק כדי למלא את הרוחב.

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

למשל, בלי מגבלה, הסגנון **הדגשת מילה** מציג את השורות `OK SO I BUILT`, `A WORLD IN` ו-`NODARO STUDIO.`; כשההגדרה **מקסימום מילים בשורה** עומדת על 2, הסגנון מציג `OK SO`, `I BUILT`, `A WORLD` וכן הלאה, וכל שורה נשארת עד שהבאה אחריה מתחילה. משפט עם מספר אי־זוגי של מילים מסתיים בשורה של מילה אחת.

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

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

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

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

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

| הגדרה | איפה הגוש נמצא |
| --- | --- |
| **למעלה** | הקצה העליון של הגוש ב-12% מגובה הפריים. שורות נוספות גדלות כלפי מטה. |
| **למטה** (ברירת המחדל) | הקצה התחתון של הגוש 18% מעל תחתית הפריים, כך שהכתוביות לא מסתירות את הכפתורים של טיקטוק ורילס. שורות נוספות גדלות כלפי מעלה. |
| **במרכז** | מרכז הגוש ב-50% מגובה הפריים. |
| **מיקום אנכי** | מרכז הגוש באחוז שקבעתם, כשהמדידה היא מהקצה העליון. ההגדרה הזו דורסת את ההגדרה **מיקום**. |

ההגדרה **מיקום אנכי** קובעת את המרכז, לא קצה. ב-85%, מרכז הגוש נמצא ב-85% מהגובה, והתחתית שלו יורדת נמוך יותר. בפריים בגובה 1920 פיקסלים, ערך של 83.5% מציב את המרכז בסביבות 1,603 פיקסלים. ערך של כ-65% ממקם את הכתוביות מתחת לפנים ומעל הכפתורים התחתונים של אפליקציה.

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

- **הרכיב מתמלל את הסרטון.** כששום דבר לא מחובר לקלט **תמלול**, הרכיב מתמלל את הדיבור בסרטון עם **Incredibly Fast Whisper**. ודאו שהדיבור ברור.
- **הרכיב קורא תמלול מחובר.** חברו תמלול לקלט **תמלול**. רכיב החלת רשימת עריכה מעביר כל מילה דרך החיתוך, ולכן הכתוביות נשארות מסונכרנות עם סרטון שנערך מחדש, בדיוק של כ-80 אלפיות שנייה, גם לאורך מעבר צולב.

### אילו פלטים מתחברים לקלט תמלול
הפלטים האלה מעבירים תמלול ומתחברים לקלט **תמלול**:

- הפלט **תמלול** של הרכיבים [תמלול](https://nodaro.ai/docs/nodes/audio/transcribe) ו[החלת רשימת עריכה](https://nodaro.ai/docs/nodes/video/apply-edl).
- הפלט **תמלול** של הרכיבים תצוגת דוברים ומחליף מצלמות.
- הפלט **תמלול** של רכיב [טקסט לדיאלוג](https://nodaro.ai/docs/nodes/audio/text-to-dialogue). כל מודל דיאלוג מחזיר תזמון לכל מילה, והקול של כל שורה מסומן כדובר, ולכן הדיאלוג מקבל כתוביות בלי תמלול נוסף.

רשימת עריכה היא לא תמלול. העורך דוחה חיבור מרשימת העריכה של רכיב [תוכנית עריכה](https://nodaro.ai/docs/nodes/video/edit-plan) או של רכיב מחליף מצלמות, או מהפלט **רשימת עריכה** של רכיב תצוגת דוברים, ומציין את הסיבה. כשתהליך נכתב דרך MCP, דרך ה-API או דרך ה-Copilot, חיבור כזה מושמט ממנו, עם הסבר למה. גם הכיוון ההפוך נדחה: תמלול לא יכול להזין קלט של רשימת עריכה, כמו הקלט ברכיב החלת רשימת עריכה או ברכיב מחליף מצלמות.

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

המנוע **Whisper** של רכיב תמלול מחזיר משפטים, לא תזמון לכל מילה. אם רכיב תמלול שעובד עם Whisper מזין את הרכיב הזה, ישירות או דרך רכיב החלת רשימת עריכה או רכיב תצוגת דוברים, התהליך נעצר לפני שמשהו רץ ולפני כל חיוב. ההודעה מציינת את רכיב התמלול. ברכיב התמלול הזה, בחרו מנוע שמחזיר תזמון לכל מילה, כגון **Incredibly Fast Whisper** או **ElevenLabs STT**. אותה בדיקה חלה גם על שרשראות בתוך תת־תהליך. רק שרשרת שחוצה את הגבול של תת־תהליך נדחית ברכיב הזה, אחרי שהתמלול כבר רץ.

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

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

ההגדרה **מקסימום מילים בשורה** חלה בשני המקרים.

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

- **שורת הפתיחה משתמשת במראה של לוחית פתיחה.** שאר הסרטון משתמש בסגנון הכתוביות של הרכיב עצמו. כדי לשנות את הסגנון של השאר, החילו על הרכיב ערכת כתוביות; שורת הפתיחה שומרת על המראה של לוחית פתיחה.
- **תוכנית בעברית משתמשת בגופן Rubik.** תוכנית שהשפה שלה עברית (`language: "he"`) קובעת את Rubik לשורת הפתיחה ולשאר הסרטון. שם מותג באותיות לטיניות בתוך שורה בעברית מוצג אז באותו גופן, ושומר על האותיות שלו כפי שנכתבו.
- **התוכנית מחליפה את שאר המילים של הרכיב.** הרכיב לא משתמש בטקסט, במקטעים או בתמלול המחובר שלו עצמו.
- **המחיר הוא המחיר של כתוביות מונפשות.** תוכנית תמיד משתמשת ברינדור המונפש, ולכן היא עולה 55 קרדיטים.
- **תוכנית ריקה מעבירה את הסרטון כמו שהוא.** כשאין בתוכנית שום דבר להציג ככתובית, הרכיב מחזיר את הסרטון ללא שינוי, בלי עלות.

## מנועי תמלול
| מנוע | תזמון לכל מילה | איפה אפשר לבחור אותו |
| --- | --- | --- |
| [Incredibly Fast Whisper](https://nodaro.ai/docs/models/audio/incredibly-fast-whisper) | כן | ברירת המחדל בכל מקום |
| [ElevenLabs STT](https://nodaro.ai/docs/models/audio/elevenlabs-stt) | כן | API, MCP, SDK ו-CLI |
| [Whisper](https://nodaro.ai/docs/models/audio/whisper) | לא, משפטים בלבד | API, MCP, SDK ו-CLI |

המנוע לא משנה את המחיר של רכיב הוספת כתוביות. הסגנונות המונפשים צריכים תזמון לכל מילה, ולכן הם צריכים Incredibly Fast Whisper או ElevenLabs STT. הסגנון **כתובית** צריך רק תזמון ברמת המשפט, ולכן הוא עובד עם כל מנוע.

## קצב הפריימים של התוצאה
רינדור של כתוביות מונפשות שומר על קצב הפריימים של סרטון המקור. הקצב מעוגל למספר שלם, כגון 24 במקום 23.976 או 30 במקום 29.97, ונשאר בין 15 ל-60 פריימים לשנייה. בשלושה מקרים הרינדור נעשה ב-30 פריימים לשנייה במקום זאת:

- אי אפשר לקרוא את קצב הפריימים של המקור.
- למקור יש קצב פריימים משתנה.
- הקליפ ארוך ממגבלת הפריימים של הרינדור, 108,000 פריימים. ב-60 פריימים לשנייה, זה קליפ ארוך מ-30 דקות.

כתובית סטטית פשוטה תמיד שומרת על קצב הפריימים של המקור.

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

| ערכה | סגנון | מיקום | גודל הגופן | צבע |
| --- | --- | --- | --- | --- |
| **כתוביות נקיות** | כתובית | למטה | 32 | לבן |
| **בולט וממורכז** | מילים בסגנון TikTok | במרכז | 72 | לבן |
| **הדגשת קריוקי** | קריוקי | למטה | 56 | לבן |
| **קפיצת מילים** | קפיצת מילה | במרכז | 64 | צהוב (`#FFE600`) |
| **כתוביות קופצניות** | מקפצת | למטה | 64 | לבן |
| **הדגשת מילה** | הדגשת מילה | למטה | 48 | טורקיז (`#00E5FF`) |
| **רצועה עליונה** | כתובית | למעלה | 36 | לבן |

בדף [ערכות](https://nodaro.ai/docs/concepts/presets) מוסבר איך מחילים, שומרים ומשתפים ערכות.

## קרדיטים
לרכיב הוספת כתוביות יש שני מחירים:

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

בחלונית ההגדרות אין שדה טקסט, ולכן רכיב שהוגדר בעורך תמיד יוצר כתוביות מהדיבור או מתמלול מחובר, וכל הרצה עולה 55 קרדיטים. הכתובית שעולה 33 קרדיטים היא טקסט קבוע שנשלח ב-API, ב-MCP, ב-SDK או ב-CLI. מנוע התמלול ובקרות העיצוב לא משנים את המחיר של סגנון מונפש.

## טיפים
- **התאימו את הסגנון לתוכן.** השתמשו בסגנון **כתובית** לתוכן מקצועי, ובסגנונות **הדגשת מילה** או **מילים בסגנון TikTok** לרשתות החברתיות.
- **שימו לב לכפתורים של הפלטפורמה.** מיקום ברירת המחדל, **למטה**, כבר לא מסתיר את הכפתורים של טיקטוק ורילס. לווידאו אנכי לרשתות החברתיות, גם המיקום **במרכז** מתאים.
- **שמרו על טקסט קריא.** טקסט לבן על תמונה כהה נקרא הכי טוב. על תמונה בהירה, השתמשו בטקסט צבעוני.
- **תקנו קודם את המילים.** לכתוביות המדויקות ביותר, תמללו ברכיב [תמלול](https://nodaro.ai/docs/nodes/audio/transcribe), תקנו את הטקסט, ואז תזמנו אותו ברכיב [יישור מאולץ](https://nodaro.ai/docs/nodes/audio/forced-alignment).
- **הוסיפו כתוביות בסוף.** מקמו את רכיב הוספת כתוביות אחרי רכיב [שכבה על וידאו](https://nodaro.ai/docs/nodes/video/video-overlay), כדי שלוגואים וכרטיסים יישארו מתחת לכתוביות.

## פתרון בעיות
**התהליך נעצר לפני ההרצה, וההודעה מציינת רכיב תמלול.** רכיב התמלול הזה משתמש במנוע Whisper, שלא מחזיר תזמון לכל מילה. העבירו אותו ל-Incredibly Fast Whisper או ל-ElevenLabs STT.

**בשורות יש פחות מילים מהצפוי.** המראה **מתאר (TikTok)** משתמש בגופן רחב. בחרו במראה **נקי**, בגופן צר כגון Bebas Neue, או בערך קטן יותר בהגדרה **גודל הגופן**.

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

## מה-API ומ-MCP
קוד ועוזרי AI יכולים לעשות יותר ממה שאפשר בעורך. הנתיב `POST /v1/add-captions`, כלי ה-MCP `add_captions`, המתודה `client.media.addCaptions(...)` של ה-SDK וה-[CLI](https://nodaro.ai/docs/developers/cli) מקבלים כולם את אותן בקרות כמו חלונית ההגדרות, ובנוסף:

- **טקסט משלכם.** בסגנון **כתובית**, השדה `text` נצרב כגוש קבוע אחד לכל הסרטון, ושום תמלול לא מחליף אותו. מעבר שורה בטקסט כופה שורה חדשה. בסגנון מונפש, השדה `text` הוא רק חלופה: משתמשים בו כשהתמלול לא מוצא מילים, והוא מתפרס באופן שווה על פני הסרטון.
- **תזמון מילים משלכם.** השדה `captions` הוא רשימה של רשומות כתוביות, כל אחת עם `text`, `startMs` ו-`endMs`. לסגנונות המונפשים, תנו רשומה אחת לכל מילה.
- **מנוע התמלול.** השדה `transcribe_provider` בוחר `incredibly-fast-whisper` (ברירת המחדל), `elevenlabs-stt` או `whisper`. סגנון מונפש עם Whisper ובלי מקור מילים אחר נדחה עוד לפני שמשוריינים קרדיטים. כדי לכבות את התמלול, קבעו בשדה `auto_transcribe` את הערך `false`; בקשה בלי שום מקור של מילים נדחית.
- **עיצוב שונה לכל טווח זמן.** השדה `segments` מחיל סגנון ומראה שונים על כל טווח זמן של אותו סרטון, בקריאה אחת. ראו את הסעיף [כתוביות לפי מקטע](#per-segment-captions).

כשבקשה כוללת כמה מקורות של מילים, הרכיב משתמש בראשון מבין המקורות האלה: השדה `captions`, תמלול מחובר, השדה `text` בסגנון **כתובית**, ואז תמלול אוטומטי.

שמות השדות שונים בכל ממשק. גוף הבקשה ב-REST וה-SDK משתמשים ב-`maxWordsPerLine`, כלי ה-MCP משתמש ב-`max_words_per_line`, וה-CLI משתמש ב-`--max-words-per-line`.

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

למשל, הארגומנטים האלה לכלי ה-MCP `add_captions` מציגים משפט גדול עם קו מתאר בחלק העליון במשך 3 שניות, ואז מילה אחת בכל פעם בחלק התחתון:

```json
{
"video_url": "https://example.com/clip.mp4",
"look": "outline",
"segments": [
{ "start_ms": 0, "end_ms": 3000, "style": "subtitle", "position": "top", "font_size": 96, "text": "Same face, every shot. No re-prompting." },
{ "start_ms": 3000, "end_ms": 20000, "style": "word-pop", "position": "bottom", "font_size": 48 }
]
}
```

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

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

### באיזה סגנון כתוביות להשתמש לטיקטוק, לרילס ול-Shorts?

ברכיב הוספת כתוביות, בחרו את הסגנון מילים בסגנון TikTok או את הסגנון הדגשת מילה, עם המראה מתאר (TikTok). המראה הזה נותן מילים מודגשות באותיות רישיות עם קו מתאר שחור, והמילה הנאמרת מופיעה בצהוב. לכתוביות קצרות וקולעות, קבעו בהגדרה מקסימום מילים בשורה את הערך 1 או 2.

### כמה קרדיטים עולה רכיב הוספת כתוביות?

רינדור כתוביות ברכיב הוספת כתוביות עולה 55 קרדיטים. היוצא מן הכלל היחיד הוא כתובית סטטית פשוטה עם טקסט קבוע משלכם, שנשלחת ב-API, ב-MCP, ב-SDK או ב-CLI, ועולה 33 קרדיטים. מנוע התמלול לא משנה את המחיר.

### למה נכנסות פחות מילים לשורה במראה מתאר?

ברכיב הוספת כתוביות, המראה מתאר משתמש ב-Montserrat Black באותיות רישיות, גופן רחב בכ-30% לכל תו מהגופן Inter של המראה נקי. בחרו במראה נקי, בגופן צר כגון Bebas Neue, Anton או Oswald, או בגודל גופן קטן יותר.

### האם הכתוביות נשארות מסונכרנות אחרי שחתכתי את הסרטון?

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

### האם רכיב הוספת כתוביות עובד בעברית ובערבית?

כן. הגופנים Rubik, Heebo, Cairo ו-Tajawal מכסים עברית וערבית, והכתוביות מוצגות מימין לשמאל. הכיוון נקבע לפי השפה של רוב הכתוביות, ולכן שם מותג באותיות לטיניות לא הופך את כיוון השורה.
