# YouTube Story Generator

- Subdomain: `youtube.archivedpiece.com`
- Auth: Basic auth, username `youtube`
- Dashboard/API: `127.0.0.1:8791`
- HTTPS: via Caddy reverse proxy
- Services:
  - `youtube-generator.service`
  - `youtube-generator-worker.service`
- Data: `/root/workspace/youtube_generator_data`
- Default source: OrbitalNCG `https://www.youtube.com/@OrbitalNCG/videos`
- Default source video: `LwqyaFWDey8` / `Minecraft Parkour Gameplay No Copyright (Vertical)`
- License: Creative Commons Attribution
- Credit: Orbital - No Copyright Gameplay
- Voice: `en-US-AvaNeural`, `-6%` rate, `-2Hz` pitch
- Captions: uppercase, 3-word groups, 128% yellow active word, thick outline, fade/pop timing, lower-third safe margin
- Output format: 1080×1920, 60 fps, H.264/AAC, `+faststart`
- Publishing: Disabled by design
- Cookie path: `/root/workspace/shorts_data/youtube-cookies.txt`

## API

- `POST /api/jobs` — create generation job
- `GET /api/jobs` — list jobs
- `GET /api/jobs/<id>` — job detail
- `GET /api/jobs/<id>/download` — download clip
- `GET /api/health` — health + cookies status

## Notes

- Generator prefers vertical source videos from channel scans.
- All source license checks run before rendering.
- Completed clips are served inline from `/root/workspace/youtube_generator_data/media/<job>/clip.mp4`.
