Cómo analizar un debate político de 90 minutos con Inteligencia Artificial multimodal. IA aplicada.

Cómo analizar un debate político de 90 minutos con Inteligencia Artificial multimodal: guía técnica completa

Workflow replicable para procesar vídeo, audio y transcripción de un debate político con Google Gemini, Python y Colab. Configuración técnica, código completo, gestión de cuotas y resolución de cuellos de botella.

El análisis cuantitativo de un debate político televisado mediante Inteligencia Artificial es uno de los casos de uso donde la IA multimodal aporta valor diferencial frente a cualquier metodología tradicional. Mientras el periodista o el analista humano procesa el debate de forma secuencial y subjetiva, una IA multimodal procesa simultáneamente fotogramas, onda de audio y texto, generando datos cuantitativos que ningún espectador puede medir en directo: tiempos exactos de palabra, matrices de interrupciones, indicadores prosódicos, gestos adaptadores, coherencia entre canal verbal y no verbal, y carga semántica de las preguntas formuladas por los moderadores.

Esta guía documenta paso a paso el procedimiento técnico que utilicé para analizar «El Debate decisivo» de Canal Sur Televisión del 11 de mayo de 2026 (90 minutos, cinco candidatos a la Presidencia de la Junta de Andalucía). El análisis editorial completo se publicó en elenaramallo.es. Este artículo se centra exclusivamente en la metodología técnica: configuración, código, gestión de costes y resolución de los principales cuellos de botella.

El procedimiento es replicable para cualquier debate, entrevista o intervención política en vídeo, con coste inferior a 1 € por análisis completo.

Visión general del workflow

El procedimiento consta de cinco fases secuenciales:

  1. Descarga del vídeo desde la plataforma de origen.
  2. Preparación y compresión del archivo con FFmpeg para cumplir los límites técnicos de la API.
  3. Subida a Google Drive y configuración del entorno Python en Google Colab.
  4. Procesamiento con Gemini vía la File API, fragmentando el vídeo en dos mitades para optimizar la calidad del análisis.
  5. Consolidación de resultados con una pasada de síntesis final.

El procedimiento requiere conocimientos básicos de línea de comandos y de Python. No es necesario ser desarrollador profesional, pero sí estar familiarizado con la ejecución de comandos en terminal y con el uso de Google Colab.

Pila tecnológica

El stack técnico utilizado es el siguiente:

  • Modelo de IA: Gemini 2.5 Flash (familia Gemini 3) de Google. Es el modelo multimodal con la mejor relación calidad/precio para vídeo en mayo de 2026.
  • Plataforma de inferencia: Google AI Studio + Google Cloud File API.
  • Entorno de ejecución: Google Colab (gratuito) con runtime estándar.
  • SDK: google-genai (Python).
  • Procesamiento de vídeo: FFmpeg para compresión y fragmentación, yt-dlp para descarga.
  • Almacenamiento intermedio: Google Drive.
  • Sistema operativo: Windows 11 (la guía es trasladable a macOS y Linux con cambios mínimos).

Requisitos previos

Antes de empezar necesitas:

  • Cuenta de Google con suscripción Google AI Pro (19,99 € / mes) o capacidad de activar facturación en Google Cloud. Para una sola pasada de análisis sirve la suscripción Pro o incluso la cuenta gratuita con créditos iniciales de Google Cloud.
  • Acceso a Google Colab (gratuito, requiere solo cuenta Google).
  • Suficiente espacio en Google Drive para almacenar el vídeo del debate (10-20 GB recomendados).
  • FFmpeg y yt-dlp instalados en el sistema local.
  • Vídeo del debate en formato MP4 o accesible vía URL.

Instalación de FFmpeg y yt-dlp en Windows

FFmpeg y yt-dlp son las dos herramientas de línea de comandos indispensables. En Windows 11 la instalación más rápida es vía el gestor de paquetes nativo winget:

winget install gyan.ffmpeg
winget install yt-dlp.yt-dlp

Tras la instalación es obligatorio cerrar y abrir una nueva ventana de CMD para que Windows recargue las variables de entorno. Si los comandos no se reconocen tras reiniciar el CMD, hay que añadir manualmente sus rutas a la variable PATH del sistema.

Para verificar la instalación:

ffmpeg -version
yt-dlp --version

