Communitygithub.com

trend-explainer-video

Producción completa de videos explicativos tipo ranking de GitHub en chino hablado, con estilo tecnológico oscuro y renderizado Remotion.

¿Qué es trend-explainer-video?

Este skill automatiza la creación de videos de explicación oral para listas de tendencias (como GitHub Trending, Top 10, etc.), siguiendo un flujo de trabajo completo que incluye: captura de instantáneas de la página de ranking, redacción de guion de 35 frases estructuradas, síntesis de voz con edge-tts y marcas de tiempo por palabra, animaciones de anclaje de palabras, páginas independientes por puesto, tres componentes visuales por contenido, ilustraciones de tres pasos para 'cómo usar', fondos de pantalla completa, y validaciones automatizadas (beat_lint, motion_check, sfx_check, contract_lint). El resultado final es un video vertical optimizado con loudnorm y una portada vertical. Es ideal para creadores de contenido que deseen producir rápidamente videos atractivos y profesionales sobre rankings de GitHub, con un estilo visual oscuro y dinámico. Está diseñado para funcionar sobre el motor de renderizado TalkCraft, aprovechando sus capacidades de composición y efectos, y proporciona una guía detallada de pasos, comandos y errores comunes. Las plataformas soportadas incluyen entornos Windows con herramientas como bash, python, node y ffmpeg, y requiere proxy para edge-tts.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/daxian942-tech/trend-explainer-video/tree/main

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

trend-explainer-video: Producción de videos explicativos de rankings hablados

Con C:/Users/<tu usuario>/.workbuddy/skills/video-talkcraft (skill TalkCraft) como motor de renderizado, este skill proporciona el esqueleto del proyecto, scripts completos, diseño visual fijo y solución de problemas en producción para temas de rankings. La teoría de video/validaciones generales se encuentran en el cuerpo de TalkCraft, no se repiten aquí.

Pasos de la línea de producción (comandos y errores en references/pipeline.md)

  1. Capturar instantánea: Captura única de la página de ranking (curl con user-agent), guardar en data/snapshot.md/.json como única fuente de verdad — ranking/estrellas/descripción/idioma solo deben provenir de esta captura, prohibido inventar.
  2. Guion hablado script.json: Estructura fija de 35 frases = 1 apertura + 10 proyectos × (frase de puesto + frase detallada/total de estrellas + frase de cómo usar + frase de total de estrellas) + 3 párrafos finales (cierre/frase contundente/CTA). Reglas estrictas: números todos en caracteres chinos; cada proyecto debe comenzar con 'Primer puesto.../Segundo puesto...'; cada proyecto añade una frase de 'cómo usar' (comenzando con verbo, explicando dónde usarlo/cómo usarlo/qué problema resuelve). La apertura debe comenzar directamente con: 'Hoy, en la lista semanal de tendencias de GitHub, les explico los diez primeros de una sola vez'.
  3. Doblaje: synth_voice.py (VOICE/RATE al inicio, edge-tts necesita HTTP_PROXY) → assemble_voice.py (full.wav + timestamps.json) → cp audio/full.wav remotion/public/narration.wav.
  4. Reconstrucción de la línea de tiempo: make_timing.py → gen_beats.py (incluye generación de anchors.json) → gen_cues.py. Las tres tablas de anclaje deben estar sincronizadas: REPO_ANCHORS de gen_beats, REPO_CFG de gen_cues, REPO_CFG de all.tsx, además de sceneFor en scenes/index.ts (los números de escena de chart/quote/cta se desplazan después de insertar frases). Cualquier cambio en los parámetros de doblaje = reconstrucción completa de la cadena, nunca solo reemplazar la pista de audio.
  5. Implementación del proyecto: Copiar esqueleto desde assets/remotion-template/; modificar src/data.ts (datos de instantánea), las cinco tablas REPO_CFG/USES/STEPS/ICONS/DETAILS en src/scenes/all.tsx + tabla RANK_LIST de escenas de ranking. El resto del código de escenas se reutiliza sin cambios. Ejecutar npx tsc --noEmit para verificar.
  6. Renderizado: node <video-talkcraft>/scripts/render_shots.mjs --all --concat out/assembled.mp4 --audio out/full-mix.wav --mux out/v?.mp4 (full-mix se rerenderiza automáticamente según la huella del timing).
  7. Validaciones automáticas (entregar solo si todo está verde): beat_lint → motion_check (estático+parpadeo) → sfx_check solo+mix → workbench_contract_lint. Umbrales y recetas para fallos en pipeline.md.
  8. Entrega: loudnorm dos veces (medición→normalización lineal) → delivery.mp4 → repetir sfx_check --mix → present_files.
  9. Portada: gen_cover.py genera portada vertical genérica de 1080×1920 (sin proyecto específico, reutilizable a largo plazo), produce cover_vertical.png/.jpg.

