Communitygithub.com

Drame IA court

Transformez une idée d'histoire, un scénario ou un chapitre de roman en un épisode de court métrage terminé — personnages récurrents cohérents d'un plan à l'autre, dialogues parlés ou narrateur voix-off, sous-titres, un seul fichier MP4 à la fin. Utilise apimodels.app (Seedance 2.0 pour la vidéo, Nano Banana pour les images, MiniMax pour la voix) avec une seule clé API.

Qu'est-ce que Drame IA court ?

Ce skill d'agent IA génère automatiquement un épisode de court métrage (court métrage romancé, mini-série, 漫剧 / 短剧 / AI 动态漫) à partir d'une histoire, d'un script ou d'un chapitre de roman. L'utilisateur rédige un fichier `project.json` décrivant les personnages, les lieux et les plans ; le script central `scripts/drama.mjs` orchestre l'ensemble du flux de production : estimation des coûts, génération des fiches personnages (portrait + vues avant/côté/arrière), synthèse vocale (narration ou dialogues), rendu vidéo via Seedance 2.0, assemblage final avec ffmpeg et création des sous-titres .srt. Le skill garantit la cohérence des personnages entre les plans en passant les fiches de référence comme images de référence à Seedance 2.0. Il dispose de règles strictes pour éviter les dépassements de coût : l'estimation est présentée avant toute dépense, et chaque étape peut être reprise sans frais supplémentaires. Il prend en charge deux modes de voix (dialogue ou narration) et plusieurs niveaux de qualité et de style (anime, photoréaliste, etc.).

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/stimQQ/ai-short-drama/tree/HEAD

Demander à votre IA préférée

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

Documentation

Que fait Drame IA court ?

Histoire en entrée, épisode en sortie. Vous écrivez l'histoire dans un fichier project.json (personnages, lieux, plans). scripts/drama.mjs s'occupe de tout ce qui coûte de l'argent ou qui est facile à se tromper :

project.json ─ estimation ─ casting ─ (voix) ─ plans ─ assemblage ─▶ episode.mp4 + .srt
               gratuit       image de     narration  Seedance   ffmpeg : normaliser,
               valide        référence    mode seul  rend       mixer la voix-off,
               + prix        par                     chaque     joindre, sous-titres
                              personnage              plan
                              et lieu

Comment les personnages restent identiques : chaque personnage reçoit une fiche de référence (portrait + vues avant/côté/arrière). Chaque plan transmet les fiches des personnages qu'il contient à Seedance 2.0 comme images de référence, et le prompt précise quelle image représente qui.

Règles

  1. Exécutez toujours scripts/drama.mjs. N'appelez pas l'API avec curl ou fetch. Le script enregistre chaque identifiant de tâche dès qu'il existe, donc un crash ou un délai d'attente reprend la même tâche au lieu de la payer à nouveau. Les appels faits à la main perdent cela.
  2. Lisez references/project-schema.md et references/shot-writing.md avant d'écrire project.json. Le guide d'écriture des plans détermine si l'épisode ressemble à un seul film ou à douze clips sans lien.
  3. Lancez d'abord "estimation" et montrez le résultat à l'utilisateur : liste des plans, durée totale, modèles et tableau des prix. Attendez un oui avant "casting" / "plans". Le script refuse toute étape de plus de 1 $ sans --yes. Ne passez --yes qu'après que l'utilisateur a accepté ce montant.
  4. Montrez à l'utilisateur les fiches personnages avant de rendre les plans. Les fiches coûtent environ 0,02 $ chacune ; les plans coûtent 10 à 100 fois plus. Si un visage, une tenue ou le style est faux, corrigez l'aspect et exécutez cast --redo <id> maintenant. Chaque plan l'hérite.
  5. Pour un nouveau projet, rendez d'abord un seul plan (shots --only s1). Regardez-le avec l'utilisateur, puis rendez le reste. Sautez cette étape uniquement pour les projets très courts (trois plans ou moins) ou si l'utilisateur le demande.
  6. N'inventez jamais de nom de modèle. Utilisez uniquement les modèles du tableau ci-dessous. Si l'utilisateur en demande un autre, dites que ce skill ne le prend pas en charge.
  7. Les tâches échouées ne sont jamais facturées. Dites-le clairement quand une tâche échoue, expliquez pourquoi (le script imprime la raison et la prochaine étape), et proposez de réessayer.
  8. Ne mentionnez pas les fournisseurs en amont ni le routage. Parlez des noms de modèles dans ce fichier et rien derrière.
  9. Aucune personne réelle et identifiable sans son consentement, et rien de sexuel, haineux ou diffamatoire envers une personne réelle. Refusez ces demandes.