En macOS la instalación se hace con Homebrew (brew install ffmpeg yt-dlp) y en Linux con el gestor de paquetes correspondiente.

Descarga del vídeo

La descarga requiere capturar el manifiesto desde las herramientas de desarrollador del navegador.

Captura del manifiesto m3u8

  1. Abrir el vídeo del debate en el navegador (Chrome o Edge).
  2. Pulsar F12 para abrir las Herramientas de Desarrollador.
  3. Ir a la pestaña Network.
  4. En el filtro escribir m3u8.
  5. Pulsar Play en el vídeo. Aparecerá un archivo terminado en .m3u8, normalmente llamado master.m3u8.
  6. Clic derecho sobre ese archivo → Copy → Copy URL.

Descarga con yt-dlp

Una vez capturada la URL del manifiesto, la descarga se lanza desde la línea de comandos:

yt-dlp -f "bestvideo[height<=720]+bestaudio/best[height<=720]" --merge-output-format mp4 "URL_DEL_M3U8" -o debate_original.mp4

Limito la resolución a 720p porque para análisis de comunicación no verbal no se necesita 1080p o superior, y un archivo más ligero facilita las fases siguientes. yt-dlp descarga todos los fragmentos del streaming y los une automáticamente en un único MP4.

Compresión del vídeo para la File API

La File API de Google Gemini tiene un límite de 2 GB por archivo. Un vídeo de 90 minutos en 720p suele superar este límite con códecs estándar, así que es necesario comprimirlo manteniendo calidad suficiente para que la IA pueda detectar gestos, microexpresiones macroscópicas y variaciones prosódicas.

El comando óptimo es:

ffmpeg -i "debate_original.mp4" -vf "scale=1280:720" -vcodec libx264 -preset medium -crf 26 -c:a aac -b:a 128k -movflags +faststart "debate_comprimido.mp4"

Explicación de los parámetros:

  • -vcodec libx264: códec de vídeo H.264, el más compatible con la File API de Google.
  • -preset medium: equilibrio entre tiempo de compresión y calidad/tamaño final.
  • -crf 26: factor de calidad. Valores entre 23 y 28 son óptimos para análisis IA. Por debajo de 23 el archivo será grande; por encima de 28 perderá detalle visual.
  • -c:a aac -b:a 128k: codifica el audio en AAC a 128 kbps. Suficiente para preservar la fidelidad necesaria para análisis prosódico.
  • -movflags +faststart: mueve los metadatos al principio del archivo, lo que permite a la File API empezar a procesarlo antes de que termine la carga.

Para un vídeo de 90 minutos en 720p el archivo resultante pesa típicamente entre 1,2 y 1,8 GB.

Fragmentación en dos mitades

Aunque el vídeo completo cabría en la File API tras la compresión, dividirlo en dos mitades de 45 minutos aporta dos ventajas técnicas relevantes:

  1. Mayor calidad de análisis: el modelo procesa mejor segmentos más cortos, con menor riesgo de perder coherencia en archivos largos.
  2. Análisis de evolución: permite comparar el desempeño de los candidatos entre la primera y la segunda mitad del debate (fatiga, deterioro o mejora del tono, intensificación de gestos adaptadores).

La fragmentación se hace con FFmpeg en modo copia, sin re-codificar, lo que la convierte en una operación casi instantánea:

ffmpeg -i "debate_comprimido.mp4" -ss 00:00:00 -t 00:47:00 -c copy debate_p1.mp4
ffmpeg -i "debate_comprimido.mp4" -ss 00:47:00 -c copy debate_p2.mp4

El primer comando extrae los primeros 47 minutos. El segundo coge desde el minuto 47 hasta el final. El parámetro -c copy hace que FFmpeg no re-codifique, simplemente copie los flujos binarios al archivo de destino.

Subida a Google Drive

Los dos archivos resultantes (debate_p1.mp4 y debate_p2.mp4) se suben a una carpeta de Google Drive. En este caso usé /AnalisisDebate/. Esta carpeta será accesible desde Google Colab para subir los archivos a la File API de Gemini.

La subida a Drive puede tardar entre 5 y 15 minutos dependiendo de la velocidad de subida. Conviene hacerla en una pestaña aparte mientras se prepara el entorno de Colab.

Generación de la API key de Google AI Studio

