PTENES
la vitrina del archivo · INEMA MUSICAVIDEO V2

Un archivo de videoclips en la web — sin alojar ni un byte de video.

Los videoclips, las pistas y las portadas están en un dataset público de Hugging Face, y el navegador los busca directamente allí. Esta app carga solo el texto, por eso es ligera, económica y no se cae junto con los medios.

Portada del proyecto musicavideo-pub
Qué es

La división que hace cuadrar las cuentas

El video es el archivo más caro de servir y el más complicado de alojar. Aquí simplemente no pasa por esta app: lo que viaja en el deploy es texto, y lo pesado se queda donde ya se sirve gratis y con range request.

🎞️ El contenido multimedia nunca pasa por aquí

Los clips, las pistas y las portadas vienen del dataset público Inematds/musicavideo-acervo. O resolve/main responde desde Hugging Face range request — la barra del video navega sin ningún proxy y la app no paga ancho de banda ni almacenamiento.

📝 El texto viaja durante el build

Los títulos, las letras, los prompts y el desglose provienen de un manifest.json versionado en el propio repo. La página se muestra sin hacer ningún viaje por la red: si Hugging Face se cae, aún muestra todo el acervo en texto.

🎵 Una canción, una página

Suno entrega dos pistas por solicitud, y cada una es una canción diferente: la misma letra, otra interpretación. Cada pista tiene su tarjeta, su dirección y su página, con el videoclip abriéndose encima.

Cómo funciona

Aprobar es el único gesto humano

Esta app es la punta de un camino que comienza en el panel local de musicavideo: el espacio de trabajo donde escuchas, comparas y mandas a la papelera. Publicar no es la consecuencia de que esté listo: la producción lista es material de trabajo; exhibirla es una decisión.

panel local→ aprueba→ publica-hf→ dataset en Hugging Face→ manifest.json en el repo→ esta app→ me gusta del público→ vuelve al panel
Requisitos previos

Node y un dataset. Lo demás es opcional.

La app funciona sin ninguna clave — el archivo es público y el manifiesto está en el repo. Solo el like necesita infraestructura, y sin ella la vitrina sigue siendo una vitrina.

Node.js

Next.js 16, sin base de datos ni dependencias de servicios para renderizar. El manifiesto se importa como módulo.

npm install
npm run dev   # http://localhost:3000

El archivo en Hugging Face

Dataset público, escrito por musicavideo publica-hf. Cambiar de dataset es una variable.

# opcional — este ya es el valor predeterminado
HF_REPO=Inematds/musicavideo-acervo

Redis REST: solo para el like

Es la única escritura del público y por eso la app no es HTML estático puro. Sin estas variables, la app sigue funcionando: el contador desaparece y el clic no se guarda.

KV_REST_API_URL
KV_REST_API_TOKEN
# en Vercel: Storage → Upstash Redis
Guía de uso · paso a paso

Del disco a la dirección pública

Los comandos con musicavideo se ejecutan en el repo del pipeline (inematds/musicavideo); los de npm, aquí.

1

Aprueba en el panel local lo que irá a la vitrina

Un clic en la tarjeta marca la producción en el estado.json. Desmarcar no elimina lo que ya se subió — genera una solicitud de eliminación, que se ejecuta en la próxima publicación.

musicavideo painel          # el estudio, en :5400
musicavideo nuvem MVD#113   # o el botón en la tarjeta
2

Publica: un comando que termina con el push

Se sube a Hugging Face solo lo que cambió, escribe el manifest.json en este repo y haz commit. Ejecutarlo dos veces seguidas no vuelve a leer nada.

musicavideo publica-hf --dry   # lo que se subiría, sin subir
musicavideo publica-hf         # sube, escribe el manifiesto, hace commit y envía
musicavideo publica-hf --manifesto  # solo los metadatos, sin volver a enviar medios
3

Ejecuta la vitrina en tu máquina

El manifiesto se importa como módulo, así que la app funciona sin conexión para todo lo que es texto; los medios necesitan conexión.

npm install
npm run dev     # :3000
npm run build   # verifica que todas las páginas se generen
4

Encuentra una canción por su dirección

Cada producción tiene un número — el mismo del bot que la generó — y cada pista tiene una página. La ruta antigua por producción sigue respondiendo y lleva a la versión aprobada.

/mvd-113-v1   # la pista 1 de aquella producción
/mvd-113-v2   # la pista 2 — misma letra, otra interpretación
/mvd-113      # ruta antigua: lleva a la versión aprobada
/analises     # lo que analisevideo midió en videos reales
5

Conecta el like (opcional)

En Vercel: Storage → Create Database → Upstash Redis, conéctalo al proyecto y vuelve a implementarlo — las variables se inyectan solas. El token debe ser el de escritura; el modo de solo lectura no sirve.

# el contador es un INCR atómico por pista: MVD#113:1
curl "$URL/api/like?mvd=mvd-113:1"
6

Trae los likes de vuelta al panel

Es la única señal del público que tiene el proyecto. Sin esa respuesta, moriría aquí.

MUSICAVIDEO_PUB_URL=https://sua-vitrine.vercel.app \
  musicavideo likes   # se convierte en ♥ en cada tarjeta del panel local
7

Publicar cambios de la app es hacer git push

Importar este repo en Vercel con Root Directory ./. A partir de ahí, el webhook se encarga del resto — no hay ningún paso manual de deploy.

git push   # el deploy se realiza mediante el webhook git → Vercel
Ejemplos

La vitrina, en funcionamiento

Capturas de la app real, con el archivo actual: 27 producciones y 53 canciones.

La cuadrícula del archivo, una tarjeta por canción
La cuadrícula: una tarjeta por música, no por producción. Cada portada muestra el sello de la versión que fue aprobada y un sello ▶ clip cuando hay video.
La página de una canción, con el clip arriba
La página de una canción: el clip se abre primero y ocupa todo el ancho. Debajo vienen la portada, el audio, el like y la solicitud que lo generó todo.
Hoja de ruta

Dónde está y qué falta

La V1 (el panel local) y la V2 (esta vitrina) son dos apps, no una migración: desactivar esta no desactiva aquella.

en línea
Archivo público, una página por canciónMedios en Hugging Face mediante range request, manifiesto en el repo, ruta estable por número del bot (MVD#113), y la pestaña de análisis de video.
en línea
Publicación con un comandoO publica-hf sube solo lo que cambió y termina en el git push del manifiesto: nada de subir gigabytes y que la vitrina siga mostrando la versión anterior.
falta
El like conectadoEl código está listo y la app se publica sin él. Falta crear el Redis REST y volver a implementarla: consulta el paso 5.
falta
Los likes vuelven por sí solosHoy el musicavideo likes se ejecuta a mano. El «me gusta» llega cuando el público hace clic, no cuando se aprueba: es la única parte del ciclo que no tiene un gesto humano natural para activarla.