Modèle / jeu de données
Anil-matcha/AI-Youtube-Shorts-Generator avatar
Anil-matcha/AI-Youtube-Shorts-Generator

AI YouTube Shorts Generator : découper une vidéo longue en shorts, avec le choix du mode

Open-source alternative to Opus Clip, Vidyo.ai, Klap & SubMagic. Turn long-form YouTube videos into viral 9:16 shorts using LLM highlight detection, Whisper transcription, and auto vertical cropping — free, no watermarks, no per-clip credits.

4 988 étoiles916 forksPythonMIT

En bref

De quoi s’agit-il ?
Le dépôt Anil-matcha/AI-Youtube-Shorts-Generator transforme une URL YouTube en clips verticaux classés par score de viralité. Deux modes coexistent : un mode API qui délègue tout à MuAPI, et un mode local qui n'appelle le LLM que pour le classement. Voici ce que la documentation permet réellement de vérifier, et ce qu'elle laisse dans l'ombre.
À qui s’adresse-t-il ?
À adopter si vous voulez lire et modifier le classement des moments forts, ou si vous avez besoin d'une sortie JSON pour un pipeline existant : le README annonce --output-json et une fonction generate_shorts(...) importable. À éviter si vous refusez de dépendre d'une clé tierce, car même le mode local conserve un appel LLM distant.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 5 jours.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Un problème de coût et de boîte noire, pas de montage

Le découpage d'une conférence ou d'un podcast en clips verticaux n'est pas un problème technique difficile. C'est un problème de facturation et d'opacité. Les outils cités dans le README (Opus Clip, Vidyo.ai, Klap, SubMagic, 2short.ai) facturent un abonnement mensuel et appliquent des plafonds de minutes. Le dépôt se positionne sur ces deux points : pas de crédits par clip, pas de filigrane, et un algorithme de sélection des moments forts que l'on peut lire et modifier. La cible annoncée est explicite : créateurs, agences, développeurs. Les deux premiers cherchent surtout à supprimer l'abonnement. Le troisième cherche autre chose, et c'est là que le projet devient intéressant : la possibilité de brancher la détection de moments forts sur son propre pipeline plutôt que sur une interface web. Le README mentionne aussi une fonction generate_shorts(...) importable comme bibliothèque Python, ce qui déplace l'usage du terminal vers du code.

Deux chemins pour la même sortie, et ce que chacun délègue

Le projet expose deux modes qui produisent des mp4 verticaux, mais ne répartissent pas le travail de la même façon. Le mode API, présenté comme le mode par défaut, confie à MuAPI le téléchargement, la transcription, le classement des moments forts et le recadrage. Une seule clé, MUAPI_API_KEY, suffit alors. Le mode local, activé par --mode local, exécute le téléchargement avec yt-dlp, la transcription avec faster-whisper, et le recadrage vertical avec ffmpeg et OpenCV, ce dernier s'appuyant sur un suivi de visage avec lissage du mouvement d'après le README. Le classement des moments forts reste toutefois distant : il faut fournir OPENAI_API_KEY ou GEMINI_API_KEY. Autrement dit, le mode local n'est pas un mode hors ligne. C'est un mode où l'on garde la vidéo et le rendu chez soi, mais où le jugement éditorial passe encore par un service tiers. Cette distinction mérite d'être lue attentivement avant de promettre à une équipe un traitement entièrement interne.

Le classement des moments forts, entre grille lisible et dépendance au modèle

La sélection ne repose pas sur un score d'engagement générique. Le README énumère les critères demandés au LLM : accroches, pics émotionnels, prises de position tranchées, moments de révélation, conflits, citations, sommets narratifs et valeur pratique. Chaque clip retenu ressort avec un score de viralité, une phrase d'accroche et une justification en une phrase. C'est le point le plus défendable du projet : ces critères sont visibles dans le dépôt, donc modifiables, contrairement à un service fermé. Deux réserves cependant. D'abord, la qualité du classement dépend entièrement du modèle choisi : le README donne gpt-4o-mini et gemini-2.5-flash comme valeurs par défaut, deux modèles légers. Ensuite, la documentation ne décrit pas la manière dont le score est calculé ni comment les critères sont pondérés entre eux. On peut changer le prompt, pas arbitrer finement le résultat sans lire le code.

Vidéos longues, doublons et paramètres de transcription

