Communitygithub.com

ClayKW/skill

Trouvez le titre d’un film ou d’une série à partir d’un lien TikTok. Téléchargez la vidéo, divisez-la en 10 images, lancez une discussion entre deux IA alternées (détective vs sceptique) avec vérification par recherche web, et sauvegardez tous les fichiers sur Google Drive via rclone. Utilisez ce skill quand l’utilisateur fournit un lien TikTok/vidéo et demande de quoi il s’agit.

Qu'est-ce que skill ?

Ce skill est un assistant spécialisé dans l’identification de films ou de séries à partir de vidéos TikTok. Il extrait des images clés de la vidéo, puis orchestre une discussion entre deux IA aux rôles complémentaires : un Détective qui analyse visuellement les images et propose des candidats (titre, année, confiance), et un Sceptique qui vérifie chaque candidature par recherche web et apporte des preuves. Le résultat final inclut le titre, l’année, la confiance, et des références, avec des détails spécifiques pour les séries (saison, épisode, durée précise) ou les films (durée précise). Toutes les étapes – téléchargement, analyse, dialogue, sauvegarde – sont exécutées automatiquement, et les fichiers sont stockés sur Google Drive via rclone pour une gestion sans encombrement local. Le skill prend en charge les modes de discussion par image ou par lot, et propose des paramètres personnalisables (nombre d’images, nombre de tours, etc.). Il est conçu pour fonctionner avec des agents comme Claude Code, Cursor ou Codex, et tire parti d’outils externes (rclone, web search) pour garantir une identification fiable.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ClayKW/skill/tree/HEAD/movie-finder

Demander à votre IA préférée

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

Documentation

Movie Finder

Outil pour identifier un film ou une série à partir d’une vidéo TikTok via l’analyse d’images et une discussion entre deux IA. Tous les fichiers de travail (vidéo, images, transcription, résultats) sont stockés sur Google Drive via rclone — le local est utilisé temporairement puis nettoyé.

Paramètres ajustables par l’utilisateur (demander ou déduire de la demande)

ParamètreValeur par défautDescription
nombre d’images102ᵉ argument de grab_frames.sh
mode discussionpar-image3 tours de discussion par image (lourd, ~30 échanges pour 10 images). Mode batch = toutes les images discutées en 3 tours (économique, suffisant pour la majorité des cas)
tours3Nombre de paires de réponses AI1↔AI2
remote rclonegdrive:Linux-Server/movie-finderSurcharge par la variable d’environnement MF_REMOTE
garder local03ᵉ argument, 1 = conserver la vidéo en local également

Pipeline

1. Téléchargement + découpage en images

bash scripts/grab_frames.sh "<url_tiktok>" [num_images] [garder_local]
  • Le JSON de sortie contient : gdrive (dossier de destination), frames_local (chemins des images jpg), duration_sec, video_size, scratch_dir.
  • Le script automatise : téléchargement → extraction des images (sauter les 10% début/fin) → upload vers gdrive → suppression de la vidéo locale. Les images restent locales pendant la session (nécessaires pour que vous puissiez les voir).
  • Échec de téléchargement (verrou régional/âge) : informer l’utilisateur, suggérer un lien alternatif.

2. Voir toutes les images

Lire chaque fichier jpg depuis frames_local avec l’outil de lecture (image). Notez vous-même les indices : costumes, lieu, acteurs, époque/grain du film, texte à l’écran, filigrane, style cinématographique, crédits du titre.

3. Discussion entre deux IA (via outil subagent, agent : general)

Exécutez deux rôles en alternance, comme un chat WhatsApp :

  • 🕵️ IA 1 DÉTECTIVE — prompt : analyser visuellement l’image (citer les indices concrets visibles), proposer 1 à 3 candidatures titre + année + raison, donner une confiance. IA 1 doit lire le fichier image directement (fournissez son chemin).
  • 🔍 IA 2 SCEPTIQUE — prompt : utiliser l’outil de recherche web pour vérifier chaque candidature (chercher "<titre> <année> film" + détail de scène unique), réfuter/confirmer avec des preuves de liens, peut proposer de nouveaux candidats.