Diferenciación visual de esta línea de producción (versión fija v16, ver references/style-guide.md)

  • Página independiente de puesto RankPage: La escena donde se dice la palabra del puesto se renderiza en pantalla completa como una página independiente 'Puesto N' (letras grandes doradas de 240px + RANK #N + nombre del repositorio + número de estrellas + barra de progreso de 10 segmentos), no comparte pantalla con el contenido del proyecto.
  • Tres componentes visuales de contenido: IllBg fondo de ilustración a pantalla completa (blur30 + oscurecimiento) + OgiCard tarjeta de ilustración dinámica (EFECTO PREVIEW + Ken Burns + puntos de luz + barrido de luz) + DemoPanel demostración de terminal/rejilla, con 3 USES (emoji) + DetailBlock carrusel de detalles.
  • Escena de tres pasos 'cómo usar' con ilustraciones HowScene: Cada paso tiene una tarjeta de ilustración StepIcon (fondo degradado + emoji grande + insignia de paso), impulsada por las dos tablas STEPS/ICONS.
  • Efectos ambientales de pantalla completa: Tres franjas de luz que barren con fases desfasadas, para curar los segmentos estáticos de motion_check (escenas de tarjetas pequeñas/textos, obligatorio añadirlas).
  • Visual oscuro: Paleta de colores en style-guide.md; estrellas dorado #FFC94D, incremento semanal verde #63E6A4.

Errores frecuentes (ver references/pipeline.md)

  • ImageGen puede sufrir limitación de tasa 429 → usar tarjetas de iconos emoji (StepIcon) para ilustraciones, portada generada programáticamente con PIL (gen_cover.py), costo cero, estable y relevante; se puede cambiar a imágenes AI cuando el servicio se recupere.
  • Segmentos estáticos de motion_check (freezedetect noise=0.003): escenas de tarjetas pequeñas/texto estático/fondo borroso, la animación sin lenta no salva → Ambient tres franjas de luz con fase desfasada (≥3 franjas, 2 tienen período de vacío).
  • Renderizado del lado del servidor <Video> siempre falla → usar OffthreadVideo + muted.
  • FPS del素材 ≠ FPS del video final → motion_check detecta 'cuadros repetidos'; usar minterpolate=mi_mode=blend para interpolación de flujo óptico.
  • Windows: todos los enlaces simbólicos son rechazados → copiar directorio; ffmpeg 7+ no tiene -vsync → usar -fps_mode passthrough.
  • edge-tts necesita proxy: HTTP_PROXY/HTTPS_PROXY=http://<tu proxy>.
  • Para modificar all.tsx usar reescritura atómica con python (el EBUSY de Windows puede hacer que la edición parezca exitosa pero no lo sea); bash heredoc que pasa python con backticks se truncará → usar Write para escribir .py y luego ejecutar.

Referencia rápida de entorno

  • bash PATH debe completarse cada sesión: PortableGit usr/bin + ffmpeg-bin; python usar venv: C:/Users/<tu usuario>/.workbuddy/binaries/python/envs/default/Scripts/python.exe; node ejecutar directamente con versión administrada; tsc ejecutar node_modules/typescript/lib/tsc.js (bin/tsc está secuestrado por fnm shim).

Skills relacionados