Para usar Gemini desde Python se necesita una API key. El procedimiento es:

  1. Ir a https://aistudio.google.com/apikey.
  2. Pulsar «Create API key».
  3. Seleccionar «Create API key in new project». Google creará automáticamente un proyecto de Google Cloud.
  4. Copiar la clave generada (empieza por AIza... y tiene 39 caracteres). Esta clave solo se muestra una vez; conviene guardarla en un gestor de contraseñas.

Para un análisis con vídeo de 90 minutos, el coste con Gemini 2.5 Flash es inferior a 1 €. Si la cuenta Google está en tier gratuito, los créditos iniciales de Google Cloud (300 $ a 90 días) cubren el análisis sin gasto real. Para asegurar las cuotas necesarias, recomiendo vincular una cuenta de facturación al proyecto (lo que activa el «Tier 1») desde Google Cloud Console.

Configuración del entorno en Google Colab

Google Colab proporciona un entorno Python en la nube de forma gratuita, ideal para este caso de uso porque elimina el problema de tener que instalar dependencias en local y porque tiene acceso directo a Google Drive.

Celda 1: Instalación de librerías y montaje de Drive

!pip install -q -U google-genai
from google.colab import drive
drive.mount('/content/drive')

Esta celda instala la librería oficial google-genai (la más reciente del SDK Python de Gemini) y monta Google Drive en el sistema de archivos del entorno Colab.

Celda 2: Creación del cliente

from google import genai
from google.genai import types
import time

client = genai.Client(api_key="TU_API_KEY_AQUI")
print(client)

El cliente genai.Client es la pasarela hacia la API de Gemini. Sustituye "TU_API_KEY_AQUI" por la clave generada en el paso 9.

Nota técnica importante: existe un parámetro opcional http_options={'api_version': 'v1alpha'} que algunas guías recomiendan para activar funcionalidades experimentales como media_resolution. No usarlo si trabajamos con modelos estables como Gemini 2.5 Flash, porque introduce un mismatch entre la API de subida de archivos y la de generación, que se manifiesta como error 400 INVALID_ARGUMENT: Cannot fetch content from the provided URL. La configuración por defecto (sin http_options) usa v1beta, que es la versión estable correcta para el flujo descrito en esta guía.

Diseño del prompt de análisis

El prompt es el corazón del análisis. Un buen prompt debe estructurar la tarea en fases, indicar al modelo qué medir y cómo presentar los resultados, e incluir los caveats metodológicos necesarios para evitar inferencias no sostenibles.

El prompt que utilicé tiene seis fases secuenciales:

  1. FASE A: Mapeo cuantitativo del turno de palabra (tiempos, turnos, interrupciones, alusiones).
  2. FASE B: Análisis temático y framing (distribución por bloque, marco discursivo, posición ofensiva/defensiva, mapa de ataques).
  3. FASE C: Análisis paraverbal o prosódico (tono, ritmo, pausas, disfluencias, fuga emocional).
  4. FASE D: Análisis no verbal o kinésico (postura, gestos, mirada, coherencia verbal/no verbal).
  5. FASE E: Análisis retórico (recursos retóricos, segmento de electorado objetivo, coherencia estratégica).
  6. FASE F: Trato del moderador (distribución del tiempo, carga semántica de las preguntas, asimetrías).

Reglas de rigor incluidas en el prompt:

  • Separación observación/inferencia: cada inferencia interpretativa debe ir precedida por la evidencia observable.
  • Citas literales con timestamp en formato [mm:ss].
  • Caveat FACS: el análisis de microexpresiones requiere validación humana especializada; el modelo solo debe reportar marcadores inequívocos.
  • No valoraciones ideológicas: el análisis es comunicativo, retórico y estratégico, no programático.
  • Output en español neutro, registro técnico-académico.

El prompt completo (unas 250 líneas) está disponible bajo solicitud. Para su adaptación a otros debates basta con cambiar la sección de identificación de candidatos, el formato del debate y la fecha.

Procesamiento de las dos mitades

La celda principal del análisis sube cada mitad del vídeo a la File API, espera a que Google termine de procesar el archivo internamente, y lanza el análisis con el prompt:

import time

PROMPT_PARCIAL = """
[AQUÍ EL PROMPT COMPLETO DE LAS SEIS FASES, con la nota
NOTA: estás analizando la PRIMERA MITAD / SEGUNDA MITAD del debate.
Los timestamps de la PARTE 2 son relativos al inicio de esa mitad.
Suma 47:00 para timestamp absoluto.]
"""

