GIF Cinéma
Transformez un brief en actions visibles distinctes avec cause et effet, puis assemblez les prises révisées en une histoire plus longue. Séparez l'apparence, l'action du personnage, le mouvement graphique et le format de livraison. Conservez le style artistique choisi par l'utilisateur et les séquences approuvées. Il s'agit d'un workflow guidé par l'auteur, et non d'un modèle d'animation autonome.
Choisissez une voie de production réelle
- GIF existants : inspectez ce que chaque prise montre réellement ; construisez l'histoire autour de ces actions. L'exemple fourni teste cette voie sans clé API.
- Nouvelle action d'un personnage : planifiez une action principale par GIF court généré. Utilisez uniquement un outil/API de génération disponible et autorisé. Inspectez et acceptez chaque résultat avant d'étendre son état vers une autre scène. Voir generation.md.
- Motion design : utilisez le rendu de titres animés local inclus pour la typographie et les entrées de règles d'accentuation. Pour les personnages en couches, les accessoires mobiles, les masques ou les actions riggées, utilisez un compositeur réellement disponible dans l'environnement et conservez ses sources modifiables. Ce package ne contient pas de moteur d'animation en couches général.
Ne comptez pas comme une nouvelle action de personnage : un déplacement de caméra, une superposition, une séquence inversée, une autre légende sur le même clip ou des arrêts plus longs. Un long dessin animé nécessite des événements scénaristiques supplémentaires. Si ces dessins manquent et que la génération est indisponible, livrez honnêtement un animatique ou un plan de production, pas un dessin animé fini revendiqué.
Environnement d'exécution et vérification sans clé
Nécessite Python 3.10+, Pillow, Git, FFmpeg et ffprobe. Utilisez un environnement isolé. Les aides de la compétence fonctionnent avec cet environnement d'exécution public et immuable révisé :
python -m venv .venv
# Activez .venv avec la commande pour votre shell, puis :
python -m pip install "gif-cinema @ git+https://github.com/antropos17/chatgpt-gif-cinema.git@fa82b13366a9ae94a4ece730ec6b2d065cd9a060"
python -m gif_cinema --help
ffmpeg -version
ffprobe -version
Une copie existante de cette révision ou un environnement d'exécution plus récent compatible testé est également utilisable. Ne rétrogradez pas automatiquement un projet fonctionnel. L'environnement d'exécution utilise la licence d'évaluation source-disponible incluse. L'influence du workflow attribué de GIF Factory possède son propre avis MIT dans THIRD_PARTY_NOTICES.md.
Résolvez les chemins des aides et des ressources par rapport à ce dossier de compétence. Les exemples ci-dessous supposent que le shell se trouve dans ce dossier. Depuis ailleurs, utilisez des chemins absolus vers les aides et le JSON d'entrée ; conservez les sorties dans le projet de l'utilisateur, jamais dans la compétence installée.
python scripts/story_project.py compile assets/example/storyboard.json --out output/story-project
python -m gif_cinema render output/story-project/film.json --dry-run --max-api-calls 0
python -m gif_cinema render output/story-project/film.json --execute --max-api-calls 0 --out output/story-render
python scripts/story_project.py export-gif output/story-render/film.mp4 --out output/story.gif
Il s'agit d'un montage source de 9,68 secondes, pas d'un nouveau long dessin animé : un titre animé local de 2
secondes suivi de trois actions d'astronaute existantes de 2,56 secondes. Le MP4 utilise 25
images par seconde ; les personnages sources ont 16 dessins par prise, pas 25 nouveaux dessins par
seconde. L'export GIF par défaut est de 320 px de large, 10 images par seconde, silencieux, lecture unique. --repeat
boucle le résultat entier. Certains visualiseurs remplacent le comportement de boucle GIF.
Pour la vérification de régression CLI de base, exécutez scripts/smoke_test.py --out NEW_DIRECTORY.
Aucune des aides n'a besoin de clé. L'aide story ne fait jamais d'appels fournisseur et refuse
un projet de sortie existant. story-project.md documente
son schéma exact, ses commandes, son timing et ses limites.
Directives avant la génération
Pour une nouvelle histoire ou une extension substantielle, lisez storytelling.md. Produisez un story-board modifiable avec :
- La prémisse et la fin ; public, durée cible, rapport hauteur/largeur, langue et exigences sonores si pertinentes. Inférez des valeurs par défaut à faible risque plutôt que de demander à nouveau.
- Une bible visuelle compacte : ancres de personnages reconnaissables, palette/matériau, costume, nombre d'accessoires, propriété, échelle, géographie et conventions de caméra.
- Une liste de beats/plans : état avant → action visible → état après, caméra, durée attendue et but dans l'histoire. Suivez les mains/accessoires/contact à chaque coupe.
- Une carte des sources/générations : quelles actions existent déjà, lesquelles nécessitent de nouveaux dessins, lesquelles sont des graphismes locaux. Marquez les plans non rendus comme non rendus.
Adaptez l'histoire en ajoutant des actions et des conséquences significatives, sans répéter des séquences jusqu'à
ce qu'un chronomètre atteigne le brief. L'exemple d'histoire longue dans
assets/example/long-story.plan.json est un plan de production non rendu de 14 actions.
Le compiler prépare 14 entrées de génération à prise unique ; il ne rend pas ces actions.
Générer et assembler délibérément
Compilez le story-board avec scripts/story_project.py compile .... Un projet
uniquement source a un film.json exécutable. Un projet avec des plans manquants/générés a des
entrées de génération generation/ID.json séparées et un assembly-template.json délibérément incomplet.
Aucun lot payant n'est exécuté par le compilateur.
Utilisez une action représentative pour établir la faisabilité lorsque le personnage/méthode est nouveau. Les nouvelles générations nécessitent l'accès API de l'utilisateur et la limite d'appels convenue. Pour la continuité du point final, extrayez la dernière image précédente acceptée, inspectez-la, puis joignez cette image existante ainsi qu'une référence d'identité propre à l'entrée de la prise suivante. Le compilateur ne crée pas de références futures ni de graphe de dépendances automatique.
Conservez des dossiers de prises séparés et un enregistrement des candidats acceptés/rejetés. Une reprise
doit être révisée aux deux jonctions voisines. Enregistrez l'ID de plan, le
chemin, le SHA-256 et les notes de révision de chaque GIF sélectionné dans un manifeste de prises. Compilez avec --takes takes.json
pour remplir les emplacements générés sans changer manuellement leurs modes. L'aide vérifie
exactement ces octets, mesure leurs délais réels et conserve la requête originale.
Elle peut appliquer une sélection partielle ; les actions manquantes restent explicitement non rendues.
Chaque projet inclut un storyboard.json portable. Continuez à partir de ce fichier avec un nouveau
manifeste de prises et un nouveau dossier de sortie. Les sources existantes et les titres rendus
sont hachés et ne peuvent pas être remplacés par le manifeste. Pour une reprise intentionnelle,
créez une copie modifiée du story-board original et sélectionnez la nouvelle prise là ;
conservez le projet antérieur et révisez à nouveau les deux coupes voisines. Conservez les versions de projet
avec leurs enregistrements de révision. Les notes de l'appelant ne constituent pas une acceptation visuelle automatique.
Voir le format de sélection exact et l'exemple sans clé.
Utilisez le rendu zéro appel même lorsqu'une clé est configurée par hasard.
Mouvement, timing et export
Les cartes de titre sont des entrées de texte/ligne uniques suivies d'un arrêt. Le lettrage est local
et modifiable dans le story-board, plutôt que confié à une invite de génération. Les titres
sont des plans séparés, pas des superpositions ; les légendes de l'exécution sont un SRT séparé, pas intégrées
dans les GIF. Spécifiez une police locale sous licence avec --font si nécessaire, et inspectez ses glyphes.
Le timing du personnage provient du GIF source décodé. Le retiming source, les transitions, l'interpolation, la génération audio et la synthèse d'action automatique ne sont pas fournis par cette aide. L'environnement d'exécution épinglé utilise des coupes franches et peut importer un audio local optionnel via son script de film. Le GIF n'a pas d'audio. Suivez l'aide de l'environnement d'exécution actuel si vous utilisez des outils d'édition plus récents ; n'impliquez pas que le package épinglé les inclut.
Exportez d'abord un MP4 vérifié, puis un GIF plus petit ou des chapitres. La conversion de palette GIF peut endommager les dégradés et les contours fins ; examinez également le GIF final réel. Une FPS de lecture élevée ne crée pas de nouveau mouvement. review.md donne les vérifications d'acceptation visuelle et technique.
Livrez le résultat réel
Fournissez les fichiers GIF/MP4 demandés avec la durée réelle, les dimensions, le comportement de boucle, le cadencement des dessins sources par rapport à la FPS d'export, le statut silencieux/audio et les défauts visuels connus. Incluez un projet modifiable si demandé. Révisez les noms de sources, les invites, les références et les licences avant de partager un projet ; ne publiez pas d'entrées privées. Distinguez la vérification technique, votre révision visuelle et l'acceptation par l'utilisateur.