Règles :

  • 1 tour = IA 1 analyse → IA 2 vérification. Par défaut 3 tours.
  • Noter et afficher le modèle utilisé par chaque IA dans la transcription et la réponse (exemple d’en-tête : 🕵️ IA 1 — Détective [modèle : custom/auto]). Vérifier le nom du modèle depuis les métadonnées du subagent/configuration ; si les deux rôles utilisent le même modèle, l’écrire tel quel. L’inclure également dans discussion.md et dans la réponse finale.
  • Mode par-image : répéter pour chaque image, toujours inclure la transcription du tour précédent + le contexte des candidats déjà existants pour assurer la continuité de la discussion. Déduplication : si le même candidat apparaît dans plusieurs images, un seul tour de renforcement suffit, pas 3 tours complets.
  • Mode batch : envoyer toutes les images (liste des chemins) en une seule discussion de 3 tours.
  • Ne pas définir le paramètre model du subagent (utiliser la valeur par défaut).
  • Recommandation : limiter chaque subagent – IA 1 analyse uniquement (pas besoin d’outils), IA 2 se concentre sur la recherche web.

4. Conclusion

Rédigez : titre + année + confiance (élevée/moyenne/faible) + liens de référence provenant de IA 2 + note si aucun consensus.

Pour les SÉRIES / séries TV, IA 2 (tour final) doit essayer de compléter :

  • Saison et épisode : numéro d’épisode le plus probable source de l’extrait (indices : scène/personnage/costume identifiés + recherche web "guide des épisodes", synopsis par épisode, crédits TMDB par épisode).
  • Titre de l’épisode (si disponible).
  • Durée de l’épisode précise en minutes:secondes (format 47:23), depuis IMDb (fiche technique / page épisode) ou TMDB — pas d’arrondi approximatif.
  • Si l’épisode spécifique ne peut être déterminé, écrire explicitement "épisode impossible à déterminer" + durée de l’épisode uniquement.
  • Bonus (au mieux, mentionner "estimation") : estimer le timestamp de l’extrait dans l’épisode en fonction de la scène identifiée dans le guide/synopsis de l’épisode.

Pour les FILMS : indiquer la durée du film précise heures:minutes:secondes (format 1:52:47) depuis les fiches techniques IMDb/TMDB, pas "±120 minutes".

5. Sauvegarder les résultats sur gdrive (sans nouveau fichier local)

  • Transcription complète → rclone rcat "<DEST>/discussion.md" (format chat : emoji 🕵️/🔍, nom du rôle, contenu de la réponse).
  • Conclusion → rclone rcat "<DEST>/resultats.md".

Modèle de resultats.md pour une SÉRIE (obligatoire : remplir les détails d’épisode) :

# Résultats d’identification — Movie Finder
- Titre / Type / Année / Plateforme / Créé par / Confiance

## Détails de l’épisode
- Saison et Épisode : S01E05 (si possible à déterminer, sinon "impossible à déterminer")
- Titre de l’épisode : "Beautiful Billionaires"
- Durée de l’épisode : 47:23 (minutes:secondes, depuis IMDb/TMDB)
- Total des épisodes : 11 (S1)
- Estimation de la position de l’extrait : ±12:40 dans l’épisode (au mieux, estimation)

## Pourquoi ça correspond
...preuves principales...

## Références
...liens...

Pour un FILM : remplacer la section "Détails de l’épisode" par "Durée du film : 1:52:47 (heures:minutes:secondes)".

6. Nettoyage local

rm -rf <scratch_dir>

7. Répondre à l’utilisateur

Ordre de la réponse : détails de l’épisode et durée si série (saison, numéro d’épisode, titre de l’épisode, durée) ou durée du film + résumé succinct des points de discussion + liens de référence + emplacement du dossier gdrive — puis estimation finale (🎬 Résultat : titre/année) placée TOUT EN BAS comme conclusion. Ne pas afficher la transcription complète sauf si demandé.

Exemple de transcription

🕵️ IA 1 — Détective [modèle : custom/auto] : L’image 3 montre un costume du 19ᵉ
  siècle de type soldat anglais… Candidatures : "1917" (2019), "The Northman" (2022)
🔍 IA 2 — Sceptique [modèle : custom/auto] : Je vérifie… [recherche web] "The Northman"
  est une époque viking, ne correspond pas. "1917" correspond : guerre de tranchées, plan-séquence.
  Vérifié : [lien]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills associés