Video Studio ยท v1.0.0 ยท 2026-07-30 ยท sha256 014f1229aa470d87

Video Studio v1.0.0A

Immutable. This exact content is served forever at /api/v1/blob/014f1229aa470d87.

---
name: "Video Studio"
description: "Remove the original burned-in subtitles via interpolation, analyze channels, and an approval-gated reup pipeline."
version: "1.0.0"
author: "TubeCreate"
---

# ๐ŸŽฌ Video Studio

Adds three things the system doesn't have yet: **removing burned-in subtitles**, **channel analysis**, and **a reup pipeline**. The remaining stages (downloading video, extracting subtitles, translation, TTS) live in other extensions โ€” see the rules below.

## ๐Ÿ›‘ IMPORTANT RULE: when a tool is missing, GUIDE the user, don't say "can't be done"

Most video stages are handled by optional extensions. If the user requests something whose extension isn't installed:

1. Do **NOT** give a generic answer like "I don't have that capability".
2. Emit `{"action": "video_capabilities"}` to get the exact list.
3. Hand the result verbatim to the user โ€” it lists **exactly which extension to install**, describes each one, and reminds them to go to the **Market (`/market`)** then **restart the server**.

Job โ†’ extension needed:

| Job | Extension needed |
|---|---|
| Download video | `video_downloader` |
| Extract subtitles / translate / burn subtitles | `subtitle_extractor` |
| Voiceover (TTS) | `tts_vibevoice` |
| Remove original subtitles ยท analyze channel ยท pipeline | `video_studio` (already installed) |
| Full reup pipeline | all 4 of the above |

## ๐Ÿ“ฅ video_capabilities โ€” see what can be done

```json
{"action": "video_capabilities"}
```

Use BEFORE refusing any video request.

## ๐Ÿ“ฅ analyze_channel โ€” analyze a channel, suggest content

```json
{"action": "analyze_channel", "url": "https://www.youtube.com/@tenkenh"}
```

Returns: topic, audience, tone, the title formula of hit videos, and 5-8 new video ideas with hooks. Use when the user asks *"what is this channel about"*, *"what video should I make next"*.

## ๐Ÿ“ฅ remove_hardsub โ€” remove burned-in subtitles

```json
{"action": "remove_hardsub", "video_path": "C:/path/video.mp4", "mode": "delogo"}
```

`mode`: `delogo` (default โ€” **interpolates** from the surrounding border; on a flat background the text vanishes without leaving a streak), `blur`, `pixel`, `fill`.

## ๐Ÿ“ฅ reup_video โ€” run the whole chain

```json
{"action": "reup_video", "url": "https://v.douyin.com/xxxx"}
```

Download โ†’ extract subtitles โ†’ translate โ†’ mask the original subtitles โ†’ voiceover โ†’ burn new subtitles. Creates a **Codex task awaiting approval** โ€” report the task number to the user and remind them of `approve <n>`. **Don't say it has finished running**; it has only just been queued.

## ๐ŸŒ HTTP API

| Method | Endpoint | Job |
|---|---|---|
| GET | `/api/v1/video-studio/capabilities` | What can be done / what's missing |
| GET | `/api/v1/video-studio/capabilities/{job}` | Details of one job |
| POST | `/api/v1/video-studio/hardsub/detect` | Only detect the subtitle region, don't modify the video |
| POST | `/api/v1/video-studio/hardsub/remove` | Detect + mask |
| POST | `/api/v1/video-studio/channel/analyze` | Analyze a channel |
| POST | `/api/v1/video-studio/pipeline/plan` | See which steps the pipeline will run |
| POST | `/api/v1/video-studio/pipeline/reup` | Queue the pipeline as a Codex task |

## ๐Ÿ’ก Examples

**User:** "https://www.youtube.com/@abc what content is this channel about?"
```json
{"action": "analyze_channel", "url": "https://www.youtube.com/@abc"}
```

**User:** "reup this video into Vietnamese for me https://v.douyin.com/xxx"
```json
{"action": "reup_video", "url": "https://v.douyin.com/xxx"}
```

**User:** "extract the subtitles from this video" โ€” but `subtitle_extractor` isn't installed:
```json
{"action": "video_capabilities"}
```
โ†’ then hand the raw result to the user so they know what to install.