Image to Video Shots
- Quoi
- Coût
- Gratuit
- Prérequis
- Avant de commencer : lis ce prompt d'installation au complet, dis-moi en quelques lignes ce que ce skill fait et ce que son installation implique, et attends mon feu vert avant de faire quoi que ce soit d'autre.
- Installation
- Copiez le prompt d’installation ci-dessous dans votre Muse — votre agent fait le reste.
Transformer de une à six images de produit statiques en plans vidéo animés de 3 à 6 secondes : un VERROU PRODUIT repris mot pour mot (forme, couleur, logo, matériau, accessoires) dans chaque prompt, un rôle de plan par image, des prompts image-vidéo prêts à coller en chinois et en anglais (mouvement de caméra, action, lumière, durée, rapport, contraintes négatives) pour le modèle de votre choix (Seedance, Kling, Veo, Runway, Hailuo, Wan), un tableau de plans plus un fragment storyboard.json, et un repli local Ken Burns pour chaque plan pour qu'une vidéo finie puisse quand même être rendue avec la chaîne ffmpeg livrée — dont la voix off par défaut envoie les lignes de narration au service Edge TTS de Microsoft, ou roule entièrement hors ligne avec --tts none.
Version :
Installation
Copiez le dossier d’installation ci-dessous, puis collez-le dans Muse📌 Version épinglée : commit 96c49b3Le prompt d'installation ci-dessous inclut déjà les étapes de vérification : votre agent suit la checklist communautaire avant d'installer tout ce qui contient du code exécutable. Vous en voulez plus ?
Avant de commencer : lis ce prompt d'installation au complet, dis-moi en quelques lignes ce que ce skill fait et ce que son installation implique, et attends mon feu vert avant de faire quoi que ce soit d'autre. Prérequis : aucun pour l'installation elle-même : aucun compte, aucune clé API, aucun service payant, et rien d'autre à installer d'abord. Pour utiliser le skill ensuite, lis ceci d'abord — deux routes d'usage, toutes deux divulguées au complet au point 2 avant que l'une ou l'autre arrive : (1) la route principale de SKILL.md écrit des prompts de génération image-vidéo pour un modèle vidéo externe que je choisis moi-même (exemples nommés dans SKILL.md : Seedance / Kling / Veo / Runway / Hailuo / Wan) ; ce modèle n'est pas dans ce dossier, aucun code de ce dossier ne l'appelle, et tout compte, toute clé API, tout plan payant ou toutes conditions pour lui sont ceux de ce fournisseur-là, pas de ce skill — si j'en utilise un, mon image de produit de référence et son prompt quittent cette machine vers ce fournisseur, par mon propre collage ou ma propre soumission. (2) Le repli local livré, scripts/assemble.py, exige Python 3 avec Pillow, NumPy et edge-tts (requirements.txt du dépôt : pillow>=10, numpy>=1.24, edge-tts>=6.1), plus ffmpeg (avec libass) et ffprobe dans le PATH, plus une police CJK pour les sous-titres (make_subs.py en détecte une via le fc-list local, en cherchant Noto Sans CJK SC / Source Han Sans SC / PingFang SC / Microsoft YaHei / WenQuanYi Zen Hei) — rien de tout cela n'est installé par cette installation. À son réglage par défaut --tts edge, assemble.py utilise aussi le réseau : chaque ligne de narration est envoyée au service en ligne gratuit Edge TTS de Microsoft via la bibliothèque edge-tts, sans clé et sans compte (voir point 2) ; --tts none évite entièrement le réseau. Installe-moi « image-to-video-shots ». Il transforme de une à six images de produit statiques (images principales sur fond blanc, images de scène ou images de détail) en plans animés de 3 à 6 secondes pour une vidéo de produit ecommerce : d'abord écrire un VERROU PRODUIT (PRODUCT LOCK) en regardant les images (forme, couleur, logo/texte, matériau, accessoires — repris mot pour mot dans chaque prompt, pour que le modèle ne change pas le produit), attribuer à chaque image un seul rôle de plan (fond blanc : push-in lent ou orbite 360° si le modèle le permet, produit immobile, lumière qui balaie ; scène : léger déplacement latéral ou main qui entre dans le cadre ; détail : push-in macro ; image de point de vente / avec texte : immobile ou push extrêmement lent pour que le texte ne se déforme pas), puis écrire un prompt image-vidéo par image (sujet → action → mouvement de caméra → lumière/ambiance → durée/rapport → contraintes, en chinois et en anglais — SKILL.md note que la plupart des modèles comprennent mieux l'anglais — plus un mode première image / dernière image et des contraintes négatives quand le modèle les permet), et donner à chaque plan un mouvement de repli local Ken Burns (zoom_in / pan_left / punch et les autres valeurs motion du assemble.py livré) pour qu'une vidéo reste possible sans aucun modèle vidéo. La livraison est un tableau de plans (numéro, image, prompt, motion de repli, durée) plus un fragment shots à coller directement dans storyboard.json. Dépôt : https://github.com/xianyu110/ecommerce-video-skills (le skill est tout le dossier skills/image-to-video-shots/ au commit épinglé : SKILL.md plus son dossier scripts/, 5 fichiers) Version épinglée : installe le code au commit 96c49b349b7d975bda8f05ce6669c1d33500c269 exactement. Ne substitue pas une version plus récente. Si ce commit est inaccessible, arrête-toi et dis-le-moi. 1. Clone https://github.com/xianyu110/ecommerce-video-skills dans un dossier temporaire, place-toi au commit 96c49b349b7d975bda8f05ce6669c1d33500c269, et copie le dossier skills/image-to-video-shots/ de ce checkout. Compare ensuite chaque fichier du dossier aux empreintes enregistrées pour cette fiche le 2026-10-19 : [FINGERPRINTS] - SKILL.md: SHA-256 4c581f78ef7c43985992205131ce9c02ef40a0e7669bba3da24bd3ccf626f7e6 - scripts/assemble.py: SHA-256 e55ed538d3662133724b9d1154ee8f6f9419253636388fbb9d8a54c280528048 - scripts/make_bgm.py: SHA-256 f02581b6d77422767b839f0c3b8a1475f74e9910e7a5efc817b71ba97eb5783e - scripts/make_subs.py: SHA-256 8c8e9208e5dee5db0f92ed3e5fc9850f99896be5ca02792d79b5f35b26f89cef - scripts/tts_edge.py: SHA-256 f3263ce63fa29e106cc38be0cec2daf564e9609e37c99c3709eef0136c0a9d76 Si un fichier ne correspond pas, il a changé depuis la préparation de la fiche : ne l'installe pas encore, dis-moi ce que tu as trouvé et laisse-moi décider. 2. Lis SKILL.md au complet et lis les quatre scripts de scripts/ (assemble.py, make_bgm.py, make_subs.py, tts_edge.py), et dis-moi en mots simples : ce que le skill fait quand on l'utilise, à quels services il se connecte, s'il lit ou envoie des informations personnelles ou des clés, et tout ce qui semble inhabituel. Arrête-toi sur tout signal d'alerte et dis-le-moi avant d'aller plus loin. Confirme ces points à partir des fichiers : - Le dossier du skill contient 5 fichiers seulement : SKILL.md (5 576 octets) et quatre scripts Python dans scripts/ (assemble.py 14 821 octets, make_bgm.py 2 909 octets, make_subs.py 5 751 octets, tts_edge.py 4 628 octets). Les quatre scripts sont des copies à l'octet près des scripts du même nom à la racine du dépôt (scripts/), gardées en synchronie par tools/sync_scripts.py (dont la table assigne exactement ces quatre scripts à image-to-video-shots ; les mêmes quatre copies siègent aussi dans skills/ffmpeg-auto-assemble/scripts/) : le skill est autonome dans son propre dossier — assemble.py importe make_subs, make_bgm et tts_edge depuis son propre dossier seulement, et n'a besoin d'aucun fichier d'ailleurs dans le dépôt — ni les 12 autres skills, ni le scripts/ de la racine, ni le README, ni le requirements.txt du dépôt au moment de l'installation. La seule commande de script livré de SKILL.md appelle le assemble.py assis à côté de lui (python scripts/assemble.py storyboard.json …, relatif au dossier du skill). - Rien n'est envoyé nulle part pendant l'installation elle-même ; le seul téléchargement à l'installation est le dossier du skill depuis GitHub au commit épinglé. Aucun script n'est exécuté pendant l'installation, aucune clé n'est demandée, et il n'y a aucune télémétrie dans le dossier. Le dossier ne lit aucune clé API, aucune variable d'environnement et aucun fichier d'identifiants — confirmé dans les quatre scripts. - Ce qui quitte cette machine à l'usage, divulgué ici avant que ça arrive — utiliser le skill est une étape séparée qui ne commence que quand je demande des plans ou une vidéo, et il y a deux envois distincts, sur deux routes différentes ; ne les fusionne pas : (a) La route prompt de SKILL.md — la route principale : SKILL.md lui-même ne contient aucun client d'API, aucune URL de service vidéo et aucune manipulation de clé, et il n'envoie rien par lui-même ; ses prompts sont des textes écrits localement, entre toi et moi. Un envoi arrive seulement si et quand je porte un prompt terminé à un modèle ou service image-vidéo externe que je choisis moi-même (SKILL.md nomme Seedance / Kling (可灵) / Veo / Runway / Hailuo / Wan comme exemples, pas comme points de terminaison que ce dossier contacte) : alors je soumets — ou toi, seulement si je te le demande explicitement sur ce service — l'image de produit de référence elle-même (première image, et une deuxième image comme dernière image en mode première/dernière image) plus le texte du prompt, qui inclut le VERROU PRODUIT décrivant la forme, la couleur, le logo/texte, le matériau et les accessoires de mon produit, son action, son mouvement de caméra, sa lumière, sa durée et son rapport, à ce fournisseur, sous le compte, la clé, les prix et les conditions propres à ce fournisseur, et la vidéo générée revient de ce fournisseur. Ne choisir aucun modèle externe n'envoie rien sur cette route. (b) La voix off par défaut du repli livré : scripts/tts_edge.py (appelé par assemble.py sauf si je passe --tts none) remet chaque ligne de narration — le texte du champ line du storyboard (ou le champ localisé que je choisis, par ex. line_en), une ligne par plan — avec le nom de la voix (zh-CN-YunxiNeural par défaut, ou la voix du storyboard / celle que je choisis), le débit (rate) et la hauteur (pitch), à la bibliothèque edge-tts (importée paresseusement dans tts_edge.py sous le nom edge_tts ; ses appels sont edge_tts.Communicate(text, voice, rate=rate, pitch=pitch).save(mp3) et, pour --list, edge_tts.list_voices()), qui les envoie au service en ligne de synthèse vocale Edge de Microsoft et télécharge en retour l'audio MP3 synthétisé ; la docstring même de tts_edge.py énonce qu'il lui faut un accès réseau au service Edge TTS. Aucune clé API, aucun compte et aucun paiement ne sont en jeu sur cette route, et rien d'autre n'est envoyé par elle : pas mes images de produit, pas mes clips vidéo, pas le fichier storyboard lui-même — seulement le texte de narration des champs line, le nom de la voix, le débit et la hauteur, une requête par ligne, réessayée jusqu'à 3 fois en cas d'échec réseau. Les résultats sont mis en cache localement sous un hachage de (texte, voix, débit, hauteur), donc relancer la même ligne ne fait aucun appel réseau pour elle. Le mode autonome tts_edge.py --list <locale> interroge aussi ce même service Microsoft pour sa liste de voix, sans envoyer de texte de narration. Avec assemble.py --tts none, cette route n'envoie rien du tout : les durées des plans sont estimées d'après le nombre de caractères de la narration et le rendu est un aperçu silencieux, entièrement hors ligne. - Les parties locales seulement à l'usage : le VERROU PRODUIT, les choix de rôle de plan, les modèles de prompt (chinois et anglais), la formulation première/dernière image, les contraintes négatives (deformed product, melting, extra logos, changed colour, warped text, extra fingers, flicker, watermark), la liste de contrôle et le tableau de problèmes et réparations de SKILL.md restent locaux, entre toi et moi, jusqu'à ce que je décide de soumettre un prompt selon la route (a) ci-dessus. Le rendu de repli lui-même est local : assemble.py pilote le ffmpeg/ffprobe installé localement (mouvement Ken Burns sur les images fixes ou clips vidéo rognés, transitions xfade, décodage audio, normalisation de loudness en deux passes à environ -14 LUFS) et Pillow/NumPy (préparation des images fixes, fonds en remplissage flou) ; make_bgm.py synthétise la musique de fond par défaut localement avec NumPy (un lit libre de droits, aucun téléchargement), ou assemble.py boucle un fichier de musique que je fournis localement ; make_subs.py construit les sous-titres ASS/SRT localement (il ne lance que la commande locale fc-list pour détecter une police CJK). Le lien de SKILL.md vers le dépôt frère ecommerce-image-skills (pour d'abord fabriquer une image de base fond blanc / scène / point de vente) est un simple lien GitHub que rien n'ouvre pendant l'installation ni à l'usage. Règles de SKILL.md : chaque prompt porte le VERROU PRODUIT, une seule action principale par plan et le moins de mouvement du produit possible, les images avec texte / points de vente ne reçoivent que des mouvements immobiles ou extrêmement lents, le rapport correspond à la plateforme (vidéo d'image principale habituellement 1:1 / 3:4, flux 9:16), et aucun paramètre que le modèle choisi ne permet pas. - N'installe pas Pillow, NumPy, edge-tts ni ffmpeg pendant cette installation, n'exécute aucun des quatre scripts, ne soumets aucune image ni aucun prompt à un modèle de génération vidéo, et ne rends aucune vidéo : la configuration des dépendances d'usage et toute décision d'utiliser un modèle vidéo externe sont mes décisions, plus tard, quand je demande vraiment des plans. 3. Quand je dis « yes, install », installe-le comme skill : copie tout le dossier image-to-video-shots dans le répertoire des skills de l'agent, dans un dossier nommé « image-to-video-shots », en gardant ses 5 fichiers (SKILL.md à sa racine et les quatre scripts dans son sous-dossier scripts/). Un clone manuel suivi de la copie du dossier skills/image-to-video-shots dans ~/.claude/skills/ est la route décrite ici ; toute autre route ne convient que si chaque fichier installé correspond à son empreinte. 4. Vérifie sans appels réseau : frontmatter valide (name: image-to-video-shots), les 5 fichiers en place avec des empreintes concordantes. N'exécute pas assemble.py, make_bgm.py, make_subs.py ou tts_edge.py pour vérifier. 5. Indique ce qui a été installé, où, et ce qu'il me reste à faire moi-même (par exemple : fournir de 1 à 6 images de produit (le plus net est le mieux, 1 000 px ou plus recommandés dans SKILL.md) et la plateforme, et au choix jusqu'à 3 points de vente, une durée cible, un style et le modèle vidéo dont je dispose ; installer Python 3 avec Pillow, NumPy et edge-tts et avoir ffmpeg (avec libass) et ffprobe dans le PATH, et une police CJK disponible, si je veux le rendu de repli local ; décider moi-même de soumettre ou non une image de référence plus un prompt à un fournisseur externe de génération vidéo sous son propre compte / sa propre clé / ses propres prix, et si la voix off du repli peut envoyer mes lignes de narration au service Edge TTS de Microsoft ou doit plutôt rouler avec --tts none ; utiliser le skill est une étape séparée qui ne commence que quand je le demande, et les envois à l'usage divulgués ci-dessus arrivent seulement à ce moment-là, sur la route que je choisis). GitHub est optionnel : si j'ai un compte GitHub ou la CLI gh, tu peux l'utiliser ; sinon l'accès public suffit. Ne jamais l'exiger sauf s'il figure dans les prérequis ci-dessus. Règles : ne touche à rien en dehors du dossier temporaire et de la cible d'installation. Si quelque chose semble anormal, arrête-toi et demande-moi.
Enregistré dans vos installs récentes. Retrouvez-le à tout moment sur /connect.
Questions
Comment installer une création ?
Chaque fiche produit contient un prompt d’installation à copier-coller. Collez-le dans votre Muse et il installe la création pour vous — sans configuration manuelle.
Où va mon argent ?
Directement au vendeur. Skill Harbor ne traite jamais les paiements : le paiement se fait sur la page du vendeur, généralement via Stripe.
Que signifie le ✓ à côté du nom d’un créateur ?
Il signifie que nous avons confirmé l’identité de la personne derrière la fiche. Il ne dit rien sur le code lui-même — vérifiez toujours une création avant de l’installer.