Updated Project Overview (markdown)
@ -1,45 +1,52 @@
|
||||
# Project Overview
|
||||
|
||||
Welcome to the **Llama Chile Shop Video Automation Project**! This system automates the end-to-end process of preparing, rendering, uploading, and promoting Fortnite gameplay videos extracted from livestream sessions.
|
||||
Welcome to the **Llama Chile Shop (LCS) Pipeline** — an automated system for rendering, titling, uploading, and archiving Fortnite gameplay highlights starring Gramps!
|
||||
|
||||
## Project Goal
|
||||
## ✅ Current Status
|
||||
The system is fully operational for montage and single-clip rendering:
|
||||
- Auto-discovers clips from `montages/`, `hits/`, `misses/`, `outtakes/`
|
||||
- Renders each clip with intro, dynamic title card, and outro
|
||||
- Uploads to YouTube with appropriate playlist routing
|
||||
- Archives structured metadata, including URLs and tags
|
||||
- Supports dynamic description generation via OpenAI
|
||||
|
||||
Build a robust pipeline that transforms raw stream recordings into polished video content (montages, hits, misses, outtakes), enriched with branded intros/outros, AI-generated descriptions, and automated uploads to YouTube, PeerTube, Mastodon, and Bluesky.
|
||||
## 📊 Feature Snapshot
|
||||
|
||||
## Project Structure
|
||||
| Feature | Status | Notes |
|
||||
|------------------------------|------------------|-------|
|
||||
| Clip rendering (wide/vert) | ✅ Done | Fully automated |
|
||||
| YouTube upload | ✅ Done | Includes playlist routing, category ID, hashtags |
|
||||
| Dynamic metadata generation | ✅ Done | OpenAI template logic working |
|
||||
| Metadata archive | ✅ Done | Saved locally with YouTube/PeerTube URLs |
|
||||
| Mastodon posting | 🧪 In progress | Posting logic scaffolded, needs integration |
|
||||
| PeerTube upload | ⏳ Planned | Awaiting config/token/queueing |
|
||||
| `outtakes/` manual support | ✅ Implemented | Requires manual trigger |
|
||||
| Wiki rendering | ⚠️ Blocked | GitHub refuses to publish updates via API |
|
||||
| `sync_wiki.py` | 🪦 Deprecated | Kept as emergency parachute |
|
||||
| Metadata model v2 | ✅ Done | Supports wide + vertical, multiple clips per session |
|
||||
|
||||
```
|
||||
Z:\ # NAS-mounted project root
|
||||
├── 2025.06.20/ # Stream session directory (date-based)
|
||||
│ ├── hits/ # One video file per hit clip
|
||||
│ ├── misses/ # One video file per death clip
|
||||
│ ├── montages/ # Pre-edited full montage files
|
||||
│ ├── outtakes/ # Marked for manual post-processing
|
||||
│ └── rendered/ # Output folder for all generated clips
|
||||
├── assets/ # Branding assets (intros, outros, fonts, logos)
|
||||
├── modules/ # Modular helper libraries
|
||||
├── logs/ # Diagnostic logs and output
|
||||
├── .env # API keys and environment configuration
|
||||
├── .gitignore
|
||||
├── main.py # Entry point for daily automation pass
|
||||
├── upload_youtube_montage.py # Standalone script to test YouTube upload flow
|
||||
└── README.md
|
||||
```
|
||||
## 🗂️ Folder Structure
|
||||
|
||||
## Versioning
|
||||
Each stream session lives under `Z:\YYYY.MM.DD` or `Z:\YYYY.MM.DD.N`, with these subfolders:
|
||||
- `hits/` — short action highlight clips
|
||||
- `misses/` — funny fails
|
||||
- `montages/` — pre-trimmed reels
|
||||
- `outtakes/` — manually marked events
|
||||
- `rendered/` — auto-generated videos go here
|
||||
|
||||
* **v0.0.1**: Initial clean commit of montage rendering pipeline with FFmpeg, branding assets, intro+title composition, and output to `rendered/`.
|
||||
* **v0.1.1** (WIP): Adds YouTube upload support with dynamic OpenAI-generated descriptions.
|
||||
* **v0.1.2**: Adds PeerTube upload using same modularized description system.
|
||||
* **v0.2.0**: Adds Mastodon support with dynamic toot generation.
|
||||
* **v0.2.1**: Adds Bluesky support with dynamic toot generation.
|
||||
## 🧠 Current Version
|
||||
|
||||
## Current Focus
|
||||
- **Version**: `v0.1.1` (YouTube + render + metadata complete)
|
||||
- **Next milestone**: `v0.1.2` (PeerTube support)
|
||||
- **Source**: `C:\Users\alpha\code\Python\lcs_agent_clean`
|
||||
- **Mount**: NAS path is `Z:\` (mapped to `\\chong\LCS\Videos\eklipse`)
|
||||
|
||||
Locking down proof-of-concept for `upload_youtube_montage.py`: passing in a montage clip, deriving stream date, generating AI description, posting to YouTube (private in debug), and returning video URL.
|
||||
## 🔧 Development Tips
|
||||
|
||||
## Notes
|
||||
- To test safely, set `DEBUG = True` in `config.py`
|
||||
- Title overlays use Fortnite fonts/colors
|
||||
- `notes.json` → OpenAI → Upload → Archive → Social post
|
||||
|
||||
* Vertical videos are identified by filenames ending in `-vert` or `-vertical`.
|
||||
* Montage videos do **not** have accompanying `notes.*` files.
|
||||
* All AI-generated descriptions are based on a dynamic prompt sourced from a `notes.*` template, file-type agnostic.
|
||||
---
|
||||
|
||||
🧠 Maintained by ChatGPT, your resident senior dev + wiki wrangler. 😎
|
||||
|
||||
Reference in New Issue
Block a user