StaticCodeAudit — Resumen del producto
Herramienta autónoma de auditoría de cumplimiento, seguridad y calidad del código.
Cero dependencias. 100 % sin conexión. Informes de nivel empresarial.
Por CodeFixture | Prefijo: SCA | Licencia: MIT
Puntos destacados
- Cero dependencias externas — funciona únicamente con la biblioteca estándar de Python (no se requiere
pip install)
- 100 % sin conexión — sin llamadas a API, sin acceso a la red, sin dependencia de la nube
- Más de 465 reglas de detección distribuidas en 7 categorías de auditoría con correspondencia OWASP/CWE/WCAG/ASVS (Python, JS/TS, Java, C#, PHP, YAML)
- Informes HTML interactivos — archivo único autónomo con más de 12 visualizaciones Chart.js
- Soporte de 4 idiomas — francés, inglés, español, alemán (informe y consola)
- Comparación histórica — seguimiento automático de la baseline a lo largo de 10 auditorías
- Análisis de CVE — integración opcional de pip-audit y npm audit (local, sin conexión)
- Personalización marca blanca — nombre de herramienta, empresa y logo configurables por proyecto
- Matriz de cumplimiento ISO 27001 — mapea los findings a los 93 controles del Anexo A en 4 temas
- Auto-pruebas — sistema integrado de validación por fixtures (más de 1400 casos de prueba)
- Retención de informes — limpieza configurable por número, días o ambos modos
- Integración con git blame — resuelve el committer por finding para la trazabilidad
- Configuración interactiva — modos init y configure guiados para una puesta en marcha sencilla
- Modo demo —
--demo genera informes anonimizados (rutas, código, soluciones ocultos) para prospectos y compartición pública
- Asistente de reglas personalizadas —
--create-rule asistente unificado de 7 pasos: crear o editar, verificación de duplicados (nombre + pattern), DSL completo (risk/solution/benefit/fix), 4 idiomas
- Filtro de severidad —
--severity CRITICAL,HIGH filtra las reglas antes del escaneo; banner ámbar en el informe cuando está activo
- Insignia de lenguaje — cada finding muestra el lenguaje detectado (Python, JavaScript, YAML…) como una insignia neutra
- Gráfico lenguaje × severidad — diagrama de barras apiladas que cruza el lenguaje detectado con el nivel de severidad
- Arquitectura de reglas personalizadas — directorio
custom-rules/ separado de la instalación SCA, nunca sobrescrito por las actualizaciones
- Pipeline de salida unificado — todos los mensajes pasan por
Reporter (modos quiet/silent/log-file/debug gestionados automáticamente)
- Progreso detallado — numeración dinámica
[n/N] calculada después de cargar las reglas, mensajes por lenguaje y por etapa de taint
Qué hace
StaticCodeAudit (SCA) es una herramienta de análisis estático que escanea el código fuente de un proyecto en busca de vulnerabilidades de seguridad, antipatrones arquitectónicos, problemas de accesibilidad UI/UX y deuda de mantenimiento. Produce un informe HTML autónomo con findings agrupados por severidad, gráficos interactivos, puntuación de salud y análisis histórico de tendencias.
Flujo de trabajo
1. ./staticcodeaudit-linux-x64 /ruta/al/proyecto --init # Inicializa el proyecto (genera UUID + config)
2. ./staticcodeaudit-linux-x64 /ruta/al/proyecto # Ejecuta la auditoría completa
3. Abra SCA-REPORT-*.html # Revise el informe interactivo
Cada auditoría genera:
- Informe HTML (
SCA-REPORT-{timestamp}.html) — autónomo, imprimible, interactivo
- Informe demo (
SCA-REPORT-{timestamp}-demo.html) — versión anonimizada para compartir (opt-in vía --demo)
- Datos JSON (
SCA-DATA-{timestamp}.json) — legible por máquina, versionado (v3.4)
- Baseline — almacenada para la comparación de la próxima auditoría (problemas nuevos/resueltos/persistentes)
Reglas de detección
Más de 465 reglas distribuidas en 7 categorías, cada una con evaluación de riesgo, guía de solución y descripción del beneficio.
Security (~430 reglas) — Peso: 3
| Regla |
Severidad |
Estándar |
| Inyección SQL (f-string, concat, ORM) |
HIGH |
OWASP A03, CWE-89 |
| XSS (innerHTML, React, Angular, Vue, Svelte, Blade) |
HIGH |
CWE-79 |
| Inyección JNDI (Java — Log4Shell) |
CRITICAL |
ASVS 1.3.8, CWE-917 |
| Inyección XPath (Java, C#, PHP, Python) |
HIGH |
ASVS 1.2.7, CWE-643 |
| SSTI — Server-Side Template Injection (Python, JS) |
HIGH |
ASVS 1.3.7, CWE-1336 |
| Inyección SpEL (Spring) |
HIGH |
CWE-917 |
| Inyección LDAP (C#) |
HIGH |
CWE-90 |
| Inyección CSV (formula injection) |
MEDIUM |
ASVS 1.2.10, CWE-1236 |
| Inyección SMTP (Python, PHP) |
MEDIUM |
ASVS 1.3.11, CWE-93 |
| ReDoS — Regular Expression Denial of Service |
MEDIUM |
ASVS 1.3.12, CWE-1333 |
| Format String Vulnerability |
MEDIUM |
ASVS 1.3.10, CWE-134 |
| Secretos hardcodeados |
HIGH |
CWE-798 |
| Credenciales por defecto (hardcodeadas) |
HIGH |
ASVS 6.3.2, CWE-798 |
| Ejecución de código peligrosa (eval/exec) |
HIGH |
CWE-94 |
| Modo debug activado |
HIGH |
OWASP A05 |
| Secreto registrado (f-string, argumento, Java, C#, PHP) |
HIGH |
OWASP A09, CWE-532 |
| Inyección de log (CRLF) |
MEDIUM |
ASVS 16.3.2, CWE-117 |
| HTTP sin TLS |
MEDIUM |
OWASP A02 |
| WebSocket sin TLS (ws:// vs wss://) |
MEDIUM |
ASVS 4.4.1, CWE-319 |
| Deserialización insegura (Python, Java, C#, PHP) |
HIGH |
OWASP A08, CWE-502 |
| Criptografía débil (MD5/SHA-1, Java, C#, PHP) |
HIGH |
CWE-328 |
| Tamaño de clave insuficiente (RSA < 2048) |
MEDIUM |
ASVS 11.2.3, CWE-326 |
| Inyección de comandos del SO (Python, Java, C#, PHP) |
HIGH |
CWE-78 |
| Excepción verbosa (Python, Java, C#, PHP) |
MEDIUM |
CWE-209 |
| Autenticación artesanal |
HIGH |
CWE-287 |
| Política de contraseñas débil (mín < 8) |
MEDIUM |
ASVS 6.2.1, CWE-521 |
| Preguntas de seguridad (auth basada en conocimiento) |
LOW |
ASVS 6.4.2, CWE-640 |
| Tokens de sesión predecibles |
HIGH |
CWE-330 |
| JWT algoritmo None |
CRITICAL |
ASVS 9.1.2, CWE-345 |
| Secreto JWT hardcodeado |
HIGH |
ASVS 9.1.3, CWE-798 |
| Importación dinámica |
MEDIUM |
CWE-502 |
| Aleatorio inseguro (Math.random, Java, C#, PHP) |
MEDIUM |
CWE-330 |
| Autenticación del lado cliente (localStorage) |
HIGH |
CWE-602 |
| Race condition (TOCTOU) |
MEDIUM |
CWE-367 |
| Inyección XXE (Java, C#, PHP) |
HIGH |
CWE-611 |
| CSRF deshabilitado (Spring) |
HIGH |
CWE-352 |
| CORS permisivo (Spring, C#) |
MEDIUM |
CWE-942 |
| Bypass de SSL (Java, C#) |
HIGH |
CWE-295 |
| Open redirect (Java, C#, PHP) |
MEDIUM |
CWE-601 |
| Inclusión de archivos (PHP) |
HIGH |
CWE-98 |
| Carga de archivos sin validación |
MEDIUM |
ASVS 5.2.2, CWE-434 |
| Específico de PHP (extract, type juggling, mass assignment) |
MEDIUM-HIGH |
Varios |
| PII registrados (RGPD, 5 lenguajes) |
HIGH |
RGPD Art. 5 |
| Retención de datos ausente (RGPD) |
MEDIUM |
RGPD Art. 5 |
| MFA ausente (5 lenguajes) |
MEDIUM |
CWE-308 |
| Dockerfile (usuario root, base no fijada, COPY all) |
HIGH-MEDIUM |
CWE-250 |
| Almacenamiento local inseguro (tokens/secretos en localStorage) |
MEDIUM |
CWE-922 |
| Cabecera CSP ausente (Flask, Django, Express) |
MEDIUM |
CWE-1021 |
| Cabecera HSTS ausente |
MEDIUM |
ASVS 3.4.1, CWE-523 |
| X-Content-Type-Options ausente |
MEDIUM |
ASVS 3.4.4 |
| Referrer-Policy ausente |
LOW |
ASVS 3.4.5 |
| Protección anti-frame ausente (CSP/X-Frame-Options) |
MEDIUM |
ASVS 3.4.6, CWE-1021 |
| PostMessage sin verificación de origen |
MEDIUM |
ASVS 3.5.5, CWE-346 |
| Subresource Integrity (SRI) ausente |
LOW |
ASVS 3.6.1 |
| Contenido SVG con scripts (XSS) |
MEDIUM |
ASVS 1.3.4, CWE-79 |
| Introspección GraphQL activada |
MEDIUM |
ASVS 4.3.2 |
| GraphQL sin límite de profundidad |
MEDIUM |
ASVS 4.3.1, CWE-770 |
| IP interna hardcodeada (RFC 1918) |
MEDIUM |
CWE-798 |
| Endpoint de prueba expuesto (/test, /debug sin protección) |
MEDIUM |
CWE-489 |
Architecture (10 reglas) — Peso: 2
| Regla |
Severidad |
Estándar |
| Ruta admin sin protección |
HIGH |
OWASP A01 |
| Lógica de BD en routers/controllers (Python, Java, C#, PHP) |
MEDIUM |
— |
| Consultas directas en routers |
MEDIUM |
— |
| Patrones de consultas N+1 (Python, Java) |
MEDIUM |
— |
| Archivos que superan el umbral de longitud |
LOW-MEDIUM |
— |
Interface / UI (5 reglas) — Peso: 1
| Regla |
Severidad |
| Estilos inline en JavaScript |
LOW |
| Uso manual de createElement |
LOW |
| Listeners de eventos no limpiados |
LOW |
| Manipulación del DOM en bucles |
LOW |
| SVG inline en HTML |
LOW |
Experiencia de usuario / Accesibilidad (18 reglas) — Peso: 1
| Regla |
Severidad |
Estándar |
| Botón sin etiqueta ARIA |
MEDIUM |
WCAG 2.4.6 |
| Campo sin etiqueta |
MEDIUM |
WCAG 1.3.1 |
| Imagen sin texto alternativo |
MEDIUM |
WCAG 1.1.1 |
| tabindex positivo |
MEDIUM |
WCAG 2.4.3 |
| Contorno de foco eliminado |
MEDIUM |
WCAG 2.4.7 |
| Medios con autoplay |
MEDIUM |
WCAG 1.4.2 |
| Mensajes toast no traducidos |
MEDIUM |
i18n |
| Toasts de error efímeros |
MEDIUM |
UX |
| Cadena UI hardcodeada (verificación i18n) |
MEDIUM |
i18n |
| console.log residual |
LOW |
— |
Maintenance (22 reglas) — Peso: 1
| Regla |
Severidad |
Estándar |
| TODO/FIXME/HACK/XXX sin resolver |
LOW |
— |
| Uso de API obsoleta (Python, Java, C#, PHP, JS) |
LOW |
CWE-477 |
| Excepción atrapa-todo (Python, Java, C#, PHP) |
MEDIUM |
CWE-396 |
| System.out.println (Java) |
LOW |
— |
| Console.Write (C#) |
LOW |
— |
| Supresor de errores @ (PHP) |
LOW |
— |
| Destructivo sin backup (DROP/TRUNCATE fuera de migraciones) |
LOW |
ISO A.8.13 |
| Uso de hora local (datetime.now() sin timezone) |
LOW |
ISO A.8.17 |
| Endpoint de health check ausente |
LOW |
ISO A.8.16 |
| Código vendor sin revisar |
MEDIUM |
ISO A.5.22 |
Dependencies (3 reglas) — Peso: 2
| Regla |
Severidad |
Estándar |
| Dependencia vulnerable (CVE) |
HIGH-CRITICAL |
OWASP A06 |
| Versión de dependencia no fijada |
HIGH |
CWE-1357 |
| Licencia no conforme |
MEDIUM |
— |
CI/CD (18 reglas) — Peso: 2
| Regla |
Severidad |
Estándar |
| pull_request_target_checkout |
HIGH |
CI-CD-01 |
| GHA expression injection |
HIGH |
CI-CD-01 |
| GHA permisos excesivos |
MEDIUM |
CI-CD-05 |
| GHA permisos ausentes |
MEDIUM |
CI-CD-05 |
| GHA disparador de comentario sin protección |
MEDIUM |
CI-CD-01 |
| Versión de acción no fijada |
HIGH |
CI-CD-09 |
| Variables GitLab inseguras |
MEDIUM |
CI-CD-05 |
| Workflow ausente del archivo CODEOWNERS |
LOW |
CI-CD-05 |
| gha_secret_in_log |
HIGH |
CWE-312 |
| gha_deprecated_commands |
HIGH |
CVE-2020-15228 |
| gha_artifact_poisoning |
MEDIUM |
CI-CD-09 |
| gha_self_hosted_runner |
MEDIUM |
CI-CD-06 |
| ci_curl_pipe_bash |
HIGH |
CI-CD-09 |
| ci_insecure_download |
MEDIUM |
CWE-319 |
| hardcoded_secret_cicd |
CRITICAL |
CI-CD-04 / CWE-798 |
| docker_latest_tag |
LOW |
CI-CD-09 |
| gitlab_allow_failure_security |
HIGH |
CI-CD-04 |
| gitlab_script_secrets_echo |
HIGH |
CWE-312 |
Lenguajes soportados
| Lenguaje |
Extensiones |
Cobertura de reglas |
| Python |
.py |
Security, Architecture, Maintenance |
| JavaScript |
.js, .jsx, .mjs |
Security, UI, UX |
| TypeScript |
.ts, .tsx |
Mismas reglas que JavaScript |
| HTML |
.html, .htm, .vue, .svelte, .ejs, .hbs, .njk, .jinja, .jinja2, .twig, .liquid, .mustache, .phtml, .erb, .jsp, .asp, .aspx, .cshtml |
UI, UX/Accesibilidad |
| Java |
.java |
Security, Architecture, Maintenance |
| C# |
.cs |
Security, Architecture, Maintenance |
| PHP |
.php |
Security, Architecture, Maintenance |
| YAML |
.yml, .yaml |
CI/CD |
Secciones (17 en total)
- Cabecera — Nombre del proyecto, versión, UUID, bandera de idioma, marca de tiempo
- Tabla de contenidos — Cuadrícula clicable con iconos emoji
- Parámetros de auditoría — Lenguajes, extensiones escaneadas, rutas, patrones de exclusión, categorías, modo
- Opciones CLI utilizadas — Checklist de 16 opciones con estado y descripciones
- Visualizaciones — 9 gráficos de métricas + 4 gráficos de tendencias históricas (incl. barras apiladas lenguaje × severidad)
- Estadísticas resumen — Tarjetas: contadores HIGH/MEDIUM/LOW, validaciones, tasa de pruebas, tiempos
- Puntuación de salud — Puntuación de seguridad logarítmica normalizada por LOC, con penalizaciones por severidad y barra de progreso coloreada
- Top 10 archivos problemáticos — Ranking en heatmap
- Pruebas unitarias — Contadores pass/fail/error/skip con detalles
- Validación de fixtures — Resultados de precisión de detección
- Dependencias — Resultados del escaneo CVE, paquetes no fijados (opcional)
- Cumplimiento SLA — Plazos de resolución y reglas de escalado por severidad
- Matriz de cumplimiento ISO 27001 — Mapeo de findings a los controles del Anexo A de ISO/IEC 27001:2022 (93 controles, 4 temas)
- Findings por severidad — Agrupados CRITICAL/HIGH/MEDIUM/LOW/INFO con extractos de código, insignias de categoría, enlaces al glosario
- Validaciones por categoría — Mensajes de éxito (sin problemas detectados)
- Glosario — 36 acrónimos con definiciones (OWASP, ASVS, WCAG, CVE, CVSS, CWE, CSRF, XSS, SQL, SARIF, SBOM, ISO 27001, etc.)
Funcionalidades interactivas
- Sidebar redimensionable — Tabla de contenidos pegajosa con tirador de redimensionamiento y persistencia en localStorage
- Atajos de teclado — Navegación j/k, Ctrl+Home
- Secciones plegables — Haga clic para desplegar/replegar los findings
- Modo impresión — Diseño preparado para impresión con un clic
- Visualizaciones Chart.js — Más de 12 gráficos interactivos con tooltips
- Comparación con baseline — Problemas nuevos/resueltos/persistentes destacados
- Enlaces cruzados al glosario — Todos los acrónimos del informe son enlaces clicables al glosario con vista previa en tooltip
Cada informe es un archivo HTML único autónomo:
- Todo el CSS, JavaScript y Chart.js incrustados inline
- Favicon y logo codificados en base64
- Sin archivos externos, sin CDN, sin red necesaria
- Puede abrirse en cualquier navegador, compartirse como adjunto de correo, archivarse
Cumplimiento y estándares
| Estándar |
Cobertura |
| OWASP Top 10 |
A01 (Broken Access Control), A02 (Cryptographic Failures), A03 (Injection), A05 (Security Misconfiguration), A06 (Vulnerable Components), A08 (Software Integrity), A09 (Security Logging) |
| OWASP CI/CD Top 10 |
CI-CD-01 (Insufficient Flow Control), CI-CD-05 (Insufficient PBAC), CI-CD-09 (Improper Artifact Integrity) |
| CWE |
CWE-78, CWE-79, CWE-89, CWE-90, CWE-94, CWE-98, CWE-209, CWE-250, CWE-287, CWE-295, CWE-308, CWE-328, CWE-330, CWE-352, CWE-367, CWE-396, CWE-477, CWE-502, CWE-532, CWE-601, CWE-602, CWE-611, CWE-798, CWE-917, CWE-922, CWE-942, CWE-1021, CWE-1357 |
| WCAG 2.1 |
1.1.1 (Non-text Content), 1.3.1 (Info and Relationships), 1.4.2 (Audio Control), 2.4.3 (Focus Order), 2.4.6 (Headings and Labels), 2.4.7 (Focus Visible) |
| ISO/IEC 27001:2022 |
Matriz de cumplimiento Anexo A — 93 controles repartidos en 4 temas (Organizativo, Personas, Físico, Tecnológico). 44 controles cubiertos por análisis estático (~47,3 % de cobertura). Organizativo A.5: 10/37 (27 %), Tecnológico A.8: 34/34 (100 %). 4 gráficos interactivos (doughnut, barras, radar, barras apiladas) con acordeón por tema. Cubre secure coding (A.8.28), criptografía (A.8.24), gestión de vulnerabilidades (A.8.8), autenticación (A.8.5), control de acceso (A.8.3), gestión de privilegios (A.8.18), seguridad de la nube (A.5.23), cadena de suministro (A.5.21), monitorización (A.8.16), endpoints (A.8.1), filtrado web (A.8.23), segmentación de red (A.8.22), sincronización de reloj (A.8.17), copia de seguridad de la información (A.8.13), protección de auditorías (A.8.34), etc. |
| RGPD |
Art. 5 (registro de PII, retención de datos) |
| CVE |
Análisis de vulnerabilidades vía pip-audit (Python) y npm audit (Node.js) |
Internacionalización
| Idioma |
Bandera |
Consola |
Informe |
Glosario |
| Francés |
🇫🇷 |
--script-lang fr |
reports.language: "fr" |
36 términos |
| Inglés |
🇬🇧 |
--script-lang en |
reports.language: "en" |
36 términos |
| Español |
🇪🇸 |
--script-lang es |
reports.language: "es" |
36 términos |
| Alemán |
🇩🇪 |
--script-lang de |
reports.language: "de" |
36 términos |
Cada cadena de la herramienta está localizada:
- Mensajes de consola (
locales/script/{lang}.json)
- Mensajes de log de depuración (niveles info, detail, trace)
- Texto, etiquetas y títulos del informe (
locales/report/{lang}.json)
- Nombres de reglas, descripciones de riesgo, soluciones, beneficios
- Nombres de categorías, etiquetas de severidad, etiquetas de gráficos
- Términos del glosario, definiciones de acrónimos
Referencia CLI
La CLI está organizada en 4 grupos de argumentos. Las herramientas SCA developer tools están ausentes del binario distribuido.
Scan Options (comunes a todos los objetivos)
| Opción |
Descripción |
project_path |
Ruta del proyecto objetivo (por defecto: .) |
--quick, -q |
Modo rápido — solo reglas de seguridad |
--severity LEVELS |
Filtra reglas por severidad, separadas por comas (ej. CRITICAL,HIGH). Por defecto: todas. Banner ámbar en el informe cuando está activo. |
--lang {fr,en,es,de} |
Idioma del informe y de la consola (por defecto: en) |
--list-rules |
Lista todas las reglas de auditoría por categoría |
Output Options
| Opción |
Descripción |
--fail-on-high |
Código de salida 1 si se encuentran vulnerabilidades HIGH (integración CI/CD) |
--sarif |
Genera exportación SARIF 2.1.0 (GitHub Code Scanning, GitLab SAST) |
--with-logs |
Guarda la salida de consola en un archivo log del directorio de salida |
--quiet |
Modo consola silencioso — solo errores y resultado final mostrados |
Client Features
| Opción |
Descripción |
--init |
Crea o modifica audit.config.json (interactivo) |
--create-rule |
Crea o edita una regla personalizada (asistente interactivo) |
--custom-rules-match |
Verifica la cobertura de reglas personalizadas frente a fixtures personalizadas |
--with-tests |
Detección automática y ejecución de pruebas unitarias del proyecto |
--with-deps |
Escaneo de vulnerabilidades de dependencias (pip-audit, npm audit) |
| Opción |
Descripción |
--debug |
Modo depuración (logs detallados a stderr) |
--rules-match |
Verifica que cada regla tenga sus fixtures (vulnerable + clean) |
Configuración
Toda la configuración vive en audit.config.json en la raíz del proyecto. Generado por --init.
Secciones clave
| Sección |
Propósito |
brand |
Nombre de la herramienta, nombre de la empresa, prefijo, logo personalizado |
project |
UUID, nombre, versión, descripción |
languages |
Lenguajes a auditar: ["python", "javascript", "html"] |
paths.include |
Directorios a escanear |
paths.exclude |
Patrones a omitir |
categories |
Activación/desactivación + peso por categoría |
rules.disabled |
Lista de claves de reglas a omitir |
reports |
Directorio de salida, directorio de historial, historial máximo (10), idioma |
tests |
Activación/desactivación, directorio, comando pytest personalizado |
thresholds |
Máx HIGH (0), máx MEDIUM (10), salud mínima (80 %) |
sla |
SLA por severidad (plazo, escalado) |
fixtures |
Incluir fixtures genéricas (true/false) |
retention |
Limpieza de informes: modo (count/days/both), max_count, max_days |
Personalización marca blanca
{
"brand": {
"tool_name": "MyCompanyAudit",
"company_name": "My Company",
"prefix": "MCA",
"logo": "assets/my-logo.svg"
}
}
Personaliza: título del informe, pie de página, nombres de archivos de salida, favicon, logo de la cabecera.
Sistema de proyectos por UUID
Cada proyecto recibe un UUID único en el primer --init:
- Almacenado en
projects/{uuid}/ dentro del directorio de la herramienta
- Desacopla la ubicación del proyecto del almacenamiento de fixtures
- Permite reglas y fixtures específicas del proyecto
- Hace seguimiento del historial de auditoría (contador, fecha de la última auditoría)
Datos para los prompts de vídeo
Datos estructurados para las composiciones de vídeo Remotion (véase docs/plans/PLAN-AUDIT-CONFORMITE.html §15).
Especificaciones de las composiciones
| ID |
Duración |
Escenas |
Resolución |
FPS |
Narración |
AuditDemo |
~65s (1950f) |
7 |
1920x1080 |
30 |
4 idiomas |
AuditReportSampleShowcase |
~174s (5040f) |
15 |
1920x1080 |
30 |
4 idiomas |
Escenas AuditDemo
| # |
Escena |
Duración |
Descripción |
| 1 |
Cartel de título |
5s (150f) |
Nombre de la herramienta, empresa, tagline, logo |
| 2 |
El problema |
10s (300f) |
Pregunta + 4 puntos de dolor |
| 3 |
Lanzamiento de terminal |
8s (240f) |
Animación CLI, archivos de salida |
| 4 |
Escaneo de categorías |
12s (360f) |
7 categorías apareciendo secuencialmente |
| 5 |
Vista previa del informe |
12s (360f) |
Puntuación de salud, gráfico de severidad, findings |
| 6 |
Multiidioma |
8s (240f) |
Ciclo de banderas, mismo finding en 4 idiomas |
| 7 |
Conclusión |
10s (300f) |
Cifras clave (contadores), CTA |
Escenas AuditReportSampleShowcase
| # |
Escena |
Duración |
Descripción |
| 0 |
Presentación |
24s (720f) |
Problema + puntos de dolor → solución + puntos clave → transición |
| 1 |
Intro |
5s (150f) |
Nombre de la herramienta + título del walkthrough |
| 2 |
Vista general |
12s (360f) |
Cuadrícula de 15 secciones (3 columnas) |
| 3 |
Cabecera |
10s (300f) |
Tarjeta de metadatos del proyecto |
| 4 |
Parámetros y CLI |
12s (360f) |
Idiomas, categorías, checklist de opciones CLI |
| 5 |
Gráficos |
20s (600f) |
Severidad, categoría, gráficos de tiempos + capturas |
| 6 |
Puntuación de salud |
10s (300f) |
Barra de puntuación animada + leyenda |
| 7 |
Top 10 archivos |
10s (300f) |
Heatmap + captura |
| 8 |
Findings |
25s (750f) |
4 tarjetas de finding (HIGH, HIGH, MEDIUM, LOW) |
| 9 |
Pruebas y fixtures |
10s (300f) |
Estadísticas de pruebas + precisión de fixtures |
| 10 |
Comparación |
10s (300f) |
Nuevos/resueltos/persistentes + sparkline |
| 11 |
Idiomas |
10s (300f) |
4 banderas con findings traducidos |
| 12 |
Autonomía |
10s (300f) |
Checklist de 4 funcionalidades |
| 13 |
Conclusión |
10s (300f) |
Cifras clave + CTA |
| 14 |
Agradecimientos |
6s (180f) |
Gracias + contacto |
Narración TTS (Piper)
Ambas composiciones incluyen narración de voz sincronizada, generada vía Piper TTS (open-source, 100 % sin conexión).
Cada idioma ofrece una opción de voz masculina y femenina (--voice male|female):
| Idioma |
Voz masculina |
Voz femenina |
| Inglés |
Ryan (high) |
Lessac (high) |
| Francés |
Tom (medium) |
Siwis (medium) |
| Español |
Claude (high) |
Sharvard (medium) |
| Alemán |
Thorsten (high) |
Eva K (x_low) |
Los textos de narración están en videos/src/narration/ (un archivo por composición, 4 idiomas cada uno).
Los archivos WAV se generan en videos/public/narration/{Composition}/{lang}/{voice}/{sceneKey}.wav.
Los archivos JSON Caption se generan en videos/public/subtitles/{Composition}/{lang}/{sceneKey}.json vía transcripción Whisper.cpp.
Los subtítulos pueden mostrarse en un idioma diferente al de la narración mediante la prop subtitleLang.
Setup: cd videos && npm run setup-piper (solo la primera vez)
Generación: cd videos && npm run generate-narration (o npm run generate-narration:female)
Subtítulos: cd videos && npm run generate-subtitles
Cifras clave (utilizadas en las escenas de conclusión)
AuditDemo:
455+ reglas de detección
7 categorías de auditoría
4 idiomas
13+ gráficos interactivos
0 dependencias externas
100% sin conexión
AuditReportSampleShowcase (datos MY-IA):
700 findings detectados
7 categorías de auditoría
4 idiomas
15 secciones del informe
110s duración de la auditoría