Skip to content

cbolard/yt-clipper

Repository files navigation

youtube-clipper

Pipeline automatique : télécharge une vidéo YouTube, extrait les meilleurs moments, brûle les sous-titres, sort des MP4 prêts à uploader.


Installation

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env   # remplir OPENAI_API_KEY

Commandes

source venv/bin/activate

# Pipeline complet (compilations + shorts par défaut)
python src/pipeline.py --url "https://youtube.com/watch?v=xxx"

# Choisir le format
python src/pipeline.py --url "..." --format compilation
python src/pipeline.py --url "..." --format shorts
python src/pipeline.py --url "..." --format both

# Stopper après une étape
python src/pipeline.py --url "..." --only transcribe
python src/pipeline.py --url "..." --only score

# Reprendre depuis une étape (saute les étapes précédentes si déjà en cache)
python src/pipeline.py --url "..." --from score
python src/pipeline.py --url "..." --from clip

# Avec config de chaîne
python src/pipeline.py --url "..." --channel ma_chaine
python src/pipeline.py --url "..." --channel ma_chaine --assemble

# Uploader les clips en privé sur YouTube
python src/pipeline.py --url "..." --upload

# Tests
make test

Étapes disponibles : downloadtranscribescoreclipassemble


Variables d'environnement

OPENAI_API_KEY=sk-...
WHISPER_MODEL=base          # tiny | base | small | medium
TMP_DIR=./tmp
OUTPUT_DIR=./output
YOUTUBE_CLIENT_SECRETS_PATH=./config/client_secrets.json
MIN_CLIP_DURATION=60
MAX_CLIP_DURATION=240
CLIPS_PER_VIDEO=3
MIN_CLIP_DURATION_SHORT=45
MAX_CLIP_DURATION_SHORT=90
CLIPS_PER_VIDEO_SHORT=5
MIN_CLIP_SCORE=70
LOG_LEVEL=INFO

Config de chaîne (optionnel)

Créer channels/{channel_id}/channel.json :

{
  "channel_id": "ma_chaine",
  "name": "Ma Chaîne",
  "topic_hint": "tech et startups",
  "format_target": "both",
  "min_clip_duration_compilation": 60,
  "max_clip_duration_compilation": 240,
  "clips_per_video_compilation": 3,
  "min_clip_duration_short": 45,
  "max_clip_duration_short": 90,
  "clips_per_video_short": 5,
  "min_score": 70,
  "branding": {
    "subtitle_font": "Arial",
    "subtitle_size": 18,
    "subtitle_primary_colour": "ffffff",
    "subtitle_outline_colour": "000000",
    "source_card_bg_color": "#1a1a1a",
    "source_card_text_color": "#ffffff",
    "source_card_duration": 3
  }
}

Pour la doc technique (modules, data flow, exceptions) : docs/REFERENCE.md

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages