Au début de votre carrière en tant qu’animateur, vous allez probablement apprendre une vérité difficile : parfois, de façon douloureuse : faire un excellent travail n’est qu’une moitié du travail, et le partager clairement est l’autre moitié. Vous vous souvenez peut-être d’un projet de court métrage où l’animation elle-même était solide, mais où le processus de review était un véritable chaos. Des allers-retours rapides de QuickTimes par email, des fichiers nommés comme shot_final_v3_really_final.mov, et personne n’est vraiment sûr de savoir à quelles versions correspondent les notes. Les clients étaient perdus, les superviseurs frustrés, et vous passiez plus de temps à gérer des fichiers qu’à animer.
Avancez de quelques années, et des outils comme les playlists Kitsu changent complètement la façon dont les studios passent en revue l’animation.
Elles vous apportent une structure, une traçabilité, et une manière propre de présenter le travail. Vous pouvez regrouper les plans, suivre les versions et centraliser les retours. Pour la plupart des équipes, rien que ça représente un énorme gain.
Mais voici le point que l’on apprend au fil des années de production : aucun studio ni client ne partage exactement le même workflow de review. Parfois, vous devez envoyer des assets hors ligne. Parfois, un client veut tout emballé proprement par séquence. Parfois, des contraintes légales ou de sécurité signifient que vous ne pouvez pas donner un accès direct à Kitsu. Dans ces cas, vous souhaitez quand même tirer parti des forces de Kitsu sans être verrouillé dans une seule manière de partager.
C’est exactement de cela que traite cet article.
À la fin, vous saurez comment créer une playlist Kitsu, en extraire les données avec Python, télécharger tous les assets associés dans une structure de dossiers propre, et compresser le tout pour un partage facile. Cette approche peut vous faire gagner des heures sur de vraies productions et rendre les reviews plus fluides pour les artistes comme pour les clients.
Décomposons le tout étape par étape.
Vous pouvez trouver le code source complet de l’exemple d’intégration présenté dans ce guide sur notre GitHub :
🔗 https://github.com/cgwire/blog-tutorials/tree/main/share-kitsu-playlist
1. Créer une playlist Kitsu
Tout bon workflow de review commence par une intention claire : sur quoi voulez-vous exactement obtenir un retour ? Les playlists Kitsu sont faites pour ça.
Créer une playlist depuis le tableau de bord Kitsu est simple. Allez dans votre projet, rendez-vous dans la section Shots ou Assets, puis commencez à sélectionner les éléments à faire relire. Il est utile de penser aux playlists comme à des récits de review. Au lieu de tout balancer, posez-vous ces questions :
- S’agit-il d’une review bloquante ?
- S’agit-il d’une passe de finition ?
- La focus porte-t-elle sur l’animation, l’éclairage ou le compositing ?
Par exemple, sur un court projet cinématographique, vous pourriez créer des playlists séparées pour :
- « Animation Blocking – Act 1 »
- « Facial Polish – Key Shots »
- « Final Lighting Review »
Cette petite organisation peut rendre les reviews clients beaucoup plus ciblées.
Dans Kitsu, une fois vos plans sélectionnés, vous pouvez créer une nouvelle playlist, la nommer clairement, puis ordonner les plans de manière à raconter une histoire. L’ordre compte plus qu’on ne le pense. Quand un client lance la lecture, il peut juger l’art, le timing et les révisions au même endroit.

2. Récupérer les données de la playlist
Maintenant que la playlist est prête, il est temps de coder.
On commence par s’authentifier auprès de Kitsu en utilisant le client de l’API Gazu :
import gazu
gazu.set_host("http://localhost/api") gazu.log_in("admin@example.com", "mysecretpassword")
Ensuite, on interroge Kitsu pour obtenir les projets disponibles et on les affiche dans le terminal. L’utilisateur choisit un projet, et ce choix définit le périmètre de tout ce qui suit. Comme les projets sont récupérés dynamiquement, le script fonctionne sur plusieurs productions sans modification :
productions = gazu.project.all_projects()for i, p in enumerate(productions): print(f"{i} {p'name'}")
production = productionsint(input("Select project: "))
À partir de là, les playlists sont interrogées depuis le projet sélectionné et affichées de la même façon. Lorsqu’une playlist est choisie, le script récupère l’objet complet de la playlist via l’API.
playlists = gazu.playlist.all_playlists_for_project(production)for i, pl in enumerate(playlists): print(f"{i} {pl'name'}")
playlist = gazu.playlist.get_playlist(playlistsint(input("Select playlist: ")))
playlist contient la référence complète de la sélection éditoriale : les plans, les versions, l’ordre, et les fichiers liés sont tous accessibles via cet objet.
3. Télécharger les assets associés
La prochaine étape consiste à transformer les données de la playlist en quelque chose qui soit consultable sur disque.
Le résultat est une hiérarchie de dossiers qui reflète la réalité de la production : la playlist en haut, les séquences en dessous, les plans à l’intérieur, puis les médias réels là où chacun s’attend à les trouver.
Playlist_Name/
└── Seq_010/
├── Shot_010_001/
│ ├── anim_v003.mov
│ └── anim_v003.png
└── Shot_010_002/
└── Seq_020/
└── Shot_020_005/
Cette structure est l’idée principale. Elle supprime l’ambiguïté, évite de déverser les fichiers à plat, et permet aux superviseurs comme aux clients de naviguer par contexte plutôt que par noms de fichiers.
Le nom de la playlist est utilisé comme dossier racine, ainsi chaque export reste autonome et ré-exécutable.
playlist_name = playlist"name"Ensuite, on parcourt chaque entrée de la playlist et on récupère l’enregistrement complet du plan, car la playlist elle-même ne contient pas les données de séquence.
for shot in playlist"shots":
shot_data = gazu.shot.get_shot(shot"entity_id")
On utilise le nom de la séquence et le nom du plan pour construire un chemin de dossier déterministe. Cela impose une structure playlist/sequence/shot cohérente sur le disque.
shot_name = shot_data"name" sequence_name = shot_data"sequence_name"
shot_dir = os.path.join( playlist_name, sequence_name, shot_name, )
Si le dossier n’existe pas, on le crée. Cela permet au script de tourner plusieurs fois sans échouer ni écraser des téléchargements partiels.
os.makedirs(shot_dir, exist_ok=True)
On peut ensuite récupérer les informations du fichier d’aperçu correspondant à chaque plan. Typiquement, une image ou une vidéo :
preview = gazu.files.get_preview_file(shot"preview_file_id")
On conserve le nom de fichier et l’extension d’origine afin que le résultat corresponde à ce que les artistes et les superviseurs s’attendent à voir.
preview_filename = f"{preview'original_name'}.{preview'extension'}"
preview_path = os.path.join(shot_dir, preview_filename)
On télécharge directement le média d’aperçu dans le dossier du plan. À ce stade, la playlist existe sur le disque sous forme d’arborescence propre, prête pour la review.
gazu.files.download_preview_file(preview, preview_path)
Le résultat est un miroir local de la playlist qui peut être zippé, envoyé, archivé ou relu sans explications.
4. Compresser le dossier
Une fois tout téléchargé, l’étape finale consiste à faciliter le partage. Votre script doit compresser automatiquement le dossier racine de la playlist en une archive unique :
import shutil
shutil.make_archive( base_name=playlist_name, format="zip", root_dir=os.path.dirname(playlist_name), base_dir=os.path.basename(playlist_name), )
Cette archive devient votre livrable. Vous pouvez la télécharger vers un stockage cloud, l’envoyer via un portail client sécurisé, ou l’archiver en interne comme dossier de sauvegarde.
Les clients ne s’inquiètent pas des fichiers manquants ou des structures cassées. Ils téléchargent une fois, décompressent une fois, et tout fonctionne.
Incluez le nom de la playlist et la date dans le nom du fichier d’archive. Six mois plus tard, quand quelqu’un demandera : « Quelle version nous a-t-on envoyée ? », vous serez content de l’avoir fait.
Intégrer les clients dans Kitsu
À un moment, exporter des playlists Kitsu commence à gêner. C’est OK quand vous envoyez un aperçu rapide ou quand vous faites une passe de notes ponctuelle, mais dès que le projet entre dans une vraie phase d’itération, tout se complique très vite. Vous ré-exportez pour chaque petit ajustement, les clients commentent des versions déjà dépassées, et les retours se retrouvent éparpillés entre emails, PDF et fils de discussion. Beaucoup d’énergie est consacrée à comprendre à quoi renvoie la note, au lieu de corriger réellement le plan.
C’est généralement à ce moment-là que ça vaut la peine d’intégrer les clients directement dans Kitsu. Ils consultent toujours la version actuelle, ils peuvent dessiner ou commenter directement sur l’image, et tout le monde voit les notes dans leur contexte. L’historique des versions reste intact : quand un client demande quelque chose « à partir de deux versions en arrière », vous pouvez réellement le voir. Pour l’équipe, cela signifie moins de moments d’hésitation et moins de temps passé à recopier les notes d’un endroit à l’autre.

Les exports sont bons pour les contrôles rapides, mais ils ne passent pas à l’échelle en production réelle. Garder les clients dans Kitsu maintient tout le monde ancré dans la même réalité.
Conclusion
Après des années dans l’animation, une leçon revient sans cesse : plus votre workflow de review est fluide, meilleur est votre rendu créatif. Kitsu vous donne déjà une base solide avec les playlists, la gestion des versions et les retours centralisés. En exploitant ses données et en construisant de petits outils d’automatisation, vous pouvez l’adapter à presque n’importe quel scénario de review.
Mais vous pouvez aussi extraire les données des playlists depuis Kitsu et les remodeler pour correspondre à vos workflows de review personnalisés. Que vous envoyiez des packs hors ligne, que vous organisiez des assets pour des partenaires externes, ou que vous cherchiez juste à faciliter la vie de vos clients, cette approche vous met aux commandes.
Consultez le dépôt public Github pour cloner et modifier notre code afin de l’adapter à votre workflow !

Et s’il y a un dernier conseil qui vaut vraiment le coup : intégrez vos clients directement dans Kitsu dès que possible ! Une fois qu’ils font l’expérience de vraies salles de review en temps réel, avec des notes annotées et l’historique des versions, la plupart ne veulent plus revenir à des fils d’emails chaotiques.


