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
- 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. - Lisez
references/project-schema.mdetreferences/shot-writing.mdavant d'écrireproject.json. Le guide d'écriture des plans détermine si l'épisode ressemble à un seul film ou à douze clips sans lien. - 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--yesqu'après que l'utilisateur a accepté ce montant. - 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. - 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. - 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.
- 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.
- Ne mentionnez pas les fournisseurs en amont ni le routage. Parlez des noms de modèles dans ce fichier et rien derrière.
- 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.
statusle marque "entrées modifiées". Re-rendez-le intentionnellement avecshots --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é :statusimprime 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 parle | Personnages à 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 pour | Scè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 vocale | La voix d'un personnage peut varier un peu d'un plan à l'autre. | Une voix identique pour tout l'épisode. |
| Durée des plans | Vous définissez duration (4–15 s). Gardez chaque réplique assez courte. | Définie automatiquement pour correspondre à chaque ligne de narration, jusqu'à 15 s. |
| Limites | Environ 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 veut | video_model | Résolutions | Par seconde de vidéo |
|---|---|---|---|
| Épisode stylisé (anime, comic, 国漫) ; brouillons | dreamina-seedance-2-0-mini | 480p / 720p | 0,0225 $ / 0,048 $ |
| Stylisé, un cran au-dessus du mini | dreamina-seedance-2-0-fast | 480p / 720p | 0,0644 $ / 0,1372 $ |
| Stylisé, qualité finale jusqu'à 1080p | dreamina-seedance-2-0 | 480p / 720p / 1080p | 0,10 $ / 0,22 $ / 0,55 $ |
| Personnes photoréalistes | seedance-2.0-mini | 480p / 720p | 0,044 $ / 0,095 $ |
| Photoréaliste, un cran au-dessus du mini | seedance-2.0-fast | 480p / 720p | 0,071 $ / 0,153 $ |
| Photoréaliste, qualité finale jusqu'à 1080p | seedance-2.0 | 480p / 720p / 1080p | 0,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-mini480p - 2,99 $ en
dreamina-seedance-2-0-mini720p - 2,75 $ en
seedance-2.0-mini480p - 29,63 $ en
seedance-2.01080p
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 voyez | Signification | Faites |
|---|---|---|
401 | Clé mauvaise ou manquante | Relancez login |
402 | Solde insuffisant | Rechargez 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érence | Passez video_model à seedance-2.0-mini, puis shots --retry-failed |
| Refus de révision de contenu | Le prompt ou une ligne a été refusé | Reformulez ce plan. Réessayer le même texte ne servira à rien. |
| Occupé / délai d'attente | Charge en amont | Exécutez shots --retry-failed un peu plus tard |
| "toujours en cours" | Plus de 25 minutes | Relancez shots plus tard ; il reprend la tâche, sans frais |
| code de sortie 3 | L'é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
.srtsi le timing exact est important. - Il ne publie nulle part. La sortie est un MP4 local plus un SRT.