Flux de travail

S=/chemin/absolu/vers/ce/skill/scripts/drama.mjs     # vous connaissez votre répertoire de base ; utilisez-le
node $S check                                         # clé, solde, ffmpeg
mkdir -p dramas/mon-episode                            # un dossier par épisode, dans l'espace de travail de l'utilisateur
# écrire dramas/mon-episode/project.json               (voir references/project-schema.md)
node $S estimate dramas/mon-episode/project.json --prompts
node $S cast     dramas/mon-episode/project.json      # puis MONTRER les images dans cast/
node $S voice    dramas/mon-episode/project.json      # mode narration uniquement
node $S shots    dramas/mon-episode/project.json --only s1   # vérifier un, puis :
node $S shots    dramas/mon-episode/project.json
node $S assemble dramas/mon-episode/project.json --burn-subs
node $S status   dramas/mon-episode/project.json      # à tout moment : progression, dépenses, ce qu'il reste
  • Les rendus sont lents. Un plan prend généralement 2 à 8 minutes, et les plans s'exécutent 3 à la fois. Avant les plans, informez l'utilisateur du temps approximatif nécessaire. Ne le laissez pas regarder un terminal silencieux.
  • Toute commande peut être réexécutée en toute sécurité. Le travail terminé est ignoré. Les tâches en cours sont reprises là où elles se sont arrêtées. Les plans échoués ne sont réessayés qu'avec --retry-failed.
  • Modifier un plan après son rendu ne le re-rend pas. status le marque "entrées modifiées". Re-rendez-le intentionnellement avec shots --redo <id> ; cela est payé à nouveau.
  • Montrez le résultat : le chemin du MP4 final, sa durée et le fichier .srt. Puis indiquez ce qui a été dépensé : status imprime le montant exact facturé, relu depuis l'API.
  • Tout est téléchargé dans le dossier du projet. Les URL des résultats de l'API expirent après 30 jours, donc le dossier est la copie qui dure.

Dialogue ou narration

Choisissez avant d'écrire les plans :

"mode": "dialogue""mode": "narration"
Qui parlePersonnages à l'écran, synchronisation labiale. Seedance génère les voix avec la vidéo.Une voix de narrateur (text-to-speech), mixée sur le son ambiant de chaque plan.
Idéal pourScènes basées sur la conversation ; mini-drames style live-action.漫剧 / drames IA comics, adaptations de romans, vidéos de récapitulation et narration.
Cohérence vocaleLa voix d'un personnage peut varier un peu d'un plan à l'autre.Une voix identique pour tout l'épisode.
Durée des plansVous définissez duration (4–15 s). Gardez chaque réplique assez courte.Définie automatiquement pour correspondre à chaque ligne de narration, jusqu'à 15 s.
LimitesEnviron 1–2 courtes répliques par plan de 5 s. Pas de contrôle précis sur qui parle quand.Les personnages ne parlent pas à l'écran.

Si l'utilisateur ne précise pas, utilisez la narration pour tout ce qui est décrit comme 漫剧, une BD, un roman ou un récapitulatif d'histoire. Utilisez le dialogue pour les scènes basées sur la conversation.

Modèles et coût

Le script choisit un video_model par défaut selon le style. Les looks stylisés (anime, comic, 国漫, cartoon, aquarelle) reçoivent dreamina-seedance-2-0-mini. Tout le reste reçoit seedance-2.0-mini. Remplacez-le dans project.json si l'utilisateur veut autre chose.

L'utilisateur veutvideo_modelRésolutionsPar seconde de vidéo
Épisode stylisé (anime, comic, 国漫) ; brouillonsdreamina-seedance-2-0-mini480p / 720p0,0225 $ / 0,048 $
Stylisé, un cran au-dessus du minidreamina-seedance-2-0-fast480p / 720p0,0644 $ / 0,1372 $
Stylisé, qualité finale jusqu'à 1080pdreamina-seedance-2-0480p / 720p / 1080p0,10 $ / 0,22 $ / 0,55 $
Personnes photoréalistesseedance-2.0-mini480p / 720p0,044 $ / 0,095 $
Photoréaliste, un cran au-dessus du miniseedance-2.0-fast480p / 720p0,071 $ / 0,153 $
Photoréaliste, qualité finale jusqu'à 1080pseedance-2.0480p / 720p / 1080p0,092 $ / 0,197 $ / 0,492 $

