Was macht Archival-Film (档案影像)?
Code-gesteuerte Story-Filme aus echtem Archivmaterial. Jeder Frame wird berechnet (WebGL in Headless Chrome, Python wo es passt), sodass Ergebnisse reproduzierbar sind, Untertitel exakt sind und jede Quelle lizenzgeprüft ist. Der Benutzer gibt die Richtung vor; references/style-canon.md enthält alles, was sie bisher verlangt haben – zuerst lesen, es überschreibt die Standardeinstellungen.
Standardeinstellungen (nur ändern, wenn der Benutzer es wünscht)
Chinesisch, vertikal 1080×1920, etwa 3 Minuten + Abspann nach dem Hauptschnitt. Erzählung an (Edge Neural Voice, tiefe männliche Dokumentarstimme, 1,2× – der Bereich des Benutzers 1,1–1,25×), die die Untertitel vorliest. Musik: ein Stock-Library-Track für den gesamten Film, Abspann inklusive. Auslieferung = MP4 + gestaltetes Cover + Douyin- und Xiaohongshu-Text. Speicher: Alle Render-/Capture-/Modellprozesse zusammen verwenden höchstens ein Viertel des RAMs (8 GB → 2 GB). Langsamer ist in Ordnung.
Einrichtung (einmal pro Maschine, dann einmal pro Film)
sh scripts/setup.sh→~/.cache/archival-film/: eine Python 3.11 venv ($AF/py: numpy, pillow, onnxruntime, edge-tts), das Tiefenmodell, die Schreibmaschinenaufnahme, Node-Pakete für WebGL. Es liegt außerhalb von Projektordnern, sodass das Bereinigen eines Projekts die Tools nie kaputt macht. Schriftarten:PROJECT=~/.cache/archival-film/assets sh scripts/fetch_fonts.sh classic.sh scripts/new_project.sh <verz>→ Projektordner mitplates/ depth/ music/ sfx/ footage/ out/ prev/ web/, verknüpften Schriftarten/Schreibmaschine/node_modules, dem Web-Kit und einerfilm.py-Vorlage. Skripte ausführen alsPROJECT=<verz> FILM=film $AF/py <skill>/scripts/<script>.py ….
Schnelltestmodus
Wenn der Benutzer eine kurze Probe wünscht („随便做个10s试试“, ein Sample, einen Test des Skills), überspringe die vier Checkpoints, behalte alles andere bei (echtes Material, Fakten, Erzählung, Sound, den Look) und teile in der Auslieferung mit, welche Entscheidungen du in ihrem Namen getroffen hast. Ein ausgearbeitetes 10-Sekunden-Beispiel ist templates/film_collage_example.py (+ templates/cuts_example.json).
Arbeitsablauf – mit den vier Checkpoints des Benutzers
- Briefing – Thema, Länge, etwaige Einschränkungen. Bei einer Neuerstellung alles auflisten, was frühere Versionen verwendet haben, und es vermeiden (
references/narrative.md§ Neuerstellungen). - Fakten und Material – Quellen-Faktenliste; Material mit Lizenzen finden und herunterladen (
references/sourcing.md,scripts/cands.py,scripts/fetch_commons.py); Filmmaterial und Restaurierung, falls sinnvoll (references/enhancement.md); Tiefenkarten (scripts/depth.py); Kontaktbögen mit Rastermarkierungen. - Skript – wie ein Vermarkter für einen Fremden gestalten (
references/narrative.md): Prämisse mit einem Widerspruch in den ersten 3 s, eine offene Frage, die am Ende beantwortet wird, Anker für unbekannte Namen/Orte, ein Zuschauer-Stellvertreter, Eskalation alle 20–30 s, Untertitel so geschrieben, dass sie innerhalb des Sprachbudgets vorgelesen werden können (references/narration.md). → Checkpoint 1: Skript. Zeige den vollständigen Untertiteltext, den Hook, die offene Frage und das geplante Titel-/Coverversprechen. Warte auf Zustimmung, bevor Bildarbeit beginnt. - Musik, Palette, Look, Stimme – 2–3 Looks aus
references/style-menu.mdvorschlagen, die zum Thema passen, eine kräftige einfache Palette (1–2 starke Farben pro Epoche + Schwarz + Papier; an einem echten rauen Standbild zeigen, nicht nur als Farbfelder), ein Stock-Library-Track für den gesamten Film, online gefunden (Kevin MacLeod / FMA / CC0 –references/audio.md; klassisch nur, wenn der Benutzer zeitgenössische Musik wünscht; niemals einen Liedwechsel zwischen Abschnitten – „全局用一个bgm“) mit einer Stimmung/Dynamik, die passt (mitscripts/beats.pymessen; zügig für Business/Tech), und Sprachvorsprechen (scripts/narrate.py --audition). → Checkpoint 2: Musik + Palette (+ Look und Stimme). - Timing – den einen Track mit
Kit.music_bed()anpassen (→scripts/music_edit.py); Erzählung generieren (scripts/narrate.py), jede gemeldete Überziehung korrigieren, Tippen mit der Stimme synchronisieren (apply_narration); Schnitte und Einsätze auf die Einsätze der Musik legen. - Bilder – standardmäßig eine Collagen-Animation (剪报画),
references/collage.mdlesen: das Material mitscripts/cutout.pyin Stücke schneiden (Scherenschnittfiguren, ausgerissene Ausschnitte, echte Schlagzeilen, Kartenausschnitte), die Stücke animieren – niemals die Kamera – alsCOLLAGEin film.py (Keyframes, Drucklooks Foto/Halbton/Spot/Füllung/Tinte/Farbe, reißen, wachsen, ruckeln, wackeln), mitscripts/export_web.pyexportieren, mitweb/collage.jsrendern. Eine Akzentfarbe mit Bedeutung, niemals eine gleichmäßige Sepia. Andere Techniken hinzufügen, wo sie passen (references/style-menu.mdPalette; Zersplittern und Punktanordnung inweb/example_opening.js, Python-Drucklooks inreferences/looks.md). Die kontinuierliche Kameraweb/journey.jswurde als Standard abgelehnt (references/webgl.md). Kolorierung nur als Schwarzweiß→Farbe-Effekt, mit Quellenangabe. Mitscripts/collage_kit.pyschreiben (Untertitel aus der Stimme, Stücke landen auf Beats, Stapelung nach Ankunft). Oder den Film aus den modernen Effektmodulen erstellen (web/fx.js,references/fx.md): Punktmorph, Wirephoto, Dunkelkammer, kinetische Typografie, Investigation Board, Footage-Montage + Holzschnitt-Rotoscoping, Tintenfluid, Pixel-Sortierung, Punktwolke, Charakterporträt, plusholdund SVG-Führungslinien. Zuerst die Shot-Liste schreiben – pro Zeile: das eine Subjekt, das zu sehen ist, wo, das Stichwort (Kit.W), wie der Effekt das Auge dorthin führt, und warum dieser Effekt die Zeile bedeutet; keine Bedeutung → einhold. Der Effekt erreicht seinen Höhepunkt auf dem Stichwort und löst sich in ein klares Subjekt auf („特效要有明确的视觉引导,而不是堆砌素材“). Mitscripts/fx_plan.pyschreiben →Kit.fx_cuts(), jeden Frame mitscripts/fx_sheet.pyprüfen (istseedas Erste, was man sieht?) vor dem Rendern. Bei Checkpoint 2 neben der Collage für moderne / Business / Tech-Themen anbieten. → Checkpoint 3: Standbilder / Sample. Einen Kontaktbogen mit Schlüsselstandbildern und ein 10–20 s Sample mit Ton senden – oder den gesamten Film als Rohschnitt (scripts/rough.py, ~150 MB), wenn der Speicher knapp ist oder der Benutzer alles sehen möchte. - Sound – jeder Effekt ist eine echte Aufnahme, online gefunden mit
scripts/fetch_sfx.py(Commons, Internet Archive 78s und Feldaufnahmen, Freesound mit einem Schlüssel; Lizenz aufgezeichnet, automatisch getrimmt insfx/bank.json). Dichte Gestaltung:Kit.sfx_events()setzt einen Papierklatscher/Knall/Riss auf jede Landung und jeden Riss (Kit.fx_sfx_events()macht dasselbe für Effektfilme: Whoosh, Radiofax, Gießen/Schwappen, Projektor, Glitch, Wind, Tasten); Atmosphären-Betten pro Abschnitt und diegetische Geräusche hinzufügen; historische Stimmen aus PD-Aufnahmen (references/audio.md,scripts/sfx_build.py). → Checkpoint 4: Soundliste. Die Liste der Effekte und historischen Stimmen mit Zeiten und Quellen vor dem finalen Render senden. - Render und Mix –
scripts/run_chunks.py(Speicherbudget, fehlgeschlagene Brocken wiederholen), verketten, dannscripts/mixdown.py --voice …(Stimme geduckt, −14 LUFS / −1 dBTP). - Ausliefern – verifizieren (
references/verification.md), dann das MP4, das Cover und den Plattformtext senden (references/platform-copy.md); eine 720p-Vorschau unter 30 MB, wenn der Benutzer vom Handy aus folgt.
Was diesem Benutzer am wichtigsten ist (Kurzform; Gründe in style-canon.md)
- Nur echtes Archivmaterial; Code-Effekte wirken darauf. Keine modellierten Objekte, keine selbst gezeichneten Embleme.
- Eine klare Geschichte für einen Fremden; kleine Leute vs. das große Ereignis, gezeigt durch Fakten, nie predigend; keine KI-Slogans; große typografische Wörter stammen aus den Quellen.
- Animatorisches Denken: Die Stücke bewegen sich, nicht die Kamera (Durchflüge waren „烂完了“); Material wie eine Zeitungscollage schneiden; kein Zoom-dann-Schnitt; keine Vollbild-Farbblitze als Übergänge.
- Starke Farbbetonung mit Bedeutung – niemals eine gleichmäßige Sepia/Gelb über alles; die Effekte wirklich nutzen.
- Jeder Schuss hat ein Subjekt, zu dem der Effekt das Auge führt, auf dem Wort, das es benennt – Effekte als das Verb der Zeile, niemals um ihrer selbst willen oder um Material zu stapeln; schlichte Haltepunkte dazwischen. SVG nur für Führungslinien, niemals um Bilder zu zeichnen.
- Reichhaltige, eindrucksvolle Effekte – aber nicht pingelig, verfeinerter Ornat („太精致“ wurde abgelehnt). Avantgarde über dekorativ.
- Ein generischer Stock-Hintergrundtrack für den gesamten Film (CC BY / CC0, online gefunden), dessen Stimmung passt – klassisch fühlte sich „怪“ an; Erzählung 1,1–1,25×; kein „Ding“; Schreibmaschine pro getipptem Zeichen, keine Klingel; dichter echter Sound.
- Untertitel vollständig und gehalten bis zur nächsten Zeile; Palette kräftig und einfach; spätere Stücke oben drauf.
- Untertitel auf soliden Blöcken, auf dem Handy lesbar; eine starke Themenfarbe; Abspann nach dem Hauptschnitt.
- Neuerstellungen teilen nichts mit früheren Versionen (
scripts/overlap_check.py).
Dateien
scripts/— Bild:render_print.py anim.py futur.py captions.py cjkwrap.py base.py cfg.py; Material:cands.py fetch_commons.py fetch_ia.py depth.py cutout.py fetch_fonts.sh; Collagen-/Effektfilme: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; WebGL-Brücke:export_web.py; Render:run_chunks.py; Checks:contact.py grid.py overlap_check.py; Umgebung:setup.sh new_project.sh.web/—index.html(lädt?scene=NAME),fx.js+fx/*.js(moderne Effektmodule,fx/hold.jseinfaches Bild,fx/guide.jsSVG-Führungslinien),collage.js(die Standard-Cutout-Animation-Szene, gesteuert von out/timeline.json),captions.js(gemeinsame Untertitelblöcke),journey.js(kontinuierliche Kamera-Szene, als Standard abgelehnt),example_opening.js(ältere handgebaute Szene: Zersplittern, Punktfeld – ihre Effekte wiederverwenden, nicht ihre Schnitte/Blitze),capture.mjs(deterministisches Capture),package.json.templates/film_template.py— das Filmmodulformat (Shots, Untertitel, Druckspezifikation, Soundereignisse, Abspann);templates/film_collage_example.py+cuts_example.json– ein kompletter 10 s Collagenfilm (San Francisco 1906);templates/film_journey_example.py– die ältere Journey-Version davon.references/— style-canon, narrative, narration, style-menu, collage, looks, webgl, audio, sourcing, enhancement, platform-copy, verification, known-gaps (offene Punkte für die nächsten Patch-Runden).