Communitygithub.com

analyser-vidéo

Transforme une vidéo locale ou un enregistrement de réunion en planches contact horodatées et une transcription grâce à ffmpeg et whisper.cpp (local), ou utilise la transcription déjà sauvegardée par Zoom ou Teams. La vidéo reste sur la machine.

Qu'est-ce que analyser-vidéo ?

Cette compétence permet à un agent IA de traiter des fichiers vidéo locaux (MP4, MOV, WebM, MKV, M4V, M4A) – notamment des enregistrements de réunions Zoom, Teams ou des captures d'écran – pour en extraire un résumé visuel sous forme de planches contact et une transcription textuelle horodatée. L'audio n'est jamais envoyé à un service cloud : la transcription est réalisée localement avec whisper.cpp, ou bien le fichier de transcription (VTT) produit par Zoom ou Teams est utilisé s'il est présent à côté de la vidéo. Le résultat est sauvegardé dans le dossier `_video/` à la racine du projet, à l'intérieur du bac à sable de l'agent. L'utilisateur peut configurer la compétence via une page web locale accessible par `/configure`, ou passer des paramètres en ligne de commande (intervalle entre les images, nombre maximal d'images, langue du modèle Whisper, seuil de détection de scène, etc.). La compétence fonctionne sur macOS, Linux et Windows, et évite de retraiter une vidéo déjà analysée avec les mêmes réglages. C'est un outil idéal pour les développeurs qui souhaitent analyser des enregistrements de réunions, des screencasts ou des vidéos de formation sans compromettre la confidentialité des données.

Compatible avec~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/richardjahnke-eng/ai-video-skill/tree/main

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Analyser une vidéo

Traitez le fichier sur cette machine. N'uploadez pas la vidéo ni son audio, et ne les envoyez à aucun service de transcription cloud.

Exécution

Exécutez la commande depuis la racine du projet ouvert. La sortie va dans _video/ à cet endroit, ce qui la maintient dans le bac à sable de l'agent et hors des dossiers partagés. Lancez le script d'entrée de cette compétence par son chemin absolu.

macOS et Linux :

/chemin/absolu/vers/analyser-video/scripts/analyze_video "/chemin/absolu/vers/video.mp4"

Windows :

powershell -NoProfile -ExecutionPolicy Bypass -File \chemin\absolu\vers\analyser-video\scripts\analyze_video.ps1 "C:\chemin\vers\video.mp4"

Prenez le chemin de la vidéo à partir d'un listing de répertoire et passez-le exactement comme listé. Les noms d'enregistrement peuvent contenir des caractères qui ressemblent à un espace normal mais n'en sont pas.

Les enregistrements locaux de Zoom se trouvent dans ~/Documents/Zoom/<date heure nom de la réunion>/, généralement sous le nom zoom_0.mp4, avec un fichier audio seul audio_only.m4a. Utilisez le fichier .mp4 sauf si l'utilisateur demande le fichier audio. Un fichier audio seul produit une transcription mais pas de planches.

La commande affiche le chemin de index.md. Le dossier contient :

  • index.md : durée, intervalle entre les images et la liste des planches
  • transcript.md : la transcription horodatée, ou une note indiquant l'absence d'audio
  • sheets/sheet_NNN.jpg : les planches contact
  • frames/f_NNNN.jpg : les images individuelles, déjà horodatées
  • manifest.json : empreinte de la source et réglages utilisés

Si un fichier .vtt de transcription se trouve à côté de l'enregistrement (les téléchargements cloud de Zoom fournissent …_Recording.transcript.vtt, Teams <nom>.vtt), il est utilisé à la place de Whisper et conserve les noms des intervenants. Passez --whisper pour transcrire localement malgré tout, ou --transcript /chemin/vers/fichier.vtt pour pointer vers un fichier avec un autre nom.

Un deuxième lancement avec le même fichier et les mêmes réglages affiche déjà traité et ne refait pas le travail. Un intervalle, un modèle, une langue, un réglage de scène, une invite, une limite d'images, un choix de saut d'images ou un fichier de transcription différent le retraite.

Si la commande échoue, arrêtez-vous et transmettez sa sortie. N'échantillonnez pas vous-même des images comme substitut. Si la sortie indique qu'une configuration est nécessaire, ou que le téléchargement du modèle Whisper est bloqué, donnez à l'utilisateur la commande de configuration qu'elle affiche. Il l'exécute une fois dans un Terminal. Exécutez-la vous-même uniquement si l'utilisateur le demande et approuve son exécution en dehors du bac à sable.

Lire le résultat

  1. Lisez index.md.
  2. Lisez transcript.md en entier.
  3. Lisez chaque image de planche contact.
  4. Ouvrez un fichier dans frames/ uniquement lorsqu'une cellule est illisible.

Si index.md indique que des images ont été sautées, lisez transcript.md et arrêtez-vous. Il n'y a pas de planches.

Configuration

Lorsque l'utilisateur tape /configure, ou demande de configurer ou de modifier les réglages de cette compétence, ouvrez la page de réglages. Faites cela avant de modifier vous-même un fichier de configuration.

  1. Lancez le script de configuration de cette compétence scripts/configure par son chemin absolu. Sous Windows, lancez python scripts/configure.py avec le Python de cette compétence.
  2. Il affiche une ligne, configure: http://127.0.0.1:<port>/. Ouvrez cette URL dans le navigateur de Cursor afin que l'utilisateur puisse voir la page.
  3. Laissez le serveur tourner. La page écrit config.local.json dans le dossier de la compétence. La prochaine vidéo utilisera ces réglages.

Quand l'utilisateur souhaite des réglages différents

Les drapeaux remplacent config.json pour cette exécution. Par défaut, une image est prise toutes les 30 secondes et à chaque changement de scène (nouvelle diapositive ou fenêtre), et un long enregistrement est limité à 96 images (8 planches). Pour plus de détails sur un court enregistrement :

/chemin/absolu/vers/analyser-video/scripts/analyze_video "/chemin/absolu/vers/video.mp4" --interval 5 --max-frames 0

Sous Windows, passez les mêmes drapeaux à scripts/analyze_video.ps1.

Passez --prompt "termes déjà connus pour cette vidéo" uniquement lorsque ces noms sont déjà dans la tâche. N'inventez pas d'invite. --max-frames 0 supprime la limite. Passez --skip-frames uniquement lorsque l'utilisateur demande une transcription ou un résumé et ne demande pas de regarder ou de revoir l'image.

Autres drapeaux : --language en, --model medium, --no-scene, --scene-threshold 0.2, --min-scene-gap 1, --sheet-cols, --sheet-rows, --frame-width, --keep-audio, --output-root beside (à côté de la vidéo), --config /chemin/vers/config.json.

Les valeurs par défaut et la liste complète des clés se trouvent dans config.json et README.md dans ce dossier de compétence. Un modèle uniquement anglais (medium.en et les autres noms *.en) ne peut pas utiliser "language": "auto".

Skills associés