Autres coûts :

  • Fiches personnages et lieux : nano-banana-2-1, 0,022 $ chacune en 1K.
  • Narration : minimax-speech-2.8-turbo, 0,04 $ pour 1 000 caractères. Un court clip est facturé au moins 0,004 $.

Un épisode d'une minute (12 plans × 5 s, 5 fiches) coûte environ :

  • 1,46 $ en dreamina-seedance-2-0-mini 480p
  • 2,99 $ en dreamina-seedance-2-0-mini 720p
  • 2,75 $ en seedance-2.0-mini 480p
  • 29,63 $ en seedance-2.0 1080p

Suggérez 480p pour le premier passage. Un deuxième passage en 720p ne re-rend que les plans ("resolution": "720p" puis shots --redo <ids>). Les fiches restent.

Pourquoi les lignes photoréalistes existent : les modèles dreamina-* refusent les images de référence qui ressemblent à une personne réelle, et une fiche personnage photoréaliste peut déclencher cela. Le script reconnaît ce refus et vous dit de passer à seedance-2.0-mini. La tâche refusée n'est pas facturée.

Les prix sont des prix catalogue, vérifiés le 30/09/2026. status indique ce qui a réellement été facturé.

La clé API

Exécutez node $S check d'abord. La clé provient de APIMODELS_API_KEY, ou de ~/.apimodels/credentials, ou de ~/.apimodels/credentials.json. Ce dernier est écrit par npx apimodels-mcp login, donc un utilisateur qui s'est connecté à un outil apimodels est déjà configuré.

S'il n'y a pas de clé, exécutez node $S login vous-même et donnez à l'utilisateur le lien qu'il imprime. Ils se connectent à apimodels.app et cliquent sur Autoriser. Une nouvelle clé est écrite dans ~/.apimodels/credentials et n'apparaît jamais dans cette conversation. Ensuite, relancez check et continuez.

Si login ne peut pas fonctionner (pas de navigateur sur la machine), ne demandez pas la clé dans le chat. Donnez à l'utilisateur une commande à coller dans une nouvelle fenêtre de terminal, avec le chemin absolu du script rempli :

read -s KEY && printf %s "$KEY" | node /CHEMIN/ABSOLU/scripts/drama.mjs save-key && unset KEY

Les clés sont créées sur https://apimodels.app/console/api-keys.

Gestion de la clé :

  • Ne la renvoyez jamais en écho.
  • Ne la passez jamais comme argument de commande.
  • Ne l'écrivez jamais dans le dossier du projet.
  • Si une clé apparaît dans la conversation, dites à l'utilisateur de la révoquer.

Erreurs

Le script imprime la raison et la prochaine étape. En termes simples :

Vous voyezSignificationFaites
401Clé mauvaise ou manquanteRelancez login
402Solde insuffisantRechargez sur https://apimodels.app/console/credits. Les plans terminés sont conservés.
"ressemble à une personne réelle"dreamina-* a refusé une image de référencePassez video_model à seedance-2.0-mini, puis shots --retry-failed
Refus de révision de contenuLe prompt ou une ligne a été refuséReformulez ce plan. Réessayer le même texte ne servira à rien.
Occupé / délai d'attenteCharge en amontExécutez shots --retry-failed un peu plus tard
"toujours en cours"Plus de 25 minutesRelancez shots plus tard ; il reprend la tâche, sans frais
code de sortie 3L'étape coûte plus de 1 $Confirmez le montant avec l'utilisateur, puis ajoutez --yes

Le succès n'est pas garanti à 100 % : un plan échoue occasionnellement, et une nouvelle tentative fonctionne généralement.

Ce que ce skill ne fait pas

Dites-le directement plutôt que d'improviser :

  • Il ne garantit pas une parfaite cohérence. Les visages peuvent dériver dans les plans larges, et avec trois personnages ou plus dans un même cadre. Limitez à 1–2 personnages par plan (voir shot-writing).
  • Aucun plan ne dépasse 15 s. Les moments plus longs sont découpés en plusieurs plans.
  • Il ne synchronise pas les lèvres sur une piste vocale enregistrée par l'utilisateur.
  • Il ne contrôle pas la première image exacte d'un plan. Les plans sont pilotés par les images de référence et le prompt.
  • Les horodatages des sous-titres sont approximatifs. Ils sont répartis uniformément dans chaque plan. Modifiez le fichier .srt si le timing exact est important.
  • Il ne publie nulle part. La sortie est un MP4 local plus un SRT.

Skills associés