Skyvern (YC S23): agente de IA open source para automatización de navegadores
(github.com/Skyvern-AI)- Skyvern automatiza flujos manuales basados en sitios web con LLM y visión por computadora, y ofrece tanto un SDK compatible con Playwright como un constructor de workflows sin código
- A diferencia de la automatización de navegadores tradicional, que dependía del parsing del DOM y de XPath y era vulnerable a cambios de layout, Skyvern entiende los elementos en pantalla con un Vision LLM y planifica y ejecuta las acciones necesarias
- Skyvern afirma que puede mapear elementos visuales a acciones incluso en sitios web que ve por primera vez, y aplicar el mismo workflow a múltiples sitios sin XPath ni selectores predefinidos
- El SDK ofrece los comandos
page.act,page.extract,page.validate,page.promptypage.agent, y agrega búsqueda de elementos basada en prompts en lenguaje natural a las acciones existentes de Playwright - También se presentan ejecución local, Docker Compose, Skyvern Cloud, control de Chrome existente, tunneling de navegador, 64.4% de precisión en WebBench, licencia AGPL-3.0 y la excepción de funciones antibot del cloud administrado
El problema que Skyvern quiere resolver
- Skyvern es un proyecto que automatiza workflows basados en navegador con LLM y visión por computadora
- Ofrece un SDK compatible con Playwright que agrega capacidades de IA sobre Playwright
- También ofrece un constructor de workflows sin código para que usuarios técnicos y no técnicos puedan automatizar workflows manuales en cualquier sitio web
- La automatización de navegadores tradicional solía depender de scripts personalizados por sitio web, parsing del DOM e interacciones basadas en XPath, y podía romperse cuando cambiaba el layout del sitio
- Skyvern no se limita a interacciones XPath definidas en código: aprende e interactúa con los sitios web usando un Vision LLM
Cómo funciona y su diseño
- Skyvern se inspira en el diseño de agentes autónomos orientados a tareas popularizado por BabyAGI y AutoGPT
- A esto le agrega la capacidad de interactuar con sitios web mediante bibliotecas de automatización de navegadores como Playwright
- Usa un swarm de múltiples agentes para entender el sitio web, planificar acciones y ejecutarlas
- Las ventajas de este enfoque se resumen en tres puntos
- Puede funcionar en sitios web que ve por primera vez al mapear elementos visuales a las acciones necesarias sin código personalizado
- Es más resistente a cambios en el layout del sitio web porque no busca XPath ni selectores predefinidos durante la navegación
- Puede aplicar un mismo workflow a múltiples sitios web e inferir las interacciones necesarias en cada uno
- El reporte técnico de Skyvern 2.0 está disponible en Skyvern 2.0: State-of-the-art web navigation with 85.8 on WebVoyager eval
Formas de ejecución
- Skyvern Cloud es la versión de cloud administrado que permite ejecutar Skyvern sin gestionar infraestructura directamente
- Skyvern Cloud puede ejecutar múltiples instancias de Skyvern en paralelo e incluye mecanismos contra detección antibot, una red de proxies y un CAPTCHA solver
- La ejecución local puede iniciarse con
skyvern quickstartdespués depip install "skyvern[all]" skyvern quickstartyskyvern run serverusan por defecto una base de datos SQLite en~/.skyvern/data.db- Para usar un contenedor local de Postgres, pasa
--postgres - Para usar una base de datos existente, pasa
--database-string - Docker Compose usa el servicio de Postgres incluido
- Para usar un contenedor local de Postgres, pasa
- La ejecución con Docker Compose containeriza Postgres, la API y la UI, y se inicia con
docker compose up -ddespués de configurar las claves de API del LLM en.env - Por defecto, la UI se accede en
http://localhost:8080
SDK y extensión de Playwright basada en IA
- El SDK de Skyvern es una extensión que agrega automatización de navegador basada en IA a Playwright
- La instalación se divide según el tipo de uso
- Python SDK / cloud API:
pip install skyvern - Servidor local y UI incluida:
pip install "skyvern[all]"y luegoskyvern quickstart - Servidor local y UI con Postgres:
pip install "skyvern[all]"y luegoskyvern quickstart --postgres - UI incluida conectada a una API existente:
pip install "skyvern[ui]"y luegoskyvern run ui --api-url <api-url> --api-key <api-key> - TypeScript:
npm install @skyvern/client
- Python SDK / cloud API:
- Al objeto página se le agregan cuatro comandos de IA
page.act(prompt): realiza acciones con lenguaje natural, como “hacer clic en el botón de login”page.extract(prompt, schema): extrae datos estructurados con un JSON schema opcionalpage.validate(prompt): valida el estado de la página y devuelveboolpage.prompt(prompt, schema): envía un prompt arbitrario al LLM con un schema de respuesta opcional
page.agentofrece comandos de workflow de más alto nivelpage.agent.run_task(prompt): ejecuta tareas complejas de varios pasospage.agent.login(credential_type, credential_id): autentica con credenciales guardadas en Skyvern, Bitwarden o 1Passwordpage.agent.download_files(prompt): navega y luego descarga archivospage.agent.run_workflow(workflow_id): ejecuta un workflow previamente creado
- Las acciones existentes de Playwright admiten búsqueda de elementos basada en IA mediante un parámetro opcional
prompt- En lugar de
page.click("#btn"),page.click(prompt="Click login button") - En lugar de
page.fill("#email", "a@b.com"),page.fill(prompt="Email field", value="a@b.com") - En lugar de
page.select_option("#country", "US"),page.select_option(prompt="Country dropdown", value="US") - En lugar de
page.upload_file("#file", "doc.pdf"),page.upload_file(prompt="Upload area", files="doc.pdf")
- En lugar de
- Hay tres modos de interacción
- Playwright tradicional: usa selectores CSS/XPath
- Basado en IA: usa lenguaje natural
- AI fallback: intenta primero con selectores y, si falla, lo reemplaza por IA
Control avanzado del navegador
- Skyvern puede controlar el navegador Chrome existente del usuario
- Este método usa tal cual un navegador que ya tiene cookies, sesiones iniciadas y extensiones
- La depuración remota de Chrome puede activarse en
chrome://inspect/#remote-debugging - El comando
skyvern init browserpuede abrir la página de depuración remota, esperar hasta que el usuario la active y luego guardar la configuración - Skyvern Cloud también puede controlar un Chrome en ejecución en la máquina local
- El comando
skyvern browser serve --tunnelinicia Chrome y crea el túnel hacia Skyvern Cloud en una sola operación - Es útil para automatizar sitios donde ya iniciaste sesión o que están detrás de una VPN
- El comando
- Al exponer un navegador mediante túnel, siempre se debe usar
--api-key- Si se expone sin una API key, cualquiera con la URL puede controlar completamente el navegador
- La información relacionada está en la documentación de seguridad de browser tunneling
Rendimiento y evaluación
- Skyvern afirma haber logrado rendimiento SOTA en el benchmark WebBench con 64.4% de precisión
- El reporte técnico y la evaluación están disponibles en Web Bench: A new way to compare AI browser agents
- También afirma ser el agente de mejor rendimiento en tareas WRITE
- Ejemplos de tareas WRITE incluyen completar formularios, iniciar sesión y descargar archivos
- Esta categoría se usa principalmente para tareas cercanas a RPA
Tasks y Workflows
- Task es la unidad básica de composición dentro de Skyvern
- Cada Task es una solicitud única para navegar un sitio web y lograr un objetivo específico
- Una Task requiere
urlyprompt - Opcionalmente puede incluir
data schemayerror codesdata schemase usa cuando se quiere que la salida siga un schema específicoerror codesse usa para detener la ejecución de Skyvern en situaciones específicas
- Workflow es la forma de conectar varias Tasks para convertirlas en una sola unidad de trabajo
- Ejemplos de workflows
- Para descargar todas las facturas posteriores al 1 de enero, puede componerse como: ir a la página de facturas, filtrar por fecha, extraer la lista de facturas objetivo y descargar cada factura
- La automatización de compras en e-commerce puede componerse como: navegar al producto, agregar al carrito, validar el estado del carrito y checkout
- Las funciones de workflow compatibles incluyen Browser Task, Browser Action, Data Extraction, Validation, For Loops, File parsing, Sending emails, Text Prompts, HTTP Request Block, Custom Code Block y carga de archivos a block storage
- Conditionals aparece marcado como “Coming soon”
Funciones principales
- Livestreaming transmite en tiempo real el viewport del navegador a la máquina local para poder ver qué está haciendo Skyvern en la web
- Es útil para depurar, entender interacciones e intervenir si hace falta
- Form Filling puede completar inputs de formularios en sitios web de forma predeterminada
- Si se entrega información mediante
navigation_goal, Skyvern entiende el contenido y completa el formulario
- Si se entrega información mediante
- Data Extraction extrae datos de sitios web
- Si se especifica
data_extraction_schemaen formato jsonc dentro del prompt principal, la salida sigue la estructura de ese schema
- Si se especifica
- File Downloading descarga archivos desde sitios web
- Los archivos descargados se suben automáticamente si block storage está configurado, y se puede acceder a ellos desde la UI
- Authentication admite varios métodos de autenticación para facilitar la automatización de tareas detrás de login
- El soporte de 2FA se ofrece de varias maneras
- 2FA basado en QR, por ejemplo Google Authenticator, Authy
- 2FA basado en email
- 2FA basado en SMS
- La documentación relacionada está en 2FA support
- Estado de integración con administradores de contraseñas
- Compatible: Bitwarden
- Compatible: Custom Credential Service, HTTP API
- No compatible: 1Password
- No compatible: LastPass
Integraciones y LLM compatibles
- Skyvern admite Model Context Protocol (MCP), lo que permite usar LLM compatibles con MCP
- La documentación de MCP está en MCP server documentation
- Admite integraciones con Zapier, Make.com y N8N
- Los proveedores de LLM compatibles son los siguientes
- OpenAI: GPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini
- Anthropic: Claude 4.7 Opus, Claude 4.6 Sonnet/Opus, Claude 4.5 Haiku/Sonnet/Opus
- Azure OpenAI: todos los modelos GPT desplegados en una suscripción de Azure
- AWS Bedrock: Claude 4.7, Claude 4.6 Sonnet/Opus, Claude 4.5 Sonnet/Opus
- Gemini: Gemini 3.1 Pro, Gemini 3 Flash, Gemini 2.5 Pro/Flash
- Ollama: modelos alojados localmente mediante Ollama
- OpenRouter: acceso a modelos mediante OpenRouter
- OpenAI-compatible: endpoints de API personalizados que siguen el formato de la API de OpenAI mediante liteLLM
- La configuración detallada de LLM está en LLM Configuration docs
Ejemplos de uso real
- Automatización de descarga de facturas en múltiples sitios web
- Automatización de procesos de postulación laboral
- Automatización de compras de materiales para empresas manufactureras
- Registro de cuentas o completado de formularios en sitios web gubernamentales
- Completado de formularios aleatorios de contact us
- Búsqueda de cotizaciones de seguros en sitios web de aseguradoras en varios idiomas
Solución de problemas y comandos operativos
- Un bug conocido de
pip install skyvern==1.0.31puede causar(sqlite3.OperationalError) table organizations already exists- Elimina el archivo SQLite restante
~/.skyvern/data.db, actualiza a 1.0.32 o superior conpip install --upgrade skyverny luego ejecutaskyvern quickstart - Si necesitas mantener 1.0.31, puedes usar
uv pip install skyvern
- Elimina el archivo SQLite restante
- Si
pip install skyvernfalla conResolutionImpossible, puede deberse a un conflicto de resolución de dependencias delitellm/fastmcpen 1.0.31- Actualiza a 1.0.32 o superior, o usa
uv pip install skyvern
- Actualiza a 1.0.32 o superior, o usa
- Comandos útiles para depuración
skyvern run server: ejecuta el servidor de Skyvern por separadoskyvern run ui: ejecuta la UI de Skyvernskyvern status: verifica el estado de los serviciosskyvern stop all: detiene todos los serviciosskyvern stop ui: detiene la UIskyvern stop server: detiene el servidor
Licencia y telemetría
- Skyvern recopila estadísticas de uso por defecto para entender cómo se usa
- Para desactivar la telemetría, configura la variable de entorno
SKYVERN_TELEMETRYenfalse - El repositorio open source de Skyvern está respaldado por un cloud administrado
- La lógica principal se ofrece en este repositorio open source bajo licencia AGPL-3.0
- Las medidas antibot incluidas en la oferta de cloud administrado se indican como una excepción a la lógica principal del repositorio open source
1 comentarios
Opiniones de Hacker News
Me da curiosidad saber cómo ven la función computer use de Claude que Anthropic presentó recientemente.
Ahora que el
computer usede Claude es relativamente nuevo, quisiera saber cuál es el principal diferenciador de Skyvern.El enfoque tradicional suele consistir en dibujar cuadros delimitadores alrededor de los elementos con los que se puede interactuar, hacer que el LLM emita una llamada a una herramienta como
click('A12')y luego mapear A12 a un elemento HTML real para ejecutar una acción de Selenium/JS. Dibujar esos cuadros delimitadores con heurísticas también es complicado, y si el manejador de clics está asociado a otro elemento del DOM, realizar la acción correcta puede volverse difícil.Es probable que, para casos de automatización, sea más eficaz ejecutar acciones de alto nivel como
click(x, y)otype("foo")directamente en la pantalla, sin volver a mapear los elementos visuales a elementos HTML. Dicho eso, por ahora, cuando se le da HTML al LLM como contexto, el rendimiento tiende a ser mejor que usando solo razonamiento visual. Por eso soy más optimista respecto del enfoque de Claude, y en especial me parece muy prometedor si el razonamiento visual sigue mejorando.Sin embargo, me pregunto si los competidores se quedarán de brazos cruzados sin construir algo parecido. Los equipos de xAI, Gemini, OpenAI, Mistral y MetaAI no se limitarán a esperar, y como es muy probable que este campo sea un gran eje a futuro, no parece que una sola empresa vaya a quedarse con todo.
También es importante de dónde proviene el valor real en sistemas como estos. Es muy probable que las demos y un producto vistoso y usable no sean suficientes; la mayoría en realidad quiere automatización de flujos de trabajo reales. Para uso personal quizá eso alcance, pero las empresas probablemente quieran algo más complejo.
Por último, también es clave si esto quedará optimizado solo para Claude. Si alguien quiere ejecutarlo con su propio LLM open source, o ir cambiando continuamente al mejor modelo disponible en el mercado, puede ser difícil obtener esa flexibilidad en una solución ofrecida por un gran proveedor. Anthropic tiene incentivos para hacer que internamente se use Claude.
Este último punto es alentador. Los usuarios open source de Skyvern pueden elegir el modelo que quieran y no quedan atados a Claude. También puede ejecutarse con Gemini, GPT-4O y modelos open source como Llama 3.2.
Probablemente no sea el primer wrapper de IA sobre Playwright que salió esta semana, ni creo que sea el primer caso de este mes.
Su uso desde la perspectiva de la automatización de procesos de negocio parece más convincente que para automatización de pruebas. La automatización de pruebas valora mucho más la exactitud y la repetibilidad del proceso, mientras que en la automatización de negocio muchas veces no importa demasiado si se llega por un camino raro, siempre que el resultado sea correcto.
Dicho eso, en el video de ejemplo tuvieron que escribir un prompt bastante grande para hacerlo funcionar, y también tuvieron que ingresar algunos KB de datos de payload en formato de texto plano, no CSV. Si la expectativa es que esto reemplace a personas para quienes usar directamente el generador de código de Playwright es demasiado técnico y difícil, no estoy seguro de que haya tanta gente que pueda hacer una cosa pero no la otra.
Además, parece que el usuario tiene que entregar en texto plano las credenciales de inicio de sesión del sitio web e incluso la información de la tarjeta de crédito. Para evitar consecuencias graves si se compromete la cuenta de Skyvern del usuario, el manejo de datos sensibles tendría que ser muy sólido.
También creo que quienes construyen wrappers de Playwright basados en LLM tienden a exagerar la frecuencia con la que los sitios web se rediseñan. Esto aplica especialmente cuando se apunta a sitios antiguos o gubernamentales. Por ejemplo, durante años operé un conjunto largo de automatizaciones de navegador con Playwright para interactuar con un sitio gubernamental, y solo tuve que hacer mantenimiento una vez, cuando cambió el procedimiento operativo de la institución. Incluso si hubiera usado Skyvern, como el procedimiento cambió, también habría tenido que modificar el prompt y el payload.
La diferencia con la automatización de Playwright es que se puede validar con aserciones el éxito o fracaso de cada paso y la precisión del registro de datos, así que uno puede saber que hace falta actualizar el procedimiento. En Skyvern no veo esa opción, y me preocupa que se pase por alto un cambio de procedimiento y empiece a ingresar datos incorrectos o a saltarse pasos.
Los usuarios técnicos quieren aprender más y crear el payload por su cuenta; los usuarios no técnicos empiezan pidiéndole al LLM que los ayude a generar el prompt final de Skyvern. Fue inesperado, pero resultó ser un flujo sorprendentemente natural.
El paso 1 es construirlo de una forma compleja, es decir, Playwright; el paso 2 es la etapa actual, donde se construye algo equivalente a Playwright con prompts complejos; y el paso 3 es construir algo que genere ese equivalente a Playwright usando prompts más simples. Cada etapa reduce la barrera técnica necesaria para crear automatizaciones.
Considero que la frecuencia de cambios en los sitios web es una propuesta de valor menor para la automatización basada en LLM. El mayor valor está en poder manejar situaciones muy dinámicas. Por ejemplo, al automatizar un sitio de e-commerce donde las ofertas emergentes cambian cada semana, a Skyvern casi no le afecta, mientras que un script de Playwright puede romperse.
También me gusta el ejemplo de Geico porque muestra bien algo que antes era muy difícil de automatizar. El formulario cambia en cada ejecución, pero Skyvern lo atraviesa fácilmente.
En cuanto a la precisión de los datos, estamos lanzando una función de flujos de trabajo que permite encadenar varias tareas. Lo interesante de esta función es que se puede agregar un paso en el que Skyvern valide por sí mismo el resultado antes de continuar. Por ejemplo, se pueden agregar n productos al carrito y luego ir al carrito para validar su estado.
Como es de esperarse, esto sienta las bases para que otros agentes usen estas herramientas y construyan flujos de trabajo por sí mismos con prompts más simples. En resumen, es el primer paso de un largo camino para hacer que la automatización de procesos de negocio con LLM sea cada vez más fácil.
En este momento, construir una startup sobre un LLM de terceros parece requerir muchísimo coraje, o un modelo de negocio que apunte a ingresos de corto plazo.
Si el horizonte temporal es de años y no de meses, el riesgo es grande. Anthropic entró ayer en este campo, y es muy probable que OpenAI y Google la sigan pronto.
Literalmente compiten con AWS y, al mismo tiempo, usan AWS para ofrecer sus propios productos. Este mercado es grande y hay espacio para distintos enfoques.
Está claro que OpenAI, Anthropic y Google construirán grandes negocios en este campo, pero no veo razón para descartar que alguien más tenga una buena idea y la haga realidad apoyándose en grandes proveedores de infraestructura.
Es interesante que lo hayan abierto como open source bajo AGPL.
Quizás la documentación ya tenga la respuesta, pero al buscar rápidamente en el código fuente parecía que no usan LangChain y que planean una integración para poder aportarla a esa comunidad más adelante. Me da curiosidad qué usaron en Skyvern para crear la lógica de cadena de pensamiento/acción, y si hoy empezaran desde cero considerarían ir por el lado de LangChain/Graph.
Quedan muchos rastros de eso en cosas como tareas y pasos, pero al intentar escalarlo y hacer trabajos más complejos nos dimos cuenta de que el framework era muy limitante.
Por ejemplo, hoy usamos una arquitectura multiagente donde se ejecutan microagentes que analizan SVG o completan autocompletados dinámicos, y una estructura así habría sido realmente difícil con los frameworks existentes.
Frameworks como LangChain son buenos para prototipado inicial, pero cuando quieres empujar los límites, imponen demasiadas restricciones.
Si “automatización del navegador” te resulta confuso, es hacer que un programa manipule el sitio web objetivo, como con herramientas del estilo Selenium.
Normalmente consiste en enviar eventos de escritura y movimientos/clics del mouse a un sitio web objetivo que pertenece a otra persona, para que ese sitio haga algo. Una vez que sabes eso, el resto de la explicación se entiende.
Cada vez que veo este tipo de herramientas de automatización de flujos de trabajo con LLM, me surgen algunas preguntas sobre cada caso de uso y sus resultados a largo plazo.
Primero, me pregunto si esto es una forma de esquivar la fricción causada por la falta de interoperabilidad entre herramientas. Por ejemplo, ¿habría sido más eficiente si el dueño del sitio web ofreciera un servicio REST? Si existen herramientas como esta, ¿las empresas dejarán de ofrecer endpoints de servicio incluso cuando tendría sentido hacerlo?
Segundo, si hay razones válidas para no tener endpoints de servicio, como motivos de seguridad, un flujo de automatización podría usarse para sortear esas medidas de seguridad. ¿Puede un actor malicioso usar la herramienta para deshabilitar servicios importantes? ¿Quien crea la herramienta podría convertirse en ese actor? ¿Puede un revendedor usarla para impedir que consumidores comunes compren productos de alta demanda?
Tercero, si se usa para esquivar el mantenimiento postergado de herramientas y procesos internos, la existencia de estas herramientas puede dar a la gerencia una excusa para seguir posponiendo el mantenimiento. Al final, incluso podría convertirse en una dependencia crítica dentro del flujo de trabajo del personal de soporte.
Cuarto, si se usa con buenas intenciones para esquivar antipatrones en el diseño de sitios web, ¿el dueño del sitio tendrá incentivos para romper ese flujo de trabajo? ¿Es, al final, solo una etapa más de una carrera armamentista?
Pienso en estas cosas cada vez que veo que se pone software encima de procesos complejos y, en vez de simplificar el proceso de fondo, se tapa agregando otra capa de complejidad. No hay duda de que el proyecto será útil, pero me intriga su efecto a largo plazo.
Skyvern resuelve este problema, pero si bajan los costos de los LLM, también podría hacer que esos sitios ya no necesiten crear APIs.
No queremos que Skyvern se use en sitios web que prohíben este comportamiento. LinkedIn es el ejemplo típico. En particular, la razón por la que no abrimos como open source el código relacionado con antibots o CAPTCHA es que recibimos pedidos como “manipulación de recomendaciones en Reddit”. No queremos apoyar a actores maliciosos de ese tipo.
En general, creo que la automatización de navegadores con IA tiene un efecto neto positivo. Si disminuye la necesidad de APIs, se reduce la necesidad de mantener tanto una API como una UI; la experiencia se vuelve más simple, hay menos código y el sistema se simplifica.
No estoy 100% seguro de la última parte. Normalmente asumo que las empresas no crean APIs porque no tienen presupuesto. Es decir, no creo que sea por motivos maliciosos. Empresas como LinkedIn intentarán bloquear los intentos de automatización, pero no queremos participar en ese juego del gato y el ratón.
Me pregunto si Skyvern puede extraer datos de varios sitios web con estructuras distintas y combinar esos datos estructurados en un único archivo CSV o JSON.
Por ejemplo, ¿puede extraer de varios sitios bancarios las tasas de cuentas de depósito, obtener el nombre del banco, el logo del banco, el nombre del producto y la tasa de cada cuenta, y ejecutar una consulta guardada en una programación diaria o semanal?
Me pregunto si tienen experiencia ejecutando Skyvern en sitios web de aerolíneas.
Por ejemplo, para extraer la disponibilidad de asientos premio con millas desde el punto A hasta el punto B. Las aerolíneas parecen cambiar siempre las pantallas y tener medidas fuertes contra scraping.
Será una forma de hacer beta testing de transacciones con tarjeta de crédito y validar la confiabilidad.
Estoy construyendo algo parecido a menor escala, y este campo parece bastante prometedor.
Al limitar el alcance del problema a interacciones/scraping en una sola página, resultó muy estable y útil en la empresa. Dicho eso, la automatización de tipo agente también parece interesante.
Por ejemplo, llenar formularios de contacto en cientos de sitios web es algo cuya variedad es muy difícil de manejar con código normal, pero para un agente de IA no es un gran problema.
Me pregunto si tienen métricas de WebArena(https://webarena.dev) o VisualWebArena(https://jykoh.com/vwa).