
Automatisez les workflows basés sur navigateur avec l'IA
🐉 Automatiser les workflows basés sur le navigateur en utilisant les LLM et la vision par ordinateur 🐉
Skyvern automatise les workflows basés sur le navigateur en utilisant les LLM et la vision par ordinateur. Il fournit un SDK compatible avec Playwright qui ajoute des fonctionnalités d'IA par-dessus Playwright, ainsi qu'un constructeur de workflows sans code pour aider les utilisateurs techniques et non techniques à automatiser des workflows manuels sur n'importe quel site web, remplaçant ainsi les solutions d'automatisation fragiles ou peu fiables.
Les approches traditionnelles de l'automatisation des navigateurs nécessitaient l'écriture de scripts personnalisés pour les sites web, souvent basés sur l'analyse du DOM et des interactions XPath, qui cassaient dès que la mise en page du site changeait.
Au lieu de se fier uniquement aux interactions XPath définies par le code, Skyvern s'appuie sur les LLM de vision pour apprendre et interagir avec les sites web.
Skyvern a été inspiré par la conception d'agent autonome piloté par les tâches popularisée par BabyAGI et AutoGPT — avec un avantage majeur : nous donnons à Skyvern la capacité d'interagir avec les sites web en utilisant des bibliothèques d'automatisation de navigateur comme Playwright.
Skyvern utilise un essaim d'agents pour comprendre un site web, planifier et exécuter ses actions :
Cette approche présente plusieurs avantages :
https://github.com/user-attachments/assets/5cab4668-e8e2-4982-8551-aab05ff73a7f
Skyvern Cloud est une version cloud gérée de Skyvern qui vous permet d'exécuter Skyvern sans vous soucier de l'infrastructure. Elle vous permet d'exécuter plusieurs instances Skyvern en parallèle et est livrée avec des mécanismes de détection anti-bot, un réseau proxy et des résolveurs de CAPTCHA.
Si vous souhaitez l'essayer, rendez-vous sur app.skyvern.com et créez un compte.
Choisissez votre méthode de configuration préférée :
Base de données par défaut :
skyvern quickstartetskyvern run serverutilisent par défaut une base de données SQLite dans~/.skyvern/data.dbafin que le chemin pip fonctionne sans Postgres ni Docker. Pour utiliser Postgres à la place, passez--postgrespour un conteneur local ou--database-stringpour une base de données existante. Docker Compose utilise toujours le service Postgres fourni.
Dépendances nécessaires :
En outre, pour Windows :
pip install "skyvern[all]"
#### 2. Exécuter Skyvern```bash
skyvern quickstart
Le démarrage rapide avec pip utilise SQLite par défaut. Pour un conteneur Postgres local, exécutez skyvern quickstart --postgres.
Utilisez cette option si vous voulez tout conteneuriser (Postgres, API, UI) et ne voulez pas installer Python/Node localement.
.env (la commande quickstart --docker-compose ci-dessous le créera à partir de .env.example s'il manque) : ```bash
cp .env.example .env # if not already created
(sqlite3.OperationalError) table organizations already exists — Vous avez rencontré un bug connu dans pip install skyvern==1.0.31. Correction:```bash
rm ~/.skyvern/data.db # remove the leftover SQLite file
pip install --upgrade skyvern # 1.0.32+ contains the fix
skyvern quickstart
Si vous êtes toujours sur 1.0.31 et que vous ne pouvez pas mettre à jour, installez via uv à la place :```bash
uv pip install skyvern
pip install skyvern échoue avec ResolutionImpossible (litellm / fastmcp) — Vous rencontrez un conflit de résolution de dépendances dans la version 1.0.31. Soit mettez à jour vers 1.0.32+, soit utilisez uv : uv pip install skyvern.
Skyvern est une extension Playwright qui ajoute l'automatisation de navigateur alimentée par IA. Elle vous offre toute la puissance de Playwright avec des capacités IA supplémentaires — utilisez des invites en langage naturel pour interagir avec les éléments, extraire des données et automatiser des workflows complexes en plusieurs étapes.
Installation :
pip install skyvernpip install "skyvern[all]" puis exécutez skyvern quickstartpip install "skyvern[all]" puis exécutez skyvern quickstart --postgrespip install "skyvern[ui]" puis exécutez
skyvern run ui --api-url <api-url> --api-key <api-key>npm install @skyvern/clientSkyvern ajoute quatre commandes IA principales directement sur l'objet page :
De plus, page.agent fournit des commandes de workflow de plus haut niveau :
| Commande | Description |
|---|---|
page.agent.run_task(prompt) |
Toutes les actions Playwright standard prennent en charge un paramètre optionnel prompt pour la localisation d'éléments par IA :
Trois modes d'interaction :```python
await page.click("#submit-button")
await page.click(prompt="Click the green Submit button")
await page.click("#submit-btn", prompt="Click the Submit button")
### Commandes IA principales - Exemples```python
# act - Perform actions using natural language
await page.act("Click the login button and wait for the dashboard to load")
# extract - Extract structured data with optional JSON schema
result = await page.extract("Get the product name and price")
result = await page.extract(
prompt="Extract order details",
schema={"order_id": "string", "total": "number", "items": "array"}
)
# validate - Check page state (returns bool)
is_logged_in = await page.validate("Check if the user is logged in")
# prompt - Send arbitrary prompts to the LLM
summary = await page.prompt("Summarize what's on this page")
Exécution via l'interface utilisateur :```bash skyvern run all
Accédez à http://localhost:8080 pour exécuter des tâches via l'interface web. Si l'interface utilisateur packagée est manquante, `skyvern run ui` proposera d'installer le package d'interface utilisateur correspondant. Pour une configuration non interactive, utilisez `skyvern run ui --install-ui` ou `skyvern run all --install-ui`.
Pour exécuter uniquement l'interface utilisateur packagée contre une API Skyvern existante, installez `skyvern[ui]` et passez
`--api-url` ; le CLI déduit `--wss-url` de l'URL de l'API sauf si vous le remplacez. Vous pouvez également définir
`VITE_API_BASE_URL`, `VITE_WSS_BASE_URL`, `VITE_ARTIFACT_API_BASE_URL`, `VITE_SKYVERN_API_KEY`,
et `VITE_BROWSER_STREAMING_MODE` avant d'exécuter `skyvern run ui`.
**Python SDK:**```python
from skyvern import Skyvern
# Local mode
skyvern = Skyvern.local()
# Or connect to Skyvern Cloud
skyvern = Skyvern(api_key="your-api-key")
# Launch browser and get page
browser = await skyvern.launch_cloud_browser()
page = await browser.get_working_page()
# Mix Playwright with AI-powered actions
await page.goto("https://example.com")
await page.click("#login-button") # Traditional Playwright
await page.agent.login(credential_type="skyvern", credential_id="cred_123") # AI login
await page.click(prompt="Add first item to cart") # AI-augmented click
await page.agent.run_task("Complete checkout with: John Snow, 12345") # AI task
TypeScript SDK:```typescript import { Skyvern } from "@skyvern/client";
const skyvern = new Skyvern({ apiKey: "your-api-key" }); const browser = await skyvern.launchCloudBrowser(); const page = await browser.getWorkingPage();
// Mix Playwright with AI-powered actions await page.goto("https://example.com"); await page.click("#login-button"); // Traditional Playwright await page.agent.login("skyvern", { credentialId: "cred_123" }); // AI login await page.click({ prompt: "Add first item to cart" }); // AI-augmented click await page.agent.runTask("Complete checkout with: John Snow, 12345"); // AI task
await browser.close();
**Exécution simple de tâche :**```python
from skyvern import Skyvern
skyvern = Skyvern()
task = await skyvern.run_task(prompt="Find the top post on hackernews today")
print(task)
Laissez Skyvern contrôler votre navigateur Chrome existant — avec tous vos cookies, identifiants et extensions.
chrome://inspect/#remote-debugging[!TIP] La commande
skyvern init browserpeut le faire automatiquement — elle ouvrechrome://inspect/#remote-debugging, attend que vous l'activiez et enregistre la configuration.
Option A — Code Python :```python from skyvern import Skyvern
skyvern = Skyvern( base_url="http://localhost:8000", api_key="YOUR_API_KEY", browser_address="http://127.0.0.1:9222", ) task = await skyvern.run_task( prompt="Find the top post on hackernews today", )
**Option B — Service Skyvern:**
Ajoutez deux variables à votre fichier .env :```bash
BROWSER_TYPE=cdp-connect
BROWSER_REMOTE_DEBUGGING_URL=http://127.0.0.1:9222
Redémarrez le service Skyvern skyvern run all et exécutez la tâche via l'interface utilisateur ou le code
Laissez Skyvern Cloud contrôler un navigateur Chrome exécuté sur votre machine — avec tous vos cookies, identifiants et extensions existants. Utile pour automatiser des sites sur lesquels vous êtes déjà connecté ou derrière un VPN.```bash
skyvern browser serve --tunnel
Ensuite, utilisez l'URL du tunnel dans votre tâche :```python
from skyvern import Skyvern
skyvern = Skyvern(api_key="your-api-key")
task = await skyvern.run_task(
prompt="Download the latest invoice from my account",
browser_address="https://abc123.ngrok-free.dev",
)
[!WARNING] Utilisez toujours
--api-keylorsque vous exposez votre navigateur via un tunnel. Sans cela, toute personne ayant l'URL a un contrôle total sur votre navigateur. Consultez la documentation de sécurité.
Consultez la documentation complète pour toutes les options, la configuration manuelle du tunnel et le dépannage.
Vous pouvez le faire en ajoutant le paramètre data_extraction_schema :```python
from skyvern import Skyvern
skyvern = Skyvern() task = await skyvern.run_task( prompt="Find the top post on hackernews today", data_extraction_schema={ "type": "object", "properties": { "title": { "type": "string", "description": "The title of the top post" }, "url": { "type": "string", "description": "The URL of the top post" }, "points": { "type": "integer", "description": "Number of points the post has received" } } } )
### Commandes utiles pour déboguer les problèmes```bash
# Launch the Skyvern Server Separately*
skyvern run server
# Launch the Skyvern UI
skyvern run ui
# Check status of the Skyvern service
skyvern status
# Stop the Skyvern service
skyvern stop all
# Stop the Skyvern UI
skyvern stop ui
# Stop the Skyvern Server Separately
skyvern stop server
Skyvern a une performance de pointe sur le benchmark WebBench avec une précision de 64,4 %. Le rapport technique + l’évaluation sont disponibles ici.
Skyvern est l’agent le plus performant sur les tâches WRITE (ex : remplir des formulaires, se connecter, télécharger des fichiers, etc.), qui sont principalement utilisées pour des tâches connexes à la RPA (Robotic Process Automation).
Les tâches sont les briques fondamentales de Skyvern. Chaque tâche est une requête unique envoyée à Skyvern, lui demandant de naviguer sur un site web et d’accomplir un objectif précis.
Les tâches nécessitent de spécifier une url, un prompt, et peuvent éventuellement inclure un schema de données (si vous voulez que la sortie soit conforme à un schéma spécifique) et des codes d'erreur (si vous voulez que Skyvern s’arrête dans certaines situations).
Les workflows sont un moyen d’enchaîner plusieurs tâches pour former une unité de travail cohérente.
Par exemple, si vous voulez télécharger toutes les factures postérieures au 1er janvier, vous pouvez créer un workflow qui navigue d’abord vers la page des factures, puis les filtre pour n’afficher que celles postérieures au 1er janvier, extrait la liste de toutes les factures éligibles et parcourt chaque facture pour la télécharger.
Un autre exemple : si vous voulez automatiser l’achat de produits sur une boutique en ligne, vous pouvez créer un workflow qui navigue d’abord vers le produit souhaité, puis l’ajoute au panier. Ensuite, il navigue vers le panier et valide l’état du panier. Enfin, il passe par le processus de paiement pour acheter les articles.
Les fonctionnalités de workflow prises en charge incluent :
Skyvern vous permet de diffuser en direct la zone d’affichage du navigateur vers votre machine locale afin que vous puissiez voir exactement ce que Skyvern fait sur le web. Cela est utile pour le débogage et pour comprendre comment Skyvern interagit avec un site web, et pour intervenir si nécessaire.
Skyvern est nativement capable de remplir les champs de formulaires sur les sites web. En passant des informations via navigation_goal, Skyvern peut comprendre les informations et remplir le formulaire en conséquence.
Skyvern est également capable d’extraire des données d’un site web.
Vous pouvez aussi spécifier un data_extraction_schema directement dans le prompt principal pour indiquer à Skyvern exactement quelles données vous souhaitez extraire du site web, au format jsonc. La sortie de Skyvern sera structurée conformément au schéma fourni.
Skyvern est également capable de télécharger des fichiers depuis un site web. Tous les fichiers téléchargés sont automatiquement envoyés vers le stockage bloc (si configuré), et vous pouvez y accéder via l’interface utilisateur.
Skyvern prend en charge plusieurs méthodes d’authentification pour faciliter l’automatisation des tâches derrière une connexion. Si vous souhaitez l’essayer, contactez-nous par e-mail ou sur discord.
Skyvern prend en charge plusieurs méthodes de 2FA pour vous permettre d’automatiser les workflows nécessitant une 2FA.
Exemples :
🔐 En savoir plus sur la prise en charge de la 2FA ici.
Skyvern prend actuellement en charge les intégrations de gestionnaires de mots de passe suivantes :
Skyvern prend en charge le Model Context Protocol (MCP) pour vous permettre d’utiliser n’importe quel LLM prenant en charge MCP.
Voir la documentation MCP ici
Skyvern prend en charge Zapier, Make.com et N8N pour vous permettre de connecter vos workflows Skyvern à d’autres applications.
🔐 En savoir plus sur la prise en charge de la 2FA ici.
Nous aimons voir comment Skyvern est utilisé dans la nature. Voici quelques exemples d’utilisation de Skyvern pour automatiser des workflows concrets. N’hésitez pas à ouvrir des PR pour ajouter vos propres exemples !
📅 Réservez une démo pour le voir en direct
Assurez-vous d’avoir uv installé.
.venv)
uv sync --group dev
uv run skyvern quickstart
http://localhost:8080 dans votre navigateur pour commencer à utiliser l’interface utilisateur
La CLI Skyvern prend en charge Windows, WSL, macOS et Linux.Une documentation plus complète est disponible sur notre 📕 page de documentation. N’hésitez pas à nous faire savoir si quelque chose n’est pas clair ou manque en ouvrant une issue ou en nous contactant par e-mail ou sur discord.
Pour une configuration détaillée des LLM comprenant toutes les clés de modèle disponibles, les variables d’environnement et les configurations multi-modèles, consultez la documentation sur la configuration LLM.
Nous accueillons volontiers les PR et les suggestions ! N’hésitez pas à ouvrir une PR/issue ou à nous contacter par e-mail ou sur discord. Consultez notre guide de contribution et les issues “Help Wanted” pour commencer !
Si vous souhaitez discuter avec le dépôt skyvern pour obtenir une vue d’ensemble de sa structure, de la manière de l’étendre et de résoudre les questions d’utilisation, consultez Code Sage.
Par défaut, Skyvern collecte des statistiques d’utilisation basiques pour nous aider à comprendre comment Skyvern est utilisé. Si vous souhaitez vous désinscrire de la télémétrie, veuillez définir la variable d’environnement SKYVERN_TELEMETRY sur false.
Le dépôt open source de Skyvern est soutenu par un cloud géré. Toute la logique principale qui alimente Skyvern est disponible dans ce dépôt open source sous licence AGPL-3.0, à l’exception des mesures anti-bot disponibles dans notre offre cloud gérée.
Si vous avez des questions ou des préoccupations concernant la licence, contactez-nous et nous serons heureux de vous aider.
| Commande | Description |
|---|
page.act(prompt) | Effectuez des actions en langage naturel (par exemple, « Cliquez sur le bouton de connexion ») |
page.extract(prompt, schema) | Extrayez des données structurées de la page avec un schéma JSON optionnel |
page.validate(prompt) | Validez l'état de la page, renvoie un bool (par exemple, « Vérifiez si l'utilisateur est connecté ») |
page.prompt(prompt, schema) | Envoyez des invites arbitraires au LLM avec un schéma de réponse optionnel |
| Exécutez des tâches complexes en plusieurs étapes |
page.agent.login(credential_type, credential_id) | Authentifiez-vous avec des identifiants stockés (Skyvern, Bitwarden, 1Password) |
page.agent.download_files(prompt) | Naviguez et téléchargez des fichiers |
page.agent.run_workflow(workflow_id) | Exécutez des workflows pré-construits |
| Action | Playwright | Augmenté par IA |
|---|
| Cliquer | page.click("#btn") | page.click(prompt="Cliquez sur le bouton de connexion") |
| Remplir | page.fill("#email", "[email protected]") | page.fill(prompt="Champ email", value="[email protected]") |
| Sélectionner | page.select_option("#country", "US") | page.select_option(prompt="Menu déroulant pays", value="US") |
| Téléverser | page.upload_file("#file", "doc.pdf") | page.upload_file(prompt="Zone de téléversement", files="doc.pdf") |
| Fournisseur | Modèles pris en charge |
|---|
| 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 | Tout modèle GPT déployé sur votre abonnement 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 | Exécutez tout modèle hébergé localement via Ollama |
| OpenRouter | Accédez aux modèles via OpenRouter |
| Compatible OpenAI | Tout point de terminaison API personnalisé qui suit le format API d’OpenAI (via liteLLM) |