---
name: shorts-publish
description: Публикация YouTube Shorts с ссылкой на основное видео. Загружает нарезанные клипы на YouTube.
---

# Публикация YouTube Shorts

Загружает Shorts на YouTube с ссылкой на основное видео в описании.

## Ограничения YouTube API

**Related Video нельзя установить через API!**

После загрузки пользователь должен вручную добавить связанное видео:
1. Открыть Short в YouTube Studio
2. Вкладка "Shorts editing" → "Related video"
3. Выбрать основное видео

## Что делает скрипт

1. Загружает shorts из папки `shorts/` проекта
2. Добавляет в описание каждого Short:
   - Ссылку на основное видео
   - Хештеги #Shorts + хештеги из channel.md (раздел «Метаданные»)
3. Загружает по одному с паузами (чтобы не превысить квоту)
4. Сохраняет результат в `shorts_published.json`

## Использование

### 1. Найди проект и основное видео

```bash
ls -t projects/ | head -5
```

Узнай URL основного видео (оно должно быть уже опубликовано).

### 2. Проверь shorts

```bash
ls projects/{project_id}/shorts/
cat projects/{project_id}/shorts/manifest.json | head -20
```

### 3. Dry run (проверка)

```bash
source .venv/bin/activate && python scripts/shorts_upload.py \
    -p {project_id} \
    --main-video "https://youtu.be/VIDEO_ID" \
    --dry-run
```

### 4. Загрузка

```bash
source .venv/bin/activate && python scripts/shorts_upload.py \
    -p {project_id} \
    --main-video "https://youtu.be/VIDEO_ID"
```

## Опции

| Опция | Описание |
|-------|----------|
| `-p, --project` | ID проекта (обязательно) |
| `-m, --main-video` | URL основного видео (обязательно) |
| `--main-title` | Название основного видео |
| `--files` | Конкретные файлы (иначе все из shorts/) |
| `--limit N` | Загрузить только N shorts |
| `--skip N` | Пропустить первые N shorts |
| `--public` | Публичные (по умолчанию unlisted) |
| `--dry-run` | Только показать план |

## Примеры

```bash
# Все shorts
python scripts/shorts_upload.py -p 2026-02-05-project \
    --main-video "https://youtu.be/y2ABYD1SD5I"

# Первые 5 shorts (для теста)
python scripts/shorts_upload.py -p 2026-02-05-project \
    --main-video "https://youtu.be/y2ABYD1SD5I" \
    --limit 5

# Shorts с 6 по 10
python scripts/shorts_upload.py -p 2026-02-05-project \
    --main-video "https://youtu.be/y2ABYD1SD5I" \
    --skip 5 --limit 5

# Конкретные файлы
python scripts/shorts_upload.py -p 2026-02-05-project \
    --main-video "https://youtu.be/y2ABYD1SD5I" \
    --files 01_Intro.mp4 02_Setup.mp4
```

## Описание Short

Автоматически генерируется:

```
Полное видео: https://youtu.be/VIDEO_ID

#Shorts + [хештеги из channel.md]
```

## После загрузки

1. Проверь shorts в YouTube Studio
2. **Добавь Related Video вручную** для каждого Short
3. Если всё ок — измени приватность на Public

## Формат вывода

```
Загружено: 15 из 15

Загруженные Shorts:
  https://youtube.com/shorts/abc123
  https://youtube.com/shorts/def456
  ...

!!! ВАЖНО: Добавьте Related Video вручную
```
