From 4f8d3b124b02a6b24cf8b48080f173ea2e274fb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Garc=C3=ADa=20Santamar=C3=ADa?= <69808296+PGSCOM@users.noreply.github.com> Date: Sat, 26 Sep 2026 02:49:50 +0200 Subject: [PATCH 01/17] Eliminar proyectos ejemplo anteriores --- src/content/proyectos/identidad-pgscom.md | 19 ------------------- src/content/proyectos/portafolio-cine.md | 21 --------------------- src/content/proyectos/portfolio-pgscom.md | 21 --------------------- 3 files changed, 61 deletions(-) delete mode 100644 src/content/proyectos/identidad-pgscom.md delete mode 100644 src/content/proyectos/portafolio-cine.md delete mode 100644 src/content/proyectos/portfolio-pgscom.md diff --git a/src/content/proyectos/identidad-pgscom.md b/src/content/proyectos/identidad-pgscom.md deleted file mode 100644 index deee1ef..0000000 --- a/src/content/proyectos/identidad-pgscom.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -titulo: Identidad PGSCOM -fecha: "2022-03" -categorias: [diseño-grafico] -peso: 55 -descripcion: Diseño de identidad visual completa. -tecnologias: [Illustrator, Photoshop, Figma] ---- - -### Identidad PGSCOM - -**Identidad de marca** completa. - -#### Elementos: - -- Logo vectorial -- Paleta de colores -- Tipografía -- Assets sociales diff --git a/src/content/proyectos/portafolio-cine.md b/src/content/proyectos/portafolio-cine.md deleted file mode 100644 index c2e63e5..0000000 --- a/src/content/proyectos/portafolio-cine.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -titulo: Portafolio Cinematográfico -fecha: "2024-02" -categorias: [desarrollo-web, video-produccion] -peso: 60 -destacado: 4 -imagen: ../../assets/proyectos/PortfolioCortos.png -descripcion: Galería de proyectos audiovisuales con reproductor de video integrado. -tecnologias: [HTML5, CSS3, JavaScript, Video.js] -link: https://cine.pgscom.es ---- - -### Portafolio Cinematográfico - -Galería especializada para mostrar mis **proyectos audiovisuales**. - -#### Funcionalidades: - -- Reproductor personalizado -- Sistema de categorías -- Galería de stills diff --git a/src/content/proyectos/portfolio-pgscom.md b/src/content/proyectos/portfolio-pgscom.md deleted file mode 100644 index b7fab10..0000000 --- a/src/content/proyectos/portfolio-pgscom.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -titulo: Portfolio PGSCOM -fecha: "2025-03" -categorias: [desarrollo-web] -peso: 90 -imagen: ../../assets/proyectos/portfolio.png -descripcion: Sitio web personal desarrollado con Astro, React y animaciones con AnimeJS. -tecnologias: [Astro, React, TypeScript, AnimeJS, CSS3] -link: https://pgscom.es ---- - -### Portfolio Personal PGSCOM - -Este proyecto representa mi **carta de presentación digital**, desarrollado completamente desde cero con las tecnologías más modernas. - -#### Características principales: - -- **Astro 4.0** - Framework ultra-rápido -- **React** - Componentes interactivos -- **AnimeJS** - Animaciones fluidas -- **Diseño Responsivo** From f19556550cd1d1b557f6f86d604ab6744e096135 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Garc=C3=ADa=20Santamar=C3=ADa?= <69808296+PGSCOM@users.noreply.github.com> Date: Sat, 26 Sep 2026 02:50:19 +0200 Subject: [PATCH 02/17] Agregar proyectos de ejemplo --- src/content/proyectos/blender-cotracker3.md | 23 ++++++++++++ src/content/proyectos/clearer.md | 20 +++++++++++ src/content/proyectos/cold-searcher.md | 29 +++++++++++++++ src/content/proyectos/complicatedcraft.md | 21 +++++++++++ .../proyectos/enmarcador-de-entradas.md | 18 ++++++++++ .../proyectos/facebook-photos-getter.md | 18 ++++++++++ src/content/proyectos/horario-deusto.md | 15 ++++++++ src/content/proyectos/immersive.md | 36 +++++++++++++++++++ src/content/proyectos/ipad-tunnel.md | 24 +++++++++++++ src/content/proyectos/lcemp.md | 26 ++++++++++++++ src/content/proyectos/matanyone-improved.md | 19 ++++++++++ src/content/proyectos/mlxchat.md | 31 ++++++++++++++++ src/content/proyectos/next-event-calendar.md | 20 +++++++++++ src/content/proyectos/portfolio-cine.md | 15 ++++++++ src/content/proyectos/pulseboot.md | 31 ++++++++++++++++ src/content/proyectos/scanner-luma.md | 14 ++++++++ src/content/proyectos/superpreset4wacom.md | 17 +++++++++ src/content/proyectos/teldrive-adder.md | 16 +++++++++ src/content/proyectos/timecode-unreal.md | 20 +++++++++++ src/content/proyectos/unreal-render-farm.md | 21 +++++++++++ 20 files changed, 434 insertions(+) create mode 100644 src/content/proyectos/blender-cotracker3.md create mode 100644 src/content/proyectos/clearer.md create mode 100644 src/content/proyectos/cold-searcher.md create mode 100644 src/content/proyectos/complicatedcraft.md create mode 100644 src/content/proyectos/enmarcador-de-entradas.md create mode 100644 src/content/proyectos/facebook-photos-getter.md create mode 100644 src/content/proyectos/horario-deusto.md create mode 100644 src/content/proyectos/immersive.md create mode 100644 src/content/proyectos/ipad-tunnel.md create mode 100644 src/content/proyectos/lcemp.md create mode 100644 src/content/proyectos/matanyone-improved.md create mode 100644 src/content/proyectos/mlxchat.md create mode 100644 src/content/proyectos/next-event-calendar.md create mode 100644 src/content/proyectos/portfolio-cine.md create mode 100644 src/content/proyectos/pulseboot.md create mode 100644 src/content/proyectos/scanner-luma.md create mode 100644 src/content/proyectos/superpreset4wacom.md create mode 100644 src/content/proyectos/teldrive-adder.md create mode 100644 src/content/proyectos/timecode-unreal.md create mode 100644 src/content/proyectos/unreal-render-farm.md diff --git a/src/content/proyectos/blender-cotracker3.md b/src/content/proyectos/blender-cotracker3.md new file mode 100644 index 0000000..e23f4f2 --- /dev/null +++ b/src/content/proyectos/blender-cotracker3.md @@ -0,0 +1,23 @@ +--- +titulo: CoTracker3 para Blender +fecha: "2026-09" +categorias: [vfx, programacion] +peso: 65 +# imagen: ../../assets/proyectos/TODO.png # TODO: captura para la card +descripcion: Addon que cambia el tracker de Blender por CoTracker3, un modelo de IA de Meta. +tecnologias: [Blender, Python, PyTorch, CoTracker3] +link: https://github.com/PGSCOM/Blender-Cotracker3 +txtboton: Ver en GitHub +--- + +Nació en el [Periodo de Multiguerras](/proyectos/multiguerras), donde usé CoTracker3 para recuperar tomas que el tracker de Blender no podía seguir. Aquí lo convertí en un addon. + +## Cómo funciona + +- Blender **mantiene sus tracks y markers nativos**: el solve de cámara y la estabilización funcionan igual que siempre. +- Solo el cálculo de posiciones se delega a un proceso Python aparte con PyTorch, comunicado por HTTP local. +- Modo **offline** (clip entero, en ambas direcciones) y **online** (en streaming, menos VRAM). +- Grids densos de puntos y gestión de oclusiones. +- Empaquetable como extensión oficial de Blender 4.2+. + + diff --git a/src/content/proyectos/clearer.md b/src/content/proyectos/clearer.md new file mode 100644 index 0000000..4f17161 --- /dev/null +++ b/src/content/proyectos/clearer.md @@ -0,0 +1,20 @@ +--- +titulo: Clearer +fecha: "2026-08" +fechaFin: "2026-09" +categorias: [programacion] +peso: 45 +# imagen: ../../assets/proyectos/TODO.png # TODO: captura para la card +descripcion: Limpiador de la fototeca de iOS que clasifica las fotos en el propio iPhone. +tecnologias: [Swift, SwiftUI, Vision Framework] +link: https://github.com/PGSCOM/Clearer +txtboton: Ver en GitHub +--- + +Prototipo desarrollado con ayuda de IA para vaciar la galería de fotos sin volverse loco. + +- Usa el **Vision Framework** de Apple para clasificar las imágenes de Fotos **on-device**. +- No descarga los originales de iCloud para analizarlas: trabaja con las versiones ligeras. +- Pensada para revisar catálogos de **10.000 fotos**: zoom, descarga del original solo cuando hace falta. + + diff --git a/src/content/proyectos/cold-searcher.md b/src/content/proyectos/cold-searcher.md new file mode 100644 index 0000000..506bd6f --- /dev/null +++ b/src/content/proyectos/cold-searcher.md @@ -0,0 +1,29 @@ +--- +titulo: Cold Searcher +fecha: "2026-02" +fechaFin: "2026-06" +categorias: [programacion] +peso: 60 +# imagen: ../../assets/proyectos/TODO.png # TODO: captura para la card +descripcion: Buscador único para discos externos y nubes, aunque el disco esté desconectado. +tecnologias: [Python, FastAPI, PostgreSQL, pgvector, CLIP, Meilisearch, React, Electron, Docker] +link: https://github.com/PGSCOM/Cold-Searcher +txtboton: Ver en GitHub +--- + + + +## Qué hace + +Indexa discos externos y almacenamiento en la nube (Google Drive, Dropbox, OneDrive, S3) en **un solo índice persistente**, así que puedes saber dónde está un archivo aunque el disco esté en un cajón. + +- **Búsqueda semántica** con embeddings CLIP: "fotos de playa al atardecer". +- **Búsqueda de texto completo** con Meilisearch. + +## Arquitectura + +1. **Frontend**: React + Electron + TanStack Query + Tailwind. +2. **API**: FastAPI con SQLAlchemy asíncrono. +3. **Datos**: PostgreSQL con pgvector para los vectores. + +Todo se levanta con Docker Compose. diff --git a/src/content/proyectos/complicatedcraft.md b/src/content/proyectos/complicatedcraft.md new file mode 100644 index 0000000..9d64aaf --- /dev/null +++ b/src/content/proyectos/complicatedcraft.md @@ -0,0 +1,21 @@ +--- +titulo: ComplicatedCraft +fecha: "2025-11" +fechaFin: "2025-12" +categorias: [programacion] +peso: 40 +# imagen: ../../assets/proyectos/TODO.png # TODO: captura para la card +descripcion: Servidor de Minecraft entre amigos, con modpack e infraestructura en Docker. +tecnologias: [Docker, Packwiz, NeoForge, Tailscale, Cloudflare Pages] +link: https://github.com/ComplicatedCraft +txtboton: Ver en GitHub +--- + + + +Mis aportaciones al servidor: + +- **Docker-Server**: proxy con playit.gg para entrar sin abrir puertos. +- **Modpack** (Packwiz): Sodium y un arreglo para las entidades de Create, que se veían oscuras. +- **Modscale**: mod de NeoForge 1.21.1 con **Tailscale** integrado para unirse a la red privada desde el propio juego. +- Configuración de despliegue en Cloudflare Pages para la web del servidor. diff --git a/src/content/proyectos/enmarcador-de-entradas.md b/src/content/proyectos/enmarcador-de-entradas.md new file mode 100644 index 0000000..e161c63 --- /dev/null +++ b/src/content/proyectos/enmarcador-de-entradas.md @@ -0,0 +1,18 @@ +--- +titulo: Enmarcador de entradas +fecha: "2024-09" +fechaFin: "2026-04" +categorias: [diseño-grafico, programacion] +peso: 30 +descripcion: Genera en serie entradas personalizadas a partir de una plantilla SVG. +tecnologias: [Python, SVG, Inkscape] +link: https://github.com/PGSCOM/Enmarcador-de-entradas +txtboton: Ver en GitHub +--- + +Dos scripts de Python: + +1. Recorre una carpeta de PNG y crea una copia de la plantilla SVG por cada uno, con su nombre incrustado. +2. Convierte todos los SVG a PNG en alta resolución con **Inkscape** en modo batch. + +Lo usé para el [sistema de entradas de los Premios Mácula](/proyectos/premios-macula#generación-de-entradas). diff --git a/src/content/proyectos/facebook-photos-getter.md b/src/content/proyectos/facebook-photos-getter.md new file mode 100644 index 0000000..30faf97 --- /dev/null +++ b/src/content/proyectos/facebook-photos-getter.md @@ -0,0 +1,18 @@ +--- +titulo: Facebook Photos Getter +fecha: "2026-05" +categorias: [programacion] +peso: 25 +descripcion: Exporta las publicaciones y fotos de un perfil de Facebook a carpetas navegables. +tecnologias: [Python, Selenium] +link: https://github.com/PGSCOM/Facebook-Photos-Getter +txtboton: Ver en GitHub +--- + +Scraper con **Selenium** sobre la versión ligera de Facebook (`mbasic`). + +- Una carpeta por publicación con el texto en Markdown, las imágenes y el JSON original. +- Índice HTML para navegar todo sin conexión. +- Login automático con pausa para el 2FA y control de velocidad para no ser bloqueado. + + diff --git a/src/content/proyectos/horario-deusto.md b/src/content/proyectos/horario-deusto.md new file mode 100644 index 0000000..e188ac7 --- /dev/null +++ b/src/content/proyectos/horario-deusto.md @@ -0,0 +1,15 @@ +--- +titulo: Horario de Deusto +fecha: "2025-10" +fechaFin: ahora +categorias: [programacion] +peso: 20 +descripcion: Mantiene sincronizado el horario de la universidad automáticamente. +tecnologias: [Python] +link: https://github.com/PGSCOM/Horario-Deusto-updater +txtboton: Ver en GitHub +--- + +Parte de una petición `curl` copiada desde las DevTools de Chrome (con cabeceras y cookies de sesión), cambia el rango de fechas y la vuelve a lanzar para volcar el horario actualizado. + + diff --git a/src/content/proyectos/immersive.md b/src/content/proyectos/immersive.md new file mode 100644 index 0000000..61ac511 --- /dev/null +++ b/src/content/proyectos/immersive.md @@ -0,0 +1,36 @@ +--- +titulo: Immersive +fecha: "2026-02" +fechaFin: ahora +categorias: [programacion] +peso: 75 +# imagen: ../../assets/proyectos/TODO.png # TODO: captura para la card +descripcion: Alternativa open source a Immersed - tus monitores del PC dentro de unas gafas de realidad virtual. +tecnologias: [Godot 4, OpenXR, C++, DXGI, NVENC, WebXR, Node.js] +link: https://pgscom.github.io/Immersive/ +--- + + + +## Qué hace + +Un programa en el PC captura las pantallas y las envía por Wi-Fi a unas gafas (Quest, Pico 4), donde aparecen como hasta **3 paneles flotantes**. + +- Teclado virtual QWERTY dentro de la VR. +- Foveated rendering con eye-tracking, hand tracking (pinch) y passthrough. +- Audio del PC (WASAPI loopback). +- Hasta **4 gafas conectadas a la vez**. +- Driver de pantalla virtual (IDD) para tener monitores que no existen físicamente. +- Cliente WebXR alternativo con un puente en Node.js. + +## Cómo funciona + +### Host (Windows / Linux / macOS) + +Captura con **DXGI Desktop Duplication** y codifica por software (MJPEG) o por hardware (**NVENC / AMF / QSV** vía Media Foundation). Control por TCP y vídeo por UDP. + +### Cliente + +Hecho en **Godot 4 + OpenXR**. La arquitectura y el protocolo están documentados en el repo (`ARCHITECTURE.md`, `PROTOCOL.md`) y hay CI en GitHub Actions para el host y el export de Godot. + + diff --git a/src/content/proyectos/ipad-tunnel.md b/src/content/proyectos/ipad-tunnel.md new file mode 100644 index 0000000..a594309 --- /dev/null +++ b/src/content/proyectos/ipad-tunnel.md @@ -0,0 +1,24 @@ +--- +titulo: iPad por cable +fecha: "2026-03" +fechaFin: "2026-09" +categorias: [programacion] +peso: 40 +# imagen: ../../assets/proyectos/TODO.png # TODO: captura para la card +descripcion: Usar el iPad como pantalla y cliente del PC por USB-C, sin depender del Wi-Fi. +tecnologias: [Go, go-ios, WireGuard, Docker, Moonlight, Sunshine] +link: https://github.com/PGSCOM/ios-tunnel-stream +txtboton: Ver en GitHub +--- + +Dos herramientas para conectar un iPad al PC por cable. + +## ipad-typec-tunnel + +Un servidor **WireGuard** (nativo en Windows o con Docker Compose) que da al iPad, conectado por USB-C, acceso a todos los servicios del PC sin abrir puertos. Genera las configuraciones y un QR para el cliente. + +## ios-tunnel-stream + +CLI en **Go** que levanta un túnel al iPad con [go-ios](https://github.com/danielpaulus/go-ios) (proyecto al que [también contribuí](/proyectos/github-contributions)) y muestra la URL como QR. Pensado para usarlo con Moonlight/Sunshine y tener una pantalla virtual sin red local. + + diff --git a/src/content/proyectos/lcemp.md b/src/content/proyectos/lcemp.md new file mode 100644 index 0000000..584d8a0 --- /dev/null +++ b/src/content/proyectos/lcemp.md @@ -0,0 +1,26 @@ +--- +titulo: LCEMP +fecha: "2026-03" +fechaFin: "2026-06" +categorias: [programacion] +peso: 55 +# imagen: ../../assets/proyectos/TODO.png # TODO: captura para la card +descripcion: Multijugador y servidor dedicado para Minecraft Legacy Console Edition. +tecnologias: [C++, CMake] +link: https://github.com/PGSCOM/LCEMP +txtboton: Ver en GitHub +--- + +Fork del código de Minecraft Legacy Console Edition con mejoras para PC. + +## Cliente + +- Partidas LAN de hasta 8 jugadores con sincronización de bloques y sistema de kick. +- Teclado y ratón, pantalla completa. + +## Servidor dedicado ([LCEMP-Server](https://github.com/PGSCOM/LCEMP-Server)) + +- Hasta **32 jugadores** con chat de voz. +- `server.properties` completo y comandos al estilo de Java Edition: `op`, `ban`, `whitelist`, `gamemode`, `tp`… + + diff --git a/src/content/proyectos/matanyone-improved.md b/src/content/proyectos/matanyone-improved.md new file mode 100644 index 0000000..7ced526 --- /dev/null +++ b/src/content/proyectos/matanyone-improved.md @@ -0,0 +1,19 @@ +--- +titulo: MatAnyone 4K +fecha: "2025-12" +categorias: [vfx] +peso: 35 +# imagen: ../../assets/proyectos/TODO.png # TODO: captura para la card +descripcion: Rotoscopia con IA preparada para trabajar en 4K y desplegar con Docker. +tecnologias: [Python, PyTorch, Gradio, Docker] +link: https://github.com/PGSCOM/MatAnyone-Improved +txtboton: Ver en GitHub +--- + +Versión mejorada de la demo de **MatAnyone**, un modelo de video matting que separa a una persona del fondo sin pantalla verde. + +- Preparada para material en **4K**. +- Interfaz en Gradio. +- Empaquetada en Docker para lanzarla en cualquier máquina con GPU. + + diff --git a/src/content/proyectos/mlxchat.md b/src/content/proyectos/mlxchat.md new file mode 100644 index 0000000..1ac4351 --- /dev/null +++ b/src/content/proyectos/mlxchat.md @@ -0,0 +1,31 @@ +--- +titulo: Faro +fecha: "2026-09" +fechaFin: ahora +categorias: [programacion] +peso: 70 +# imagen: ../../assets/proyectos/TODO.png # TODO: captura para la card +descripcion: App de iOS y macOS para chatear con modelos de IA que corren en el propio dispositivo. +tecnologias: [Swift, SwiftUI, MLX, Hugging Face, MCP, GitHub Actions] +link: https://github.com/PGSCOM/MLXChat +txtboton: Ver en GitHub +--- + + + +## Qué hace + +Faro es una app nativa en SwiftUI que ejecuta modelos de lenguaje **en local** con MLX, el framework de Apple para Apple Silicon. No depende de un catálogo cerrado: cualquier modelo MLX de Hugging Face se puede descargar y usar. + +- **Servidor compatible con la API de OpenAI** para usar el modelo del iPhone o del Mac desde otros equipos de la red. +- **Cliente MCP** para darle herramientas al modelo. +- Voz (TTS), proyectos de chat, instrucciones personalizadas, streaming del razonamiento y varios idiomas. +- Claves guardadas en el Llavero. + +## Cómo está montado + +- El proyecto de Xcode no se versiona: se genera con **XcodeGen** desde `project.yml`. +- **GitHub Actions** compila un `.ipa` sin firmar en cada push (se instala con AltStore o Sideloadly). +- Requiere Apple Silicon (A17 Pro o chip M) por MLX. + + diff --git a/src/content/proyectos/next-event-calendar.md b/src/content/proyectos/next-event-calendar.md new file mode 100644 index 0000000..11fe647 --- /dev/null +++ b/src/content/proyectos/next-event-calendar.md @@ -0,0 +1,20 @@ +--- +titulo: Next Event Calendar +fecha: "2026-09" +categorias: [programacion] +peso: 45 +# imagen: ../../assets/proyectos/TODO.png # TODO: captura para la card +descripcion: Extensión de GNOME que muestra tu próximo evento en la barra superior. +tecnologias: [JavaScript, GJS, GNOME Shell, D-Bus] +link: https://extensions.gnome.org/extension/10932/next-event-calendar/ +txtboton: Ver en GNOME Extensions +--- + +Publicada en el repositorio oficial de extensiones de GNOME. + +- Muestra el siguiente evento del día con su hora y **desaparece cuando ya no queda ninguno**. +- Al hacer clic abre GNOME Calendar. +- Lee los mismos calendarios que el reloj de GNOME (Evolution Data Server y Cuentas en línea, por D-Bus): **no pide credenciales**. +- Preferencias: filtro por calendario, hora absoluta o cuenta atrás, color de acento del sistema y umbrales de aviso. Todo se aplica en caliente. + +Código en [GitHub](https://github.com/PGSCOM/Next-Event-Calendar). diff --git a/src/content/proyectos/portfolio-cine.md b/src/content/proyectos/portfolio-cine.md new file mode 100644 index 0000000..0b2f918 --- /dev/null +++ b/src/content/proyectos/portfolio-cine.md @@ -0,0 +1,15 @@ +--- +titulo: Portfolio de cine +fecha: "2024" +categorias: [video, desarrollo-web] +peso: 40 +imagen: ../../assets/proyectos/PortfolioCortos.png +descripcion: Web aparte para mis cortometrajes y series. +tecnologias: [Astro] +link: https://github.com/PGSCOM/cine +txtboton: Ver en GitHub +--- + + + +Portfolio cinematográfico hecho con **Astro**, con el contenido de cada obra en JSON (secciones de series y "próximamente"). diff --git a/src/content/proyectos/pulseboot.md b/src/content/proyectos/pulseboot.md new file mode 100644 index 0000000..0a0c4a6 --- /dev/null +++ b/src/content/proyectos/pulseboot.md @@ -0,0 +1,31 @@ +--- +titulo: PulseBoot +fecha: "2026-08" +categorias: [programacion] +peso: 55 +# imagen: ../../assets/proyectos/TODO.png # TODO: captura para la card +descripcion: Un ESP32 que sustituye el botón de encendido del PC y lo conecta a la domótica. +tecnologias: [ESP32-C6, ESP-IDF, PlatformIO, Matter, ESPHome, MQTT, Home Assistant] +link: https://github.com/PGSCOM/PulseBoot +txtboton: Ver en GitHub +--- + + + +## Qué hace + +Un módulo **ESP32-C6** va conectado al botón de encendido de la placa base y lo expone de tres formas a la vez: + +- **Matter**: se empareja directamente con Google Home o Apple Home, sin hub. +- **ESPHome**: integración nativa con Home Assistant. +- **MQTT + REST**: para Node-RED, scripts o apps propias. + +Lee la señal `PWR_OK` de la fuente para saber si el PC está realmente encendido. + +## Firmware + +- ESP-IDF sobre PlatformIO, con CI. +- Configuración Wi-Fi por portal cautivo y actualizaciones OTA. +- Licencia MIT para el firmware y CERN-OHL-S para el hardware. + + diff --git a/src/content/proyectos/scanner-luma.md b/src/content/proyectos/scanner-luma.md new file mode 100644 index 0000000..9201c22 --- /dev/null +++ b/src/content/proyectos/scanner-luma.md @@ -0,0 +1,14 @@ +--- +titulo: 3D Scanner a Luma AI +fecha: "2024-07" +categorias: [vfx, programacion] +peso: 30 +descripcion: Script que prepara las capturas de 3D Scanner (iOS) para reconstruirlas en Luma AI. +tecnologias: [Python, Luma AI, NeRF] +link: https://github.com/PGSCOM/3D-Scanner-to-Luma-AI +txtboton: Ver en GitHub +--- + +La app **3D Scanner** de iOS guarda la posición de cada fotograma por separado. Este script las agrupa en un único `transforms.json` con el formato que pide Luma AI, para reconstruir la escena con las posiciones de cámara reales. + + diff --git a/src/content/proyectos/superpreset4wacom.md b/src/content/proyectos/superpreset4wacom.md new file mode 100644 index 0000000..df7b1c9 --- /dev/null +++ b/src/content/proyectos/superpreset4wacom.md @@ -0,0 +1,17 @@ +--- +titulo: SuperPreset4Wacom +fecha: "2026-04" +categorias: [diseño-grafico, programacion] +peso: 35 +# imagen: ../../assets/proyectos/TODO.png # TODO: captura para la card +descripcion: Web para fusionar presets de tabletas Wacom en un solo archivo. +tecnologias: [HTML, JavaScript] +link: https://pgscom.github.io/SuperPreset4Wacom/ +txtboton: Abrir la herramienta +--- + +El software de Wacom solo exporta un `.wacomprefs` por configuración. Esta web los **fusiona** en uno, funcionando 100% en el navegador, sin servidor. + +Probada con el driver 6.4.8-6 en una Cintiq 22HD. + + diff --git a/src/content/proyectos/teldrive-adder.md b/src/content/proyectos/teldrive-adder.md new file mode 100644 index 0000000..b2280d9 --- /dev/null +++ b/src/content/proyectos/teldrive-adder.md @@ -0,0 +1,16 @@ +--- +titulo: Teldrive Adder +fecha: "2026-01" +fechaFin: "2026-04" +categorias: [programacion] +peso: 25 +descripcion: Importa archivos de un canal de Telegram a Teldrive, mi nube sobre Telegram. +tecnologias: [Python, Telethon, Teldrive] +link: https://github.com/PGSCOM/Teldrive-adder +txtboton: Ver en GitHub +--- + +[Teldrive](https://github.com/tgdrive/teldrive) es una unidad self-hosted que guarda los archivos en Telegram. Estos scripts con **Telethon** traen a Teldrive lo que ya estaba subido a un canal: + +- Archivos divididos en varias partes. +- Verificación de descargas y limpieza de archivos corruptos. diff --git a/src/content/proyectos/timecode-unreal.md b/src/content/proyectos/timecode-unreal.md new file mode 100644 index 0000000..799f76f --- /dev/null +++ b/src/content/proyectos/timecode-unreal.md @@ -0,0 +1,20 @@ +--- +titulo: TimecodeUnreal +fecha: "2023-09" +fechaFin: "2024-11" +categorias: [vfx, programacion] +peso: 40 +# imagen: ../../assets/proyectos/TODO.png # TODO: captura para la card +descripcion: Convierte los renders de Unreal en .mov con timecode listos para DaVinci Resolve. +tecnologias: [Python, FFmpeg, Unreal Engine, DaVinci Resolve] +link: https://github.com/PGSCOM/TimecodeUnreal +txtboton: Ver en GitHub +--- + +Script de Python que uso en el pipeline del [Periodo de Multiguerras](/proyectos/multiguerras). + +1. Toma la secuencia de PNG que sale de Unreal Engine. +2. La junta en un `.mov` **con timecode** usando FFmpeg. +3. Genera un `.csv` de metadatos que DaVinci Resolve importa para etiquetar escenas y tomas solas. + + diff --git a/src/content/proyectos/unreal-render-farm.md b/src/content/proyectos/unreal-render-farm.md new file mode 100644 index 0000000..740ec6c --- /dev/null +++ b/src/content/proyectos/unreal-render-farm.md @@ -0,0 +1,21 @@ +--- +titulo: Render farm para Unreal +fecha: "2025-01" +categorias: [vfx, programacion] +peso: 45 +# imagen: ../../assets/proyectos/TODO.png # TODO: captura para la card +descripcion: Granja de render distribuida para el Movie Render Queue de Unreal Engine 5. +tecnologias: [Python, Flask, Unreal Engine 5, Cloudflare] +link: https://github.com/PGSCOM/unrealRenderFarm +txtboton: Ver en GitHub +--- + +Fork de [unrealRenderFarm](https://github.com/leixingyu/unrealRenderFarm) adaptado para renderizar el [Periodo de Multiguerras](/proyectos/multiguerras) entre varios ordenadores. + +## Cambios propios + +- Quité la asignación automática de worker, que limitaba cada máquina a un único trabajo. +- Manager y worker independientes para poder repartirlos en máquinas distintas. +- Manager adaptado a Windows y configuración movida a `config.json`. +- Script para mandar trabajos directamente desde la Render Queue de Unreal. +- Servidor protegido detrás de Cloudflare. From ca2e077496321b22a72affccd5b40ae059082f7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Garc=C3=ADa=20Santamar=C3=ADa?= <69808296+PGSCOM@users.noreply.github.com> Date: Sat, 26 Sep 2026 02:59:36 +0200 Subject: [PATCH 03/17] Delete .github/workflows/ci.yml --- .github/workflows/ci.yml | 91 ---------------------------------------- 1 file changed, 91 deletions(-) delete mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 65490a8..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,91 +0,0 @@ -name: Node.js deploy - -on: - push: - branches: - - main - pull_request: - types: [opened, synchronize, reopened] - workflow_dispatch: - -permissions: - contents: read - deployments: write - statuses: write - pull-requests: write - -jobs: - deployCloudflare: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: [22.15.1] - name: Publish to Cloudflare Pages - steps: - - uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - - name: Cache Astro build - uses: actions/cache@v4 - with: - path: | - ~/.npm - ${{ github.workspace }}/node_modules/.cache - key: ${{ runner.os }}-astro-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx', '**/*.astro') }} - restore-keys: | - ${{ runner.os }}-astro-${{ hashFiles('**/package-lock.json') }}- - ${{ runner.os }}-astro- - - - run: npm ci - - run: npm run check - - run: npm run build --if-present - - - name: Publish to Cloudflare Pages - id: deploy - uses: cloudflare/wrangler-action@v3 - with: - apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} - accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - # Ajusta el directorio de salida según tu configuración de build de Astro - command: pages deploy ./dist --project-name=pgscom --branch=${{ github.head_ref || github.ref_name }} - - - name: Find Preview Comment - if: github.event_name == 'pull_request' - uses: peter-evans/find-comment@v3 - id: fc - with: - issue-number: ${{ github.event.pull_request.number }} - comment-author: 'github-actions[bot]' - body-includes: "🚀 **Preview Publicada:**" - - - name: Add Pull Request Comment - if: github.event_name == 'pull_request' - uses: peter-evans/create-or-update-comment@v4 - with: - comment-id: ${{ steps.fc.outputs.comment-id }} - issue-number: ${{ github.event.pull_request.number }} - body: | - 🚀 **Preview Publicada:** - ${{ steps.deploy.outputs.url }} - edit-mode: replace - - - name: Set Deploy Status - uses: actions/github-script@v6 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - // now works because GITHUB_TOKEN has 'statuses: write' - const res = await github.rest.repos.createCommitStatus({ - owner: context.repo.owner, - repo: context.repo.repo, - sha: context.sha, - state: 'success', - context: 'Deploy', - description: 'Deployment correcto', - target_url: '${{ steps.deploy.outputs.url }}' - }); - console.log(`✅ Created status id=${res.data.id}`); From 8cbcd009667dbb1b35dfa275f7520967d3f8606c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Garc=C3=ADa=20Santamar=C3=ADa?= <69808296+PGSCOM@users.noreply.github.com> Date: Sun, 27 Sep 2026 00:58:44 +0200 Subject: [PATCH 04/17] =?UTF-8?q?Experimentos=20m=C3=A1s=20peque=C3=B1os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FORMATO.md | 3 + graphify-out/.graphify_labels.json | 26 +- graphify-out/.graphify_labels.json.sig | 2 +- graphify-out/2026-09-26/.graphify_labels.json | 85 + graphify-out/2026-09-26/GRAPH_REPORT.md | 206 + graphify-out/2026-09-26/cost.json | 12 + graphify-out/2026-09-26/graph.json | 9336 +++++++++++++++++ graphify-out/2026-09-26/manifest.json | 182 + graphify-out/GRAPH_REPORT.md | 60 +- graphify-out/graph.html | 8 +- graphify-out/graph.json | 1503 ++- src/content.config.ts | 2 + src/content/proyectos/clearer.md | 2 + src/content/proyectos/complicatedcraft.md | 2 + .../proyectos/enmarcador-de-entradas.md | 2 + .../proyectos/facebook-photos-getter.md | 2 + src/content/proyectos/horario-deusto.md | 2 + src/content/proyectos/ipad-tunnel.md | 2 + src/content/proyectos/matanyone-improved.md | 2 + src/content/proyectos/mlxchat.md | 2 +- src/content/proyectos/next-event-calendar.md | 2 + src/content/proyectos/scanner-luma.md | 2 + src/content/proyectos/superpreset4wacom.md | 2 + src/content/proyectos/teldrive-adder.md | 2 + src/content/proyectos/timecode-unreal.md | 2 + src/pages/index.astro | 38 +- src/styles/proyectos.css | 132 +- 27 files changed, 11152 insertions(+), 469 deletions(-) create mode 100644 graphify-out/2026-09-26/.graphify_labels.json create mode 100644 graphify-out/2026-09-26/GRAPH_REPORT.md create mode 100644 graphify-out/2026-09-26/cost.json create mode 100644 graphify-out/2026-09-26/graph.json create mode 100644 graphify-out/2026-09-26/manifest.json diff --git a/FORMATO.md b/FORMATO.md index f6cd358..dce8318 100644 --- a/FORMATO.md +++ b/FORMATO.md @@ -14,6 +14,9 @@ fechaFin: "2025" # Opcional — omitir si sigue activo; "aho categorias: [programacion, video] # OBLIGATORIO — uno o más IDs de categorías.json peso: 75 # Tamaño de card (0–100, defecto 50): ≥75 grande, ≥55 medio, resto pequeño. # Decide tanto el ancho en la línea de tiempo como el tamaño en la rejilla. +experimento: true # Proyecto pequeño: sale de la rejilla y va a la lista compacta de debajo + # (miniatura + nombre + descripción). Enlaza a `enlaceExterno` (o a `link`). + # En la cronología sigue saliendo como tarjeta normal. destacado: 2 # Aparece en el carrusel del hero; entero, menor = primero. # Además ordena la rejilla: los que tienen este campo van primero # (por este número), el resto sigue detrás en orden cronológico. diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index cac78cc..8c0542c 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -26,9 +26,9 @@ "24": "video-compare.js", "25": "diseño-escenarios.md", "26": "Inicios del Blog", - "27": "Identidad PGSCOM", - "28": "Portafolio Cinematográfico", - "29": "Portfolio Personal PGSCOM", + "27": "proyecto-galeria.js", + "28": "Cómo funciona", + "29": "cold-searcher.md", "30": "audio.md", "31": "resultados.md", "32": "multiguerras-timeline.js", @@ -81,5 +81,23 @@ "79": "syncthing.md", "80": "unreal-engine.md", "81": "vdo-ninja.md", - "82": "wireguard.md" + "82": "wireguard.md", + "83": "ipad-tunnel.md", + "84": "lcemp.md", + "85": "mlxchat.md", + "86": "pulseboot.md", + "87": "blender-cotracker3.md", + "88": "unreal-render-farm.md", + "89": "clearer.md", + "90": "complicatedcraft.md", + "91": "enmarcador-de-entradas.md", + "92": "facebook-photos-getter.md", + "93": "horario-deusto.md", + "94": "matanyone-improved.md", + "95": "next-event-calendar.md", + "96": "portfolio-cine.md", + "97": "scanner-luma.md", + "98": "superpreset4wacom.md", + "99": "teldrive-adder.md", + "100": "timecode-unreal.md" } diff --git a/graphify-out/.graphify_labels.json.sig b/graphify-out/.graphify_labels.json.sig index fc72d8e..6522235 100644 --- a/graphify-out/.graphify_labels.json.sig +++ b/graphify-out/.graphify_labels.json.sig @@ -1 +1 @@ -{"0": "09db89feb58dddd8", "1": "02acb357472975cd", "2": "0455a26d4d4586c0", "3": "c1c15d2c3cc83877", "4": "5fa4e536e60a240a", "5": "c74695ca20a76be2", "6": "4325723a394fefc4", "7": "030de8b074e8dbe5", "8": "bf529636626ee39d", "9": "2819b585b74ea0c0", "10": "ebf071cc055944a4", "11": "f82eaf8e0bd990e9", "12": "fdfbe915f2fdc7d2", "13": "7cbe944109d4d5ac", "14": "68003cbb88aee1cf", "15": "aad3e962af3d5c04", "16": "97e39662b2c7ebcd", "17": "c9783aa9ff108ddc", "18": "66773aed2896eb9c", "19": "faef07e32e354f2c", "20": "8fba1936539e3f25", "21": "5c0f4f87db83dfab", "22": "123ab050ab42b396", "23": "1d7dfef1f0b10071", "24": "a0c26af143d909b8", "25": "332f70e04ecb5b6c", "26": "6914642f00f4f918", "27": "7f54601fb70b29d1", "28": "2e529daf49fd4c3b", "29": "38a2762206c66763", "30": "8677b23a1f14619e", "31": "f36a58deecd8ad93", "32": "a4788bcb6084a0b7", "33": "1ebac5246c8b74c6", "34": "1f49f53cdfcecfbc", "35": "9448d4c32e9fd7f4", "36": "a81b66593d16ea43", "37": "e13cf6a9962b65e7", "38": "b990a8c87965e899", "39": "b9707472a400d728", "40": "e4657f4408c98dd9", "41": "969d2922ef865512", "42": "4b1bdf6370f0ac28", "43": "537be46503436869", "44": "b5334248daafdd27", "45": "0d8a46f63c84e980", "46": "a1eee2bbfd3f5fb6", "47": "a1c59b88b943b589", "48": "1e7ece23d188796d", "49": "e8360c5edfbe3432", "50": "2cd0fb7d3a88d966", "51": "fb6d11b22567a706", "52": "7677d44a6fa81b0f", "53": "5d74210ee424f038", "54": "2d1248c3931afd92", "55": "be60c10fd58aace8", "56": "b9c6983e5d260f8c", "57": "8cbde00f7e0cecce", "58": "b36a8b8bd06b8323", "59": "1072eaa00c992a91", "60": "194435eaca82c54a", "61": "f1b5c835861abce5", "62": "752c838647e55836", "63": "1785fee763be5721", "64": "93a288902b2d85de", "65": "4ee4d825729b0a52", "66": "915f786552820a00", "67": "931efda1bb7dfb7f", "68": "988d39c4a00d6f9a", "69": "d31ee137c6b67364", "70": "39d176b9c2ad9106", "71": "bdf1aff4bb5b81b9", "72": "f1b4370b4e4ce88e", "73": "d3719e469909c109", "74": "2bbd03803acf1320", "75": "13aac4175b5a6a8f", "76": "62a2b032ddb1cc80", "77": "273e3dc8d493e489", "78": "17b865a4f6775bb3", "79": "77031179461a6dba", "80": "edacf8fdc679d1a1", "81": "3e71320df30cf94d", "82": "1e429e0edf00a407"} \ No newline at end of file +{"0": "09db89feb58dddd8", "1": "9a6cd9bde57edf8e", "2": "8578499a308ed080", "3": "c2de0eaed7f021b5", "4": "5fa4e536e60a240a", "5": "c74695ca20a76be2", "6": "4325723a394fefc4", "7": "ae0a99965c2764ff", "8": "bf529636626ee39d", "9": "2819b585b74ea0c0", "10": "ebf071cc055944a4", "11": "f82eaf8e0bd990e9", "12": "0def873d4d1cf49a", "13": "7cbe944109d4d5ac", "14": "68003cbb88aee1cf", "15": "aad3e962af3d5c04", "16": "97e39662b2c7ebcd", "17": "c9783aa9ff108ddc", "18": "66773aed2896eb9c", "19": "faef07e32e354f2c", "20": "8fba1936539e3f25", "21": "5c0f4f87db83dfab", "22": "123ab050ab42b396", "23": "1d7dfef1f0b10071", "24": "a0c26af143d909b8", "25": "332f70e04ecb5b6c", "26": "6914642f00f4f918", "27": "b711a09d2a3d4582", "28": "b24d93816c4692c3", "29": "80db9d9693c0c366", "30": "8677b23a1f14619e", "31": "f36a58deecd8ad93", "32": "a4788bcb6084a0b7", "33": "1ebac5246c8b74c6", "34": "1f49f53cdfcecfbc", "35": "9448d4c32e9fd7f4", "36": "a81b66593d16ea43", "37": "e13cf6a9962b65e7", "38": "b990a8c87965e899", "39": "b9707472a400d728", "40": "e4657f4408c98dd9", "41": "969d2922ef865512", "42": "4b1bdf6370f0ac28", "43": "537be46503436869", "44": "b5334248daafdd27", "45": "0d8a46f63c84e980", "46": "a1eee2bbfd3f5fb6", "47": "a1c59b88b943b589", "48": "1e7ece23d188796d", "49": "e8360c5edfbe3432", "50": "2cd0fb7d3a88d966", "51": "fb6d11b22567a706", "52": "7677d44a6fa81b0f", "53": "5d74210ee424f038", "54": "2d1248c3931afd92", "55": "be60c10fd58aace8", "56": "b9c6983e5d260f8c", "57": "8cbde00f7e0cecce", "58": "b36a8b8bd06b8323", "59": "1072eaa00c992a91", "60": "194435eaca82c54a", "61": "f1b5c835861abce5", "62": "752c838647e55836", "63": "1785fee763be5721", "64": "93a288902b2d85de", "65": "4ee4d825729b0a52", "66": "915f786552820a00", "67": "931efda1bb7dfb7f", "68": "988d39c4a00d6f9a", "69": "d31ee137c6b67364", "70": "39d176b9c2ad9106", "71": "bdf1aff4bb5b81b9", "72": "f1b4370b4e4ce88e", "73": "d3719e469909c109", "74": "2bbd03803acf1320", "75": "13aac4175b5a6a8f", "76": "62a2b032ddb1cc80", "77": "273e3dc8d493e489", "78": "17b865a4f6775bb3", "79": "77031179461a6dba", "80": "edacf8fdc679d1a1", "81": "3e71320df30cf94d", "82": "1e429e0edf00a407", "83": "230f607f9d6c0996", "84": "4aa6e966511c8218", "85": "826decc091c800cf", "86": "b885f9148c693a44", "87": "eae3653bade05b38", "88": "d165686a66d48c8c", "89": "6cff4e4518f74d0b", "90": "9f2a74daea7a65ac", "91": "6f28d10c883a638b", "92": "f6ede380d3e238f4", "93": "12c061b6bf3e039b", "94": "8e4768945033a2ec", "95": "871f12253787a4d4", "96": "bb57e800e448f849", "97": "75d74fea79446d46", "98": "ff4461cb956e1c56", "99": "c64b9c9c3d0b2920", "100": "dc9ecef6a85ea045"} \ No newline at end of file diff --git a/graphify-out/2026-09-26/.graphify_labels.json b/graphify-out/2026-09-26/.graphify_labels.json new file mode 100644 index 0000000..cac78cc --- /dev/null +++ b/graphify-out/2026-09-26/.graphify_labels.json @@ -0,0 +1,85 @@ +{ + "0": "assets_logo", + "1": "index.astro", + "2": "proyecto-video.js", + "3": "gsap", + "4": "Guía de formato — ficheros de proyecto", + "5": "initRuta", + "6": "infraestructura.md", + "7": "package.json", + "8": "generate-posters.mjs", + "9": "init", + "10": "unreal.md", + "11": "premios-macula.md", + "12": "initGrafo", + "13": "scripts", + "14": "atencion-especial.mdx", + "15": "multiguerras-nav.js", + "16": "tsconfig.json", + "17": "blender.md", + "18": "preproduccion.md", + "19": "produccion-virtual.mdx", + "20": "ableton-live.md", + "21": "VDO.Ninja", + "22": "contact.ts", + "23": "Preparación del set", + "24": "video-compare.js", + "25": "diseño-escenarios.md", + "26": "Inicios del Blog", + "27": "Identidad PGSCOM", + "28": "Portafolio Cinematográfico", + "29": "Portfolio Personal PGSCOM", + "30": "audio.md", + "31": "resultados.md", + "32": "multiguerras-timeline.js", + "33": "assets_proyectos_portfolio", + "34": "CLAUDE.md", + "35": "data_categorias", + "36": "data_contacto", + "37": "data_multiguerras", + "38": "pages_styles", + "39": "VideoCompareSlider.astro", + "40": "docker.md", + "41": "nas-casero.md", + "42": "tailscale.md", + "43": "introduccion.md", + "44": "multiguerras.md", + "45": "styles_contacto", + "46": "styles_habilidades", + "47": "styles_multiguerras", + "48": "styles_proyecto_detalle", + "49": "styles_proyectos", + "50": "styles_titulo_proyecto", + "51": "styles_video_page", + "52": "app-inventor-firebase.md", + "53": "astro.md", + "54": "habilidades/blender.md", + "55": "cloudflare.md", + "56": "cpp.md", + "57": "habilidades/davinci-resolve.md", + "58": "esp32.md", + "59": "ffmpeg-hls.md", + "60": "fotogrametria.md", + "61": "freecad.md", + "62": "gitea.md", + "63": "github-actions.md", + "64": "gnome.md", + "65": "go.md", + "66": "godot.md", + "67": "hugo.md", + "68": "ia-local.md", + "69": "ia-vfx.md", + "70": "inkscape.md", + "71": "obs-studio.md", + "72": "postgresql.md", + "73": "produccion-virtual.md", + "74": "python.md", + "75": "react.md", + "76": "render-farms.md", + "77": "servidores-minecraft.md", + "78": "swift.md", + "79": "syncthing.md", + "80": "unreal-engine.md", + "81": "vdo-ninja.md", + "82": "wireguard.md" +} diff --git a/graphify-out/2026-09-26/GRAPH_REPORT.md b/graphify-out/2026-09-26/GRAPH_REPORT.md new file mode 100644 index 0000000..4152ea8 --- /dev/null +++ b/graphify-out/2026-09-26/GRAPH_REPORT.md @@ -0,0 +1,206 @@ +# Graph Report - FixDistribucionSkills (2026-09-25) + +## Corpus Check +- 95 files · ~3,344,426 words +- Verdict: corpus is large enough that graph structure adds value. +- Unclassified: 18 file(s) not represented in the graph (top: .css 10, (none) 7, .woff2 1) + +## Summary +- 379 nodes · 398 edges · 83 communities (23 shown, 60 thin omitted) +- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 8 edges (avg confidence: 0.88) +- Token cost: 0 input · 0 output + +## Graph Freshness +- Built from commit: `1db7bc1c` +- Run `git rev-parse HEAD` and compare to check if the graph is stale. +- Run `graphify update .` after code changes (no API cost). + +## Community Hubs (Navigation) +- assets_logo +- index.astro +- proyecto-video.js +- gsap +- Guía de formato — ficheros de proyecto +- initRuta +- infraestructura.md +- package.json +- generate-posters.mjs +- init +- unreal.md +- premios-macula.md +- initGrafo +- scripts +- atencion-especial.mdx +- multiguerras-nav.js +- tsconfig.json +- blender.md +- preproduccion.md +- produccion-virtual.mdx +- VDO.Ninja +- contact.ts +- Preparación del set +- video-compare.js +- diseño-escenarios.md +- Inicios del Blog +- Identidad PGSCOM +- Portafolio Cinematográfico +- Portfolio Personal PGSCOM +- audio.md +- resultados.md +- multiguerras-timeline.js +- assets_proyectos_portfolio +- data_categorias +- data_contacto +- data_multiguerras +- pages_styles +- styles_contacto +- styles_habilidades +- styles_multiguerras +- styles_proyecto_detalle +- styles_proyectos +- styles_titulo_proyecto +- styles_video_page + +## God Nodes (most connected - your core abstractions) +1. `Guía de formato — ficheros de proyecto` - 17 edges +2. `init()` - 11 edges +3. `initGrafo()` - 11 edges +4. `scripts` - 9 edges +5. `initRuta()` - 9 edges +6. `gsap` - 8 edges +7. `montarFuente()` - 6 edges +8. `build()` - 6 edges +9. `formatRangoFecha()` - 6 edges +10. `9. Vídeos` - 6 edges + +## Surprising Connections (you probably didn't know these) +- `Stack` --references--> `build()` [INFERRED] + AGENTS.md → src/scripts/proyectos-ruta.js +- `Galería de imágenes / vídeo (lightbox)` --references--> `build()` [INFERRED] + FORMATO.md → src/scripts/proyectos-ruta.js +- `GET()` --calls--> `esEnCurso()` [EXTRACTED] + src/pages/sitemap.xml.ts → src/utils/fechas.js +- `reproducir()` --calls--> `montarFuente()` [EXTRACTED] + src/scripts/card-video.js → src/scripts/hls-media.js +- `envolver()` --calls--> `esHLS()` [EXTRACTED] + src/scripts/proyecto-video.js → src/scripts/hls-media.js + +## Import Cycles +- None detected. + +## Communities (83 total, 60 thin omitted) + +### Community 1 - "index.astro" +Cohesion: 0.09 +Nodes (25): ref_astro_assets, ref_astro_content, src_assets_logo, src_assets_proyectos_portfolio, collections, habilidades, multiguerras, proyectos (+17 more) + +### Community 2 - "proyecto-video.js" +Cohesion: 0.15 +Nodes (12): reproducir(), videos, esHLS(), montarFuente(), ajustarSkin(), ATRIBUTOS_A_COPIAR, CONFIG_HLS, derivarPoster() (+4 more) + +### Community 3 - "gsap" +Cohesion: 0.21 +Nodes (8): gsap, initHero(), entrance(), startIdleFloat(), dispatchDone(), initPreloader(), hint, lenis + +### Community 4 - "Guía de formato — ficheros de proyecto" +Cohesion: 0.07 +Nodes (29): 10. Desplegable `
`, 11. Sección con franja de color (`pd-seccion`), 12. Anclas para sub-items, 13. Pestañas (`data-tab`), 14. Micrositio de capítulos (Multiguerras), 15. Habilidades: el grafo sobre "Proyectos", 1. Frontmatter, 2. Encabezados en el cuerpo (+21 more) + +### Community 5 - "initRuta" +Cohesion: 0.13 +Nodes (16): Comandos, Contenido de proyectos, Convenciones, Estructura, graphify, Stack, 6. Imágenes, Galería de imágenes / vídeo (lightbox) (+8 more) + +### Community 6 - "infraestructura.md" +Cohesion: 0.12 +Nodes (15): Composición, Metadatos, Montaje:, PostgreSQL, VFX, Almacenamiento:, Automatizaciones, Carcasa (+7 more) + +### Community 7 - "package.json" +Cohesion: 0.06 +Nodes (30): dependencies, astro, @astrojs/mdx, gsap, hls.js, lenis, photoswipe, @videojs/html (+22 more) + +### Community 8 - "generate-posters.mjs" +Cohesion: 0.20 +Nodes (10): @ffmpeg-installer/ffmpeg, ref_node_child_process, ref_node_fs, ref_node_path, sharp, DIRS, extraerFrame(), generarPoster() (+2 more) + +### Community 9 - "init" +Cohesion: 0.35 +Nodes (10): init(), applyScrub(), attachEndedHandler(), onProgress(), prepareNext(), scheduleScrub(), setVideoSource(), startAfterZoom() (+2 more) + +### Community 10 - "unreal.md" +Cohesion: 0.20 +Nodes (9): Assets y referencias, Control de versiones, Cámara virtual y tracking, Extras andantes, Extras digitales, MetaHuman, Multitud estática, Portales (+1 more) + +### Community 11 - "premios-macula.md" +Cohesion: 0.20 +Nodes (9): Audio, Detrás de cámaras, Galería, Generación de entradas, QRs generados por IA, ¿Qué es este proyecto?, Sistema de cámaras, Validación (+1 more) + +### Community 12 - "initGrafo" +Cohesion: 0.32 +Nodes (11): azar(), initGrafo(), caja(), maquetar(), medirEtiqueta(), orientar(), posicionReposo(), repartir() (+3 more) + +### Community 13 - "scripts" +Cohesion: 0.22 +Nodes (9): scripts, astro, build, check, dev, posters, prebuild, predev (+1 more) + +### Community 14 - "atencion-especial.mdx" +Cohesion: 0.25 +Nodes (7): Escena corriendo, Escena explosión muro, Final del jefe volando, Primer plano cárcel, Recuperación del tracking con IA (CoTracker), Referencia, Referencia + +### Community 15 - "multiguerras-nav.js" +Cohesion: 0.32 +Nodes (5): abrirGrupo(), centrarActivo(), indice, marcarActivo(), secciones + +### Community 16 - "tsconfig.json" +Cohesion: 0.29 +Nodes (6): astro/tsconfigs/strict, compilerOptions, types, exclude, extends, include + +### Community 17 - "blender.md" +Cohesion: 0.29 +Nodes (6): Compilación, Hecho y renderizado en Blender:, Por qué no lo usé, Portal (en Blender), Render Farm (De Flamenco a SheepIt), Simulaciones + +### Community 18 - "preproduccion.md" +Cohesion: 0.29 +Nodes (6): Decisiones técnicas, FPS, Guion, Notion, Organización, SDR vs HDR + +### Community 19 - "produccion-virtual.mdx" +Cohesion: 0.29 +Nodes (6): Calibración de cámaras, Emparejamiento de tomas reales y virtuales, Grabación, Movie Render Queue, Render Farm de Unreal, Tracking de cámara + +### Community 21 - "VDO.Ninja" +Cohesion: 0.33 +Nodes (5): [#1182 — Complete Spanish translation](https://github.com/steveseguin/vdo.ninja/pull/1182) · Abril 2025, [#1184 — Fix: Language reorder by time zone](https://github.com/steveseguin/vdo.ninja/pull/1184) · Abril 2025, [#688 — Fix IPv6 header check](https://github.com/danielpaulus/go-ios/pull/688) · Marzo 2026, go-ios, VDO.Ninja + +### Community 22 - "contact.ts" +Cohesion: 0.40 +Nodes (3): Env, TelegramResponse, TurnstileResponse + +### Community 23 - "Preparación del set" +Cohesion: 0.40 +Nodes (4): Galería primer rodaje, Preparación del set, Primer set, Segundo set + +### Community 24 - "video-compare.js" +Cohesion: 0.67 +Nodes (3): initVideoCompareSliders(), setupSlider(), teardowns + +## Knowledge Gaps +- **142 isolated node(s):** `TurnstileResponse`, `TelegramResponse`, `Env`, `name`, `type` (+137 more) + These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 231 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) +- **60 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. + +## Suggested Questions +_Questions this graph is uniquely positioned to answer:_ + +- **Why does `gsap` connect `gsap` to `initRuta`, `package.json`?** + _High betweenness centrality (0.098) - this node is a cross-community bridge._ +- **What connects `TurnstileResponse`, `TelegramResponse`, `Env` to the rest of the system?** + _142 weakly-connected nodes found - possible documentation gaps or missing edges._ +- **Should `index.astro` be split into smaller, more focused modules?** + _Cohesion score 0.08902439024390243 - nodes in this community are weakly interconnected._ +- **Should `proyecto-video.js` be split into smaller, more focused modules?** + _Cohesion score 0.14736842105263157 - nodes in this community are weakly interconnected._ +- **Should `Guía de formato — ficheros de proyecto` be split into smaller, more focused modules?** + _Cohesion score 0.06896551724137931 - nodes in this community are weakly interconnected._ +- **Should `initRuta` be split into smaller, more focused modules?** + _Cohesion score 0.13333333333333333 - nodes in this community are weakly interconnected._ +- **Should `infraestructura.md` be split into smaller, more focused modules?** + _Cohesion score 0.11764705882352941 - nodes in this community are weakly interconnected._ \ No newline at end of file diff --git a/graphify-out/2026-09-26/cost.json b/graphify-out/2026-09-26/cost.json new file mode 100644 index 0000000..f72605a --- /dev/null +++ b/graphify-out/2026-09-26/cost.json @@ -0,0 +1,12 @@ +{ + "runs": [ + { + "date": "2026-09-20T00:39:40.459172+00:00", + "input_tokens": 0, + "output_tokens": 0, + "files": 121 + } + ], + "total_input_tokens": 0, + "total_output_tokens": 0 +} \ No newline at end of file diff --git a/graphify-out/2026-09-26/graph.json b/graphify-out/2026-09-26/graph.json new file mode 100644 index 0000000..4324633 --- /dev/null +++ b/graphify-out/2026-09-26/graph.json @@ -0,0 +1,9336 @@ +{ + "directed": false, + "multigraph": false, + "graph": {}, + "nodes": [ + { + "id": "functions_contact_env", + "label": "Env", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 22, + "community_name": "contact.ts", + "file_type": "code", + "norm_label": "env", + "source_file": "functions/contact.ts", + "source_location": "L12" + }, + { + "id": "functions_contact_telegramresponse", + "label": "TelegramResponse", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 22, + "community_name": "contact.ts", + "file_type": "code", + "norm_label": "telegramresponse", + "source_file": "functions/contact.ts", + "source_location": "L6" + }, + { + "id": "functions_contact_turnstileresponse", + "label": "TurnstileResponse", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 22, + "community_name": "contact.ts", + "file_type": "code", + "norm_label": "turnstileresponse", + "source_file": "functions/contact.ts", + "source_location": "L1" + }, + { + "id": "src_pages_proyectos_id_getstaticpaths", + "label": "getStaticPaths()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "getstaticpaths()", + "source_file": "src/pages/proyectos/[id].astro", + "source_location": "L14" + }, + { + "id": "src_pages_proyectos_id_video_getstaticpaths", + "label": "getStaticPaths()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "getstaticpaths()", + "source_file": "src/pages/proyectos/[id]/video.astro", + "source_location": "L9" + }, + { + "id": "src_pages_sitemap_xml_get", + "label": "GET()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "get()", + "source_file": "src/pages/sitemap.xml.ts", + "source_location": "L6" + }, + { + "id": "src_utils_fechas_esencurso", + "label": "esEnCurso()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "esencurso()", + "source_file": "src/utils/fechas.js", + "source_location": "L15" + }, + { + "id": "src_utils_fechas_formatfecha", + "label": "formatFecha()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "formatfecha()", + "source_file": "src/utils/fechas.js", + "source_location": "L5" + }, + { + "id": "src_utils_fechas_formatrangofecha", + "label": "formatRangoFecha()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "formatrangofecha()", + "source_file": "src/utils/fechas.js", + "source_location": "L20" + }, + { + "id": "src_utils_titulo_palabrasletras", + "label": "palabrasLetras()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "palabrasletras()", + "source_file": "src/utils/titulo.js", + "source_location": "L5" + }, + { + "id": "src_scripts_habilidades_grafo_azar", + "label": "azar()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "initGrafo", + "file_type": "code", + "norm_label": "azar()", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L28" + }, + { + "id": "src_scripts_habilidades_grafo_initgrafo", + "label": "initGrafo()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "initGrafo", + "file_type": "code", + "norm_label": "initgrafo()", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L37" + }, + { + "id": "src_scripts_habilidades_grafo_initgrafo_caja", + "label": "caja()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "initGrafo", + "file_type": "code", + "norm_label": "caja()", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L183" + }, + { + "id": "src_scripts_habilidades_grafo_initgrafo_maquetar", + "label": "maquetar()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "initGrafo", + "file_type": "code", + "norm_label": "maquetar()", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L405" + }, + { + "id": "src_scripts_habilidades_grafo_initgrafo_mediretiqueta", + "label": "medirEtiqueta()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "initGrafo", + "file_type": "code", + "norm_label": "mediretiqueta()", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L176" + }, + { + "id": "src_scripts_habilidades_grafo_initgrafo_orientar", + "label": "orientar()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "initGrafo", + "file_type": "code", + "norm_label": "orientar()", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L166" + }, + { + "id": "src_scripts_habilidades_grafo_initgrafo_posicionreposo", + "label": "posicionReposo()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "initGrafo", + "file_type": "code", + "norm_label": "posicionreposo()", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L113" + }, + { + "id": "src_scripts_habilidades_grafo_initgrafo_repartir", + "label": "repartir()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "initGrafo", + "file_type": "code", + "norm_label": "repartir()", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L189" + }, + { + "id": "src_scripts_habilidades_grafo_initgrafo_resaltar", + "label": "resaltar()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "initGrafo", + "file_type": "code", + "norm_label": "resaltar()", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L444" + }, + { + "id": "src_scripts_habilidades_grafo_initgrafo_seleccionar", + "label": "seleccionar()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "initGrafo", + "file_type": "code", + "norm_label": "seleccionar()", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L481" + }, + { + "id": "src_scripts_habilidades_grafo_initgrafo_soltar", + "label": "soltar()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "initGrafo", + "file_type": "code", + "norm_label": "soltar()", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L461" + }, + { + "id": "src_scripts_habilidades_grafo_initgrafo_tick", + "label": "tick()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "initGrafo", + "file_type": "code", + "norm_label": "tick()", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L136" + }, + { + "id": "src_scripts_multiguerras_nav_abrirgrupo", + "label": "abrirGrupo()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "multiguerras-nav.js", + "file_type": "code", + "norm_label": "abrirgrupo()", + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L26" + }, + { + "id": "src_scripts_multiguerras_nav_bloquearspy", + "label": "bloquearSpy()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "multiguerras-nav.js", + "file_type": "code", + "norm_label": "bloquearspy()", + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L73" + }, + { + "id": "src_scripts_multiguerras_nav_centraractivo", + "label": "centrarActivo()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "multiguerras-nav.js", + "file_type": "code", + "norm_label": "centraractivo()", + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L55" + }, + { + "id": "src_scripts_multiguerras_nav_marcaractivo", + "label": "marcarActivo()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "multiguerras-nav.js", + "file_type": "code", + "norm_label": "marcaractivo()", + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L36" + }, + { + "id": "src_scripts_multiguerras_nav_marcarsubactivo", + "label": "marcarSubActivo()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "multiguerras-nav.js", + "file_type": "code", + "norm_label": "marcarsubactivo()", + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L63" + }, + { + "id": "src_scripts_card_video_reproducir", + "label": "reproducir()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "reproducir()", + "source_file": "src/scripts/card-video.js", + "source_location": "L9" + }, + { + "id": "src_scripts_card_video_volveralposter", + "label": "volverAlPoster()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "volveralposter()", + "source_file": "src/scripts/card-video.js", + "source_location": "L15" + }, + { + "id": "src_scripts_hls_media_eshls", + "label": "esHLS()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "eshls()", + "source_file": "src/scripts/hls-media.js", + "source_location": "L10" + }, + { + "id": "src_scripts_hls_media_montarfuente", + "label": "montarFuente()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "montarfuente()", + "source_file": "src/scripts/hls-media.js", + "source_location": "L15" + }, + { + "id": "src_scripts_proyecto_video_ajustarskin", + "label": "ajustarSkin()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "ajustarskin()", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L34" + }, + { + "id": "src_scripts_proyecto_video_derivarposter", + "label": "derivarPoster()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "derivarposter()", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L58" + }, + { + "id": "src_scripts_proyecto_video_envolver", + "label": "envolver()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "envolver()", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L63" + }, + { + "id": "src_scripts_proyecto_video_resolverfuente", + "label": "resolverFuente()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "resolverfuente()", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L49" + }, + { + "id": "functions_contact_onrequestpost", + "label": "onRequestPost()", + "_callable": true, + "_origin": "ast", + "community": 22, + "community_name": "contact.ts", + "file_type": "code", + "norm_label": "onrequestpost()", + "source_file": "functions/contact.ts", + "source_location": "L18" + }, + { + "id": "src_scripts_video_compare_initvideocomparesliders", + "label": "initVideoCompareSliders()", + "_callable": true, + "_origin": "ast", + "community": 24, + "community_name": "video-compare.js", + "file_type": "code", + "norm_label": "initvideocomparesliders()", + "source_file": "src/scripts/video-compare.js", + "source_location": "L185" + }, + { + "id": "src_scripts_video_compare_setupslider", + "label": "setupSlider()", + "_callable": true, + "_origin": "ast", + "community": 24, + "community_name": "video-compare.js", + "file_type": "code", + "norm_label": "setupslider()", + "source_file": "src/scripts/video-compare.js", + "source_location": "L36" + }, + { + "id": "src_scripts_hero_inithero", + "label": "initHero()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "gsap", + "file_type": "code", + "norm_label": "inithero()", + "source_file": "src/scripts/hero.js", + "source_location": "L12" + }, + { + "id": "src_scripts_hero_inithero_entrance", + "label": "entrance()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "gsap", + "file_type": "code", + "norm_label": "entrance()", + "source_file": "src/scripts/hero.js", + "source_location": "L54" + }, + { + "id": "src_scripts_hero_inithero_startidlefloat", + "label": "startIdleFloat()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "gsap", + "file_type": "code", + "norm_label": "startidlefloat()", + "source_file": "src/scripts/hero.js", + "source_location": "L39" + }, + { + "id": "src_scripts_preloader_dispatchdone", + "label": "dispatchDone()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "gsap", + "file_type": "code", + "norm_label": "dispatchdone()", + "source_file": "src/scripts/preloader.js", + "source_location": "L8" + }, + { + "id": "src_scripts_preloader_initpreloader", + "label": "initPreloader()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "gsap", + "file_type": "code", + "norm_label": "initpreloader()", + "source_file": "src/scripts/preloader.js", + "source_location": "L15" + }, + { + "id": "src_scripts_proyectos_ruta_initruta", + "label": "initRuta()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "code", + "norm_label": "initruta()", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L21" + }, + { + "id": "src_scripts_proyectos_ruta_initruta_build", + "label": "build()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "code", + "norm_label": "build()", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L115" + }, + { + "id": "src_scripts_proyectos_ruta_initruta_construirmascara", + "label": "construirMascara()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "code", + "norm_label": "construirmascara()", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L77" + }, + { + "id": "src_scripts_proyectos_ruta_initruta_prepararruta", + "label": "prepararRuta()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "code", + "norm_label": "prepararruta()", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L168" + }, + { + "id": "src_scripts_proyectos_ruta_initruta_puntos", + "label": "puntos()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "code", + "norm_label": "puntos()", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L97" + }, + { + "id": "src_scripts_proyectos_ruta_initruta_rectlayout", + "label": "rectLayout()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "code", + "norm_label": "rectlayout()", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L67" + }, + { + "id": "src_scripts_proyectos_ruta_initruta_setfiltro", + "label": "setFiltro()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "code", + "norm_label": "setfiltro()", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L251" + }, + { + "id": "src_scripts_proyectos_ruta_initruta_setvista", + "label": "setVista()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "code", + "norm_label": "setvista()", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L279" + }, + { + "id": "src_scripts_proyectos_ruta_marcarsinimagen", + "label": "marcarSinImagen()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "code", + "norm_label": "marcarsinimagen()", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L13" + }, + { + "id": "src_scripts_proyecto_galeria_crearenlace", + "label": "crearEnlace()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "crearenlace()", + "source_file": "src/scripts/proyecto-galeria.js", + "source_location": "L22" + }, + { + "id": "src_scripts_proyecto_galeria_derivarposter", + "label": "derivarPoster()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "derivarposter()", + "source_file": "src/scripts/proyecto-galeria.js", + "source_location": "L17" + }, + { + "id": "scripts_generate_posters_extraerframe", + "label": "extraerFrame()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "generate-posters.mjs", + "file_type": "code", + "norm_label": "extraerframe()", + "source_file": "scripts/generate-posters.mjs", + "source_location": "L43" + }, + { + "id": "scripts_generate_posters_generarposter", + "label": "generarPoster()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "generate-posters.mjs", + "file_type": "code", + "norm_label": "generarposter()", + "source_file": "scripts/generate-posters.mjs", + "source_location": "L50" + }, + { + "id": "scripts_generate_posters_listadevideos", + "label": "listaDeVideos()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "generate-posters.mjs", + "file_type": "code", + "norm_label": "listadevideos()", + "source_file": "scripts/generate-posters.mjs", + "source_location": "L31" + }, + { + "id": "src_scripts_galaxia_scroll_init", + "label": "init()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "init", + "file_type": "code", + "norm_label": "init()", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L11" + }, + { + "id": "src_scripts_galaxia_scroll_init_applyscrub", + "label": "applyScrub()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "init", + "file_type": "code", + "norm_label": "applyscrub()", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L56" + }, + { + "id": "src_scripts_galaxia_scroll_init_attachendedhandler", + "label": "attachEndedHandler()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "init", + "file_type": "code", + "norm_label": "attachendedhandler()", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L114" + }, + { + "id": "src_scripts_galaxia_scroll_init_done", + "label": "done()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "init", + "file_type": "code", + "norm_label": "done()", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L158" + }, + { + "id": "src_scripts_galaxia_scroll_init_onprogress", + "label": "onProgress()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "init", + "file_type": "code", + "norm_label": "onprogress()", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L197" + }, + { + "id": "src_scripts_galaxia_scroll_init_preparenext", + "label": "prepareNext()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "init", + "file_type": "code", + "norm_label": "preparenext()", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L109" + }, + { + "id": "src_scripts_galaxia_scroll_init_schedulescrub", + "label": "scheduleScrub()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "init", + "file_type": "code", + "norm_label": "schedulescrub()", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L68" + }, + { + "id": "src_scripts_galaxia_scroll_init_setvideosource", + "label": "setVideoSource()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "init", + "file_type": "code", + "norm_label": "setvideosource()", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L82" + }, + { + "id": "src_scripts_galaxia_scroll_init_startafterzoom", + "label": "startAfterZoom()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "init", + "file_type": "code", + "norm_label": "startafterzoom()", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L140" + }, + { + "id": "src_scripts_galaxia_scroll_init_swaptopreloaded", + "label": "swapToPreloaded()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "init", + "file_type": "code", + "norm_label": "swaptopreloaded()", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L123" + }, + { + "id": "src_scripts_galaxia_scroll_init_waitformetadata", + "label": "waitForMetadata()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "init", + "file_type": "code", + "norm_label": "waitformetadata()", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L74" + }, + { + "id": "astro_assets", + "label": "astro:assets", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "confidence": "EXTRACTED", + "file_type": "code", + "norm_label": "astro:assets", + "source_file": "astro:assets" + }, + { + "id": "astro_content", + "label": "astro:content", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "confidence": "EXTRACTED", + "file_type": "code", + "norm_label": "astro:content", + "source_file": "astro:content" + }, + { + "id": "src_components_proyectocard", + "label": "ProyectoCard.astro", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "proyectocard.astro", + "source_file": "src/components/ProyectoCard.astro", + "source_location": "L1" + }, + { + "id": "src_components_proyectohero", + "label": "ProyectoHero.astro", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "proyectohero.astro", + "source_file": "src/components/ProyectoHero.astro", + "source_location": "L1" + }, + { + "id": "src_components_tematoggle", + "label": "TemaToggle.astro", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "tematoggle.astro", + "source_file": "src/components/TemaToggle.astro", + "source_location": "L1" + }, + { + "id": "src_content_config", + "label": "content.config.ts", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "content.config.ts", + "source_file": "src/content.config.ts", + "source_location": "L1" + }, + { + "id": "src_content_config_collections", + "label": "collections", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "collections", + "source_file": "src/content.config.ts", + "source_location": "L133" + }, + { + "id": "src_content_config_habilidades", + "label": "habilidades", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "habilidades", + "source_file": "src/content.config.ts", + "source_location": "L118" + }, + { + "id": "src_content_config_multiguerras", + "label": "multiguerras", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "multiguerras", + "source_file": "src/content.config.ts", + "source_location": "L92" + }, + { + "id": "src_content_config_proyectos", + "label": "proyectos", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "proyectos", + "source_file": "src/content.config.ts", + "source_location": "L7" + }, + { + "id": "src_layouts_layout", + "label": "Layout.astro", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "layout.astro", + "source_file": "src/layouts/Layout.astro", + "source_location": "L1" + }, + { + "id": "src_pages_index", + "label": "index.astro", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "index.astro", + "source_file": "src/pages/index.astro", + "source_location": "L1" + }, + { + "id": "src_pages_proyectos_id", + "label": "[id].astro", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "[id].astro", + "source_file": "src/pages/proyectos/[id].astro", + "source_location": "L1" + }, + { + "id": "src_pages_proyectos_id_video", + "label": "video.astro", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "video.astro", + "source_file": "src/pages/proyectos/[id]/video.astro", + "source_location": "L1" + }, + { + "id": "src_pages_proyectos_multiguerras", + "label": "multiguerras.astro", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "multiguerras.astro", + "source_file": "src/pages/proyectos/multiguerras.astro", + "source_location": "L1" + }, + { + "id": "src_pages_sitemap_xml", + "label": "sitemap.xml.ts", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "sitemap.xml.ts", + "source_file": "src/pages/sitemap.xml.ts", + "source_location": "L1" + }, + { + "id": "src_utils_fechas", + "label": "fechas.js", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "fechas.js", + "source_file": "src/utils/fechas.js", + "source_location": "L1" + }, + { + "id": "src_utils_fechas_meses", + "label": "MESES", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "meses", + "source_file": "src/utils/fechas.js", + "source_location": "L3" + }, + { + "id": "src_utils_titulo", + "label": "titulo.js", + "_origin": "ast", + "community": 1, + "community_name": "index.astro", + "file_type": "code", + "norm_label": "titulo.js", + "source_file": "src/utils/titulo.js", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_unreal", + "label": "unreal.md", + "_origin": "ast", + "community": 10, + "community_name": "unreal.md", + "file_type": "document", + "frontmatter": { + "titulo": "Unreal", + "orden": "7", + "categoria": "vfx", + "imagen": "../../assets/proyectos/multiguerras/unreal.png" + }, + "node_kind": "page", + "norm_label": "unreal.md", + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_unreal_assets_y_referencias", + "label": "Assets y referencias", + "_origin": "ast", + "community": 10, + "community_name": "unreal.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "assets y referencias", + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L86" + }, + { + "id": "src_content_multiguerras_unreal_control_de_versiones", + "label": "Control de versiones", + "_origin": "ast", + "community": 10, + "community_name": "unreal.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "control de versiones", + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L67" + }, + { + "id": "src_content_multiguerras_unreal_c\u00e1mara_virtual_y_tracking", + "label": "C\u00e1mara virtual y tracking", + "_origin": "ast", + "community": 10, + "community_name": "unreal.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "camara virtual y tracking", + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L59" + }, + { + "id": "src_content_multiguerras_unreal_extras_andantes", + "label": "Extras andantes", + "_origin": "ast", + "community": 10, + "community_name": "unreal.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "extras andantes", + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L28" + }, + { + "id": "src_content_multiguerras_unreal_extras_digitales", + "label": "Extras digitales", + "_origin": "ast", + "community": 10, + "community_name": "unreal.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "extras digitales", + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L26" + }, + { + "id": "src_content_multiguerras_unreal_metahuman", + "label": "MetaHuman", + "_origin": "ast", + "community": 10, + "community_name": "unreal.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "metahuman", + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L50" + }, + { + "id": "src_content_multiguerras_unreal_multitud_est\u00e1tica", + "label": "Multitud est\u00e1tica", + "_origin": "ast", + "community": 10, + "community_name": "unreal.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "multitud estatica", + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L43" + }, + { + "id": "src_content_multiguerras_unreal_portales", + "label": "Portales", + "_origin": "ast", + "community": 10, + "community_name": "unreal.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "portales", + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L10" + }, + { + "id": "src_content_multiguerras_unreal_renderizado", + "label": "Renderizado", + "_origin": "ast", + "community": 10, + "community_name": "unreal.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "renderizado", + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L64" + }, + { + "id": "src_content_proyectos_premios_macula", + "label": "premios-macula.md", + "_origin": "ast", + "community": 11, + "community_name": "premios-macula.md", + "file_type": "document", + "frontmatter": { + "titulo": "Premios M\u00e1cula", + "fecha": "2022-05", + "fechaFin": "ahora", + "categorias": "[programacion, video, vfx]", + "peso": "80", + "destacado": "2", + "imagen": "../../assets/proyectos/Macula.png", + "descripcion": "Gala de premios de cortometrajes escolares", + "tecnologias": "[Blender, OBS Studio, App Inventor, Firebase, Web]", + "ocultarFecha": "true", + "link": "https://premiosmacula.es" + }, + "node_kind": "page", + "norm_label": "premios-macula.md", + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L1" + }, + { + "id": "src_content_proyectos_premios_macula_audio", + "label": "Audio", + "_origin": "ast", + "community": 11, + "community_name": "premios-macula.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "audio", + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L62" + }, + { + "id": "src_content_proyectos_premios_macula_detr\u00e1s_de_c\u00e1maras", + "label": "Detr\u00e1s de c\u00e1maras", + "_origin": "ast", + "community": 11, + "community_name": "premios-macula.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "detras de camaras", + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L163" + }, + { + "id": "src_content_proyectos_premios_macula_galer\u00eda", + "label": "Galer\u00eda", + "_origin": "ast", + "community": 11, + "community_name": "premios-macula.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "galeria", + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L89" + }, + { + "id": "src_content_proyectos_premios_macula_generaci\u00f3n_de_entradas", + "label": "Generaci\u00f3n de entradas", + "_origin": "ast", + "community": 11, + "community_name": "premios-macula.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "generacion de entradas", + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L131" + }, + { + "id": "src_content_proyectos_premios_macula_qrs_generados_por_ia", + "label": "QRs generados por IA", + "_origin": "ast", + "community": 11, + "community_name": "premios-macula.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "qrs generados por ia", + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L138" + }, + { + "id": "src_content_proyectos_premios_macula_qu\u00e9_es_este_proyecto", + "label": "\u00bfQu\u00e9 es este proyecto?", + "_origin": "ast", + "community": 11, + "community_name": "premios-macula.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\u00bfque es este proyecto?", + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L38" + }, + { + "id": "src_content_proyectos_premios_macula_sistema_de_c\u00e1maras", + "label": "Sistema de c\u00e1maras", + "_origin": "ast", + "community": 11, + "community_name": "premios-macula.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "sistema de camaras", + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L55" + }, + { + "id": "src_content_proyectos_premios_macula_validaci\u00f3n", + "label": "Validaci\u00f3n", + "_origin": "ast", + "community": 11, + "community_name": "premios-macula.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "validacion", + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L147" + }, + { + "id": "src_content_proyectos_premios_macula_video_sistemas_2025", + "label": "Video sistemas 2025", + "_origin": "ast", + "community": 11, + "community_name": "premios-macula.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "video sistemas 2025", + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L82" + }, + { + "id": "package_scripts", + "label": "scripts", + "_origin": "ast", + "community": 13, + "community_name": "scripts", + "file_type": "code", + "norm_label": "scripts", + "source_file": "package.json", + "source_location": "L5" + }, + { + "id": "package_scripts_astro", + "label": "astro", + "_origin": "ast", + "community": 13, + "community_name": "scripts", + "file_type": "code", + "norm_label": "astro", + "source_file": "package.json", + "source_location": "L11" + }, + { + "id": "package_scripts_build", + "label": "build", + "_origin": "ast", + "community": 13, + "community_name": "scripts", + "file_type": "code", + "norm_label": "build", + "source_file": "package.json", + "source_location": "L9" + }, + { + "id": "package_scripts_check", + "label": "check", + "_origin": "ast", + "community": 13, + "community_name": "scripts", + "file_type": "code", + "norm_label": "check", + "source_file": "package.json", + "source_location": "L12" + }, + { + "id": "package_scripts_dev", + "label": "dev", + "_origin": "ast", + "community": 13, + "community_name": "scripts", + "file_type": "code", + "norm_label": "dev", + "source_file": "package.json", + "source_location": "L7" + }, + { + "id": "package_scripts_posters", + "label": "posters", + "_origin": "ast", + "community": 13, + "community_name": "scripts", + "file_type": "code", + "norm_label": "posters", + "source_file": "package.json", + "source_location": "L13" + }, + { + "id": "package_scripts_prebuild", + "label": "prebuild", + "_origin": "ast", + "community": 13, + "community_name": "scripts", + "file_type": "code", + "norm_label": "prebuild", + "source_file": "package.json", + "source_location": "L8" + }, + { + "id": "package_scripts_predev", + "label": "predev", + "_origin": "ast", + "community": 13, + "community_name": "scripts", + "file_type": "code", + "norm_label": "predev", + "source_file": "package.json", + "source_location": "L6" + }, + { + "id": "package_scripts_preview", + "label": "preview", + "_origin": "ast", + "community": 13, + "community_name": "scripts", + "file_type": "code", + "norm_label": "preview", + "source_file": "package.json", + "source_location": "L10" + }, + { + "id": "src_content_multiguerras_atencion_especial", + "label": "atencion-especial.mdx", + "_origin": "ast", + "community": 14, + "community_name": "atencion-especial.mdx", + "file_type": "document", + "frontmatter": { + "titulo": "Atenci\u00f3n especial", + "orden": "9", + "categoria": "vfx", + "resumen": "Escenas destacadas", + "imagen": "../../assets/proyectos/multiguerras/atencionespecial.webp", + "opacidadtarjeta": "0.25" + }, + "node_kind": "page", + "norm_label": "atencion-especial.mdx", + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_atencion_especial_escena_corriendo", + "label": "Escena corriendo", + "_origin": "ast", + "community": 14, + "community_name": "atencion-especial.mdx", + "file_type": "document", + "node_kind": "heading", + "norm_label": "escena corriendo", + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L30" + }, + { + "id": "src_content_multiguerras_atencion_especial_escena_explosi\u00f3n_muro", + "label": "Escena explosi\u00f3n muro", + "_origin": "ast", + "community": 14, + "community_name": "atencion-especial.mdx", + "file_type": "document", + "node_kind": "heading", + "norm_label": "escena explosion muro", + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L41" + }, + { + "id": "src_content_multiguerras_atencion_especial_final_del_jefe_volando", + "label": "Final del jefe volando", + "_origin": "ast", + "community": 14, + "community_name": "atencion-especial.mdx", + "file_type": "document", + "node_kind": "heading", + "norm_label": "final del jefe volando", + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L67" + }, + { + "id": "src_content_multiguerras_atencion_especial_primer_plano_c\u00e1rcel", + "label": "Primer plano c\u00e1rcel", + "_origin": "ast", + "community": 14, + "community_name": "atencion-especial.mdx", + "file_type": "document", + "node_kind": "heading", + "norm_label": "primer plano carcel", + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L50" + }, + { + "id": "src_content_multiguerras_atencion_especial_recuperaci\u00f3n_del_tracking_con_ia_cotracker", + "label": "Recuperaci\u00f3n del tracking con IA (CoTracker)", + "_origin": "ast", + "community": 14, + "community_name": "atencion-especial.mdx", + "file_type": "document", + "node_kind": "heading", + "norm_label": "recuperacion del tracking con ia (cotracker)", + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L16" + }, + { + "id": "src_content_multiguerras_atencion_especial_referencia", + "label": "Referencia", + "_origin": "ast", + "community": 14, + "community_name": "atencion-especial.mdx", + "file_type": "document", + "node_kind": "heading", + "norm_label": "referencia", + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L38" + }, + { + "id": "src_content_multiguerras_atencion_especial_referencia_61", + "label": "Referencia", + "_origin": "ast", + "community": 14, + "community_name": "atencion-especial.mdx", + "file_type": "document", + "node_kind": "heading", + "norm_label": "referencia", + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L61" + }, + { + "id": "src_scripts_multiguerras_nav", + "label": "multiguerras-nav.js", + "_origin": "ast", + "community": 15, + "community_name": "multiguerras-nav.js", + "file_type": "code", + "norm_label": "multiguerras-nav.js", + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L1" + }, + { + "id": "src_scripts_multiguerras_nav_indice", + "label": "indice", + "_origin": "ast", + "community": 15, + "community_name": "multiguerras-nav.js", + "file_type": "code", + "norm_label": "indice", + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L5" + }, + { + "id": "src_scripts_multiguerras_nav_secciones", + "label": "secciones", + "_origin": "ast", + "community": 15, + "community_name": "multiguerras-nav.js", + "file_type": "code", + "norm_label": "secciones", + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L6" + }, + { + "id": "tsconfig", + "label": "tsconfig.json", + "_origin": "ast", + "community": 16, + "community_name": "tsconfig.json", + "file_type": "code", + "norm_label": "tsconfig.json", + "source_file": "tsconfig.json", + "source_location": "L1" + }, + { + "id": "tsconfig_compileroptions", + "label": "compilerOptions", + "_origin": "ast", + "community": 16, + "community_name": "tsconfig.json", + "file_type": "code", + "norm_label": "compileroptions", + "source_file": "tsconfig.json", + "source_location": "L10" + }, + { + "id": "tsconfig_compileroptions_types", + "label": "types", + "_origin": "ast", + "community": 16, + "community_name": "tsconfig.json", + "file_type": "code", + "norm_label": "types", + "source_file": "tsconfig.json", + "source_location": "L11" + }, + { + "id": "tsconfig_exclude", + "label": "exclude", + "_origin": "ast", + "community": 16, + "community_name": "tsconfig.json", + "file_type": "code", + "norm_label": "exclude", + "source_file": "tsconfig.json", + "source_location": "L7" + }, + { + "id": "tsconfig_extends", + "label": "extends", + "_origin": "ast", + "community": 16, + "community_name": "tsconfig.json", + "file_type": "code", + "norm_label": "extends", + "source_file": "tsconfig.json", + "source_location": "L2" + }, + { + "id": "tsconfig_include", + "label": "include", + "_origin": "ast", + "community": 16, + "community_name": "tsconfig.json", + "file_type": "code", + "norm_label": "include", + "source_file": "tsconfig.json", + "source_location": "L3" + }, + { + "id": "ref_astro_tsconfigs_strict", + "label": "astro/tsconfigs/strict", + "_origin": "ast", + "community": 16, + "community_name": "tsconfig.json", + "file_type": "concept", + "norm_label": "astro/tsconfigs/strict", + "source_file": "tsconfig.json", + "source_location": "L2" + }, + { + "id": "src_content_multiguerras_blender", + "label": "multiguerras/blender.md", + "_origin": "ast", + "community": 17, + "community_name": "blender.md", + "file_type": "document", + "frontmatter": { + "titulo": "Blender", + "orden": "8", + "categoria": "vfx", + "resumen": "Modelado, el portal, simulaciones y composici\u00f3n final.", + "imagen": "../../assets/proyectos/multiguerras/blender.png", + "opacidadtarjeta": "0.25", + "opacidadindice": "0.6" + }, + "node_kind": "page", + "norm_label": "multiguerras/blender.md", + "source_file": "src/content/multiguerras/blender.md", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_blender_compilaci\u00f3n", + "label": "Compilaci\u00f3n", + "_origin": "ast", + "community": 17, + "community_name": "blender.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "compilacion", + "source_file": "src/content/multiguerras/blender.md", + "source_location": "L50" + }, + { + "id": "src_content_multiguerras_blender_hecho_y_renderizado_en_blender", + "label": "Hecho y renderizado en Blender:", + "_origin": "ast", + "community": 17, + "community_name": "blender.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "hecho y renderizado en blender:", + "source_file": "src/content/multiguerras/blender.md", + "source_location": "L11" + }, + { + "id": "src_content_multiguerras_blender_por_qu\u00e9_no_lo_us\u00e9", + "label": "Por qu\u00e9 no lo us\u00e9", + "_origin": "ast", + "community": 17, + "community_name": "blender.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "por que no lo use", + "source_file": "src/content/multiguerras/blender.md", + "source_location": "L53" + }, + { + "id": "src_content_multiguerras_blender_portal_en_blender", + "label": "Portal (en Blender)", + "_origin": "ast", + "community": 17, + "community_name": "blender.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "portal (en blender)", + "source_file": "src/content/multiguerras/blender.md", + "source_location": "L22" + }, + { + "id": "src_content_multiguerras_blender_render_farm_de_flamenco_a_sheepit", + "label": "Render Farm (De Flamenco a SheepIt)", + "_origin": "ast", + "community": 17, + "community_name": "blender.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "render farm (de flamenco a sheepit)", + "source_file": "src/content/multiguerras/blender.md", + "source_location": "L45" + }, + { + "id": "src_content_multiguerras_blender_simulaciones", + "label": "Simulaciones", + "_origin": "ast", + "community": 17, + "community_name": "blender.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "simulaciones", + "source_file": "src/content/multiguerras/blender.md", + "source_location": "L33" + }, + { + "id": "src_content_multiguerras_preproduccion", + "label": "preproduccion.md", + "_origin": "ast", + "community": 18, + "community_name": "preproduccion.md", + "file_type": "document", + "frontmatter": { + "titulo": "Preproducci\u00f3n", + "orden": "2", + "categoria": "video" + }, + "node_kind": "page", + "norm_label": "preproduccion.md", + "source_file": "src/content/multiguerras/preproduccion.md", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_preproduccion_decisiones_t\u00e9cnicas", + "label": "Decisiones t\u00e9cnicas", + "_origin": "ast", + "community": 18, + "community_name": "preproduccion.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decisiones tecnicas", + "source_file": "src/content/multiguerras/preproduccion.md", + "source_location": "L34" + }, + { + "id": "src_content_multiguerras_preproduccion_fps", + "label": "FPS", + "_origin": "ast", + "community": 18, + "community_name": "preproduccion.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "fps", + "source_file": "src/content/multiguerras/preproduccion.md", + "source_location": "L36" + }, + { + "id": "src_content_multiguerras_preproduccion_guion", + "label": "Guion", + "_origin": "ast", + "community": 18, + "community_name": "preproduccion.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "guion", + "source_file": "src/content/multiguerras/preproduccion.md", + "source_location": "L7" + }, + { + "id": "src_content_multiguerras_preproduccion_notion", + "label": "Notion", + "_origin": "ast", + "community": 18, + "community_name": "preproduccion.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "notion", + "source_file": "src/content/multiguerras/preproduccion.md", + "source_location": "L24" + }, + { + "id": "src_content_multiguerras_preproduccion_organizaci\u00f3n", + "label": "Organizaci\u00f3n", + "_origin": "ast", + "community": 18, + "community_name": "preproduccion.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "organizacion", + "source_file": "src/content/multiguerras/preproduccion.md", + "source_location": "L17" + }, + { + "id": "src_content_multiguerras_preproduccion_sdr_vs_hdr", + "label": "SDR vs HDR", + "_origin": "ast", + "community": 18, + "community_name": "preproduccion.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "sdr vs hdr", + "source_file": "src/content/multiguerras/preproduccion.md", + "source_location": "L38" + }, + { + "id": "src_content_multiguerras_produccion_virtual", + "label": "produccion-virtual.mdx", + "_origin": "ast", + "community": 19, + "community_name": "produccion-virtual.mdx", + "file_type": "document", + "frontmatter": { + "titulo": "Producci\u00f3n Virtual", + "orden": "5", + "categoria": "video", + "resumen": "Unreal Engine 5, c\u00e1mara virtual, tracking de c\u00e1mara.", + "imagen": "../../assets/proyectos/multiguerras/prodvirt.jpg" + }, + "node_kind": "page", + "norm_label": "produccion-virtual.mdx", + "source_file": "src/content/multiguerras/produccion-virtual.mdx", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_produccion_virtual_calibraci\u00f3n_de_c\u00e1maras", + "label": "Calibraci\u00f3n de c\u00e1maras", + "_origin": "ast", + "community": 19, + "community_name": "produccion-virtual.mdx", + "file_type": "document", + "node_kind": "heading", + "norm_label": "calibracion de camaras", + "source_file": "src/content/multiguerras/produccion-virtual.mdx", + "source_location": "L31" + }, + { + "id": "src_content_multiguerras_produccion_virtual_emparejamiento_de_tomas_reales_y_virtuales", + "label": "Emparejamiento de tomas reales y virtuales", + "_origin": "ast", + "community": 19, + "community_name": "produccion-virtual.mdx", + "file_type": "document", + "node_kind": "heading", + "norm_label": "emparejamiento de tomas reales y virtuales", + "source_file": "src/content/multiguerras/produccion-virtual.mdx", + "source_location": "L42" + }, + { + "id": "src_content_multiguerras_produccion_virtual_grabaci\u00f3n", + "label": "Grabaci\u00f3n", + "_origin": "ast", + "community": 19, + "community_name": "produccion-virtual.mdx", + "file_type": "document", + "node_kind": "heading", + "norm_label": "grabacion", + "source_file": "src/content/multiguerras/produccion-virtual.mdx", + "source_location": "L37" + }, + { + "id": "src_content_multiguerras_produccion_virtual_movie_render_queue", + "label": "Movie Render Queue", + "_origin": "ast", + "community": 19, + "community_name": "produccion-virtual.mdx", + "file_type": "document", + "node_kind": "heading", + "norm_label": "movie render queue", + "source_file": "src/content/multiguerras/produccion-virtual.mdx", + "source_location": "L54" + }, + { + "id": "src_content_multiguerras_produccion_virtual_render_farm_de_unreal", + "label": "Render Farm de Unreal", + "_origin": "ast", + "community": 19, + "community_name": "produccion-virtual.mdx", + "file_type": "document", + "node_kind": "heading", + "norm_label": "render farm de unreal", + "source_file": "src/content/multiguerras/produccion-virtual.mdx", + "source_location": "L60" + }, + { + "id": "src_content_multiguerras_produccion_virtual_tracking_de_c\u00e1mara", + "label": "Tracking de c\u00e1mara", + "_origin": "ast", + "community": 19, + "community_name": "produccion-virtual.mdx", + "file_type": "document", + "node_kind": "heading", + "norm_label": "tracking de camara", + "source_file": "src/content/multiguerras/produccion-virtual.mdx", + "source_location": "L15" + }, + { + "id": "hls_js", + "label": "hls.js", + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "confidence": "EXTRACTED", + "file_type": "code", + "norm_label": "hls.js", + "source_file": "hls.js" + }, + { + "id": "hlsjs_video", + "label": "@videojs/html/media/hlsjs-video", + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "confidence": "EXTRACTED", + "file_type": "code", + "norm_label": "@videojs/html/media/hlsjs-video", + "source_file": "@videojs/html/media/hlsjs-video" + }, + { + "id": "minimal_skin", + "label": "@videojs/html/video/minimal-skin", + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "confidence": "EXTRACTED", + "file_type": "code", + "norm_label": "@videojs/html/video/minimal-skin", + "source_file": "@videojs/html/video/minimal-skin" + }, + { + "id": "player", + "label": "@videojs/html/video/player", + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "confidence": "EXTRACTED", + "file_type": "code", + "norm_label": "@videojs/html/video/player", + "source_file": "@videojs/html/video/player" + }, + { + "id": "src_scripts_card_video", + "label": "card-video.js", + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "card-video.js", + "source_file": "src/scripts/card-video.js", + "source_location": "L1" + }, + { + "id": "src_scripts_card_video_videos", + "label": "videos", + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "videos", + "source_file": "src/scripts/card-video.js", + "source_location": "L35" + }, + { + "id": "src_scripts_hls_media", + "label": "hls-media.js", + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "hls-media.js", + "source_file": "src/scripts/hls-media.js", + "source_location": "L1" + }, + { + "id": "src_scripts_proyecto_video", + "label": "proyecto-video.js", + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "proyecto-video.js", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L1" + }, + { + "id": "src_scripts_proyecto_video_atributos_a_copiar", + "label": "ATRIBUTOS_A_COPIAR", + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "atributos_a_copiar", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L7" + }, + { + "id": "src_scripts_proyecto_video_config_hls", + "label": "CONFIG_HLS", + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "config_hls", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L16" + }, + { + "id": "src_scripts_proyecto_video_trailer", + "label": "trailer", + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "trailer", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L143" + }, + { + "id": "src_scripts_proyecto_video_videos", + "label": "videos", + "_origin": "ast", + "community": 2, + "community_name": "proyecto-video.js", + "file_type": "code", + "norm_label": "videos", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L118" + }, + { + "id": "src_content_habilidades_ableton_live", + "label": "ableton-live.md", + "_origin": "ast", + "community": 20, + "community_name": "ableton-live.md", + "file_type": "document", + "frontmatter": { + "titulo": "Ableton Live", + "categoria": "video", + "icono": "abletonlive", + "orden": "240", + "resumen": "Banda sonora y dise\u00f1o de sonido." + }, + "node_kind": "page", + "norm_label": "ableton-live.md", + "source_file": "src/content/habilidades/ableton-live.md", + "source_location": "L1" + }, + { + "id": "src_content_proyectos_github_contributions", + "label": "github-contributions.md", + "_origin": "ast", + "community": 21, + "community_name": "VDO.Ninja", + "file_type": "document", + "frontmatter": { + "titulo": "Contribuciones Open Source", + "fecha": "2026-03", + "categorias": "[programacion]", + "peso": "65", + "imagen": "../../assets/proyectos/Contribuciones.png", + "descripcion": "PRs merged en proyectos reales \u2014 VDO.ninja (WebRTC, ~6k \u2b50) y go-ios (automatizaci\u00f3n iOS).", + "tecnologias": "[JavaScript, Go, Git, GitHub]", + "link": "https://github.com/PGSCOM" + }, + "node_kind": "page", + "norm_label": "github-contributions.md", + "source_file": "src/content/proyectos/github-contributions.md", + "source_location": "L1" + }, + { + "id": "src_content_proyectos_github_contributions_1182_complete_spanish_translation_https_github_com_steveseguin_vdo_ninja_pull_1182_abril_2025", + "label": "[#1182 \u2014 Complete Spanish translation](https://github.com/steveseguin/vdo.ninja/pull/1182) \u00b7 Abril 2025", + "_origin": "ast", + "community": 21, + "community_name": "VDO.Ninja", + "file_type": "document", + "node_kind": "heading", + "norm_label": "[#1182 \u2014 complete spanish translation](https://github.com/steveseguin/vdo.ninja/pull/1182) \u00b7 abril 2025", + "source_file": "src/content/proyectos/github-contributions.md", + "source_location": "L20" + }, + { + "id": "src_content_proyectos_github_contributions_1184_fix_language_reorder_by_time_zone_https_github_com_steveseguin_vdo_ninja_pull_1184_abril_2025", + "label": "[#1184 \u2014 Fix: Language reorder by time zone](https://github.com/steveseguin/vdo.ninja/pull/1184) \u00b7 Abril 2025", + "_origin": "ast", + "community": 21, + "community_name": "VDO.Ninja", + "file_type": "document", + "node_kind": "heading", + "norm_label": "[#1184 \u2014 fix: language reorder by time zone](https://github.com/steveseguin/vdo.ninja/pull/1184) \u00b7 abril 2025", + "source_file": "src/content/proyectos/github-contributions.md", + "source_location": "L24" + }, + { + "id": "src_content_proyectos_github_contributions_688_fix_ipv6_header_check_https_github_com_danielpaulus_go_ios_pull_688_marzo_2026", + "label": "[#688 \u2014 Fix IPv6 header check](https://github.com/danielpaulus/go-ios/pull/688) \u00b7 Marzo 2026", + "_origin": "ast", + "community": 21, + "community_name": "VDO.Ninja", + "file_type": "document", + "node_kind": "heading", + "norm_label": "[#688 \u2014 fix ipv6 header check](https://github.com/danielpaulus/go-ios/pull/688) \u00b7 marzo 2026", + "source_file": "src/content/proyectos/github-contributions.md", + "source_location": "L34" + }, + { + "id": "src_content_proyectos_github_contributions_go_ios", + "label": "go-ios", + "_origin": "ast", + "community": 21, + "community_name": "VDO.Ninja", + "file_type": "document", + "node_kind": "heading", + "norm_label": "go-ios", + "source_file": "src/content/proyectos/github-contributions.md", + "source_location": "L30" + }, + { + "id": "src_content_proyectos_github_contributions_vdo_ninja", + "label": "VDO.Ninja", + "_origin": "ast", + "community": 21, + "community_name": "VDO.Ninja", + "file_type": "document", + "node_kind": "heading", + "norm_label": "vdo.ninja", + "source_file": "src/content/proyectos/github-contributions.md", + "source_location": "L16" + }, + { + "id": "functions_contact", + "label": "contact.ts", + "_origin": "ast", + "community": 22, + "community_name": "contact.ts", + "file_type": "code", + "norm_label": "contact.ts", + "source_file": "functions/contact.ts", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_rodaje", + "label": "rodaje.md", + "_origin": "ast", + "community": 23, + "community_name": "Preparaci\u00f3n del set", + "file_type": "document", + "frontmatter": { + "titulo": "Rodaje", + "orden": "6", + "categoria": "video", + "imagen": "../../assets/proyectos/multiguerras/1errodaje1.jpg" + }, + "node_kind": "page", + "norm_label": "rodaje.md", + "source_file": "src/content/multiguerras/rodaje.md", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_rodaje_galer\u00eda_primer_rodaje", + "label": "Galer\u00eda primer rodaje", + "_origin": "ast", + "community": 23, + "community_name": "Preparaci\u00f3n del set", + "file_type": "document", + "node_kind": "heading", + "norm_label": "galeria primer rodaje", + "source_file": "src/content/multiguerras/rodaje.md", + "source_location": "L22" + }, + { + "id": "src_content_multiguerras_rodaje_preparaci\u00f3n_del_set", + "label": "Preparaci\u00f3n del set", + "_origin": "ast", + "community": 23, + "community_name": "Preparaci\u00f3n del set", + "file_type": "document", + "node_kind": "heading", + "norm_label": "preparacion del set", + "source_file": "src/content/multiguerras/rodaje.md", + "source_location": "L8" + }, + { + "id": "src_content_multiguerras_rodaje_primer_set", + "label": "Primer set", + "_origin": "ast", + "community": 23, + "community_name": "Preparaci\u00f3n del set", + "file_type": "document", + "node_kind": "heading", + "norm_label": "primer set", + "source_file": "src/content/multiguerras/rodaje.md", + "source_location": "L10" + }, + { + "id": "src_content_multiguerras_rodaje_segundo_set", + "label": "Segundo set", + "_origin": "ast", + "community": 23, + "community_name": "Preparaci\u00f3n del set", + "file_type": "document", + "node_kind": "heading", + "norm_label": "segundo set", + "source_file": "src/content/multiguerras/rodaje.md", + "source_location": "L16" + }, + { + "id": "src_scripts_video_compare", + "label": "video-compare.js", + "_origin": "ast", + "community": 24, + "community_name": "video-compare.js", + "file_type": "code", + "norm_label": "video-compare.js", + "source_file": "src/scripts/video-compare.js", + "source_location": "L1" + }, + { + "id": "src_scripts_video_compare_teardowns", + "label": "teardowns", + "_origin": "ast", + "community": 24, + "community_name": "video-compare.js", + "file_type": "code", + "norm_label": "teardowns", + "source_file": "src/scripts/video-compare.js", + "source_location": "L34" + }, + { + "id": "src_content_multiguerras_dise\u00f1o_escenarios", + "label": "dise\u00f1o-escenarios.md", + "_origin": "ast", + "community": 25, + "community_name": "dise\u00f1o-escenarios.md", + "file_type": "document", + "frontmatter": { + "titulo": "Dise\u00f1o de escenarios", + "orden": "4", + "categoria": "vfx", + "imagen": "../../assets/proyectos/multiguerras/escenaentrenamiento.png" + }, + "node_kind": "page", + "norm_label": "diseno-escenarios.md", + "source_file": "src/content/multiguerras/dise\u00f1o-escenarios.md", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_dise\u00f1o_escenarios_dise\u00f1ados_en_blender", + "label": "Dise\u00f1ados en Blender", + "_origin": "ast", + "community": 25, + "community_name": "dise\u00f1o-escenarios.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "disenados en blender", + "source_file": "src/content/multiguerras/dise\u00f1o-escenarios.md", + "source_location": "L16" + }, + { + "id": "src_content_multiguerras_dise\u00f1o_escenarios_dise\u00f1ados_en_unreal", + "label": "Dise\u00f1ados en Unreal", + "_origin": "ast", + "community": 25, + "community_name": "dise\u00f1o-escenarios.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "disenados en unreal", + "source_file": "src/content/multiguerras/dise\u00f1o-escenarios.md", + "source_location": "L27" + }, + { + "id": "src_content_proyectos_blog_personal", + "label": "blog-personal.md", + "_origin": "ast", + "community": 26, + "community_name": "Inicios del Blog", + "file_type": "document", + "frontmatter": { + "titulo": "Blog Personal", + "fecha": "2025", + "fechaFin": "ahora", + "categorias": "[desarrollo-web]", + "peso": "45", + "destacado": "6", + "imagen": "../../assets/proyectos/experimentos.png", + "trailer": "https://elfumadonapoteosico3d5kultra5d.pages.dev/master.m3u8", + "video": "https://elfumadonapoteosico3d5kultra5d.pages.dev/master.m3u8", + "descripcion": "Experimentaciones personales en proyectos peque\u00f1os.", + "descripcionexterior": "true", + "tecnologias": "[HTML, CSS, JavaScript]", + "link": "https://blog.pgscom.es" + }, + "node_kind": "page", + "norm_label": "blog-personal.md", + "source_file": "src/content/proyectos/blog-personal.md", + "source_location": "L1" + }, + { + "id": "src_content_proyectos_blog_personal_hay_m\u00e1s_informaci\u00f3n_de_la_migraci\u00f3n_en_esta_entrada_del_blog_dedicada_https_blog_pgscom_es_posts_intro_blog", + "label": "Hay m\u00e1s informaci\u00f3n de la migraci\u00f3n [en esta entrada del Blog dedicada](https://blog.pgscom.es/posts/intro-blog/)", + "_origin": "ast", + "community": 26, + "community_name": "Inicios del Blog", + "file_type": "document", + "node_kind": "heading", + "norm_label": "hay mas informacion de la migracion [en esta entrada del blog dedicada](https://blog.pgscom.es/posts/intro-blog/)", + "source_file": "src/content/proyectos/blog-personal.md", + "source_location": "L24" + }, + { + "id": "src_content_proyectos_blog_personal_inicios_del_blog", + "label": "Inicios del Blog", + "_origin": "ast", + "community": 26, + "community_name": "Inicios del Blog", + "file_type": "document", + "node_kind": "heading", + "norm_label": "inicios del blog", + "source_file": "src/content/proyectos/blog-personal.md", + "source_location": "L18" + }, + { + "id": "src_content_proyectos_identidad_pgscom", + "label": "identidad-pgscom.md", + "_origin": "ast", + "community": 27, + "community_name": "Identidad PGSCOM", + "file_type": "document", + "frontmatter": { + "titulo": "Identidad PGSCOM", + "fecha": "2022-03", + "categorias": "[dise\u00f1o-grafico]", + "peso": "55", + "descripcion": "Dise\u00f1o de identidad visual completa.", + "tecnologias": "[Illustrator, Photoshop, Figma]" + }, + "node_kind": "page", + "norm_label": "identidad-pgscom.md", + "source_file": "src/content/proyectos/identidad-pgscom.md", + "source_location": "L1" + }, + { + "id": "src_content_proyectos_identidad_pgscom_elementos", + "label": "Elementos:", + "_origin": "ast", + "community": 27, + "community_name": "Identidad PGSCOM", + "file_type": "document", + "node_kind": "heading", + "norm_label": "elementos:", + "source_file": "src/content/proyectos/identidad-pgscom.md", + "source_location": "L14" + }, + { + "id": "src_content_proyectos_identidad_pgscom_identidad_pgscom", + "label": "Identidad PGSCOM", + "_origin": "ast", + "community": 27, + "community_name": "Identidad PGSCOM", + "file_type": "document", + "node_kind": "heading", + "norm_label": "identidad pgscom", + "source_file": "src/content/proyectos/identidad-pgscom.md", + "source_location": "L10" + }, + { + "id": "src_content_proyectos_portafolio_cine", + "label": "portafolio-cine.md", + "_origin": "ast", + "community": 28, + "community_name": "Portafolio Cinematogr\u00e1fico", + "file_type": "document", + "frontmatter": { + "titulo": "Portafolio Cinematogr\u00e1fico", + "fecha": "2024-02", + "categorias": "[desarrollo-web, video-produccion]", + "peso": "60", + "destacado": "4", + "imagen": "../../assets/proyectos/PortfolioCortos.png", + "descripcion": "Galer\u00eda de proyectos audiovisuales con reproductor de video integrado.", + "tecnologias": "[HTML5, CSS3, JavaScript, Video.js]", + "link": "https://cine.pgscom.es" + }, + "node_kind": "page", + "norm_label": "portafolio-cine.md", + "source_file": "src/content/proyectos/portafolio-cine.md", + "source_location": "L1" + }, + { + "id": "src_content_proyectos_portafolio_cine_funcionalidades", + "label": "Funcionalidades:", + "_origin": "ast", + "community": 28, + "community_name": "Portafolio Cinematogr\u00e1fico", + "file_type": "document", + "node_kind": "heading", + "norm_label": "funcionalidades:", + "source_file": "src/content/proyectos/portafolio-cine.md", + "source_location": "L17" + }, + { + "id": "src_content_proyectos_portafolio_cine_portafolio_cinematogr\u00e1fico", + "label": "Portafolio Cinematogr\u00e1fico", + "_origin": "ast", + "community": 28, + "community_name": "Portafolio Cinematogr\u00e1fico", + "file_type": "document", + "node_kind": "heading", + "norm_label": "portafolio cinematografico", + "source_file": "src/content/proyectos/portafolio-cine.md", + "source_location": "L13" + }, + { + "id": "src_content_proyectos_portfolio_pgscom", + "label": "portfolio-pgscom.md", + "_origin": "ast", + "community": 29, + "community_name": "Portfolio Personal PGSCOM", + "file_type": "document", + "frontmatter": { + "titulo": "Portfolio PGSCOM", + "fecha": "2025-03", + "categorias": "[desarrollo-web]", + "peso": "90", + "imagen": "../../assets/proyectos/portfolio.png", + "descripcion": "Sitio web personal desarrollado con Astro, React y animaciones con AnimeJS.", + "tecnologias": "[Astro, React, TypeScript, AnimeJS, CSS3]", + "link": "https://pgscom.es" + }, + "node_kind": "page", + "norm_label": "portfolio-pgscom.md", + "source_file": "src/content/proyectos/portfolio-pgscom.md", + "source_location": "L1" + }, + { + "id": "src_content_proyectos_portfolio_pgscom_caracter\u00edsticas_principales", + "label": "Caracter\u00edsticas principales:", + "_origin": "ast", + "community": 29, + "community_name": "Portfolio Personal PGSCOM", + "file_type": "document", + "node_kind": "heading", + "norm_label": "caracteristicas principales:", + "source_file": "src/content/proyectos/portfolio-pgscom.md", + "source_location": "L16" + }, + { + "id": "src_content_proyectos_portfolio_pgscom_portfolio_personal_pgscom", + "label": "Portfolio Personal PGSCOM", + "_origin": "ast", + "community": 29, + "community_name": "Portfolio Personal PGSCOM", + "file_type": "document", + "node_kind": "heading", + "norm_label": "portfolio personal pgscom", + "source_file": "src/content/proyectos/portfolio-pgscom.md", + "source_location": "L12" + }, + { + "id": "src_scripts_galaxia_scroll", + "label": "galaxia-scroll.js", + "_origin": "ast", + "community": 3, + "community_name": "gsap", + "file_type": "code", + "norm_label": "galaxia-scroll.js", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L1" + }, + { + "id": "src_scripts_habilidades_grafo", + "label": "habilidades-grafo.js", + "_origin": "ast", + "community": 3, + "community_name": "gsap", + "file_type": "code", + "norm_label": "habilidades-grafo.js", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L1" + }, + { + "id": "src_scripts_hero", + "label": "hero.js", + "_origin": "ast", + "community": 3, + "community_name": "gsap", + "file_type": "code", + "norm_label": "hero.js", + "source_file": "src/scripts/hero.js", + "source_location": "L1" + }, + { + "id": "src_scripts_preloader", + "label": "preloader.js", + "_origin": "ast", + "community": 3, + "community_name": "gsap", + "file_type": "code", + "norm_label": "preloader.js", + "source_file": "src/scripts/preloader.js", + "source_location": "L1" + }, + { + "id": "src_scripts_proyecto_scroll_hint", + "label": "proyecto-scroll-hint.js", + "_origin": "ast", + "community": 3, + "community_name": "gsap", + "file_type": "code", + "norm_label": "proyecto-scroll-hint.js", + "source_file": "src/scripts/proyecto-scroll-hint.js", + "source_location": "L1" + }, + { + "id": "src_scripts_proyecto_scroll_hint_hint", + "label": "hint", + "_origin": "ast", + "community": 3, + "community_name": "gsap", + "file_type": "code", + "norm_label": "hint", + "source_file": "src/scripts/proyecto-scroll-hint.js", + "source_location": "L6" + }, + { + "id": "src_scripts_smooth_scroll", + "label": "smooth-scroll.js", + "_origin": "ast", + "community": 3, + "community_name": "gsap", + "file_type": "code", + "norm_label": "smooth-scroll.js", + "source_file": "src/scripts/smooth-scroll.js", + "source_location": "L1" + }, + { + "id": "src_scripts_smooth_scroll_lenis", + "label": "lenis", + "_origin": "ast", + "community": 3, + "community_name": "gsap", + "file_type": "code", + "norm_label": "lenis", + "source_file": "src/scripts/smooth-scroll.js", + "source_location": "L12" + }, + { + "id": "ref_gsap", + "label": "gsap", + "_origin": "ast", + "community": 3, + "community_name": "gsap", + "file_type": "concept", + "norm_label": "gsap", + "source_file": "package.json", + "source_location": "L19" + }, + { + "id": "src_content_multiguerras_audio", + "label": "audio.md", + "_origin": "ast", + "community": 30, + "community_name": "audio.md", + "file_type": "document", + "frontmatter": { + "titulo": "Sonido", + "orden": "11", + "categoria": "video", + "resumen": "Banda sonora original y dise\u00f1o sonoro del cortometraje.", + "imagen": "../../assets/proyectos/multiguerras/sonido.png" + }, + "node_kind": "page", + "norm_label": "audio.md", + "source_file": "src/content/multiguerras/audio.md", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_audio_banda_sonora_y_efectos_de_sonido", + "label": "Banda sonora y efectos de sonido", + "_origin": "ast", + "community": 30, + "community_name": "audio.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "banda sonora y efectos de sonido", + "source_file": "src/content/multiguerras/audio.md", + "source_location": "L11" + }, + { + "id": "src_content_multiguerras_resultados", + "label": "resultados.md", + "_origin": "ast", + "community": 31, + "community_name": "resultados.md", + "file_type": "document", + "frontmatter": { + "titulo": "Resultados", + "orden": "12", + "categoria": "video" + }, + "node_kind": "page", + "norm_label": "resultados.md", + "source_file": "src/content/multiguerras/resultados.md", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_resultados_directo_completo_detr\u00e1s_de_las_c\u00e1maras", + "label": "Directo completo detr\u00e1s de las c\u00e1maras", + "_origin": "ast", + "community": 31, + "community_name": "resultados.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "directo completo detras de las camaras", + "source_file": "src/content/multiguerras/resultados.md", + "source_location": "L13" + }, + { + "id": "src_scripts_multiguerras_timeline", + "label": "multiguerras-timeline.js", + "_origin": "ast", + "community": 32, + "community_name": "multiguerras-timeline.js", + "file_type": "code", + "norm_label": "multiguerras-timeline.js", + "source_file": "src/scripts/multiguerras-timeline.js", + "source_location": "L1" + }, + { + "id": "src_scripts_multiguerras_timeline_datosscript", + "label": "datosScript", + "_origin": "ast", + "community": 32, + "community_name": "multiguerras-timeline.js", + "file_type": "code", + "norm_label": "datosscript", + "source_file": "src/scripts/multiguerras-timeline.js", + "source_location": "L4" + }, + { + "id": "claude", + "label": "CLAUDE.md", + "_origin": "ast", + "community": 34, + "community_name": "CLAUDE.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "claude.md", + "source_file": "CLAUDE.md", + "source_location": "L1" + }, + { + "id": "src_components_videocompareslider", + "label": "VideoCompareSlider.astro", + "_origin": "ast", + "community": 39, + "community_name": "VideoCompareSlider.astro", + "file_type": "code", + "norm_label": "videocompareslider.astro", + "source_file": "src/components/VideoCompareSlider.astro", + "source_location": "L1" + }, + { + "id": "formato_10_desplegable_details", + "label": "10. Desplegable `
`", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "10. desplegable `
`", + "source_file": "FORMATO.md", + "source_location": "L333" + }, + { + "id": "formato_11_secci\u00f3n_con_franja_de_color_pd_seccion", + "label": "11. Secci\u00f3n con franja de color (`pd-seccion`)", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "11. seccion con franja de color (`pd-seccion`)", + "source_file": "FORMATO.md", + "source_location": "L351" + }, + { + "id": "formato_12_anclas_para_sub_items", + "label": "12. Anclas para sub-items", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "12. anclas para sub-items", + "source_file": "FORMATO.md", + "source_location": "L393" + }, + { + "id": "formato_13_pesta\u00f1as_data_tab", + "label": "13. Pesta\u00f1as (`data-tab`)", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "13. pestanas (`data-tab`)", + "source_file": "FORMATO.md", + "source_location": "L405" + }, + { + "id": "formato_14_micrositio_de_cap\u00edtulos_multiguerras", + "label": "14. Micrositio de cap\u00edtulos (Multiguerras)", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "14. micrositio de capitulos (multiguerras)", + "source_file": "FORMATO.md", + "source_location": "L449" + }, + { + "id": "formato_15_habilidades_el_grafo_sobre_proyectos", + "label": "15. Habilidades: el grafo sobre \"Proyectos\"", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "15. habilidades: el grafo sobre \"proyectos\"", + "source_file": "FORMATO.md", + "source_location": "L545" + }, + { + "id": "formato_1_frontmatter", + "label": "1. Frontmatter", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. frontmatter", + "source_file": "FORMATO.md", + "source_location": "L7" + }, + { + "id": "formato_2_encabezados_en_el_cuerpo", + "label": "2. Encabezados en el cuerpo", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. encabezados en el cuerpo", + "source_file": "FORMATO.md", + "source_location": "L54" + }, + { + "id": "formato_3_texto_b\u00e1sico", + "label": "3. Texto b\u00e1sico", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. texto basico", + "source_file": "FORMATO.md", + "source_location": "L66" + }, + { + "id": "formato_4_listas", + "label": "4. Listas", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "4. listas", + "source_file": "FORMATO.md", + "source_location": "L78" + }, + { + "id": "formato_5_enlaces", + "label": "5. Enlaces", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "5. enlaces", + "source_file": "FORMATO.md", + "source_location": "L91" + }, + { + "id": "formato_7_cita_destacada_blockquote", + "label": "7. Cita destacada (blockquote)", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "7. cita destacada (blockquote)", + "source_file": "FORMATO.md", + "source_location": "L140" + }, + { + "id": "formato_8_c\u00f3digo", + "label": "8. C\u00f3digo", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "8. codigo", + "source_file": "FORMATO.md", + "source_location": "L151" + }, + { + "id": "formato_9_v\u00eddeos", + "label": "9. V\u00eddeos", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "9. videos", + "source_file": "FORMATO.md", + "source_location": "L166" + }, + { + "id": "formato_comparador_antes_despu\u00e9s_videocompareslider", + "label": "Comparador antes/despu\u00e9s (`VideoCompareSlider`)", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "comparador antes/despues (`videocompareslider`)", + "source_file": "FORMATO.md", + "source_location": "L287" + }, + { + "id": "formato_cuerpo_contenido_del_panel", + "label": "Cuerpo = contenido del panel", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cuerpo = contenido del panel", + "source_file": "FORMATO.md", + "source_location": "L561" + }, + { + "id": "formato_c\u00f3mo_codificar_el_v\u00eddeo", + "label": "C\u00f3mo codificar el v\u00eddeo", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "como codificar el video", + "source_file": "FORMATO.md", + "source_location": "L238" + }, + { + "id": "formato_d\u00f3nde_colocar_los_archivos", + "label": "D\u00f3nde colocar los archivos", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "donde colocar los archivos", + "source_file": "FORMATO.md", + "source_location": "L210" + }, + { + "id": "formato_ejemplo_completo", + "label": "Ejemplo completo", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "ejemplo completo", + "source_file": "FORMATO.md", + "source_location": "L593" + }, + { + "id": "formato_ejemplo_de_cap\u00edtulo_completo", + "label": "Ejemplo de cap\u00edtulo completo", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "ejemplo de capitulo completo", + "source_file": "FORMATO.md", + "source_location": "L517" + }, + { + "id": "formato_frontmatter_de_un_cap\u00edtulo", + "label": "Frontmatter de un cap\u00edtulo", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "frontmatter de un capitulo", + "source_file": "FORMATO.md", + "source_location": "L459" + }, + { + "id": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "label": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "guia de formato \u2014 ficheros de proyecto", + "source_file": "FORMATO.md", + "source_location": "L1" + }, + { + "id": "formato_iconos_de_marca", + "label": "Iconos de marca", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "iconos de marca", + "source_file": "FORMATO.md", + "source_location": "L581" + }, + { + "id": "formato_ids_de_categor\u00edas_disponibles", + "label": "IDs de categor\u00edas disponibles", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "ids de categorias disponibles", + "source_file": "FORMATO.md", + "source_location": "L41" + }, + { + "id": "formato_miniaturas_autom\u00e1ticas", + "label": "Miniaturas autom\u00e1ticas", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "miniaturas automaticas", + "source_file": "FORMATO.md", + "source_location": "L201" + }, + { + "id": "formato_nombre_de_archivo_y_orden", + "label": "Nombre de archivo y orden", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "nombre de archivo y orden", + "source_file": "FORMATO.md", + "source_location": "L483" + }, + { + "id": "formato_resumen", + "label": "`resumen`", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "`resumen`", + "source_file": "FORMATO.md", + "source_location": "L574" + }, + { + "id": "formato_selector_de_calidad", + "label": "Selector de calidad", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "selector de calidad", + "source_file": "FORMATO.md", + "source_location": "L188" + }, + { + "id": "formato_subt\u00edtulos_del_\u00edndice_acorde\u00f3n", + "label": "Subt\u00edtulos del \u00edndice (acorde\u00f3n)", + "_origin": "ast", + "community": 4, + "community_name": "Gu\u00eda de formato \u2014 ficheros de proyecto", + "file_type": "document", + "node_kind": "heading", + "norm_label": "subtitulos del indice (acordeon)", + "source_file": "FORMATO.md", + "source_location": "L490" + }, + { + "id": "src_content_habilidades_docker", + "label": "docker.md", + "_origin": "ast", + "community": 40, + "community_name": "docker.md", + "file_type": "document", + "frontmatter": { + "titulo": "Docker", + "categoria": "programacion", + "icono": "docker", + "resumen": "Todos mis servicios propios viven en contenedores, definidos en Compose.", + "orden": "20" + }, + "node_kind": "page", + "norm_label": "docker.md", + "source_file": "src/content/habilidades/docker.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_nas_casero", + "label": "nas-casero.md", + "_origin": "ast", + "community": 41, + "community_name": "nas-casero.md", + "file_type": "document", + "frontmatter": { + "titulo": "Montar un NAS en casa", + "categoria": "programacion", + "resumen": "Discos, RAID, compartici\u00f3n por SMB y copias autom\u00e1ticas.", + "orden": "30" + }, + "node_kind": "page", + "norm_label": "nas-casero.md", + "source_file": "src/content/habilidades/nas-casero.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_tailscale", + "label": "tailscale.md", + "_origin": "ast", + "community": 42, + "community_name": "tailscale.md", + "file_type": "document", + "frontmatter": { + "titulo": "Tailscale", + "categoria": "programacion", + "icono": "tailscale", + "resumen": "Red privada entre mis m\u00e1quinas, sin abrir puertos ni montar una VPN cl\u00e1sica.", + "orden": "10" + }, + "node_kind": "page", + "norm_label": "tailscale.md", + "source_file": "src/content/habilidades/tailscale.md", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_introduccion", + "label": "introduccion.md", + "_origin": "ast", + "community": 43, + "community_name": "introduccion.md", + "file_type": "document", + "frontmatter": { + "titulo": "Introducci\u00f3n", + "orden": "1", + "categoria": "video" + }, + "node_kind": "page", + "norm_label": "introduccion.md", + "source_file": "src/content/multiguerras/introduccion.md", + "source_location": "L1" + }, + { + "id": "src_content_proyectos_multiguerras", + "label": "multiguerras.md", + "_origin": "ast", + "community": 44, + "community_name": "multiguerras.md", + "file_type": "document", + "frontmatter": { + "titulo": "El Periodo De Multiguerras", + "fecha": "2023-05", + "fechaFin": "2025", + "categorias": "[programacion, video, vfx]", + "peso": "100", + "destacado": "1", + "imagen": "../../assets/proyectos/multiguerras-card.png", + "portada": "../../assets/proyectos/multiguerras.png", + "descripcion": "Cortometraje de ciencia ficci\u00f3n y producci\u00f3n virtual", + "tecnologias": "[Blender, OBS Studio, App Inventor, Firebase, Web]", + "txtboton": "Ver cortometraje", + "link": "https://youtu.be/BZoJm4YVCpo", + "urlvideopage": "https://pgscom-media-web.pages.dev/periodomultiguerras/master.m3u8", + "trailer": "https://pgscom-media-web.pages.dev/previewmultiguerras/master.m3u8", + "video": "https://pgscom-media-web.pages.dev/previewmultiguerras/master.m3u8", + "tituloDegradado": "true", + "tituloEscala": "1.6" + }, + "node_kind": "page", + "norm_label": "multiguerras.md", + "source_file": "src/content/proyectos/multiguerras.md", + "source_location": "L1" + }, + { + "id": "src_scripts_proyectos_ruta", + "label": "proyectos-ruta.js", + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "code", + "norm_label": "proyectos-ruta.js", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L1" + }, + { + "id": "agents", + "label": "AGENTS.md", + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "document", + "node_kind": "page", + "norm_label": "agents.md", + "source_file": "AGENTS.md", + "source_location": "L1" + }, + { + "id": "agents_agents_md", + "label": "AGENTS.md", + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "document", + "node_kind": "heading", + "norm_label": "agents.md", + "source_file": "AGENTS.md", + "source_location": "L1" + }, + { + "id": "agents_comandos", + "label": "Comandos", + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "document", + "node_kind": "heading", + "norm_label": "comandos", + "source_file": "AGENTS.md", + "source_location": "L13" + }, + { + "id": "agents_contenido_de_proyectos", + "label": "Contenido de proyectos", + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "document", + "node_kind": "heading", + "norm_label": "contenido de proyectos", + "source_file": "AGENTS.md", + "source_location": "L35" + }, + { + "id": "agents_convenciones", + "label": "Convenciones", + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "document", + "node_kind": "heading", + "norm_label": "convenciones", + "source_file": "AGENTS.md", + "source_location": "L51" + }, + { + "id": "agents_estructura", + "label": "Estructura", + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "document", + "node_kind": "heading", + "norm_label": "estructura", + "source_file": "AGENTS.md", + "source_location": "L25" + }, + { + "id": "agents_graphify", + "label": "graphify", + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "document", + "node_kind": "heading", + "norm_label": "graphify", + "source_file": "AGENTS.md", + "source_location": "L39" + }, + { + "id": "agents_stack", + "label": "Stack", + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "document", + "node_kind": "heading", + "norm_label": "stack", + "source_file": "AGENTS.md", + "source_location": "L5" + }, + { + "id": "formato", + "label": "FORMATO.md", + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "document", + "node_kind": "page", + "norm_label": "formato.md", + "source_file": "FORMATO.md", + "source_location": "L1" + }, + { + "id": "formato_6_im\u00e1genes", + "label": "6. Im\u00e1genes", + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "document", + "node_kind": "heading", + "norm_label": "6. imagenes", + "source_file": "FORMATO.md", + "source_location": "L105" + }, + { + "id": "formato_galer\u00eda_de_im\u00e1genes_v\u00eddeo_lightbox", + "label": "Galer\u00eda de im\u00e1genes / v\u00eddeo (lightbox)", + "_origin": "ast", + "community": 5, + "community_name": "initRuta", + "file_type": "document", + "node_kind": "heading", + "norm_label": "galeria de imagenes / video (lightbox)", + "source_file": "FORMATO.md", + "source_location": "L113" + }, + { + "id": "src_content_habilidades_app_inventor_firebase", + "label": "app-inventor-firebase.md", + "_origin": "ast", + "community": 52, + "community_name": "app-inventor-firebase.md", + "file_type": "document", + "frontmatter": { + "titulo": "App Inventor y Firebase", + "categoria": "programacion", + "icono": "firebase", + "orden": "390", + "resumen": "La app que valida las entradas de los Premios M\u00e1cula." + }, + "node_kind": "page", + "norm_label": "app-inventor-firebase.md", + "source_file": "src/content/habilidades/app-inventor-firebase.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_astro", + "label": "astro.md", + "_origin": "ast", + "community": 53, + "community_name": "astro.md", + "file_type": "document", + "frontmatter": { + "titulo": "Astro", + "categoria": "desarrollo-web", + "icono": "astro", + "orden": "510", + "resumen": "Con lo que est\u00e1 hecha esta web." + }, + "node_kind": "page", + "norm_label": "astro.md", + "source_file": "src/content/habilidades/astro.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_blender", + "label": "habilidades/blender.md", + "_origin": "ast", + "community": 54, + "community_name": "habilidades/blender.md", + "file_type": "document", + "frontmatter": { + "titulo": "Blender", + "categoria": "vfx", + "icono": "blender", + "orden": "100", + "resumen": "Modelado, simulaciones y render para cortos y VFX." + }, + "node_kind": "page", + "norm_label": "habilidades/blender.md", + "source_file": "src/content/habilidades/blender.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_cloudflare", + "label": "cloudflare.md", + "_origin": "ast", + "community": 55, + "community_name": "cloudflare.md", + "file_type": "document", + "frontmatter": { + "titulo": "Cloudflare", + "categoria": "desarrollo-web", + "icono": "cloudflare", + "orden": "500", + "resumen": "Hosting, funciones y protecci\u00f3n de mis webs." + }, + "node_kind": "page", + "norm_label": "cloudflare.md", + "source_file": "src/content/habilidades/cloudflare.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_cpp", + "label": "cpp.md", + "_origin": "ast", + "community": 56, + "community_name": "cpp.md", + "file_type": "document", + "frontmatter": { + "titulo": "C++", + "categoria": "programacion", + "icono": "cplusplus", + "orden": "330", + "resumen": "Captura de pantalla, codificaci\u00f3n de v\u00eddeo y motores de juego." + }, + "node_kind": "page", + "norm_label": "cpp.md", + "source_file": "src/content/habilidades/cpp.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_davinci_resolve", + "label": "habilidades/davinci-resolve.md", + "_origin": "ast", + "community": 57, + "community_name": "habilidades/davinci-resolve.md", + "file_type": "document", + "frontmatter": { + "titulo": "DaVinci Resolve", + "categoria": "video", + "icono": "davinciresolve", + "orden": "200", + "resumen": "Montaje, color y VFX, tambi\u00e9n en equipo sobre una base de datos compartida." + }, + "node_kind": "page", + "norm_label": "habilidades/davinci-resolve.md", + "source_file": "src/content/habilidades/davinci-resolve.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_esp32", + "label": "esp32.md", + "_origin": "ast", + "community": 58, + "community_name": "esp32.md", + "file_type": "document", + "frontmatter": { + "titulo": "ESP32 y dom\u00f3tica", + "categoria": "programacion", + "icono": "espressif", + "orden": "360", + "resumen": "Firmware propio integrado con Matter, Home Assistant y MQTT." + }, + "node_kind": "page", + "norm_label": "esp32.md", + "source_file": "src/content/habilidades/esp32.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_ffmpeg_hls", + "label": "ffmpeg-hls.md", + "_origin": "ast", + "community": 59, + "community_name": "ffmpeg-hls.md", + "file_type": "document", + "frontmatter": { + "titulo": "FFmpeg y streaming HLS", + "categoria": "video", + "icono": "ffmpeg", + "orden": "230", + "resumen": "Codificar, segmentar y servir v\u00eddeo adaptativo." + }, + "node_kind": "page", + "norm_label": "ffmpeg-hls.md", + "source_file": "src/content/habilidades/ffmpeg-hls.md", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_infraestructura", + "label": "infraestructura.md", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "frontmatter": { + "titulo": "Infraestructura", + "orden": "3", + "categoria": "programacion", + "resumen": "Raspberry Pi, red local, VPN y copias de seguridad detr\u00e1s del proyecto.", + "imagen": "../../assets/proyectos/multiguerras/rpi1.png" + }, + "node_kind": "page", + "norm_label": "infraestructura.md", + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_davinci_resolve", + "label": "multiguerras/davinci-resolve.md", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "frontmatter": { + "titulo": "DaVinci Resolve", + "orden": "10", + "categoria": "video", + "resumen": "Servidor colaborativo con PostgreSQL, organizaci\u00f3n de escenas y metadatos.", + "imagen": "../../assets/proyectos/multiguerras/resolve.png" + }, + "node_kind": "page", + "norm_label": "multiguerras/davinci-resolve.md", + "source_file": "src/content/multiguerras/davinci-resolve.md", + "source_location": "L1" + }, + { + "id": "src_content_multiguerras_davinci_resolve_composici\u00f3n", + "label": "Composici\u00f3n", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "composicion", + "source_file": "src/content/multiguerras/davinci-resolve.md", + "source_location": "L18" + }, + { + "id": "src_content_multiguerras_davinci_resolve_metadatos", + "label": "Metadatos", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "metadatos", + "source_file": "src/content/multiguerras/davinci-resolve.md", + "source_location": "L14" + }, + { + "id": "src_content_multiguerras_davinci_resolve_montaje", + "label": "Montaje:", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "montaje:", + "source_file": "src/content/multiguerras/davinci-resolve.md", + "source_location": "L23" + }, + { + "id": "src_content_multiguerras_davinci_resolve_postgresql", + "label": "PostgreSQL", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "postgresql", + "source_file": "src/content/multiguerras/davinci-resolve.md", + "source_location": "L8" + }, + { + "id": "src_content_multiguerras_davinci_resolve_vfx", + "label": "VFX", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "vfx", + "source_file": "src/content/multiguerras/davinci-resolve.md", + "source_location": "L12" + }, + { + "id": "src_content_multiguerras_infraestructura_almacenamiento", + "label": "Almacenamiento:", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "almacenamiento:", + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L16" + }, + { + "id": "src_content_multiguerras_infraestructura_automatizaciones", + "label": "Automatizaciones", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "automatizaciones", + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L62" + }, + { + "id": "src_content_multiguerras_infraestructura_carcasa", + "label": "Carcasa", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "carcasa", + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L21" + }, + { + "id": "src_content_multiguerras_infraestructura_hamachi_https_vpn_net", + "label": "[Hamachi](https://vpn.net/)", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "[hamachi](https://vpn.net/)", + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L53" + }, + { + "id": "src_content_multiguerras_infraestructura_inicio_remoto", + "label": "Inicio remoto", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "inicio remoto", + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L35" + }, + { + "id": "src_content_multiguerras_infraestructura_postgresql", + "label": "PostgreSQL", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "postgresql", + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L45" + }, + { + "id": "src_content_multiguerras_infraestructura_raspberry_pi", + "label": "Raspberry Pi", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "raspberry pi", + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L19" + }, + { + "id": "src_content_multiguerras_infraestructura_servicios", + "label": "Servicios", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "servicios", + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L38" + }, + { + "id": "src_content_multiguerras_infraestructura_vpns", + "label": "VPNs", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "vpns", + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L51" + }, + { + "id": "src_content_multiguerras_infraestructura_zerotier_https_www_zerotier_com", + "label": "[ZeroTier](https://www.zerotier.com/)", + "_origin": "ast", + "community": 6, + "community_name": "infraestructura.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "[zerotier](https://www.zerotier.com/)", + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L58" + }, + { + "id": "src_content_habilidades_fotogrametria", + "label": "fotogrametria.md", + "_origin": "ast", + "community": 60, + "community_name": "fotogrametria.md", + "file_type": "document", + "frontmatter": { + "titulo": "Fotogrametr\u00eda y Gaussian Splatting", + "categoria": "vfx", + "orden": "150", + "resumen": "Escanear lugares reales para meterlos en escena." + }, + "node_kind": "page", + "norm_label": "fotogrametria.md", + "source_file": "src/content/habilidades/fotogrametria.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_freecad", + "label": "freecad.md", + "_origin": "ast", + "community": 61, + "community_name": "freecad.md", + "file_type": "document", + "frontmatter": { + "titulo": "FreeCAD e impresi\u00f3n 3D", + "categoria": "dise\u00f1o-grafico", + "icono": "freecad", + "orden": "600", + "resumen": "Piezas a medida para mis montajes." + }, + "node_kind": "page", + "norm_label": "freecad.md", + "source_file": "src/content/habilidades/freecad.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_gitea", + "label": "gitea.md", + "_origin": "ast", + "community": 62, + "community_name": "gitea.md", + "file_type": "document", + "frontmatter": { + "titulo": "Gitea y Git LFS", + "categoria": "programacion", + "icono": "gitea", + "orden": "400", + "resumen": "Repositorios propios para proyectos enormes." + }, + "node_kind": "page", + "norm_label": "gitea.md", + "source_file": "src/content/habilidades/gitea.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_github_actions", + "label": "github-actions.md", + "_origin": "ast", + "community": 63, + "community_name": "github-actions.md", + "file_type": "document", + "frontmatter": { + "titulo": "GitHub Actions", + "categoria": "programacion", + "icono": "githubactions", + "orden": "410", + "resumen": "CI para apps, firmware y webs." + }, + "node_kind": "page", + "norm_label": "github-actions.md", + "source_file": "src/content/habilidades/github-actions.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_gnome", + "label": "gnome.md", + "_origin": "ast", + "community": 64, + "community_name": "gnome.md", + "file_type": "document", + "frontmatter": { + "titulo": "Extensiones de GNOME", + "categoria": "programacion", + "icono": "gnome", + "orden": "370", + "resumen": "Extensiones de GNOME Shell publicadas en el repositorio oficial." + }, + "node_kind": "page", + "norm_label": "gnome.md", + "source_file": "src/content/habilidades/gnome.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_go", + "label": "go.md", + "_origin": "ast", + "community": 65, + "community_name": "go.md", + "file_type": "document", + "frontmatter": { + "titulo": "Go", + "categoria": "programacion", + "orden": "350", + "resumen": "Herramientas de red y dispositivos iOS." + }, + "node_kind": "page", + "norm_label": "go.md", + "source_file": "src/content/habilidades/go.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_godot", + "label": "godot.md", + "_origin": "ast", + "community": 66, + "community_name": "godot.md", + "file_type": "document", + "frontmatter": { + "titulo": "Godot y OpenXR", + "categoria": "programacion", + "icono": "godotengine", + "orden": "340", + "resumen": "Aplicaciones de realidad virtual para Quest y Pico." + }, + "node_kind": "page", + "norm_label": "godot.md", + "source_file": "src/content/habilidades/godot.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_hugo", + "label": "hugo.md", + "_origin": "ast", + "community": 67, + "community_name": "hugo.md", + "file_type": "document", + "frontmatter": { + "titulo": "Hugo", + "categoria": "desarrollo-web", + "icono": "hugo", + "orden": "530", + "resumen": "Mi blog, con el tema Blowfish." + }, + "node_kind": "page", + "norm_label": "hugo.md", + "source_file": "src/content/habilidades/hugo.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_ia_local", + "label": "ia-local.md", + "_origin": "ast", + "community": 68, + "community_name": "ia-local.md", + "file_type": "document", + "frontmatter": { + "titulo": "IA en local", + "categoria": "programacion", + "orden": "320", + "resumen": "Modelos de lenguaje ejecut\u00e1ndose en mis propios dispositivos." + }, + "node_kind": "page", + "norm_label": "ia-local.md", + "source_file": "src/content/habilidades/ia-local.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_ia_vfx", + "label": "ia-vfx.md", + "_origin": "ast", + "community": 69, + "community_name": "ia-vfx.md", + "file_type": "document", + "frontmatter": { + "titulo": "IA aplicada a VFX", + "categoria": "vfx", + "icono": "pytorch", + "orden": "140", + "resumen": "Modelos de IA en local para tracking y rotoscopia." + }, + "node_kind": "page", + "norm_label": "ia-vfx.md", + "source_file": "src/content/habilidades/ia-vfx.md", + "source_location": "L1" + }, + { + "id": "lightbox", + "label": "photoswipe/lightbox", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "confidence": "EXTRACTED", + "file_type": "code", + "norm_label": "photoswipe/lightbox", + "source_file": "photoswipe/lightbox" + }, + { + "id": "style_css", + "label": "photoswipe/style.css", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "confidence": "EXTRACTED", + "file_type": "code", + "norm_label": "photoswipe/style.css", + "source_file": "photoswipe/style.css" + }, + { + "id": "astro_config", + "label": "astro.config.mjs", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "astro.config.mjs", + "source_file": "astro.config.mjs", + "source_location": "L1" + }, + { + "id": "package", + "label": "package.json", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "package.json", + "source_file": "package.json", + "source_location": "L1" + }, + { + "id": "package_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "package.json", + "source_location": "L15" + }, + { + "id": "package_dependencies_astro", + "label": "astro", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "astro", + "source_file": "package.json", + "source_location": "L18" + }, + { + "id": "package_dependencies_astrojs_mdx", + "label": "@astrojs/mdx", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "@astrojs/mdx", + "source_file": "package.json", + "source_location": "L16" + }, + { + "id": "package_dependencies_gsap", + "label": "gsap", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "gsap", + "source_file": "package.json", + "source_location": "L19" + }, + { + "id": "package_dependencies_hls_js", + "label": "hls.js", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "hls.js", + "source_file": "package.json", + "source_location": "L20" + }, + { + "id": "package_dependencies_lenis", + "label": "lenis", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "lenis", + "source_file": "package.json", + "source_location": "L21" + }, + { + "id": "package_dependencies_photoswipe", + "label": "photoswipe", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "photoswipe", + "source_file": "package.json", + "source_location": "L22" + }, + { + "id": "package_dependencies_videojs_html", + "label": "@videojs/html", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "@videojs/html", + "source_file": "package.json", + "source_location": "L17" + }, + { + "id": "package_devdependencies", + "label": "devDependencies", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "devdependencies", + "source_file": "package.json", + "source_location": "L27" + }, + { + "id": "package_devdependencies_astrojs_check", + "label": "@astrojs/check", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "@astrojs/check", + "source_file": "package.json", + "source_location": "L28" + }, + { + "id": "package_devdependencies_cloudflare_workers_types", + "label": "@cloudflare/workers-types", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "@cloudflare/workers-types", + "source_file": "package.json", + "source_location": "L29" + }, + { + "id": "package_devdependencies_ffmpeg_installer_ffmpeg", + "label": "@ffmpeg-installer/ffmpeg", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "@ffmpeg-installer/ffmpeg", + "source_file": "package.json", + "source_location": "L30" + }, + { + "id": "package_devdependencies_sharp", + "label": "sharp", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "sharp", + "source_file": "package.json", + "source_location": "L31" + }, + { + "id": "package_devdependencies_typescript", + "label": "typescript", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "typescript", + "source_file": "package.json", + "source_location": "L32" + }, + { + "id": "package_name", + "label": "name", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "name", + "source_file": "package.json", + "source_location": "L2" + }, + { + "id": "package_optionaldependencies", + "label": "optionalDependencies", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "optionaldependencies", + "source_file": "package.json", + "source_location": "L24" + }, + { + "id": "package_optionaldependencies_esbuild_linux_x64", + "label": "@esbuild/linux-x64", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "@esbuild/linux-x64", + "source_file": "package.json", + "source_location": "L25" + }, + { + "id": "package_type", + "label": "type", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "type", + "source_file": "package.json", + "source_location": "L3" + }, + { + "id": "package_version", + "label": "version", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "version", + "source_file": "package.json", + "source_location": "L4" + }, + { + "id": "src_scripts_proyecto_galeria", + "label": "proyecto-galeria.js", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "proyecto-galeria.js", + "source_file": "src/scripts/proyecto-galeria.js", + "source_location": "L1" + }, + { + "id": "src_scripts_proyecto_galeria_galerias", + "label": "galerias", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "code", + "norm_label": "galerias", + "source_file": "src/scripts/proyecto-galeria.js", + "source_location": "L12" + }, + { + "id": "ref_astro", + "label": "astro", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "concept", + "norm_label": "astro", + "source_file": "package.json", + "source_location": "L18" + }, + { + "id": "ref_astrojs_check", + "label": "@astrojs/check", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "concept", + "norm_label": "@astrojs/check", + "source_file": "package.json", + "source_location": "L28" + }, + { + "id": "ref_astrojs_mdx", + "label": "@astrojs/mdx", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "concept", + "norm_label": "@astrojs/mdx", + "source_file": "package.json", + "source_location": "L16" + }, + { + "id": "ref_cloudflare_workers_types", + "label": "@cloudflare/workers-types", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "concept", + "norm_label": "@cloudflare/workers-types", + "source_file": "package.json", + "source_location": "L29" + }, + { + "id": "ref_esbuild_linux_x64", + "label": "@esbuild/linux-x64", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "concept", + "norm_label": "@esbuild/linux-x64", + "source_file": "package.json", + "source_location": "L25" + }, + { + "id": "ref_hls_js", + "label": "hls.js", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "concept", + "norm_label": "hls.js", + "source_file": "package.json", + "source_location": "L20" + }, + { + "id": "ref_lenis", + "label": "lenis", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "concept", + "norm_label": "lenis", + "source_file": "package.json", + "source_location": "L21" + }, + { + "id": "ref_photoswipe", + "label": "photoswipe", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "concept", + "norm_label": "photoswipe", + "source_file": "package.json", + "source_location": "L22" + }, + { + "id": "ref_typescript", + "label": "typescript", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "concept", + "norm_label": "typescript", + "source_file": "package.json", + "source_location": "L32" + }, + { + "id": "ref_videojs_html", + "label": "@videojs/html", + "_origin": "ast", + "community": 7, + "community_name": "package.json", + "file_type": "concept", + "norm_label": "@videojs/html", + "source_file": "package.json", + "source_location": "L17" + }, + { + "id": "src_content_habilidades_inkscape", + "label": "inkscape.md", + "_origin": "ast", + "community": 70, + "community_name": "inkscape.md", + "file_type": "document", + "frontmatter": { + "titulo": "Inkscape y SVG", + "categoria": "dise\u00f1o-grafico", + "icono": "inkscape", + "orden": "610", + "resumen": "Dise\u00f1o vectorial y generaci\u00f3n en serie." + }, + "node_kind": "page", + "norm_label": "inkscape.md", + "source_file": "src/content/habilidades/inkscape.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_obs_studio", + "label": "obs-studio.md", + "_origin": "ast", + "community": 71, + "community_name": "obs-studio.md", + "file_type": "document", + "frontmatter": { + "titulo": "OBS Studio", + "categoria": "video", + "icono": "obsstudio", + "orden": "210", + "resumen": "Realizaci\u00f3n de directos multic\u00e1mara." + }, + "node_kind": "page", + "norm_label": "obs-studio.md", + "source_file": "src/content/habilidades/obs-studio.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_postgresql", + "label": "postgresql.md", + "_origin": "ast", + "community": 72, + "community_name": "postgresql.md", + "file_type": "document", + "frontmatter": { + "titulo": "PostgreSQL", + "categoria": "programacion", + "icono": "postgresql", + "orden": "380", + "resumen": "Bases de datos para DaVinci Resolve y b\u00fasqueda vectorial." + }, + "node_kind": "page", + "norm_label": "postgresql.md", + "source_file": "src/content/habilidades/postgresql.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_produccion_virtual", + "label": "produccion-virtual.md", + "_origin": "ast", + "community": 73, + "community_name": "produccion-virtual.md", + "file_type": "document", + "frontmatter": { + "titulo": "Producci\u00f3n virtual", + "categoria": "vfx", + "orden": "120", + "resumen": "C\u00e1mara real y c\u00e1mara virtual movi\u00e9ndose a la vez en tiempo real." + }, + "node_kind": "page", + "norm_label": "produccion-virtual.md", + "source_file": "src/content/habilidades/produccion-virtual.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_python", + "label": "python.md", + "_origin": "ast", + "community": 74, + "community_name": "python.md", + "file_type": "document", + "frontmatter": { + "titulo": "Python", + "categoria": "programacion", + "icono": "python", + "orden": "300", + "resumen": "Mi lenguaje para automatizar casi todo." + }, + "node_kind": "page", + "norm_label": "python.md", + "source_file": "src/content/habilidades/python.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_react", + "label": "react.md", + "_origin": "ast", + "community": 75, + "community_name": "react.md", + "file_type": "document", + "frontmatter": { + "titulo": "React", + "categoria": "desarrollo-web", + "icono": "react", + "orden": "520", + "resumen": "Webs que se montan desde datos." + }, + "node_kind": "page", + "norm_label": "react.md", + "source_file": "src/content/habilidades/react.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_render_farms", + "label": "render-farms.md", + "_origin": "ast", + "community": 76, + "community_name": "render-farms.md", + "file_type": "document", + "frontmatter": { + "titulo": "Render farms", + "categoria": "vfx", + "orden": "130", + "resumen": "Repartir renders entre varias m\u00e1quinas, propias o de la comunidad." + }, + "node_kind": "page", + "norm_label": "render-farms.md", + "source_file": "src/content/habilidades/render-farms.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_servidores_minecraft", + "label": "servidores-minecraft.md", + "_origin": "ast", + "community": 77, + "community_name": "servidores-minecraft.md", + "file_type": "document", + "frontmatter": { + "titulo": "Servidores de Minecraft", + "categoria": "programacion", + "icono": "minecraft", + "orden": "440", + "resumen": "Servidores y modpacks para jugar con amigos." + }, + "node_kind": "page", + "norm_label": "servidores-minecraft.md", + "source_file": "src/content/habilidades/servidores-minecraft.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_swift", + "label": "swift.md", + "_origin": "ast", + "community": 78, + "community_name": "swift.md", + "file_type": "document", + "frontmatter": { + "titulo": "Swift y SwiftUI", + "categoria": "programacion", + "icono": "swift", + "orden": "310", + "resumen": "Apps nativas para iPhone, iPad y Mac." + }, + "node_kind": "page", + "norm_label": "swift.md", + "source_file": "src/content/habilidades/swift.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_syncthing", + "label": "syncthing.md", + "_origin": "ast", + "community": 79, + "community_name": "syncthing.md", + "file_type": "document", + "frontmatter": { + "titulo": "Syncthing", + "categoria": "programacion", + "icono": "syncthing", + "orden": "430", + "resumen": "Sincronizar carpetas entre equipos sin nube." + }, + "node_kind": "page", + "norm_label": "syncthing.md", + "source_file": "src/content/habilidades/syncthing.md", + "source_location": "L1" + }, + { + "id": "scripts_generate_posters", + "label": "generate-posters.mjs", + "_origin": "ast", + "community": 8, + "community_name": "generate-posters.mjs", + "file_type": "code", + "norm_label": "generate-posters.mjs", + "source_file": "scripts/generate-posters.mjs", + "source_location": "L1" + }, + { + "id": "scripts_generate_posters_dirs", + "label": "DIRS", + "_origin": "ast", + "community": 8, + "community_name": "generate-posters.mjs", + "file_type": "code", + "norm_label": "dirs", + "source_file": "scripts/generate-posters.mjs", + "source_location": "L26" + }, + { + "id": "scripts_generate_posters_video_ext", + "label": "VIDEO_EXT", + "_origin": "ast", + "community": 8, + "community_name": "generate-posters.mjs", + "file_type": "code", + "norm_label": "video_ext", + "source_file": "scripts/generate-posters.mjs", + "source_location": "L27" + }, + { + "id": "ref_ffmpeg_installer_ffmpeg", + "label": "@ffmpeg-installer/ffmpeg", + "_origin": "ast", + "community": 8, + "community_name": "generate-posters.mjs", + "file_type": "concept", + "norm_label": "@ffmpeg-installer/ffmpeg", + "source_file": "package.json", + "source_location": "L30" + }, + { + "id": "ref_sharp", + "label": "sharp", + "_origin": "ast", + "community": 8, + "community_name": "generate-posters.mjs", + "file_type": "concept", + "norm_label": "sharp", + "source_file": "package.json", + "source_location": "L31" + }, + { + "id": "src_content_habilidades_unreal_engine", + "label": "unreal-engine.md", + "_origin": "ast", + "community": 80, + "community_name": "unreal-engine.md", + "file_type": "document", + "frontmatter": { + "titulo": "Unreal Engine 5", + "categoria": "vfx", + "icono": "unrealengine", + "orden": "110", + "resumen": "Escenarios, multitudes procedurales y render para producci\u00f3n virtual." + }, + "node_kind": "page", + "norm_label": "unreal-engine.md", + "source_file": "src/content/habilidades/unreal-engine.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_vdo_ninja", + "label": "vdo-ninja.md", + "_origin": "ast", + "community": 81, + "community_name": "vdo-ninja.md", + "file_type": "document", + "frontmatter": { + "titulo": "VDO.Ninja", + "categoria": "video", + "orden": "220", + "resumen": "C\u00e1maras y llamadas por WebRTC, en mi propio servidor." + }, + "node_kind": "page", + "norm_label": "vdo-ninja.md", + "source_file": "src/content/habilidades/vdo-ninja.md", + "source_location": "L1" + }, + { + "id": "src_content_habilidades_wireguard", + "label": "wireguard.md", + "_origin": "ast", + "community": 82, + "community_name": "wireguard.md", + "file_type": "document", + "frontmatter": { + "titulo": "WireGuard", + "categoria": "programacion", + "icono": "wireguard", + "orden": "420", + "resumen": "T\u00faneles VPN montados a mano." + }, + "node_kind": "page", + "norm_label": "wireguard.md", + "source_file": "src/content/habilidades/wireguard.md", + "source_location": "L1" + }, + { + "id": "assets_logo", + "label": "assets_logo", + "_origin": "semantic", + "community": 0, + "community_name": "assets_logo", + "external": true, + "file_type": "concept", + "norm_label": "assets_logo", + "source_file": "", + "type": "external" + }, + { + "id": "ref_astro_assets", + "label": "ref_astro_assets", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "ref_astro_assets", + "source_file": "", + "type": "external" + }, + { + "id": "ref_astro_content", + "label": "ref_astro_content", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "ref_astro_content", + "source_file": "", + "type": "external" + }, + { + "id": "src_assets_logo", + "label": "src_assets_logo", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "src_assets_logo", + "source_file": "", + "type": "external" + }, + { + "id": "src_assets_proyectos_portfolio", + "label": "src_assets_proyectos_portfolio", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "src_assets_proyectos_portfolio", + "source_file": "", + "type": "external" + }, + { + "id": "src_data_categorias", + "label": "src_data_categorias", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "src_data_categorias", + "source_file": "", + "type": "external" + }, + { + "id": "src_data_contacto", + "label": "src_data_contacto", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "src_data_contacto", + "source_file": "", + "type": "external" + }, + { + "id": "src_data_multiguerras", + "label": "src_data_multiguerras", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "src_data_multiguerras", + "source_file": "", + "type": "external" + }, + { + "id": "src_pages_styles", + "label": "src_pages_styles", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "src_pages_styles", + "source_file": "", + "type": "external" + }, + { + "id": "src_styles_contacto", + "label": "src_styles_contacto", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "src_styles_contacto", + "source_file": "", + "type": "external" + }, + { + "id": "src_styles_habilidades", + "label": "src_styles_habilidades", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "src_styles_habilidades", + "source_file": "", + "type": "external" + }, + { + "id": "src_styles_multiguerras", + "label": "src_styles_multiguerras", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "src_styles_multiguerras", + "source_file": "", + "type": "external" + }, + { + "id": "src_styles_proyecto_detalle", + "label": "src_styles_proyecto_detalle", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "src_styles_proyecto_detalle", + "source_file": "", + "type": "external" + }, + { + "id": "src_styles_proyectos", + "label": "src_styles_proyectos", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "src_styles_proyectos", + "source_file": "", + "type": "external" + }, + { + "id": "src_styles_titulo_proyecto", + "label": "src_styles_titulo_proyecto", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "src_styles_titulo_proyecto", + "source_file": "", + "type": "external" + }, + { + "id": "src_styles_video_page", + "label": "src_styles_video_page", + "_origin": "semantic", + "community": 1, + "community_name": "index.astro", + "external": true, + "file_type": "concept", + "norm_label": "src_styles_video_page", + "source_file": "", + "type": "external" + }, + { + "id": "assets_proyectos_portfolio", + "label": "assets_proyectos_portfolio", + "_origin": "semantic", + "community": 33, + "community_name": "assets_proyectos_portfolio", + "external": true, + "file_type": "concept", + "norm_label": "assets_proyectos_portfolio", + "source_file": "", + "type": "external" + }, + { + "id": "data_categorias", + "label": "data_categorias", + "_origin": "semantic", + "community": 35, + "community_name": "data_categorias", + "external": true, + "file_type": "concept", + "norm_label": "data_categorias", + "source_file": "", + "type": "external" + }, + { + "id": "data_contacto", + "label": "data_contacto", + "_origin": "semantic", + "community": 36, + "community_name": "data_contacto", + "external": true, + "file_type": "concept", + "norm_label": "data_contacto", + "source_file": "", + "type": "external" + }, + { + "id": "data_multiguerras", + "label": "data_multiguerras", + "_origin": "semantic", + "community": 37, + "community_name": "data_multiguerras", + "external": true, + "file_type": "concept", + "norm_label": "data_multiguerras", + "source_file": "", + "type": "external" + }, + { + "id": "pages_styles", + "label": "pages_styles", + "_origin": "semantic", + "community": 38, + "community_name": "pages_styles", + "external": true, + "file_type": "concept", + "norm_label": "pages_styles", + "source_file": "", + "type": "external" + }, + { + "id": "styles_contacto", + "label": "styles_contacto", + "_origin": "semantic", + "community": 45, + "community_name": "styles_contacto", + "external": true, + "file_type": "concept", + "norm_label": "styles_contacto", + "source_file": "", + "type": "external" + }, + { + "id": "styles_habilidades", + "label": "styles_habilidades", + "_origin": "semantic", + "community": 46, + "community_name": "styles_habilidades", + "external": true, + "file_type": "concept", + "norm_label": "styles_habilidades", + "source_file": "", + "type": "external" + }, + { + "id": "styles_multiguerras", + "label": "styles_multiguerras", + "_origin": "semantic", + "community": 47, + "community_name": "styles_multiguerras", + "external": true, + "file_type": "concept", + "norm_label": "styles_multiguerras", + "source_file": "", + "type": "external" + }, + { + "id": "styles_proyecto_detalle", + "label": "styles_proyecto_detalle", + "_origin": "semantic", + "community": 48, + "community_name": "styles_proyecto_detalle", + "external": true, + "file_type": "concept", + "norm_label": "styles_proyecto_detalle", + "source_file": "", + "type": "external" + }, + { + "id": "styles_proyectos", + "label": "styles_proyectos", + "_origin": "semantic", + "community": 49, + "community_name": "styles_proyectos", + "external": true, + "file_type": "concept", + "norm_label": "styles_proyectos", + "source_file": "", + "type": "external" + }, + { + "id": "styles_titulo_proyecto", + "label": "styles_titulo_proyecto", + "_origin": "semantic", + "community": 50, + "community_name": "styles_titulo_proyecto", + "external": true, + "file_type": "concept", + "norm_label": "styles_titulo_proyecto", + "source_file": "", + "type": "external" + }, + { + "id": "styles_video_page", + "label": "styles_video_page", + "_origin": "semantic", + "community": 51, + "community_name": "styles_video_page", + "external": true, + "file_type": "concept", + "norm_label": "styles_video_page", + "source_file": "", + "type": "external" + }, + { + "id": "ref_node_child_process", + "label": "ref_node_child_process", + "_origin": "semantic", + "community": 8, + "community_name": "generate-posters.mjs", + "external": true, + "file_type": "concept", + "norm_label": "ref_node_child_process", + "source_file": "", + "type": "external" + }, + { + "id": "ref_node_fs", + "label": "ref_node_fs", + "_origin": "semantic", + "community": 8, + "community_name": "generate-posters.mjs", + "external": true, + "file_type": "concept", + "norm_label": "ref_node_fs", + "source_file": "", + "type": "external" + }, + { + "id": "ref_node_path", + "label": "ref_node_path", + "_origin": "semantic", + "community": 8, + "community_name": "generate-posters.mjs", + "external": true, + "file_type": "concept", + "norm_label": "ref_node_path", + "source_file": "", + "type": "external" + } + ], + "links": [ + { + "source": "scripts_generate_posters_generarposter", + "target": "scripts_generate_posters_extraerframe", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/generate-posters.mjs", + "source_location": "L56", + "weight": 1.0 + }, + { + "source": "scripts_generate_posters_listadevideos", + "target": "scripts_generate_posters_listadevideos", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/generate-posters.mjs", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "src_pages_sitemap_xml_get", + "target": "src_utils_fechas_esencurso", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/pages/sitemap.xml.ts", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "src_scripts_card_video_reproducir", + "target": "src_scripts_hls_media_montarfuente", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/card-video.js", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init_attachendedhandler", + "target": "src_scripts_galaxia_scroll_init_swaptopreloaded", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init_attachendedhandler", + "target": "src_scripts_galaxia_scroll_init_preparenext", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L118", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init_onprogress", + "target": "src_scripts_galaxia_scroll_init_schedulescrub", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L206", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init_onprogress", + "target": "src_scripts_galaxia_scroll_init_startafterzoom", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L208", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init_preparenext", + "target": "src_scripts_galaxia_scroll_init_setvideosource", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init_setvideosource", + "target": "src_scripts_galaxia_scroll_init_waitformetadata", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L89", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init_startafterzoom", + "target": "src_scripts_galaxia_scroll_init_swaptopreloaded", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L150", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init_startafterzoom", + "target": "src_scripts_galaxia_scroll_init_preparenext", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L151", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo_maquetar", + "target": "src_scripts_habilidades_grafo_initgrafo_repartir", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L412", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo_maquetar", + "target": "src_scripts_habilidades_grafo_initgrafo_tick", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L419", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo_orientar", + "target": "src_scripts_habilidades_grafo_initgrafo_mediretiqueta", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L171", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo_repartir", + "target": "src_scripts_habilidades_grafo_azar", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L221", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo_repartir", + "target": "src_scripts_habilidades_grafo_initgrafo_caja", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L242", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo_repartir", + "target": "src_scripts_habilidades_grafo_initgrafo_mediretiqueta", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L334", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo_seleccionar", + "target": "src_scripts_habilidades_grafo_initgrafo_soltar", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L491", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo_seleccionar", + "target": "src_scripts_habilidades_grafo_initgrafo_orientar", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L517", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo_soltar", + "target": "src_scripts_habilidades_grafo_initgrafo_orientar", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L464", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo_soltar", + "target": "src_scripts_habilidades_grafo_initgrafo_posicionreposo", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L471", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo_tick", + "target": "src_scripts_habilidades_grafo_initgrafo_posicionreposo", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L144", + "weight": 1.0 + }, + { + "source": "src_scripts_hls_media_montarfuente", + "target": "src_scripts_hls_media_eshls", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/hls-media.js", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "src_scripts_multiguerras_nav_marcaractivo", + "target": "src_scripts_multiguerras_nav_abrirgrupo", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "src_scripts_multiguerras_nav_marcaractivo", + "target": "src_scripts_multiguerras_nav_centraractivo", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "src_scripts_preloader_initpreloader", + "target": "src_scripts_preloader_dispatchdone", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/preloader.js", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video_envolver", + "target": "src_scripts_proyecto_video_resolverfuente", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L65", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video_envolver", + "target": "src_scripts_hls_media_eshls", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video_envolver", + "target": "src_scripts_proyecto_video_derivarposter", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L78", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video_envolver", + "target": "src_scripts_proyecto_video_ajustarskin", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L87", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta", + "target": "src_scripts_proyectos_ruta_marcarsinimagen", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L241", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta_build", + "target": "src_scripts_proyectos_ruta_initruta_construirmascara", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L128", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta_build", + "target": "src_scripts_proyectos_ruta_initruta_puntos", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L130", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta_construirmascara", + "target": "src_scripts_proyectos_ruta_initruta_rectlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L80", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta_prepararruta", + "target": "src_scripts_proyectos_ruta_marcarsinimagen", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L217", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta_prepararruta", + "target": "src_scripts_proyectos_ruta_initruta_build", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L220", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta_puntos", + "target": "src_scripts_proyectos_ruta_initruta_rectlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L103", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta_setvista", + "target": "src_scripts_proyectos_ruta_initruta_prepararruta", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L287", + "weight": 1.0 + }, + { + "source": "src_utils_fechas_formatrangofecha", + "target": "src_utils_fechas_formatfecha", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/utils/fechas.js", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "src_utils_fechas_formatrangofecha", + "target": "src_utils_fechas_esencurso", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/utils/fechas.js", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "src_scripts_card_video", + "target": "src_scripts_card_video_volveralposter", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/card-video.js", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "src_scripts_card_video", + "target": "src_scripts_card_video_reproducir", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/card-video.js", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init", + "target": "src_scripts_galaxia_scroll_init_preparenext", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L109", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init", + "target": "src_scripts_galaxia_scroll_init_done", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L158", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init", + "target": "src_scripts_galaxia_scroll_init_onprogress", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L197", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init", + "target": "src_scripts_galaxia_scroll_init_schedulescrub", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init", + "target": "src_scripts_galaxia_scroll_init_setvideosource", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L82", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo", + "target": "src_scripts_habilidades_grafo_initgrafo_maquetar", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L405", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo", + "target": "src_scripts_habilidades_grafo_initgrafo_resaltar", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L444", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo", + "target": "src_scripts_habilidades_grafo_initgrafo_seleccionar", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L481", + "weight": 1.0 + }, + { + "source": "src_scripts_hero_inithero", + "target": "src_scripts_hero_inithero_entrance", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/hero.js", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "src_scripts_multiguerras_nav", + "target": "src_scripts_multiguerras_nav_marcaractivo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "src_scripts_multiguerras_nav", + "target": "src_scripts_multiguerras_nav_marcarsubactivo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "src_scripts_multiguerras_nav", + "target": "src_scripts_multiguerras_nav_bloquearspy", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L73", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta", + "target": "src_scripts_proyectos_ruta_initruta_setfiltro", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L251", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta", + "target": "src_scripts_proyectos_ruta_initruta_setvista", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L279", + "weight": 1.0 + }, + { + "source": "src_scripts_hls_media_montarfuente", + "target": "ref_hls_js", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "deferred": true, + "source_file": "src/scripts/hls-media.js", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_galeria", + "target": "ref_photoswipe", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "deferred": true, + "source_file": "src/scripts/proyecto-galeria.js", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "tsconfig", + "target": "ref_astro_tsconfigs_strict", + "relation": "extends", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tsconfig.json", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "package", + "target": "ref_astrojs_mdx", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "package.json", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "package", + "target": "ref_videojs_html", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "package.json", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "package", + "target": "ref_astro", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "package.json", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "package", + "target": "ref_gsap", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "package.json", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "package", + "target": "ref_hls_js", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "package.json", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "package", + "target": "ref_lenis", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "package.json", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "package", + "target": "ref_photoswipe", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "package.json", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "package", + "target": "ref_esbuild_linux_x64", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "package.json", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "package", + "target": "ref_astrojs_check", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "package.json", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "package", + "target": "ref_cloudflare_workers_types", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "package.json", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "package", + "target": "ref_ffmpeg_installer_ffmpeg", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "package.json", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "package", + "target": "ref_sharp", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "package.json", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "package", + "target": "ref_typescript", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "package.json", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "src_components_proyectocard", + "target": "src_utils_titulo_palabrasletras", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/components/ProyectoCard.astro", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "src_components_proyectohero", + "target": "src_utils_titulo_palabrasletras", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/components/ProyectoHero.astro", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "src_utils_fechas_esencurso", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "src_utils_fechas_formatfecha", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "src_utils_fechas_formatrangofecha", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_id", + "target": "src_utils_fechas_formatrangofecha", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/[id].astro", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_multiguerras", + "target": "src_utils_fechas_formatrangofecha", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/multiguerras.astro", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "src_pages_sitemap_xml", + "target": "src_utils_fechas_esencurso", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/sitemap.xml.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "src_scripts_card_video", + "target": "src_scripts_hls_media_montarfuente", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/card-video.js", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo", + "target": "src_scripts_smooth_scroll_lenis", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "src_scripts_hero", + "target": "src_scripts_smooth_scroll_lenis", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/hero.js", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video", + "target": "src_scripts_hls_media_eshls", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video", + "target": "src_scripts_hls_media_montarfuente", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "astro_config", + "target": "ref_astro", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "astro.config.mjs", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "astro_config", + "target": "ref_astrojs_mdx", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "astro.config.mjs", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "scripts_generate_posters", + "target": "ref_node_child_process", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "scripts/generate-posters.mjs", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "scripts_generate_posters", + "target": "ref_node_fs", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "scripts/generate-posters.mjs", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "scripts_generate_posters", + "target": "ref_node_path", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "scripts/generate-posters.mjs", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "scripts_generate_posters", + "target": "ref_ffmpeg_installer_ffmpeg", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "scripts/generate-posters.mjs", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "scripts_generate_posters", + "target": "ref_sharp", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "scripts/generate-posters.mjs", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "src_components_proyectocard", + "target": "src_utils_titulo", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/components/ProyectoCard.astro", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "src_components_proyectohero", + "target": "src_utils_titulo", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/components/ProyectoHero.astro", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "src_content_config", + "target": "ref_astro_content", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/content.config.ts", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "src_content_config", + "target": "ref_astro", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/content.config.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "src_components_proyectocard", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "ref_astro_content", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "src_data_categorias", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "src_data_contacto", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "src_utils_fechas", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "src_pages_styles", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "src_styles_titulo_proyecto", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "src_styles_proyectos", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "src_styles_habilidades", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "src_styles_contacto", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "ref_astro_assets", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "src_pages_index", + "target": "src_assets_logo", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/index.astro", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_id", + "target": "src_utils_fechas", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/[id].astro", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_id", + "target": "src_components_proyectohero", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/[id].astro", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_id", + "target": "src_components_tematoggle", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/[id].astro", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_id", + "target": "src_styles_proyecto_detalle", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/[id].astro", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_id", + "target": "src_styles_titulo_proyecto", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/[id].astro", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_id", + "target": "ref_astro_content", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/[id].astro", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_id", + "target": "ref_astro_assets", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/[id].astro", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_id", + "target": "src_data_categorias", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/[id].astro", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_id_video", + "target": "ref_astro_content", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/[id]/video.astro", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_multiguerras", + "target": "src_data_categorias", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/multiguerras.astro", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_multiguerras", + "target": "src_data_multiguerras", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/multiguerras.astro", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_multiguerras", + "target": "src_utils_fechas", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/multiguerras.astro", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_multiguerras", + "target": "src_components_proyectohero", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/multiguerras.astro", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_multiguerras", + "target": "src_components_tematoggle", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/multiguerras.astro", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_multiguerras", + "target": "ref_astro_assets", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/multiguerras.astro", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_multiguerras", + "target": "src_styles_proyecto_detalle", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/multiguerras.astro", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_multiguerras", + "target": "src_styles_titulo_proyecto", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/multiguerras.astro", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_multiguerras", + "target": "src_styles_multiguerras", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/multiguerras.astro", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_multiguerras", + "target": "ref_astro_content", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/proyectos/multiguerras.astro", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "src_pages_sitemap_xml", + "target": "ref_astro", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/sitemap.xml.ts", + "source_location": "L1", + "type_only": true, + "weight": 1.0 + }, + { + "source": "src_pages_sitemap_xml", + "target": "ref_astro_content", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/sitemap.xml.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "src_pages_sitemap_xml", + "target": "src_utils_fechas", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/pages/sitemap.xml.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "src_scripts_card_video", + "target": "src_scripts_hls_media", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/card-video.js", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll", + "target": "ref_gsap", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo", + "target": "ref_gsap", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo", + "target": "src_scripts_smooth_scroll", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "src_scripts_hero", + "target": "ref_gsap", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/hero.js", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "src_scripts_hero", + "target": "src_scripts_smooth_scroll", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/hero.js", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "src_scripts_preloader", + "target": "ref_gsap", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/preloader.js", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_scroll_hint", + "target": "ref_gsap", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/proyecto-scroll-hint.js", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video", + "target": "src_scripts_hls_media", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta", + "target": "ref_gsap", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "src_scripts_smooth_scroll", + "target": "ref_gsap", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/smooth-scroll.js", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "src_scripts_smooth_scroll", + "target": "ref_lenis", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/scripts/smooth-scroll.js", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "agents", + "target": "agents_agents_md", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "agents_agents_md", + "target": "agents_comandos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "agents_agents_md", + "target": "agents_estructura", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "agents_agents_md", + "target": "agents_contenido_de_proyectos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "agents_agents_md", + "target": "agents_graphify", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "agents_agents_md", + "target": "agents_stack", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "agents_agents_md", + "target": "agents_convenciones", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": "L51", + "weight": 1.0 + }, + { + "source": "formato", + "target": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "formato_14_micrositio_de_cap\u00edtulos_multiguerras", + "target": "formato_frontmatter_de_un_cap\u00edtulo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L459", + "weight": 1.0 + }, + { + "source": "formato_14_micrositio_de_cap\u00edtulos_multiguerras", + "target": "formato_nombre_de_archivo_y_orden", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L483", + "weight": 1.0 + }, + { + "source": "formato_14_micrositio_de_cap\u00edtulos_multiguerras", + "target": "formato_subt\u00edtulos_del_\u00edndice_acorde\u00f3n", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L490", + "weight": 1.0 + }, + { + "source": "formato_14_micrositio_de_cap\u00edtulos_multiguerras", + "target": "formato_ejemplo_de_cap\u00edtulo_completo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L517", + "weight": 1.0 + }, + { + "source": "formato_15_habilidades_el_grafo_sobre_proyectos", + "target": "formato_cuerpo_contenido_del_panel", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L561", + "weight": 1.0 + }, + { + "source": "formato_15_habilidades_el_grafo_sobre_proyectos", + "target": "formato_resumen", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L574", + "weight": 1.0 + }, + { + "source": "formato_15_habilidades_el_grafo_sobre_proyectos", + "target": "formato_iconos_de_marca", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L581", + "weight": 1.0 + }, + { + "source": "formato_1_frontmatter", + "target": "formato_ids_de_categor\u00edas_disponibles", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "formato_6_im\u00e1genes", + "target": "formato_galer\u00eda_de_im\u00e1genes_v\u00eddeo_lightbox", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L113", + "weight": 1.0 + }, + { + "source": "formato_9_v\u00eddeos", + "target": "formato_selector_de_calidad", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L188", + "weight": 1.0 + }, + { + "source": "formato_9_v\u00eddeos", + "target": "formato_miniaturas_autom\u00e1ticas", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L201", + "weight": 1.0 + }, + { + "source": "formato_9_v\u00eddeos", + "target": "formato_d\u00f3nde_colocar_los_archivos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L210", + "weight": 1.0 + }, + { + "source": "formato_9_v\u00eddeos", + "target": "formato_c\u00f3mo_codificar_el_v\u00eddeo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L238", + "weight": 1.0 + }, + { + "source": "formato_9_v\u00eddeos", + "target": "formato_comparador_antes_despu\u00e9s_videocompareslider", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L287", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_6_im\u00e1genes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L105", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_7_cita_destacada_blockquote", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L140", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_8_c\u00f3digo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L151", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_9_v\u00eddeos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L166", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_10_desplegable_details", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L333", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_11_secci\u00f3n_con_franja_de_color_pd_seccion", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L351", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_12_anclas_para_sub_items", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L393", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_13_pesta\u00f1as_data_tab", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L405", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_14_micrositio_de_cap\u00edtulos_multiguerras", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L449", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_2_encabezados_en_el_cuerpo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_15_habilidades_el_grafo_sobre_proyectos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L545", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_ejemplo_completo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L593", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_3_texto_b\u00e1sico", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_1_frontmatter", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_4_listas", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L78", + "weight": 1.0 + }, + { + "source": "formato_gu\u00eda_de_formato_ficheros_de_proyecto", + "target": "formato_5_enlaces", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "FORMATO.md", + "source_location": "L91", + "weight": 1.0 + }, + { + "source": "functions_contact", + "target": "functions_contact_turnstileresponse", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "functions/contact.ts", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "functions_contact", + "target": "functions_contact_env", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "functions/contact.ts", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "functions_contact", + "target": "functions_contact_onrequestpost", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "functions/contact.ts", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "functions_contact", + "target": "functions_contact_telegramresponse", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "functions/contact.ts", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "package", + "target": "package_dependencies", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "package", + "target": "package_name", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "package", + "target": "package_optionaldependencies", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "package", + "target": "package_devdependencies", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "package", + "target": "package_type", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "package", + "target": "package_version", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "package", + "target": "package_scripts", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "package_dependencies", + "target": "package_dependencies_astrojs_mdx", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "package_dependencies", + "target": "package_dependencies_videojs_html", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "package_dependencies", + "target": "package_dependencies_astro", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "package_dependencies", + "target": "package_dependencies_gsap", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "package_dependencies", + "target": "package_dependencies_hls_js", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "package_dependencies", + "target": "package_dependencies_lenis", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "package_dependencies", + "target": "package_dependencies_photoswipe", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "package_devdependencies", + "target": "package_devdependencies_astrojs_check", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "package_devdependencies", + "target": "package_devdependencies_cloudflare_workers_types", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "package_devdependencies", + "target": "package_devdependencies_ffmpeg_installer_ffmpeg", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "package_devdependencies", + "target": "package_devdependencies_sharp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "package_devdependencies", + "target": "package_devdependencies_typescript", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "package_optionaldependencies", + "target": "package_optionaldependencies_esbuild_linux_x64", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "package_scripts", + "target": "package_scripts_preview", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "package_scripts", + "target": "package_scripts_astro", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "package_scripts", + "target": "package_scripts_check", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "package_scripts", + "target": "package_scripts_posters", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "package_scripts", + "target": "package_scripts_predev", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "package_scripts", + "target": "package_scripts_dev", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "package_scripts", + "target": "package_scripts_prebuild", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "package_scripts", + "target": "package_scripts_build", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "package.json", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "scripts_generate_posters", + "target": "scripts_generate_posters_dirs", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/generate-posters.mjs", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "scripts_generate_posters", + "target": "scripts_generate_posters_video_ext", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/generate-posters.mjs", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "scripts_generate_posters", + "target": "scripts_generate_posters_listadevideos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/generate-posters.mjs", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "scripts_generate_posters", + "target": "scripts_generate_posters_extraerframe", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/generate-posters.mjs", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "scripts_generate_posters", + "target": "scripts_generate_posters_generarposter", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/generate-posters.mjs", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "src_content_config", + "target": "src_content_config_habilidades", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content.config.ts", + "source_location": "L118", + "weight": 1.0 + }, + { + "source": "src_content_config", + "target": "src_content_config_collections", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content.config.ts", + "source_location": "L133", + "weight": 1.0 + }, + { + "source": "src_content_config", + "target": "src_content_config_proyectos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content.config.ts", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "src_content_config", + "target": "src_content_config_multiguerras", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content.config.ts", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_atencion_especial", + "target": "src_content_multiguerras_atencion_especial_recuperaci\u00f3n_del_tracking_con_ia_cotracker", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_atencion_especial", + "target": "src_content_multiguerras_atencion_especial_escena_corriendo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_atencion_especial", + "target": "src_content_multiguerras_atencion_especial_escena_explosi\u00f3n_muro", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_atencion_especial", + "target": "src_content_multiguerras_atencion_especial_primer_plano_c\u00e1rcel", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_atencion_especial", + "target": "src_content_multiguerras_atencion_especial_final_del_jefe_volando", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_atencion_especial_escena_corriendo", + "target": "src_content_multiguerras_atencion_especial_referencia", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_atencion_especial_primer_plano_c\u00e1rcel", + "target": "src_content_multiguerras_atencion_especial_referencia_61", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/atencion-especial.mdx", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_audio", + "target": "src_content_multiguerras_audio_banda_sonora_y_efectos_de_sonido", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/audio.md", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_blender", + "target": "src_content_multiguerras_blender_hecho_y_renderizado_en_blender", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/blender.md", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_blender", + "target": "src_content_multiguerras_blender_portal_en_blender", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/blender.md", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_blender", + "target": "src_content_multiguerras_blender_simulaciones", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/blender.md", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_blender", + "target": "src_content_multiguerras_blender_render_farm_de_flamenco_a_sheepit", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/blender.md", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_blender_render_farm_de_flamenco_a_sheepit", + "target": "src_content_multiguerras_blender_compilaci\u00f3n", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/blender.md", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_blender_render_farm_de_flamenco_a_sheepit", + "target": "src_content_multiguerras_blender_por_qu\u00e9_no_lo_us\u00e9", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/blender.md", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_davinci_resolve", + "target": "src_content_multiguerras_davinci_resolve_vfx", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/davinci-resolve.md", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_davinci_resolve", + "target": "src_content_multiguerras_davinci_resolve_postgresql", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/davinci-resolve.md", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_davinci_resolve_composici\u00f3n", + "target": "src_content_multiguerras_davinci_resolve_montaje", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/davinci-resolve.md", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_davinci_resolve_vfx", + "target": "src_content_multiguerras_davinci_resolve_metadatos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/davinci-resolve.md", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_davinci_resolve_vfx", + "target": "src_content_multiguerras_davinci_resolve_composici\u00f3n", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/davinci-resolve.md", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_dise\u00f1o_escenarios", + "target": "src_content_multiguerras_dise\u00f1o_escenarios_dise\u00f1ados_en_blender", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/dise\u00f1o-escenarios.md", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_dise\u00f1o_escenarios", + "target": "src_content_multiguerras_dise\u00f1o_escenarios_dise\u00f1ados_en_unreal", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/dise\u00f1o-escenarios.md", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_infraestructura", + "target": "src_content_multiguerras_infraestructura_almacenamiento", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_infraestructura", + "target": "src_content_multiguerras_infraestructura_raspberry_pi", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_infraestructura", + "target": "src_content_multiguerras_infraestructura_vpns", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L51", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_infraestructura", + "target": "src_content_multiguerras_infraestructura_automatizaciones", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_infraestructura_raspberry_pi", + "target": "src_content_multiguerras_infraestructura_carcasa", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_infraestructura_raspberry_pi", + "target": "src_content_multiguerras_infraestructura_inicio_remoto", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_infraestructura_raspberry_pi", + "target": "src_content_multiguerras_infraestructura_servicios", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_infraestructura_raspberry_pi", + "target": "src_content_multiguerras_infraestructura_postgresql", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_infraestructura_vpns", + "target": "src_content_multiguerras_infraestructura_hamachi_https_vpn_net", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_infraestructura_vpns", + "target": "src_content_multiguerras_infraestructura_zerotier_https_www_zerotier_com", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/infraestructura.md", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_preproduccion", + "target": "src_content_multiguerras_preproduccion_organizaci\u00f3n", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/preproduccion.md", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_preproduccion", + "target": "src_content_multiguerras_preproduccion_decisiones_t\u00e9cnicas", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/preproduccion.md", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_preproduccion", + "target": "src_content_multiguerras_preproduccion_guion", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/preproduccion.md", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_preproduccion_decisiones_t\u00e9cnicas", + "target": "src_content_multiguerras_preproduccion_fps", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/preproduccion.md", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_preproduccion_decisiones_t\u00e9cnicas", + "target": "src_content_multiguerras_preproduccion_sdr_vs_hdr", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/preproduccion.md", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_preproduccion_organizaci\u00f3n", + "target": "src_content_multiguerras_preproduccion_notion", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/preproduccion.md", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_produccion_virtual", + "target": "src_content_multiguerras_produccion_virtual_tracking_de_c\u00e1mara", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/produccion-virtual.mdx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_produccion_virtual", + "target": "src_content_multiguerras_produccion_virtual_grabaci\u00f3n", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/produccion-virtual.mdx", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_produccion_virtual", + "target": "src_content_multiguerras_produccion_virtual_movie_render_queue", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/produccion-virtual.mdx", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_produccion_virtual_grabaci\u00f3n", + "target": "src_content_multiguerras_produccion_virtual_emparejamiento_de_tomas_reales_y_virtuales", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/produccion-virtual.mdx", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_produccion_virtual_movie_render_queue", + "target": "src_content_multiguerras_produccion_virtual_render_farm_de_unreal", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/produccion-virtual.mdx", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_produccion_virtual_tracking_de_c\u00e1mara", + "target": "src_content_multiguerras_produccion_virtual_calibraci\u00f3n_de_c\u00e1maras", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/produccion-virtual.mdx", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_resultados", + "target": "src_content_multiguerras_resultados_directo_completo_detr\u00e1s_de_las_c\u00e1maras", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/resultados.md", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_rodaje", + "target": "src_content_multiguerras_rodaje_galer\u00eda_primer_rodaje", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/rodaje.md", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_rodaje", + "target": "src_content_multiguerras_rodaje_preparaci\u00f3n_del_set", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/rodaje.md", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_rodaje_preparaci\u00f3n_del_set", + "target": "src_content_multiguerras_rodaje_primer_set", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/rodaje.md", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_rodaje_preparaci\u00f3n_del_set", + "target": "src_content_multiguerras_rodaje_segundo_set", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/rodaje.md", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_unreal", + "target": "src_content_multiguerras_unreal_portales", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_unreal", + "target": "src_content_multiguerras_unreal_extras_digitales", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_unreal", + "target": "src_content_multiguerras_unreal_metahuman", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_unreal", + "target": "src_content_multiguerras_unreal_c\u00e1mara_virtual_y_tracking", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_unreal", + "target": "src_content_multiguerras_unreal_renderizado", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_unreal", + "target": "src_content_multiguerras_unreal_control_de_versiones", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_unreal", + "target": "src_content_multiguerras_unreal_assets_y_referencias", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L86", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_unreal_extras_digitales", + "target": "src_content_multiguerras_unreal_extras_andantes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_unreal_extras_digitales", + "target": "src_content_multiguerras_unreal_multitud_est\u00e1tica", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/unreal.md", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_blog_personal", + "target": "src_content_proyectos_blog_personal_inicios_del_blog", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/blog-personal.md", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_blog_personal_inicios_del_blog", + "target": "src_content_proyectos_blog_personal_hay_m\u00e1s_informaci\u00f3n_de_la_migraci\u00f3n_en_esta_entrada_del_blog_dedicada_https_blog_pgscom_es_posts_intro_blog", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/blog-personal.md", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_github_contributions", + "target": "src_content_proyectos_github_contributions_vdo_ninja", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/github-contributions.md", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_github_contributions", + "target": "src_content_proyectos_github_contributions_go_ios", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/github-contributions.md", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_github_contributions_go_ios", + "target": "src_content_proyectos_github_contributions_688_fix_ipv6_header_check_https_github_com_danielpaulus_go_ios_pull_688_marzo_2026", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/github-contributions.md", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_github_contributions_vdo_ninja", + "target": "src_content_proyectos_github_contributions_1182_complete_spanish_translation_https_github_com_steveseguin_vdo_ninja_pull_1182_abril_2025", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/github-contributions.md", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_github_contributions_vdo_ninja", + "target": "src_content_proyectos_github_contributions_1184_fix_language_reorder_by_time_zone_https_github_com_steveseguin_vdo_ninja_pull_1184_abril_2025", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/github-contributions.md", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_identidad_pgscom", + "target": "src_content_proyectos_identidad_pgscom_identidad_pgscom", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/identidad-pgscom.md", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_identidad_pgscom_identidad_pgscom", + "target": "src_content_proyectos_identidad_pgscom_elementos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/identidad-pgscom.md", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_portafolio_cine", + "target": "src_content_proyectos_portafolio_cine_portafolio_cinematogr\u00e1fico", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/portafolio-cine.md", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_portafolio_cine_portafolio_cinematogr\u00e1fico", + "target": "src_content_proyectos_portafolio_cine_funcionalidades", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/portafolio-cine.md", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_portfolio_pgscom", + "target": "src_content_proyectos_portfolio_pgscom_portfolio_personal_pgscom", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/portfolio-pgscom.md", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_portfolio_pgscom_portfolio_personal_pgscom", + "target": "src_content_proyectos_portfolio_pgscom_caracter\u00edsticas_principales", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/portfolio-pgscom.md", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_premios_macula", + "target": "src_content_proyectos_premios_macula_generaci\u00f3n_de_entradas", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L131", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_premios_macula", + "target": "src_content_proyectos_premios_macula_validaci\u00f3n", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L147", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_premios_macula", + "target": "src_content_proyectos_premios_macula_detr\u00e1s_de_c\u00e1maras", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L163", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_premios_macula", + "target": "src_content_proyectos_premios_macula_qu\u00e9_es_este_proyecto", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_premios_macula", + "target": "src_content_proyectos_premios_macula_sistema_de_c\u00e1maras", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_premios_macula", + "target": "src_content_proyectos_premios_macula_audio", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_premios_macula", + "target": "src_content_proyectos_premios_macula_video_sistemas_2025", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L82", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_premios_macula", + "target": "src_content_proyectos_premios_macula_galer\u00eda", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L89", + "weight": 1.0 + }, + { + "source": "src_content_proyectos_premios_macula_generaci\u00f3n_de_entradas", + "target": "src_content_proyectos_premios_macula_qrs_generados_por_ia", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/proyectos/premios-macula.md", + "source_location": "L138", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_id", + "target": "src_pages_proyectos_id_getstaticpaths", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/proyectos/[id].astro", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "src_pages_proyectos_id_video", + "target": "src_pages_proyectos_id_video_getstaticpaths", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/proyectos/[id]/video.astro", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "src_pages_sitemap_xml", + "target": "src_pages_sitemap_xml_get", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/sitemap.xml.ts", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "src_scripts_card_video", + "target": "src_scripts_card_video_videos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/card-video.js", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll", + "target": "src_scripts_galaxia_scroll_init", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init", + "target": "src_scripts_galaxia_scroll_init_attachendedhandler", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L114", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init", + "target": "src_scripts_galaxia_scroll_init_swaptopreloaded", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L123", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init", + "target": "src_scripts_galaxia_scroll_init_startafterzoom", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L140", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init", + "target": "src_scripts_galaxia_scroll_init_applyscrub", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L56", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init", + "target": "src_scripts_galaxia_scroll_init_waitformetadata", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L74", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo", + "target": "src_scripts_habilidades_grafo_azar", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo", + "target": "src_scripts_habilidades_grafo_initgrafo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo", + "target": "src_scripts_habilidades_grafo_initgrafo_posicionreposo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L113", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo", + "target": "src_scripts_habilidades_grafo_initgrafo_orientar", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L166", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo", + "target": "src_scripts_habilidades_grafo_initgrafo_mediretiqueta", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L176", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo", + "target": "src_scripts_habilidades_grafo_initgrafo_caja", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L183", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo", + "target": "src_scripts_habilidades_grafo_initgrafo_repartir", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L189", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo", + "target": "src_scripts_habilidades_grafo_initgrafo_soltar", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L461", + "weight": 1.0 + }, + { + "source": "src_scripts_hero", + "target": "src_scripts_hero_inithero", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/hero.js", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "src_scripts_hero_inithero", + "target": "src_scripts_hero_inithero_startidlefloat", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/hero.js", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "src_scripts_hls_media", + "target": "src_scripts_hls_media_eshls", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/hls-media.js", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "src_scripts_hls_media", + "target": "src_scripts_hls_media_montarfuente", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/hls-media.js", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "src_scripts_multiguerras_nav", + "target": "src_scripts_multiguerras_nav_abrirgrupo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "src_scripts_multiguerras_nav", + "target": "src_scripts_multiguerras_nav_indice", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "src_scripts_multiguerras_nav", + "target": "src_scripts_multiguerras_nav_centraractivo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "src_scripts_multiguerras_nav", + "target": "src_scripts_multiguerras_nav_secciones", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/multiguerras-nav.js", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "src_scripts_multiguerras_timeline", + "target": "src_scripts_multiguerras_timeline_datosscript", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/multiguerras-timeline.js", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "src_scripts_preloader", + "target": "src_scripts_preloader_initpreloader", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/preloader.js", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "src_scripts_preloader", + "target": "src_scripts_preloader_dispatchdone", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/preloader.js", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_galeria", + "target": "src_scripts_proyecto_galeria_galerias", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-galeria.js", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_galeria", + "target": "src_scripts_proyecto_galeria_derivarposter", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-galeria.js", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_galeria", + "target": "src_scripts_proyecto_galeria_crearenlace", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-galeria.js", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_scroll_hint", + "target": "src_scripts_proyecto_scroll_hint_hint", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-scroll-hint.js", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video", + "target": "src_scripts_proyecto_video_videos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L118", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video", + "target": "src_scripts_proyecto_video_trailer", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L143", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video", + "target": "src_scripts_proyecto_video_config_hls", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video", + "target": "src_scripts_proyecto_video_ajustarskin", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video", + "target": "src_scripts_proyecto_video_resolverfuente", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video", + "target": "src_scripts_proyecto_video_derivarposter", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video", + "target": "src_scripts_proyecto_video_atributos_a_copiar", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta", + "target": "src_scripts_proyectos_ruta_marcarsinimagen", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta", + "target": "src_scripts_proyectos_ruta_initruta", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta", + "target": "src_scripts_proyectos_ruta_initruta_build", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L115", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta", + "target": "src_scripts_proyectos_ruta_initruta_prepararruta", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L168", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta", + "target": "src_scripts_proyectos_ruta_initruta_rectlayout", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta", + "target": "src_scripts_proyectos_ruta_initruta_construirmascara", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "src_scripts_proyectos_ruta_initruta", + "target": "src_scripts_proyectos_ruta_initruta_puntos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyectos-ruta.js", + "source_location": "L97", + "weight": 1.0 + }, + { + "source": "src_scripts_smooth_scroll", + "target": "src_scripts_smooth_scroll_lenis", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/smooth-scroll.js", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "src_scripts_video_compare", + "target": "src_scripts_video_compare_teardowns", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/video-compare.js", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "src_scripts_video_compare", + "target": "src_scripts_video_compare_setupslider", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/video-compare.js", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "src_utils_fechas", + "target": "src_utils_fechas_esencurso", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/utils/fechas.js", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "src_utils_fechas", + "target": "src_utils_fechas_formatrangofecha", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/utils/fechas.js", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "src_utils_fechas", + "target": "src_utils_fechas_meses", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/utils/fechas.js", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "src_utils_fechas", + "target": "src_utils_fechas_formatfecha", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/utils/fechas.js", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "src_utils_titulo", + "target": "src_utils_titulo_palabrasletras", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/utils/titulo.js", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "tsconfig", + "target": "tsconfig_compileroptions", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tsconfig.json", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "tsconfig", + "target": "tsconfig_extends", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tsconfig.json", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "tsconfig", + "target": "tsconfig_include", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tsconfig.json", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "tsconfig", + "target": "tsconfig_exclude", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tsconfig.json", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "tsconfig_compileroptions", + "target": "tsconfig_compileroptions_types", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tsconfig.json", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "src_scripts_hls_media", + "target": "hls_js", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/hls-media.js" + }, + { + "source": "src_scripts_proyecto_galeria", + "target": "lightbox", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-galeria.js" + }, + { + "source": "src_scripts_proyecto_galeria", + "target": "style_css", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-galeria.js" + }, + { + "source": "src_scripts_proyecto_video", + "target": "hlsjs_video", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-video.js" + }, + { + "source": "src_scripts_proyecto_video", + "target": "minimal_skin", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-video.js" + }, + { + "source": "src_scripts_proyecto_video", + "target": "player", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scripts/proyecto-video.js" + }, + { + "source": "src_components_proyectocard", + "target": "astro_assets", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/components/ProyectoCard.astro" + }, + { + "source": "src_components_proyectohero", + "target": "astro_assets", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/components/ProyectoHero.astro" + }, + { + "source": "src_layouts_layout", + "target": "src_assets_proyectos_portfolio", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/layouts/Layout.astro" + }, + { + "source": "src_pages_index", + "target": "astro_assets", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/index.astro" + }, + { + "source": "src_pages_index", + "target": "astro_content", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/index.astro" + }, + { + "source": "src_pages_index", + "target": "src_layouts_layout", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/index.astro" + }, + { + "source": "src_pages_index", + "target": "src_scripts_card_video", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/index.astro" + }, + { + "source": "src_pages_index", + "target": "src_scripts_galaxia_scroll", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/index.astro" + }, + { + "source": "src_pages_index", + "target": "src_scripts_habilidades_grafo", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/index.astro" + }, + { + "source": "src_pages_index", + "target": "src_scripts_hero", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/index.astro" + }, + { + "source": "src_pages_index", + "target": "src_scripts_preloader", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/index.astro" + }, + { + "source": "src_pages_index", + "target": "src_scripts_proyectos_ruta", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/index.astro" + }, + { + "source": "src_pages_index", + "target": "src_scripts_smooth_scroll", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/index.astro" + }, + { + "source": "src_pages_proyectos_id", + "target": "astro_assets", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/proyectos/[id].astro" + }, + { + "source": "src_pages_proyectos_id", + "target": "astro_content", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/proyectos/[id].astro" + }, + { + "source": "src_pages_proyectos_id", + "target": "src_layouts_layout", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/proyectos/[id].astro" + }, + { + "source": "src_pages_proyectos_id_video", + "target": "astro_content", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/proyectos/[id]/video.astro" + }, + { + "source": "src_pages_proyectos_id_video", + "target": "src_styles_video_page", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/proyectos/[id]/video.astro" + }, + { + "source": "src_pages_proyectos_multiguerras", + "target": "astro_assets", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/proyectos/multiguerras.astro" + }, + { + "source": "src_pages_proyectos_multiguerras", + "target": "astro_content", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/proyectos/multiguerras.astro" + }, + { + "source": "src_pages_proyectos_multiguerras", + "target": "src_layouts_layout", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/pages/proyectos/multiguerras.astro" + }, + { + "source": "agents", + "target": "formato", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "src_content_multiguerras_davinci_resolve", + "target": "src_content_multiguerras_infraestructura", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/content/multiguerras/davinci-resolve.md", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "src_scripts_galaxia_scroll_init_schedulescrub", + "target": "src_scripts_galaxia_scroll_init_applyscrub", + "relation": "indirect_call", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "argument", + "source_file": "src/scripts/galaxia-scroll.js", + "source_location": "L70", + "weight": 1.0 + }, + { + "source": "src_scripts_habilidades_grafo_initgrafo", + "target": "src_scripts_habilidades_grafo_initgrafo_tick", + "relation": "indirect_call", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "argument", + "source_file": "src/scripts/habilidades-grafo.js", + "source_location": "L437", + "weight": 1.0 + }, + { + "source": "src_scripts_hero_inithero_entrance", + "target": "src_scripts_hero_inithero_startidlefloat", + "relation": "indirect_call", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "argument", + "source_file": "src/scripts/hero.js", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "src_scripts_proyecto_video", + "target": "src_scripts_proyecto_video_envolver", + "relation": "indirect_call", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "argument", + "source_file": "src/scripts/proyecto-video.js", + "source_location": "L135", + "weight": 1.0 + }, + { + "source": "src_scripts_video_compare", + "target": "src_scripts_video_compare_initvideocomparesliders", + "relation": "indirect_call", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "argument", + "source_file": "src/scripts/video-compare.js", + "source_location": "L189", + "weight": 1.0 + }, + { + "source": "src_scripts_video_compare_initvideocomparesliders", + "target": "src_scripts_video_compare_setupslider", + "relation": "indirect_call", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "argument", + "source_file": "src/scripts/video-compare.js", + "source_location": "L186", + "weight": 1.0 + }, + { + "source": "agents_stack", + "target": "src_scripts_proyectos_ruta_initruta_build", + "relation": "references", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "context": "build", + "source_file": "AGENTS.md", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "formato_galer\u00eda_de_im\u00e1genes_v\u00eddeo_lightbox", + "target": "src_scripts_proyectos_ruta_initruta_build", + "relation": "references", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "context": "build", + "source_file": "FORMATO.md", + "source_location": "L134", + "weight": 1.0 + } + ], + "hyperedges": [], + "built_at_commit": "1db7bc1c25aa47e1ba885b5a67a664bea6372b9f" +} \ No newline at end of file diff --git a/graphify-out/2026-09-26/manifest.json b/graphify-out/2026-09-26/manifest.json new file mode 100644 index 0000000..1376328 --- /dev/null +++ b/graphify-out/2026-09-26/manifest.json @@ -0,0 +1,182 @@ +{ + "components/ProyectoCard.astro": { + "mtime": 1789724173.3387187, + "seen": 1789864780.4551697, + "ast_hash": "1d85e40f102d6862180ca9b8ddc54f7d", + "semantic_hash": "1d85e40f102d6862180ca9b8ddc54f7d" + }, + "components/ProyectoHero.astro": { + "mtime": 1789551089.9970021, + "seen": 1789864780.4551866, + "ast_hash": "dc4939a5789cd67872b21878903df418", + "semantic_hash": "dc4939a5789cd67872b21878903df418" + }, + "components/TemaToggle.astro": { + "mtime": 1789116359.882172, + "seen": 1789864780.4551938, + "ast_hash": "f5a1c7cb4f9991b6efec4ff89716ed29", + "semantic_hash": "f5a1c7cb4f9991b6efec4ff89716ed29" + }, + "components/VideoCompareSlider.astro": { + "mtime": 1789116359.882172, + "seen": 1789864780.4551983, + "ast_hash": "45cd44ccba67407f369d7670eb3368e6", + "semantic_hash": "45cd44ccba67407f369d7670eb3368e6" + }, + "content.config.ts": { + "mtime": 1789721107.9652998, + "seen": 1789864780.455202, + "ast_hash": "363e8fb692ab6f02c636ea5c4d39bce6", + "semantic_hash": "363e8fb692ab6f02c636ea5c4d39bce6" + }, + "data/categorias.json": { + "mtime": 1789116359.8825543, + "seen": 1789864780.455205, + "ast_hash": "f015ea46964ab4c26ecba995effe7dae", + "semantic_hash": "f015ea46964ab4c26ecba995effe7dae" + }, + "data/contacto.json": { + "mtime": 1789116359.8827286, + "seen": 1789864780.4552085, + "ast_hash": "f2bc668ce04bb5a91f99b26c1d5b3e68", + "semantic_hash": "f2bc668ce04bb5a91f99b26c1d5b3e68" + }, + "data/multiguerras.json": { + "mtime": 1789116359.8827286, + "seen": 1789864780.4552114, + "ast_hash": "292ad17b5a1f8422d9ec50d5d38976a3", + "semantic_hash": "292ad17b5a1f8422d9ec50d5d38976a3" + }, + "layouts/Layout.astro": { + "mtime": 1789116359.8827286, + "seen": 1789864780.455214, + "ast_hash": "549ecde64f849ca71701701d33b41f4c", + "semantic_hash": "549ecde64f849ca71701701d33b41f4c" + }, + "pages/index.astro": { + "mtime": 1789723161.0143356, + "seen": 1789864780.4552171, + "ast_hash": "4b6502a45080fea19ad3697242c4a1d2", + "semantic_hash": "4b6502a45080fea19ad3697242c4a1d2" + }, + "pages/proyectos/[id].astro": { + "mtime": 1789550735.6466098, + "seen": 1789864780.4552197, + "ast_hash": "d30e25e9ea86baf7f1ccdde45a599e5e", + "semantic_hash": "d30e25e9ea86baf7f1ccdde45a599e5e" + }, + "pages/proyectos/[id]/video.astro": { + "mtime": 1789721291.1626413, + "seen": 1789864780.4552233, + "ast_hash": "f81db9bf976f792c28d55ae0a2c411ee", + "semantic_hash": "f81db9bf976f792c28d55ae0a2c411ee" + }, + "pages/proyectos/multiguerras.astro": { + "mtime": 1789550696.1974201, + "seen": 1789864780.455226, + "ast_hash": "1a95f34f75fcba8620231fef2a17866d", + "semantic_hash": "1a95f34f75fcba8620231fef2a17866d" + }, + "pages/sitemap.xml.ts": { + "mtime": 1789116359.8830416, + "seen": 1789864780.455228, + "ast_hash": "9a6cfa32a30b7c532304ea0474a6a419", + "semantic_hash": "9a6cfa32a30b7c532304ea0474a6a419" + }, + "scripts/card-video.js": { + "mtime": 1789723169.6490047, + "seen": 1789864780.4552307, + "ast_hash": "ac8813e7c3423cb12424b9dd193b75c7", + "semantic_hash": "ac8813e7c3423cb12424b9dd193b75c7" + }, + "scripts/galaxia-scroll.js": { + "mtime": 1789296731.088453, + "seen": 1789864780.4552333, + "ast_hash": "4c66cb1d0d8d936539199119edd78ccc", + "semantic_hash": "4c66cb1d0d8d936539199119edd78ccc" + }, + "scripts/habilidades-grafo.js": { + "mtime": 1789554634.3173044, + "seen": 1789864780.4552355, + "ast_hash": "b99492d5d36636a6a2434121433f4ee6", + "semantic_hash": "b99492d5d36636a6a2434121433f4ee6" + }, + "scripts/hero.js": { + "mtime": 1789116359.883177, + "seen": 1789864780.4552379, + "ast_hash": "1b587a5c09be2810d4915754e3ef65b7", + "semantic_hash": "1b587a5c09be2810d4915754e3ef65b7" + }, + "scripts/hls-media.js": { + "mtime": 1789116359.883177, + "seen": 1789864780.4552405, + "ast_hash": "0b68f7eb7bb51117d8f196d4c977241a", + "semantic_hash": "0b68f7eb7bb51117d8f196d4c977241a" + }, + "scripts/multiguerras-nav.js": { + "mtime": 1789116359.883177, + "seen": 1789864780.455243, + "ast_hash": "1ac81fb2b12283f5f598eec7108355a3", + "semantic_hash": "1ac81fb2b12283f5f598eec7108355a3" + }, + "scripts/multiguerras-timeline.js": { + "mtime": 1789116359.8833082, + "seen": 1789864780.4552453, + "ast_hash": "0dbdc5b9f2f528f01957ff5e65514459", + "semantic_hash": "0dbdc5b9f2f528f01957ff5e65514459" + }, + "scripts/preloader.js": { + "mtime": 1789296724.6394823, + "seen": 1789864780.4552476, + "ast_hash": "38c1f18e3880ed09672f3885da5f3e1e", + "semantic_hash": "38c1f18e3880ed09672f3885da5f3e1e" + }, + "scripts/proyecto-galeria.js": { + "mtime": 1789116359.8833082, + "seen": 1789864780.4552512, + "ast_hash": "8b2a1553390df97c3d7b05017fd1f01b", + "semantic_hash": "8b2a1553390df97c3d7b05017fd1f01b" + }, + "scripts/proyecto-scroll-hint.js": { + "mtime": 1789116359.8833082, + "seen": 1789864780.4552536, + "ast_hash": "6f99dfdfcd43b3c534911af2d4b5385a", + "semantic_hash": "6f99dfdfcd43b3c534911af2d4b5385a" + }, + "scripts/proyecto-video.js": { + "mtime": 1789116359.8833082, + "seen": 1789864780.4552557, + "ast_hash": "7a6772cceb1cb79f3ea70e0d29896b00", + "semantic_hash": "7a6772cceb1cb79f3ea70e0d29896b00" + }, + "scripts/proyectos-ruta.js": { + "mtime": 1789548412.6917317, + "seen": 1789864780.4552581, + "ast_hash": "bfb5415423a1a712e783b538e9e8ea35", + "semantic_hash": "bfb5415423a1a712e783b538e9e8ea35" + }, + "scripts/smooth-scroll.js": { + "mtime": 1789296820.4832556, + "seen": 1789864780.4552608, + "ast_hash": "a4d2855222793aaeefb440f80384c476", + "semantic_hash": "a4d2855222793aaeefb440f80384c476" + }, + "scripts/video-compare.js": { + "mtime": 1789116359.8833082, + "seen": 1789864780.4552631, + "ast_hash": "8e172fd547991c306e804c1f84ab99bd", + "semantic_hash": "8e172fd547991c306e804c1f84ab99bd" + }, + "utils/fechas.js": { + "mtime": 1789116359.8836575, + "seen": 1789864780.4552655, + "ast_hash": "3296eb474a231d72bcf18f314a089d09", + "semantic_hash": "3296eb474a231d72bcf18f314a089d09" + }, + "utils/titulo.js": { + "mtime": 1789550650.4011214, + "seen": 1789864780.455268, + "ast_hash": "14f6b1565a7f9a37dcb53799febb6b9e", + "semantic_hash": "14f6b1565a7f9a37dcb53799febb6b9e" + } +} \ No newline at end of file diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 4152ea8..fd14c30 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,17 +1,17 @@ -# Graph Report - FixDistribucionSkills (2026-09-25) +# Graph Report - pgscom.github.io (2026-09-26) ## Corpus Check -- 95 files · ~3,344,426 words +- 112 files · ~3,346,697 words - Verdict: corpus is large enough that graph structure adds value. -- Unclassified: 18 file(s) not represented in the graph (top: .css 10, (none) 7, .woff2 1) +- Unclassified: 17 file(s) not represented in the graph (top: .css 10, (none) 6, .woff2 1) ## Summary -- 379 nodes · 398 edges · 83 communities (23 shown, 60 thin omitted) +- 406 nodes · 408 edges · 101 communities (24 shown, 77 thin omitted) - Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 8 edges (avg confidence: 0.88) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `1db7bc1c` +- Built from commit: `ca2e0774` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -42,9 +42,9 @@ - video-compare.js - diseño-escenarios.md - Inicios del Blog -- Identidad PGSCOM -- Portafolio Cinematográfico -- Portfolio Personal PGSCOM +- proyecto-galeria.js +- Cómo funciona +- cold-searcher.md - audio.md - resultados.md - multiguerras-timeline.js @@ -60,6 +60,12 @@ - styles_proyectos - styles_titulo_proyecto - styles_video_page +- ipad-tunnel.md +- lcemp.md +- mlxchat.md +- pulseboot.md +- blender-cotracker3.md +- unreal-render-farm.md ## God Nodes (most connected - your core abstractions) 1. `Guía de formato — ficheros de proyecto` - 17 edges @@ -88,19 +94,19 @@ ## Import Cycles - None detected. -## Communities (83 total, 60 thin omitted) +## Communities (101 total, 77 thin omitted) ### Community 1 - "index.astro" -Cohesion: 0.09 -Nodes (25): ref_astro_assets, ref_astro_content, src_assets_logo, src_assets_proyectos_portfolio, collections, habilidades, multiguerras, proyectos (+17 more) +Cohesion: 0.11 +Nodes (21): ref_astro_assets, ref_astro_content, src_assets_logo, src_assets_proyectos_portfolio, src_data_categorias, src_data_contacto, src_data_multiguerras, GET() (+13 more) ### Community 2 - "proyecto-video.js" -Cohesion: 0.15 -Nodes (12): reproducir(), videos, esHLS(), montarFuente(), ajustarSkin(), ATRIBUTOS_A_COPIAR, CONFIG_HLS, derivarPoster() (+4 more) +Cohesion: 0.14 +Nodes (13): hls.js, reproducir(), videos, esHLS(), montarFuente(), ajustarSkin(), ATRIBUTOS_A_COPIAR, CONFIG_HLS (+5 more) ### Community 3 - "gsap" -Cohesion: 0.21 -Nodes (8): gsap, initHero(), entrance(), startIdleFloat(), dispatchDone(), initPreloader(), hint, lenis +Cohesion: 0.19 +Nodes (9): gsap, azar(), initHero(), entrance(), startIdleFloat(), dispatchDone(), initPreloader(), hint (+1 more) ### Community 4 - "Guía de formato — ficheros de proyecto" Cohesion: 0.07 @@ -116,7 +122,7 @@ Nodes (15): Composición, Metadatos, Montaje:, PostgreSQL, VFX, Almacenamiento:, ### Community 7 - "package.json" Cohesion: 0.06 -Nodes (30): dependencies, astro, @astrojs/mdx, gsap, hls.js, lenis, photoswipe, @videojs/html (+22 more) +Nodes (31): dependencies, astro, @astrojs/mdx, gsap, hls.js, lenis, photoswipe, @videojs/html (+23 more) ### Community 8 - "generate-posters.mjs" Cohesion: 0.20 @@ -135,8 +141,8 @@ Cohesion: 0.20 Nodes (9): Audio, Detrás de cámaras, Galería, Generación de entradas, QRs generados por IA, ¿Qué es este proyecto?, Sistema de cámaras, Validación (+1 more) ### Community 12 - "initGrafo" -Cohesion: 0.32 -Nodes (11): azar(), initGrafo(), caja(), maquetar(), medirEtiqueta(), orientar(), posicionReposo(), repartir() (+3 more) +Cohesion: 0.36 +Nodes (10): initGrafo(), caja(), maquetar(), medirEtiqueta(), orientar(), posicionReposo(), repartir(), seleccionar() (+2 more) ### Community 13 - "scripts" Cohesion: 0.22 @@ -182,22 +188,26 @@ Nodes (4): Galería primer rodaje, Preparación del set, Primer set, Segundo set Cohesion: 0.67 Nodes (3): initVideoCompareSliders(), setupSlider(), teardowns +### Community 28 - "Cómo funciona" +Cohesion: 0.40 +Nodes (4): Cliente, Cómo funciona, Host (Windows / Linux / macOS), Qué hace + ## Knowledge Gaps -- **142 isolated node(s):** `TurnstileResponse`, `TelegramResponse`, `Env`, `name`, `type` (+137 more) - These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 231 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) -- **60 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **154 isolated node(s):** `TurnstileResponse`, `TelegramResponse`, `Env`, `name`, `type` (+149 more) + These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 254 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) +- **77 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ - **Why does `gsap` connect `gsap` to `initRuta`, `package.json`?** - _High betweenness centrality (0.098) - this node is a cross-community bridge._ + _High betweenness centrality (0.086) - this node is a cross-community bridge._ - **What connects `TurnstileResponse`, `TelegramResponse`, `Env` to the rest of the system?** - _142 weakly-connected nodes found - possible documentation gaps or missing edges._ + _154 weakly-connected nodes found - possible documentation gaps or missing edges._ - **Should `index.astro` be split into smaller, more focused modules?** - _Cohesion score 0.08902439024390243 - nodes in this community are weakly interconnected._ + _Cohesion score 0.10793650793650794 - nodes in this community are weakly interconnected._ - **Should `proyecto-video.js` be split into smaller, more focused modules?** - _Cohesion score 0.14736842105263157 - nodes in this community are weakly interconnected._ + _Cohesion score 0.1380952380952381 - nodes in this community are weakly interconnected._ - **Should `Guía de formato — ficheros de proyecto` be split into smaller, more focused modules?** _Cohesion score 0.06896551724137931 - nodes in this community are weakly interconnected._ - **Should `initRuta` be split into smaller, more focused modules?** diff --git a/graphify-out/graph.html b/graphify-out/graph.html index d46e0ca..5e3cc39 100644 --- a/graphify-out/graph.html +++ b/graphify-out/graph.html @@ -63,12 +63,12 @@

Communities

-
379 nodes · 398 edges · 83 communities
+
406 nodes · 408 edges · 101 communities
-
+
{featured.map((proyecto, i) => { const l = heroLayout[huecosHero[i] ?? i]; @@ -263,33 +274,38 @@ const experimentos = rutaEntries.filter((p) => p.experimento);
-
+
- {habilidades.map((h) => { - const Nodo = h.expandible ? 'button' : 'div'; - return ( - - - - {h.marca && } - {h.titulo} - {h.expandible && } - {h.progress < 100 && Dominio: {h.progress}%} - - - ); - })} + {gruposHab.map((g) => ( +
+ {g.titulo &&

{g.titulo}

} + {g.items.map((h) => { + const Nodo = h.expandible ? 'button' : 'div'; + return ( + + + + {h.marca && } + {h.titulo} + {h.expandible && } + {h.progress < 100 && Dominio: {h.progress}%} + + + ); + })} +
+ ))}
p.experimento);
-
+
@@ -701,6 +717,7 @@ const experimentos = rutaEntries.filter((p) => p.experimento); import '../scripts/habilidades-grafo.js'; import '../scripts/proyectos-ruta.js'; import '../scripts/card-video.js'; + import '../scripts/pausar-fuera.js'; diff --git a/src/scripts/habilidades-grafo.js b/src/scripts/habilidades-grafo.js index 5d3258d..7016222 100644 --- a/src/scripts/habilidades-grafo.js +++ b/src/scripts/habilidades-grafo.js @@ -53,11 +53,18 @@ function initGrafo() { // — el hueco reservado tiene que ser al menos eso, o la estrella acoplada // asomaría por encima del propio contenedor. const estrechoMQ = window.matchMedia('(max-width: 1200px)'); - - // Hueco mínimo entre cajas; el vaivén nunca pasa de AMP < HUECO/2, y con - // "reducir movimiento" el cielo se queda quieto. + // ≤768px no hay cielo: las tarjetas van en rejilla por categoría (CSS) y el + // panel se abre debajo de la fila de la tarjeta pulsada, no al final. + const rejillaMQ = window.matchMedia('(max-width: 768px)'); + const docs = grafo.querySelector('.hab-docs'); + + // Hueco mínimo entre cajas; el vaivén nunca pasa de AMP < HUECO/2. Con + // "reducir movimiento", y en móvil (táctil o ≤1024px), el cielo se queda + // quieto: mover 35 nodos, sus líneas y la máscara en cada frame ahoga la + // CPU de un teléfono, y 2px de deriva en esa pantalla ni se ven. Misma + // media query que apaga los destellos en habilidades.css. const HUECO = 8; - const AMP = window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 0 : 3; + const AMP = window.matchMedia('(prefers-reduced-motion: reduce), (max-width: 1024px), (pointer: coarse)').matches ? 0 : 3; // Separación entre estrellas de una misma constelación: nunca menos de // DMIN (la línea que las une tiene que verse), idealmente unos IDEAL px. const DMIN = 58; @@ -108,7 +115,7 @@ function initGrafo() { })); // Posición "viva" de la estrella alrededor de su reposo en el instante t — - // la misma fórmula la usan tick() (rama por defecto) y soltar() (el + // la misma fórmula la usan dibujar() (rama por defecto) y soltar() (el // objetivo en marcha al que hay que llegar sin saltos). function posicionReposo(o, t) { return { @@ -126,17 +133,22 @@ function initGrafo() { // La estrella abierta (acoplada y quieta) y la que está en tránsito no // siguen la fórmula del vaivén: su posición la lleva un gsap.to propio; - // tick() se limita a leerla. + // dibujar() se limita a leerla. let abierto = null; let animando = null; const pos = nodos.map(() => ({ x: 0, y: 0 })); pos[NUCLEO] = { x: 0, y: 0 }; - // gsap.set crea un tween por llamada: en tick(), 35 por frame. Los + // gsap.set crea un tween por llamada: en dibujar(), 35 por frame. Los // quickSetter escriben la misma caché de transform sin crear nada. const mover = nodos.map((n) => ({ x: gsap.quickSetter(n, 'x', 'px'), y: gsap.quickSetter(n, 'y', 'px') })); - function tick() { + // Con el cielo quieto (AMP 0) el ticker solo redibuja mientras una estrella + // viaja; el resto de veces se llama a dibujar() a mano (al maquetar y al + // acabar cada viaje). + const tick = () => { if (AMP || animando) dibujar(); }; + + function dibujar() { if (!listo) return; const t = (performance.now() - t0) / 1000; nodos.forEach((nodo, i) => { @@ -399,9 +411,9 @@ function initGrafo() { ocupadas.push(sitio.k); gsap.set(g.nombre, { x: sitio.x, y: sitio.y }); } - let extension = 0; - for (const o of ocupadas) extension = Math.max(extension, Math.abs(o.t), Math.abs(o.b)); - return { extension, altoNodo: Math.max(...med.map((m) => m.alto)) }; + let arriba = 0, abajo = 0; + for (const o of ocupadas) { arriba = Math.max(arriba, -o.t); abajo = Math.max(abajo, o.b); } + return { arriba, abajo, altoNodo: Math.max(...med.map((m) => m.alto)) }; } // Nebulosa de cada constelación: la silueta de sus estrellas, chips y @@ -461,20 +473,39 @@ function initGrafo() { // sustituye a la vez a una medición inicial y al listener de resize. let anchoPrevio = 0; function maquetar(w) { + if (rejillaMQ.matches) { + // De vuelta a la rejilla (al estrechar la ventana): fuera las + // posiciones y el lado que les dio el cielo; el resto es CSS. + if (listo) { + listo = false; + inner.classList.remove('listo'); + inner.style.height = ''; + nodos.forEach((n) => n.classList.remove('hab-nodo--izq')); + gsap.set(nodos, { clearProps: 'transform' }); + } + return; + } if (!listo) { listo = true; gsap.set(nodos, { xPercent: 0, yPercent: -50 }); gsap.set([logo, ...grupos.flatMap((g) => g.nombre ?? [])], { xPercent: -50, yPercent: -50 }); inner.classList.add('listo'); } - const { extension, altoNodo } = repartir(w); - const panelMaxH = overlayMQ.matches ? (estrechoMQ.matches ? 260 : 320) : 0; - const mitad = Math.max(extension + AMP, panelMaxH / 2 + altoNodo + 8) + 6; - const alto = 2 * mitad; + const { arriba, abajo, altoNodo } = repartir(w); + // Con el panel superpuesto (escritorio), centrado sobre el logo, el cielo + // es simétrico y le deja sitio. Sin superposición cada mitad mide lo que + // ocupa: sin cola vacía bajo la constelación más corta. + let sobre = arriba + AMP + 6, bajo = abajo + AMP + 6; + if (overlayMQ.matches) { + const panelMaxH = estrechoMQ.matches ? 260 : 320; + sobre = bajo = Math.max(Math.max(arriba, abajo) + AMP, panelMaxH / 2 + altoNodo + 8) + 6; + } + const alto = sobre + bajo; inner.style.height = `${alto}px`; - cx = w / 2; cy = alto / 2; + inner.style.setProperty('--centro-y', `${sobre}px`); + cx = w / 2; cy = sobre; svg.setAttribute('viewBox', `0 0 ${w} ${alto}`); - tick(); + dibujar(); } new ResizeObserver(([entry]) => { const { width: w } = entry.contentRect; @@ -517,7 +548,7 @@ function initGrafo() { // Suelta una estrella de vuelta a su reposo — que sigue en marcha por el // vaivén — interpolando hacia él en cada frame en vez de animar a un - // punto fijo: si no, el último frame del tween y el primero de tick() + // punto fijo: si no, el último frame del tween y el primero de dibujar() // no coincidirían y se vería un salto. function soltar(nodo) { animando = nodo; @@ -535,7 +566,7 @@ function initGrafo() { y: gsap.utils.interpolate(inicio.y, destino.y, estado.p), }); }, - onComplete: () => { if (animando === nodo) animando = null; }, + onComplete: () => { if (animando === nodo) animando = null; dibujar(); }, }); } @@ -550,13 +581,22 @@ function initGrafo() { if (previo) { previo.setAttribute('aria-expanded', 'false'); - document.getElementById(previo.getAttribute('aria-controls')).hidden = true; - if (overlayMQ.matches) soltar(previo); + const docPrevio = document.getElementById(previo.getAttribute('aria-controls')); + docPrevio.hidden = true; + // En la rejilla se movió junto a su tarjeta: vuelve a su sitio + docs.append(docPrevio); + if (overlayMQ.matches && listo) soltar(previo); } if (!abierto) return; abierto.setAttribute('aria-expanded', 'true'); const doc = document.getElementById(abierto.getAttribute('aria-controls')); + if (rejillaMQ.matches) { + // Tras la última tarjeta de su fila, a todo el ancho de la rejilla + let fin = abierto; + for (let s = abierto.nextElementSibling; s?.classList.contains('hab-nodo') && s.offsetTop === abierto.offsetTop; s = s.nextElementSibling) fin = s; + fin.after(doc); + } doc.hidden = false; const i = nodos.indexOf(abierto); @@ -564,9 +604,17 @@ function initGrafo() { el.classList.add(a === i || b === i ? 'hab-arista-activa' : 'hab-arista-dim'); }); + // En la rejilla, tarjeta y panel a la vista (abrir otra cierra la + // anterior, y lo que había encima puede encoger); 80px libres abajo, ahí + // flota la barra de navegación inferior. + if (rejillaMQ.matches) { + const t = abierto.getBoundingClientRect(), d = doc.getBoundingClientRect(); + if (t.top < 24 || d.bottom > window.innerHeight - 80) { + lenis.scrollTo(abierto, { offset: -Math.max(24, window.innerHeight - 80 - (d.bottom - t.top)) }); + } // Sin superposición el panel cae debajo del cielo, que puede ser más // alto que la pantalla: si queda fuera de la vista, se lleva hasta ella. - if (!overlayMQ.matches && doc.getBoundingClientRect().bottom > window.innerHeight) { + } else if (!overlayMQ.matches && doc.getBoundingClientRect().bottom > window.innerHeight) { // 80px libres abajo: ahí flota la barra de navegación inferior lenis.scrollTo(doc, { offset: -Math.max(24, window.innerHeight - doc.offsetHeight - 80) }); } @@ -584,7 +632,7 @@ function initGrafo() { const { lab } = est[i]; gsap.to(abierto, { x: -(lab.l + lab.w / 2), y: dockY, duration: 0.5, ease: 'power2.out', - onComplete: () => { if (animando === abierto) animando = null; }, + onComplete: () => { if (animando === abierto) animando = null; dibujar(); }, }); } } @@ -596,6 +644,8 @@ function initGrafo() { document.addEventListener('keydown', (e) => { if (e.key === 'Escape') seleccionar(null); }); + // Al cruzar el corte de la rejilla el panel abierto se queda sin sitio + rejillaMQ.addEventListener('change', () => seleccionar(null)); } // Astro emite este bloque como