# YouTube Shorts Pipeline

Automated Minecraft-parkour story Shorts. Code: `/root/workspace/ytshorts` (see its README.md).

## Decisions (2026-09-24)
- The user accepted all the proposed defaults.
- Stories are original AI fiction, written by `gpt-6-astra` through the custom provider. Reddit is not wired in yet.
- Voice: Edge TTS `en-US-AndrewMultilingualNeural` at +8% speed.
- Captions: all caps, 3 words at a time, active word yellow at 112% size, pop-in animation.
- Output: 1080x1920 H.264/AAC, about 50–60 seconds.
- Footage: default source is Orbital - No Copyright Gameplay Creative Commons Attribution video `LwqyaFWDey8` when authorized cookies are available. Fallback remains CC0 Archive.org footage. Agent Reach's yt-dlp backend handles source retrieval; publishing stays disabled.

## Pipeline
`python3 main.py` runs story, then TTS with word timing (ASS), then FFmpeg render over `footage/clean/*.mp4`.
`prep_footage.py` cuts grey menu screens (detected by low saturation) and crops 9:16, 110 px right of center, to avoid the source chat box.

## Status
- Verified: `output/demo_v3.mp4`, 55.6 s. Public at https://videos.archivedpiece.com/demo_v3.mp4
- `upload.py` (YouTube Data API OAuth) is written but untested.

## Blockers / next
- The user must supply `credentials/client_secret.json` (Google Cloud Desktop OAuth client).
- `google-api-python-client` and `google-auth-oauthlib` are not installed in the venv, because the approval timed out.
- Uploads from an unaudited API project are forced to private.
- No cron schedule is set yet. The plan is 2 per day.

Related: [[VM Services]], [[User Preferences]]