PARTES = [
    ("/content/drive/MyDrive/AnalisisDebate/debate_p1.mp4", "PRIMERA MITAD (00:00 - 47:00)"),
    ("/content/drive/MyDrive/AnalisisDebate/debate_p2.mp4", "SEGUNDA MITAD (47:00 - 94:00)"),
]

analisis_parciales = []

def analizar(f, prompt_final):
    return client.models.generate_content(
        model="gemini-2.5-flash",
        contents=[f, prompt_final],
    )

def guardar(idx, descripcion, texto):
    ruta = f"/content/drive/MyDrive/AnalisisDebate/analisis_parte_{idx}.md"
    with open(ruta, "w", encoding="utf-8") as out:
        out.write(f"# ANÁLISIS - {descripcion}\n\n{texto}")
    print(f"   Guardado en {ruta}")

for i, (path, descripcion) in enumerate(PARTES):
    print(f"\n{'='*60}")
    print(f"PARTE {i+1}: {descripcion}")
    print(f"{'='*60}")
    print(f"\nSubiendo {path}...")
    f = client.files.upload(file=path)
    while f.state.name == "PROCESSING":
        print(f"  Procesando... ({f.state.name})")
        time.sleep(10)
        f = client.files.get(name=f.name)
    if f.state.name == "FAILED":
        print(f"❌ Fallo al procesar parte {i+1}")
        continue
    print(f"✅ Vídeo listo: {f.uri}")
    prompt_final = PROMPT_PARCIAL.replace("PRIMERA MITAD / SEGUNDA MITAD", descripcion)
    print(f"\nLanzando análisis de parte {i+1} (5-10 min)...")
    try:
        response = analizar(f, prompt_final)
        analisis_parciales.append({"parte": i+1, "descripcion": descripcion, "texto": response.text})
        print(f"✅ Parte {i+1} completada")
        guardar(i+1, descripcion, response.text)
    except Exception as e:
        print(f"❌ Error: {e}")
    if i < len(PARTES) - 1:
        print("\nPausa de 30s antes de la siguiente parte...")
        time.sleep(30)

print(f"\n{'='*60}")
print(f"COMPLETADO: {len(analisis_parciales)} de {len(PARTES)} partes")
print(f"{'='*60}")

Puntos clave del script:

  • Subida con client.files.upload(file=path): sube cada vídeo a la File API. Devuelve un objeto file con un URI persistente durante 48 horas.
  • Bucle de espera while f.state.name == "PROCESSING": la File API procesa el archivo internamente antes de hacerlo disponible para análisis. Esta espera tarda entre 2 y 10 minutos por archivo según el tamaño.
  • Generación con client.models.generate_content: ejecuta el análisis pasando el archivo y el prompt. Tarda entre 5 y 15 minutos por mitad.
  • Guardado inmediato en Drive: si Colab desconecta durante el procesamiento de la segunda mitad, la primera ya queda salvaguardada.
  • Pausa de 30 segundos entre peticiones: para no acumular consumo de tokens por minuto (TPM) y evitar errores de cuota.

Síntesis consolidada

Una vez completados los dos análisis parciales, una tercera celda consolida ambos en un único informe final. Esta petición no procesa vídeo, solo texto, así que es rápida (2-4 minutos) y económica:

with open("/content/drive/MyDrive/AnalisisDebate/analisis_parte_1.md", "r", encoding="utf-8") as f:
    parte1 = f.read()
with open("/content/drive/MyDrive/AnalisisDebate/analisis_parte_2.md", "r", encoding="utf-8") as f:
    parte2 = f.read()

