# Skill: Clean Subtitle captions (premium / brand)

Two quiet lines in the lower third, no colour games, no jumping: the look serious brands, founders and
documentary-style clips use when the content should feel expensive rather than loud. The edit is gentle —
pauses are part of the delivery.

**Captions only.** This skill uses two endpoints and nothing else: no AI images, no clips, no music, no
sound effects. Two calls, two renders, one finished video.

Base URL: `https://apihub.co.il` · Auth: `Authorization: Bearer <API key>` · Docs: `/docs`
Send `X-Tag: <job name>` on both calls, then `GET /v1/usage?tag=<job name>` tells you what it cost.

---

## 1. Cut gently

```jsonc
POST /v1/studio/remove-silence
{ "video_url": "<source>", "language_code": "he",
  "min_pause_ms": 650, "padding_ms": 130, "remove_fillers": false,
  "output": { "resolution": "source", "aspect_ratio": "original", "quality": "high" } }
```

Only real dead air goes (650 ms and longer) and the speech keeps 130 ms of air around it. Fillers stay:
in a calm, personal delivery they read as human, and cutting them is audible.

## 2. Render

```jsonc
POST /v1/studio/edit     // x-wait-ms: 110000
{
  "video_url": "<cut url>",
  "language_code": "he",
  "captions": { "style": {
    "font": "Assistant", "weight": 700, "size": 5.2,
    "color": "#FFFFFF", "active_color": "#FFFFFF",
    "outline": 0, "shadow": 7, "shadow_color": "#000000CC",
    "background": "#00000080",
    "animation": "fade", "max_words": 7, "max_lines": 2, "max_chars_per_line": 26,
    "position": "bottom", "margin": 14, "side_margin": 8, "uppercase": false
  } },
  "hook": { "text": "<a plain statement of what this is, 4–7 words>", "duration": 3.5,
    "style": { "preset": "clean", "font": "Assistant", "weight": 700, "size": 4.6, "position": "top", "margin": 9, "animation": "fade" } },
  "audio": { "normalize": true },
  "output": { "aspect_ratio": "9:16", "resolution": "1080", "fit": "crop", "quality": "high" }
}
```

**Why these numbers**

- A translucent black box (`background: "#00000080"`) instead of a heavy outline: the frame stays calm and
  the text is readable over any footage.
- No `active_color` difference and `animation: "fade"`: nothing blinks. The viewer reads, they do not watch text.
- `max_words: 7` over 2 lines, `size: 5.2`: full sentences, still above the mobile minimum.
- The hook is a quiet line at the top, not a shout — it states what the clip is.

## 3. Variants

- **No box:** drop `background` and raise `shadow` to 9 — cleaner over dark footage.
- **Cinema:** `color: "#FFE600"`, `font: "Frank Ruhl Libre"`, no box — the classic film-subtitle look.
- **16:9 for YouTube:** `output.aspect_ratio: "16:9"`, `size: 4.4`, `margin: 10`.

## Rules that apply to every caption job

- **Safe zone.** Keep text inside the middle 80% of the frame. `side_margin: 7` does the sides; keep
  `margin` ≥ 14 so the platform UI (username, buttons, progress bar) never covers a word.
- **Contrast before decoration.** White text with a black outline reads on anything. Colour is for the
  spoken word only.
- **The line never leaves the frame** — a line too wide is set smaller automatically. Do not shrink it yourself.
- **Hebrew is not upper-cased** (`uppercase: false`); it has no capitals and the flag only breaks Latin words
  mixed into the sentence. For English-only videos `uppercase: true` is fine.
- **Fonts:** Heebo and Rubik (weight 900) for Hebrew, Montserrat for Latin. `GET /v1/studio/fonts` lists them.
- Never send a field that is not in the docs — unknown fields are rejected with the right name.

## What it costs

Transcription ≈ 1 credit per minute. Each render ≈ 1 credit per second of output, so a 60 s video that is
cut and then captioned ≈ 120 credits. Nothing else is billed: this skill generates nothing.
