Communitygithub.com

Archival film (档案影像)

Réalise des vidéos d'histoires d'archives (档案影像) — en chinois, format vertical 9:16, environ 3 minutes par défaut — à partir de matériel du domaine public (photos, gravures, cartes, timbres, documents, vieux films, disques 78 tours), avec des animations générées par code (Three.js/WebGL/GLSL/GSAP, parallaxe de profondeur, rendu « print » Python), un script conçu comme un marketing, une narration IA à voix grave lisant les sous-titres, des modules collage ou effets modernes (dot morph, chambre noire, typo cinétique, tableau d'enquête, encre fluide, nuage de points…), une musique de stock cutée sur les beats, des effets sonores réels denses, un mix −14 LUFS, plus une couverture conçue et un texte pour Douyin/Xiaohongshu. Utilise cette compétence chaque fois que l'utilisateur souhaite une vidéo d'histoire/biographie/histoire de l'art/histoire urbaine ou toute vidéo d'histoire avec du matériel ancien (历史短视频、人物传记、艺术史、城市史、档案视频、纪录短片), une refonte ou révision de l'une d'elles, ou des modifications de son script, de son apparence, de sa musique, de sa narration, de son son, de son rendu ou de sa livraison — même s'il ne nomme pas la compétence ou les outils.

Qu'est-ce que Archival film (档案影像) ?

Cette compétence, nommée **Archival film (档案影像)**, permet de créer des vidéos narratives à partir de documents d'archives réels, entièrement générées par code (WebGL, Python, Three.js). Chaque image est calculée, garantissant la reproductibilité, des sous-titres exacts et une vérification des licences. Destinée aux créateurs de contenu historique, biographique ou artistique, elle produit des vidéos verticales de type 9:16 (environ 3 min) en chinois, avec narration IA, effets visuels riches (collage animé, effets modernes comme le dot morph, la chambre noire, la typo cinétique) et un mixage audio professionnel. Le processus suit un workflow rigoureux avec quatre points de validation clés, de la recherche de faits et matériaux à la livraison finale incluant une couverture et un texte adapté aux plateformes comme Douyin et Xiaohongshu. Elle s'appuie sur une bibliothèque de scripts et de fichiers de référence pour garantir le respect des goûts de l'utilisateur et l'utilisation exclusive de matériel libre de droits.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/XLBen/video-skill-claude/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 Archival film (档案影像) ?

Films d'histoires générés par code, construits à partir de véritables archives. Chaque image est calculée (WebGL dans un Chrome sans tête, Python là où cela convient), de sorte que les résultats sont reproductibles, les sous-titres sont exacts et chaque source est vérifiée en termes de licence. L'utilisateur dirige le goût ; references/style-canon.md contient tout ce qu'il a déjà demandé — lisez-le d'abord, il remplace vos paramètres par défaut.

Valeurs par défaut (modifier uniquement si l'utilisateur le demande)

Chinois, vertical 1080×1920, environ 3 minutes + crédits après le montage principal. Narration activée (voix neurale Edge, ton documentaire masculin profond, 1.2× — la plage de l'utilisateur 1.1–1.25×) lisant les sous-titres. Musique : un morceau de bibliothèque audio pour tout le film, crédits inclus. Livraison = MP4 + couverture conçue + texte pour Douyin et Xiaohongshu. Mémoire : tous les processus de rendu/capture/modèle utilisent ensemble au maximum un quart de la RAM (8 Go → 2 Go). Plus lent est acceptable.

Configuration (une fois par machine, puis une fois par film)

  • sh scripts/setup.sh → ~/.cache/archival-film/ : un environnement virtuel Python 3.11 ($AF/py : numpy, pillow, onnxruntime, edge-tts), le modèle de profondeur, l'enregistrement de machine à écrire, les packages node pour WebGL. Il se trouve en dehors des dossiers de projet, donc nettoyer un projet ne casse jamais les outils. Polices : PROJECT=~/.cache/archival-film/assets sh scripts/fetch_fonts.sh classic.
  • sh scripts/new_project.sh <dir> → dossier de projet avec plates/ depth/ music/ sfx/ footage/ out/ prev/ web/, polices/machine à écrire/node_modules liés, le kit web et un modèle film.py. Exécutez les scripts comme PROJECT=<dir> FILM=film $AF/py <skill>/scripts/<script>.py ….

Mode test rapide

Lorsque l'utilisateur demande un court essai ("随便做个10s试试", un échantillon, un test de la compétence), sautez les quatre points de contrôle, gardez tout le reste (matériel réel, faits, narration, son, l'apparence), et dites dans la livraison quels choix vous avez faits en son nom. Un exemple de 10 s fonctionnel est templates/film_collage_example.py (+ templates/cuts_example.json).

Workflow — avec les quatre points de contrôle de l'utilisateur

  1. Brief — sujet, durée, contraintes éventuelles. Pour une refonte, listez tout ce que les versions précédentes ont utilisé et évitez-le complètement (references/narrative.md § Remakes).
  2. Faits et matériel — liste de faits sourcés ; trouvez et téléchargez le matériel avec licences (references/sourcing.md, scripts/cands.py, scripts/fetch_commons.py) ; images et restauration si utiles (references/enhancement.md) ; cartes de profondeur (scripts/depth.py) ; planches contact avec repères de grille.
  3. Script — concevez-le comme un marketeur pour un inconnu (references/narrative.md) : prémisse avec une contradiction dans les 3 premières secondes, une question ouverte à laquelle on répond à la fin, des points d'ancrage pour les noms/lieux inconnus, un substitut pour le spectateur, une escalade toutes les 20 à 30 secondes, des sous-titres écrits pour être lus à voix haute dans le budget de parole (references/narration.md). → Point de contrôle 1 : script. Montrez le texte complet des sous-titres, l'accroche, la question ouverte et la promesse du titre/couverture prévu. Attendez l'approbation avant tout travail d'image.
  4. Musique, palette, apparence, voix — proposez 2–3 apparences à partir de references/style-menu.md adaptées au sujet, une palette simple et audacieuse (1–2 couleurs fortes par époque + noir + papier ; montrez-la sur une vraie image brute, pas seulement en échantillons), un morceau de bibliothèque audio pour tout le film, trouvé en ligne (Kevin MacLeod / FMA / CC0 — references/audio.md ; classique uniquement si l'utilisateur veut une musique d'époque ; jamais de changement de chanson entre les sections — "全局用一个bgm") avec une ambiance/énergie qui correspond (mesurez avec scripts/beats.py ; vif pour les affaires/tech), et des auditions vocales (scripts/narrate.py --audition). → Point de contrôle 2 : musique + palette (+ apparence et voix).
  5. Chronométrage — ajustez le seul morceau avec Kit.music_bed() (→ scripts/music_edit.py) ; générez la narration (scripts/narrate.py), corrigez chaque dépassement qu'elle signale, synchronisez la frappe avec la voix (apply_narration) ; placez les coupures et les hits sur les attaques de la musique.
  6. Images — par défaut une animation collage (剪报画), lisez references/collage.md : découpez le matériel en morceaux avec scripts/cutout.py (figures découpées aux ciseaux, coupures déchirées, vrais titres, régions de carte), animez les morceaux — jamais la caméra — en tant que COLLAGE dans film.py (images clés, aspects visuels photo/demi-teinte/tache/remplissage/encre/couleur, déchirure, croissance, secousse, balancement), exportez avec scripts/export_web.py, rendez avec web/collage.js. Une couleur d'accent avec signification, jamais une sépia uniforme. Ajoutez d'autres techniques là où elles conviennent (references/style-menu.md palette ; éclatement et assemblage de points dans web/example_opening.js, aspects visuels Python dans references/looks.md). La scène à caméra continue web/journey.js a été rejetée comme valeur par défaut (references/webgl.md). La colorisation uniquement comme un effet N&B→couleur, créditée. Écrivez-le avec scripts/collage_kit.py (sous-titres depuis la voix, morceaux atterrissant sur les temps, empilement par arrivée). Ou réalisez le film à partir des modules d'effets modernes (web/fx.js, references/fx.md) : dot morph, wirephoto, chambre noire, typo cinétique, tableau d'enquête, montage d'images + rotoscopie gravure sur bois, encre fluide, pixel sort, nuage de points, portrait de personnage, plus hold et marques de guidage SVG. D'abord écrivez la liste des plans — par ligne : le seul sujet à voir, où, le mot repère (Kit.W), comment l'effet y conduit l'œil, et pourquoi cet effet signifie la ligne ; pas de signification → un hold. L'effet culmine sur le mot repère et se résout en un sujet clair ("特效要有明确的视觉引导,而不是堆砌素材"). Écrivez-le avec scripts/fx_plan.py → Kit.fx_cuts(), vérifiez chaque image avec scripts/fx_sheet.py (est-ce que voir est la première chose que vous voyez ?) avant le rendu. Proposez-le au point de contrôle 2 à côté du collage pour les sujets modernes / commerciaux / techniques. → Point de contrôle 3 : images fixes / échantillon. Envoyez une planche contact des images clés et un échantillon de 10 à 20 secondes avec son — ou le film entier en coupe approximative (scripts/rough.py, ~150 Mo) lorsque la mémoire est limitée ou que l'utilisateur veut tout voir.
  7. Son — chaque effet est un enregistrement réel trouvé en ligne avec scripts/fetch_sfx.py (Commons, 78 tours et enregistrements de terrain de l'Internet Archive, Freesound avec une clé ; licence enregistrée, auto-découpé dans sfx/bank.json). Conception dense : Kit.sfx_events() place un claquement/claque/déchirure de papier sur chaque atterrissage et déchirure (Kit.fx_sfx_events() fait de même pour les films d'effets : whoosh, radiofax, verser/éclabousser, projecteur, glitch, vent, clés) ; ajoutez des ambiances par section et des sons diégétiques ; voix d'époque à partir d'enregistrements PD (references/audio.md, scripts/sfx_build.py). → Point de contrôle 4 : liste sonore. Envoyez la liste des effets et des voix d'époque avec les heures et les sources avant le rendu final.
  8. Rendu et mixage — scripts/run_chunks.py (budget mémoire, morceaux cassés relancés), concaténation, puis scripts/mixdown.py --voice … (voix en ducking, −14 LUFS / −1 dBTP).
  9. Livraison — vérifiez (references/verification.md), puis envoyez le MP4, la couverture et le texte pour les plateformes (references/platform-copy.md) ; un aperçu 720p de moins de 30 Mo si l'utilisateur suit depuis un téléphone.

Ce qui compte le plus pour cet utilisateur (forme courte ; raisons dans style-canon.md)

  • Uniquement du matériel d'archives réel ; les effets de code agissent dessus. Pas d'objets modélisés, pas d'emblèmes auto-dessinés.
  • Une histoire claire pour un inconnu ; les petites personnes face au grand événement montré par les faits, jamais prêché ; pas de slogans IA ; les grands mots typographiques proviennent des sources.
  • Pensée d'animateur : les morceaux bougent, pas la caméra (les survols étaient "烂完了") ; découpez le matériel comme un collage de journal ; pas de zoom puis coupe ; pas de flashs couleur plein écran comme transitions.
  • Accent coloré fort avec signification — jamais une sépia/jaune uniforme sur tout ; utilisez les effets pour de vrai.
  • Chaque plan a un seul sujet auquel l'effet conduit l'œil, sur le mot qui le nomme — les effets comme verbe de la ligne, jamais pour eux-mêmes ou pour entasser du matériel ; des hold sobres entre eux. SVG uniquement pour les marques de guidage, jamais pour dessiner des images.
  • Effets riches et impressionnants — mais pas trop travaillés, ornement raffiné ("太精致" a été rejeté). Avant-garde plutôt que décoratif.
  • Un seul morceau d'ambiance générique de fond pour tout le film (CC BY / CC0, trouvé en ligne) dont l'ambiance correspond ; le classique semblait "怪" ; narration 1.1–1.25× ; pas de "ding" ; machine à écrire par caractère tapé, pas de cloche ; son réel dense.
  • Sous-titres complets et maintenus jusqu'à la ligne suivante ; palette audacieuse et simple ; morceaux ultérieurs par-dessus.
  • Sous-titres sur des bandes pleines, lisibles sur un téléphone ; une couleur thématique forte ; crédits après le montage principal.
  • Les refontes ne partagent rien avec les versions antérieures (scripts/overlap_check.py).

Fichiers

  • scripts/ — image : render_print.py anim.py futur.py captions.py cjkwrap.py base.py cfg.py ; matériel : cands.py fetch_commons.py fetch_ia.py depth.py cutout.py fetch_fonts.sh ; films collage / effets : collage_kit.py fx_plan.py fx_sheet.py rough.py ; audio : fetch_sfx.py beats.py onsets.py music_edit.py narrate.py sfx_build.py mixdown.py ; pont WebGL : export_web.py ; rendu : run_chunks.py ; vérifications : contact.py grid.py overlap_check.py ; environnement : setup.sh new_project.sh.
  • web/ — index.html (charge ?scene=NAME), fx.js + fx/*.js (modules d'effets modernes, fx/hold.js image simple, fx/guide.js marques de guidage SVG), collage.js (la scène d'animation découpée par défaut, pilotée par out/timeline.json), captions.js (bandeaux de sous-titres partagés), journey.js (scène à caméra continue, rejetée comme défaut), example_opening.js (scène plus ancienne construite à la main : éclatement, champ de points — réutilisez ses effets, pas ses coupures/flashs), capture.mjs (capture déterministe), package.json.
  • templates/film_template.py — le format du module film (plans, sous-titres, spécifications d'impression, événements sonores, crédits) ; templates/film_collage_example.py + cuts_example.json — un film collage complet de 10 s (San Francisco 1906) ; templates/film_journey_example.py — l'ancienne version voyage de celui-ci.
  • references/ — style-canon, narrative, narration, style-menu, collage, looks, webgl, audio, sourcing, enhancement, platform-copy, verification, known-gaps (éléments ouverts pour les prochaines séries de correctifs).

Skills associés