PROMPT_SINTESIS = f"""
Eres un analista de comunicación política especializado en debates electorales.
Recibes dos análisis técnicos, uno por cada mitad de un debate de 90 minutos.
Consolídalos en un único informe final, añadiendo una sección sobre la EVOLUCIÓN
de cada candidato entre la primera y la segunda mitad.

ANÁLISIS PRIMERA MITAD:
---
{{parte1}}
---

ANÁLISIS SEGUNDA MITAD:
---
{{parte2}}
---

ESTRUCTURA DEL INFORME CONSOLIDADO:
1. Tabla resumen ejecutiva (totales del debate completo).
2. Matriz de interrupciones consolidada.
3. Matriz de ataques cruzados consolidada.
4. Análisis individual por candidato, con sección de evolución 1ª↔2ª mitad.
5. Análisis del trabajo de los moderadores.
6. Momentos críticos del debate completo.
7. Conclusiones técnicas.

REGLAS:
- Timestamps absolutos del debate completo (suma 47:00 a los locales de la parte 2).
- Mantén separación [OBSERVABLE] / [INFERIDO].
- Cita literal entrecomillada con timestamp cuando reproduzcas frases.
- Output en español neutro estándar peninsular.
"""

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=[PROMPT_SINTESIS],
)
print(response.text)

with open("/content/drive/MyDrive/AnalisisDebate/analisis_consolidado.md", "w", encoding="utf-8") as f:
    f.write(response.text)

El resultado es un documento Markdown con la estructura consolidada listo para revisión humana y posterior maquetación editorial.

Coste y tiempos

El coste total del análisis con Gemini 2.5 Flash es aproximadamente:

  • Parte 1: ~720.000 tokens input + ~20.000 tokens output ≈ 0,25 €
  • Parte 2: ~720.000 tokens input + ~20.000 tokens output ≈ 0,25 €
  • Síntesis consolidada: ~50.000 tokens input + ~30.000 tokens output ≈ 0,10 €
  • Total: ≈ 0,60 € por análisis completo de 90 minutos de debate.

Si se prefiere Gemini 2.5 Pro para un análisis más profundo de matices retóricos, el coste se multiplica por 5-7 (≈ 3-4 € por análisis).

Tiempos estimados:

  • Descarga del vídeo: 10-20 minutos.
  • Compresión y fragmentación: 15-25 minutos.
  • Subida a Drive: 5-15 minutos.
  • Análisis de las dos mitades + síntesis: 30-45 minutos.
  • Total end-to-end: 60-90 minutos.

Cuellos de botella habituales y cómo resolverlos

Error «Token count failed» en la interfaz web de AI Studio

Si se intenta subir el vídeo directamente desde el navegador a Google AI Studio, suele aparecer el error Token count failed con vídeos largos. Esto se debe a un timeout del front-end de la interfaz web, no a un problema real de cuota.

Solución: usar la File API directamente desde Python en Colab, como hace esta guía. La File API no tiene ese límite y procesa correctamente vídeos hasta 2 GB.

Error «Media is too large. Limit: 2147483648»

La File API tiene un límite de 2 GB por archivo. Si el vídeo lo supera, hay que comprimirlo más agresivamente.

Solución: ajustar el comando FFmpeg incrementando el -crf (compresión más agresiva) y bajando el bitrate de audio:

ffmpeg -i "input.mp4" -vf "scale=1280:720" -vcodec libx264 -crf 30 -c:a aac -b:a 96k "comprimido.mp4"

Error «429 RESOURCE_EXHAUSTED»

Si el proyecto está en tier gratuito, las cuotas son muy restrictivas (250.000 tokens por minuto, insuficiente para un vídeo de 90 minutos). El error 429 indica que se ha excedido la cuota disponible.

Solución: vincular una cuenta de facturación al proyecto en Google Cloud Console para activar el Tier 1, que multiplica las cuotas por 8-10. La propagación del Tier 1 puede tardar entre 10 y 30 minutos. Si tras 30 minutos sigue dando 429, generar una nueva API key en el mismo proyecto fuerza la actualización.

Error «400 INVALID_ARGUMENT: Cannot fetch content from the provided URL»

Este error indica que el modelo no puede leer el archivo subido a la File API. La causa más común es un mismatch entre la versión de API usada para subir el archivo y la usada para generar contenido.

Solución: crear el cliente sin http_options (versión por defecto v1beta) si se va a usar modelo estable como Gemini 2.5 Flash. Si se ha usado v1alpha previamente, reejecutar la Celda 2 sin ese parámetro y volver a subir los vídeos.

Loops de alucinación en el análisis

Si se utiliza el modelo gemini-2.5-flash-lite (la versión más económica), existe un riesgo elevado de que el análisis entre en un bucle de repetición, generando líneas idénticas durante minutos. El archivo resultante es inservible.

