¿Qué hace Archival film (archivo fílmico)?
Películas narrativas generadas por código a partir de material de archivo real. Cada fotograma se calcula (WebGL en Chrome sin cabeza, Python donde encaja), por lo que los resultados son reproducibles, los subtítulos exactos y cada fuente tiene su licencia verificada. El usuario dirige el gusto; references/style-canon.md contiene todo lo que ha pedido — léelo primero, ya que anula tus valores predeterminados.
Valores predeterminados (cambiar solo si el usuario lo pide)
Chino, vertical 1080×1920, unos 3 minutos + créditos después del corte principal. Narración activada (voz neuronal Edge, tono documental masculino profundo, 1.2× — el rango del usuario 1.1–1.25×) leyendo los subtítulos. Música: una pista de biblioteca de stock para toda la película, incluidos créditos. Entrega = MP4 + portada diseñada + texto para Douyin y Xiaohongshu. Memoria: todos los procesos de renderizado/captura/modelo juntos usan como máximo un cuarto de la RAM (8 GB → 2 GB). Más lento está bien.
Configuración (una vez por máquina, luego una vez por película)
sh scripts/setup.sh→~/.cache/archival-film/: un entorno virtual Python 3.11 ($AF/py: numpy, pillow, onnxruntime, edge-tts), el modelo de profundidad, la grabación de máquina de escribir, paquetes de node para WebGL. Vive fuera de las carpetas del proyecto, por lo que limpiar un proyecto nunca rompe las herramientas. Fuentes:PROJECT=~/.cache/archival-film/assets sh scripts/fetch_fonts.sh classic.sh scripts/new_project.sh <dir>→ carpeta de proyecto conplates/ depth/ music/ sfx/ footage/ out/ prev/ web/, fuentes/máquina de escribir/node_modules enlazados, el kit web y una plantillafilm.py. Ejecuta scripts comoPROJECT=<dir> FILM=film $AF/py <skill>/scripts/<script>.py ….
Modo de prueba rápida
Cuando el usuario pida una prueba corta ("随便做个10s试试", una muestra, una prueba del skill), saltate los cuatro puntos de verificación, mantén todo lo demás (material real, datos, narración, sonido, el aspecto) y di en la entrega qué decisiones tomaste en su nombre. Un ejemplo de 10 s completo está en templates/film_collage_example.py (+ templates/cuts_example.json).
Flujo de trabajo — con los cuatro puntos de verificación del usuario
- Brief — tema, duración, restricciones. Para una reedición, enumera todo lo que usaron las versiones anteriores y evítalo por completo (
references/narrative.md§ Remakes). - Datos y material — lista de datos con fuentes; encuentra y descarga material con licencias (
references/sourcing.md,scripts/cands.py,scripts/fetch_commons.py); material de archivo y restauración si es útil (references/enhancement.md); mapas de profundidad (scripts/depth.py); hojas de contactos con marcas de cuadrícula. - Guion — diseñalo como un marketer para un desconocido (
references/narrative.md): premisa con una contradicción en los primeros 3 s, una pregunta abierta que se responde al final, anclajes para nombres/lugares desconocidos, un sustituto del espectador, escalada cada 20–30 s, subtítulos escritos para ser leídos en voz alta dentro del presupuesto de habla (references/narration.md). → Punto de verificación 1: guion. Muestra el texto completo de los subtítulos, el gancho, la pregunta abierta y la promesa planeada del título/portada. Espera la aprobación antes de cualquier trabajo visual. - Música, paleta, aspecto, voz — propón 2–3 aspectos de
references/style-menu.mdadecuados al tema, una paleta simple y audaz (1–2 colores fuertes por época + negro + papel; muéstrala en un fotograma real en bruto, no solo como muestras), una pista de biblioteca de stock para toda la película, encontrada en línea (Kevin MacLeod / FMA / CC0 —references/audio.md; solo música clásica si el usuario quiere música de época; nunca cambiar de canción entre secciones — "全局用一个bgm") con un ambiente/ritmo que encaje (mídelo conscripts/beats.py; rápido para negocios/tecnología), y pruebas de voz (scripts/narrate.py --audition). → Punto de verificación 2: música + paleta (+ aspecto y voz). - Temporización — ajusta la pista única con
Kit.music_bed()(→scripts/music_edit.py); genera la narración (scripts/narrate.py), corrige cualquier exceso que informe, sincroniza la escritura a la voz (apply_narration); coloca cortes y golpes en los ataques de la música. - Imágenes — por defecto una animación de collage (剪报画), lee
references/collage.md: recorta el material en piezas conscripts/cutout.py(figuras recortadas a tijera, recortes rasgados, titulares reales, regiones de mapas), anima las piezas — nunca la cámara — comoCOLLAGEen film.py (fotogramas clave, apariencia de impresión foto/medio tono/relleno/tinta/color, rasgadura, crecimiento, sacudida, bamboleo), exporta conscripts/export_web.py, renderiza conweb/collage.js. Un color de acento con significado, nunca un sepia uniforme. Añade otras técnicas donde encajen (references/style-menu.mdpaleta; fragmentación y ensamblaje de puntos enweb/example_opening.js, apariencias de impresión Python enreferences/looks.md). La cámara continua deweb/journey.jsfue rechazada como predeterminada (references/webgl.md). Coloreado solo como efecto de BN→color, con créditos. Escríbelo conscripts/collage_kit.py(subtítulos desde la voz, piezas que aterrizan en los golpes, apiladas por llegada). O haz la película desde los módulos de efecto modernos (web/fx.js,references/fx.md): morph de puntos, wirephoto, cuarto oscuro, tipografía cinética, tablero de investigación, montaje de material de archivo + rotoscopia de xilografía, tinta fluida, ordenación de píxeles, nube de puntos, retrato de personaje, además deholdy marcas guía SVG. Primero escribe la lista de planos — por línea: el único sujeto que se debe ver, dónde, la palabra clave (Kit.W), cómo el efecto guía la mirada allí, y por qué este efecto significa la línea; sin significado → unhold. El efecto alcanza su punto máximo en la palabra clave y se resuelve en un sujeto limpio ("特效要有明确的视觉引导,而不是堆砌素材"). Escríbelo conscripts/fx_plan.py→Kit.fx_cuts(), verifica cada fotograma conscripts/fx_sheet.py(¿esseelo primero que ves?) antes de renderizar. Ofrécelo en el punto de verificación 2 junto al collage para temas modernos / de negocios / tecnológicos. → Punto de verificación 3: fotogramas / muestra. Envía una hoja de contactos de fotogramas clave y una muestra de 10–20 s con sonido — o la película completa como corte aproximado (scripts/rough.py, ~150 MB) cuando la memoria es escasa o el usuario quiere verlo todo. - Sonido — cada efecto es una grabación real encontrada en línea con
scripts/fetch_sfx.py(Commons, discos de 78 rpm y grabaciones de campo de Internet Archive, Freesound con una clave; licencia registrada, recortada automáticamente ensfx/bank.json). Diseño denso:Kit.sfx_events()coloca un golpe/golpeteo/rasgadura de papel en cada aterrizaje y rasgadura (Kit.fx_sfx_events()hace lo mismo para películas de efecto: whoosh, radiofax, vertido/chorro, proyector, glitch, viento, teclas); añade ambientes de fondo por sección y sonidos diegéticos; voces de época de discos de dominio público (references/audio.md,scripts/sfx_build.py). → Punto de verificación 4: lista de sonido. Envía la lista de efectos y voces de época con tiempos y fuentes antes del renderizado final. - Renderizado y mezcla —
scripts/run_chunks.py(presupuesto de memoria, fragmentos rotos se re-ejecutan), concatena, luegoscripts/mixdown.py --voice …(voz con ducking, −14 LUFS / −1 dBTP). - Entrega — verifica (
references/verification.md), luego envía el MP4, la portada y el texto para plataforma (references/platform-copy.md); una vista previa de 720p de menos de 30 MB si el usuario sigue desde un teléfono.
Lo que más le importa a este usuario (forma corta; razones en style-canon.md)
- Solo material de archivo real; los efectos de código actúan sobre él. Sin objetos modelados, sin emblemas dibujados por uno mismo.
- Una historia clara para un desconocido; gente pequeña contra el gran evento mostrado por hechos, nunca predicado; sin eslóganes de IA; palabras tipográficas grandes provenientes de las fuentes.
- Pensamiento de animador: las piezas se mueven, no la cámara (los vuelos fueron "烂完了"); recorta el material como un collage de periódico; sin zoom-y-corte; sin destellos de color a pantalla completa como transiciones.
- Énfasis cromático fuerte con significado — nunca un sepia/amarillo uniforme sobre todo; usa los efectos de verdad.
- Cada plano tiene un sujeto al que el efecto guía la mirada, en la palabra que lo nombra — efectos como el verbo de la línea, nunca por sí mismos ni para amontonar material; mantén transiciones sencillas entre ellos. SVG solo para marcas guía, nunca para dibujar imágenes.
- Efectos ricos e impresionantes — pero no recargados, ornamentación refinada ("太精致" fue rechazado). Vanguardista sobre decorativo.
- Una pista de fondo de stock genérica para toda la película (CC BY / CC0, encontrada en línea) cuyo ambiente encaje — lo clásico sonó "怪"; narración 1.1–1.25×; sin "ding"; máquina de escribir por carácter, sin campana; sonido real denso.
- Subtítulos completos y mantenidos hasta la siguiente línea; paleta audaz y simple; piezas posteriores encima.
- Subtítulos sobre bloques sólidos, legibles en un teléfono; un color temático fuerte; créditos después del corte principal.
- Las reediciones no comparten nada con versiones anteriores (
scripts/overlap_check.py).
Archivos
scripts/— imagen: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; collage / películas de efecto: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; puente WebGL:export_web.py; renderizado:run_chunks.py; comprobaciones:contact.py grid.py overlap_check.py; entorno:setup.sh new_project.sh.web/—index.html(carga?scene=NAME),fx.js+fx/*.js(módulos de efecto modernos,fx/hold.jsimagen plana,fx/guide.jsmarcas guía SVG),collage.js(la escena de animación de recorte predeterminada, impulsada por out/timeline.json),captions.js(bloques de subtítulos compartidos),journey.js(escena de cámara continua, rechazada como predeterminada),example_opening.js(escena antigua hecha a mano: fragmentación, campo de puntos — reutiliza sus efectos, no sus cortes/destellos),capture.mjs(captura determinista),package.json.templates/film_template.py— el formato del módulo de película (planos, subtítulos, especificación de impresión, eventos de sonido, créditos);templates/film_collage_example.py+cuts_example.json— una película de collage completa de 10 s (San Francisco 1906);templates/film_journey_example.py— la versión anterior de journey de la misma.references/— style-canon, narrative, narration, style-menu, collage, looks, webgl, audio, sourcing, enhancement, platform-copy, verification, known-gaps (elementos abiertos para las próximas rondas de parches).