Deux mécanismes répondent à des problèmes concrets. Les vidéos de plus de trente minutes sont découpées en segments qui se chevauchent, afin qu'un passage à cheval sur une frontière ne soit pas perdu. Les moments forts qui se recouvrent sont ensuite fusionnés en gardant le meilleur score, ce qui évite de produire deux clips quasi identiques. Le reste se règle par variables d'environnement : LOCAL_WHISPER_MODEL accepte tiny, base, small, medium ou large-v3, LOCAL_WHISPER_DEVICE accepte auto, cpu ou cuda, et LOCAL_OUTPUT_DIR fixe le dossier de sortie. Le compromis est classique : un modèle large transcrit mieux mais consomme davantage de mémoire et de temps, et le README ne fournit aucune mesure de durée ni d'empreinte pour guider ce choix. La valeur base est proposée par défaut, ce qui suggère un réglage pensé pour rester exécutable sur une machine ordinaire, pas pour la qualité maximale.

Installation : ce que le README donne comme commandes

La mise en route tient en quelques étapes documentées. Cloner le dépôt, créer un environnement avec python3.10 -m venv venv, l'activer, puis installer pip install -r requirements.txt. Les dépendances du mode local vivent dans un second fichier, requirements-local.txt, à installer séparément. Le fichier .env attend MUAPI_API_KEY pour le mode API, et pour le mode local LLM_PROVIDER (openai ou gemini), OPENAI_API_KEY, OPENAI_MODEL, GEMINI_API_KEY, GEMINI_MODEL, LOCAL_WHISPER_MODEL, LOCAL_WHISPER_DEVICE et LOCAL_OUTPUT_DIR. L'exécution se fait ensuite par python main.py "https://www.youtube.com/watch?v=VIDEO_ID", avec --mode local pour le traitement local. Deux points ne sont pas tranchés par le document fourni : ffmpeg est annoncé comme nécessaire au mode local mais aucune commande d'installation n'est donnée, et la mention --output-json apparaît dans le tableau comparatif sans exemple d'appel. Le README est par ailleurs tronqué à la fin de la section sur le mode local, donc la liste complète des options de la CLI n'est pas vérifiable ici.

Ce que le dépôt ne dit pas

Le point le plus gênant est la licence. Le README affirme que le projet est sous licence MIT et qu'il peut être importé comme bibliothèque Python, mais l'identifiant de licence n'est pas renseigné dans les métadonnées du dépôt. Cette contradiction n'est pas anodine pour une agence qui veut revendre des clips ou intégrer le code dans un produit : la mention dans un README ne remplace pas un fichier LICENSE. À vérifier avant tout usage commercial. Autre angle mort : le mode API facture à l'usage chez MuAPI, donc l'argument "gratuit" du README signifie sans abonnement, pas sans coût. Enfin, le projet ne publie aucune release, ce qui oblige à suivre la branche main et à accepter que l'état du code change sans version épinglable. Le dépôt n'est pas archivé et le dernier push est daté du 8 septembre 2026, mais l'absence de releases rend toute mise à jour difficile à auditer.

Face à quoi le comparer vraiment

L'alternative la plus proche n'est pas un autre découpeur, c'est un pipeline monté à la main. Un script qui enchaîne yt-dlp, faster-whisper et ffmpeg fait déjà l'essentiel du travail, et le mode local de ce projet ne fait guère plus, à une différence près : il ajoute une étape LLM qui propose un classement argumenté, plus le recadrage vertical par suivi de visage. C'est précisément ce que vous n'écririez pas en une après-midi. L'autre alternative est un service hébergé, qui vous épargne l'installation mais vous rend dépendant d'un quota mensuel et d'un algorithme que vous ne pouvez pas lire. Le choix se résume donc à ceci : écrire soi-même la sélection éditoriale, ou accepter un appel LLM distant. Le projet ne supprime pas cette dépendance, il la déplace.

Conclusion éditoriale

À adopter si vous voulez lire et modifier le classement des moments forts, ou si vous avez besoin d'une sortie JSON pour un pipeline existant : le README annonce --output-json et une fonction generate_shorts(...) importable. À éviter si vous refusez de dépendre d'une clé tierce, car même le mode local conserve un appel LLM distant. Avant tout, vérifiez trois points dans le dépôt : le fichier LICENSE, le contenu réel de requirements-local.txt, et la façon dont le code traite une vidéo dont la transcription dépasse la fenêtre du modèle choisi.

Sources officielles

  1. Anil-matcha/AI-Youtube-Shorts-Generator on GitHub
  2. Issues
  3. Project website
  4. README
Notes de la communauté

Notes de la communauté