Solución: usar gemini-2.5-flash (no lite) para análisis estructurado de vídeo largo. La diferencia de coste es pequeña pero la fiabilidad del output es significativamente superior.

Desconexión de Colab durante el procesamiento

Google Colab (versión gratuita) desconecta el runtime tras 30-60 minutos de inactividad. Si esto ocurre durante el análisis, se pierden las variables en memoria (cliente, archivos subidos) y hay que reejecutar las celdas iniciales.

Solución: mantener la pestaña de Colab activa y visible durante el procesamiento. Una vez arranca generate_content, Colab no desconectará porque hay computación activa, pero el riesgo es la espera entre celdas. Adicionalmente, el script propuesto guarda cada análisis parcial en Drive nada más completarse, lo que limita la pérdida en caso de desconexión.

Limitaciones del método

El análisis con IA multimodal es una herramienta complementaria, no sustitutiva, del juicio humano. Las principales limitaciones son:

  • Microexpresiones FACS: la fiabilidad del análisis de microexpresiones según el Facial Action Coding System es limitada incluso con vídeo de alta calidad. Para análisis serios de microexpresiones se requiere certificación humana especializada y validación manual del output IA.
  • Atribución en planos generales: si el debate tiene muchos planos donde se ve simultáneamente a varios candidatos, la IA puede confundir quién habla. Los planos cerrados de cada candidato facilitan la atribución correcta.
  • Variabilidad de los outputs: el modelo no produce siempre el mismo análisis sobre el mismo vídeo. Para estudios académicos o periodísticos sólidos conviene hacer dos o tres pasadas y consolidar manualmente los hallazgos comunes.
  • Citas literales: si el prompt pide citas literales pero el modelo no las recoge en su análisis interno, en una segunda pasada de síntesis puede generar citas «reconstruidas» que no son textuales. Para artículos periodísticos serios, las citas deben verificarse a mano contra el vídeo original.

Aplicaciones más allá del análisis político

El workflow descrito en esta guía es replicable para cualquier tipo de contenido audiovisual de larga duración donde sea útil un análisis cuantitativo y cualitativo combinado:

  • Entrevistas periodísticas: análisis de la asimetría comunicativa entre entrevistador y entrevistado, distribución del tiempo de palabra, carga semántica de las preguntas. Es el enfoque que ya he aplicado anteriormente al análisis comparado de las entrevistas de Carlos Alsina a los candidatos de Castilla y León.
  • Análisis de discurso académico o judicial: vistas orales, conferencias, ponencias de congresos.
  • Análisis de presentaciones empresariales: keynotes, presentaciones a inversores, ruedas de prensa corporativas.
  • Análisis de contenido educativo: clases magistrales, ponencias formativas, cursos online.
  • Análisis de programas de televisión: tertulias políticas, programas de debate, magacines de actualidad.

El coste marginal de cada análisis (≈ 0,60 € con Flash) lo convierte en una herramienta extremadamente eficiente comparada con el análisis manual humano. Un análisis equivalente realizado por un consultor profesional especializado tendría un coste de varios miles de euros.

Reflexión final sobre la complejidad del método

Una observación crítica que conviene compartir: pese a todas las facilidades técnicas que la IA multimodal ofrece, la curva de aprendizaje para aplicarla correctamente sigue siendo significativa. Para una persona sin conocimientos técnicos previos, el proceso es prácticamente inaccesible.

Cualquier usuario debería poder lograr el mismo resultado con un flujo simple: «sube el vídeo, pega tu prompt, recibe el análisis». Hoy ese tipo de interfaces no existen para análisis multimodal de larga duración. Las opciones consumer (la app de Gemini, ChatGPT, Claude) tienen límites de tamaño que no permiten procesar 90 minutos de vídeo. Las opciones profesionales (API, Colab, scripts) requieren conocimientos técnicos no triviales.

Es muy probable que en los próximos 12-18 meses surjan productos verticales que cierren esta brecha, especialmente en mercados como el periodismo político, los gabinetes de comunicación o la investigación académica. Hasta entonces, esta guía proporciona el procedimiento técnico completo para quien quiera aplicarlo manualmente.

El procedimiento técnico es replicable. El criterio editorial sobre qué hacer con los resultados sigue siendo, y debe seguir siendo, humano.

🖨️ Imprimir / PDF📄 Markdown

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies