
skyvern v1.0.50
Automatizza i flussi di lavoro basati su browser con l'IA
🐉 Automazione dei flussi di lavoro basati su browser usando LLM e Computer Vision 🐉
Skyvern automatizza i flussi di lavoro basati su browser usando LLM e computer vision. Fornisce un SDK compatibile con Playwright che aggiunge funzionalità AI sopra Playwright, oltre a un costruttore di flussi di lavoro senza codice per aiutare utenti tecnici e non tecnici ad automatizzare flussi di lavoro manuali su qualsiasi sito web, sostituendo soluzioni di automazione fragili o inaffidabili.
Gli approcci tradizionali all'automazione dei browser richiedevano la scrittura di script personalizzati per i siti web, spesso basandosi sul parsing del DOM e interazioni basate su XPath che si rompevano ogni volta che i layout del sito cambiavano.
Invece di affidarsi solo a interazioni XPath definite dal codice, Skyvern si basa su Vision LLM per apprendere e interagire con i siti web.
Come funziona
Skyvern è stato ispirato dal design degli agenti autonomi guidati da compiti reso popolare da BabyAGI e AutoGPT -- con un grande vantaggio: diamo a Skyvern la capacità di interagire con i siti web usando librerie di automazione browser come Playwright.
Skyvern utilizza uno sciame di agenti per comprendere un sito web, pianificare ed eseguire le sue azioni:
Questo approccio ha alcuni vantaggi:
- Skyvern può operare su siti web mai visti prima, poiché è in grado di mappare elementi visivi alle azioni necessarie per completare un flusso di lavoro, senza alcun codice personalizzato
- Skyvern è resistente ai cambiamenti di layout dei siti web, poiché non ci sono XPath predefiniti o altri selettori che il nostro sistema cerca durante la navigazione
- Skyvern è in grado di prendere un singolo flusso di lavoro e applicarlo a un gran numero di siti web, poiché è in grado di ragionare sulle interazioni necessarie per completare il flusso di lavoro Un rapporto tecnico dettagliato può essere trovato qui.
Demo
https://github.com/user-attachments/assets/5cab4668-e8e2-4982-8551-aab05ff73a7f
Avvio rapido
Skyvern Cloud
Skyvern Cloud è una versione cloud gestita di Skyvern che ti permette di eseguire Skyvern senza preoccuparti dell'infrastruttura. Ti permette di eseguire più istanze di Skyvern in parallelo e viene fornito con meccanismi anti-bot, rete proxy e risolutori CAPTCHA.
Se desideri provarlo, vai su app.skyvern.com e crea un account.
Esecuzione locale (UI + Server)
Scegli il metodo di configurazione preferito:
Database predefinito:
skyvern quickstarteskyvern run serverutilizzano per impostazione predefinita un database SQLite in~/.skyvern/data.dbin modo che il percorso pip funzioni senza Postgres o Docker. Per usare Postgres invece, passa--postgresper un container locale o--database-stringper un database esistente. Docker Compose usa sempre il servizio Postgres in bundle.
Opzione A: pip install (Consigliato per configurazione locale gestita da Python)
Dipendenze necessarie:
Inoltre, per Windows:
- Rust
- VS Code con strumenti di sviluppo C++ e Windows SDK
1. Installa Skyvern```bash
pip install "skyvern[all]"
#### 2. Esegui Skyvern```bash
skyvern quickstart
Il pip quickstart utilizza SQLite per impostazione predefinita. Per un container Postgres locale, esegui skyvern quickstart --postgres.
Opzione B: Docker Compose
Utilizza questa opzione se desideri tutto containerizzato (Postgres, API, UI) e non vuoi installare Python/Node localmente.
- Installa Docker Desktop
- Clona il repository: ```bash
git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern
- Configura il tuo provider LLM in
.env(il comandoquickstart --docker-composequi sotto lo creerà da.env.examplese mancante): ```bash cp .env.example .env # if not already creatededit .env to add your LLM API key
- Avvia tutto: ```bash
docker compose up -d
- Apri http://localhost:8080
Risoluzione dei problemi
(sqlite3.OperationalError) table organizations already exists — Hai incontrato un bug noto in pip install skyvern==1.0.31. Correzione:```bash
rm ~/.skyvern/data.db # remove the leftover SQLite file
pip install --upgrade skyvern # 1.0.32+ contains the fix
skyvern quickstart
Se sei ancora su 1.0.31 e non puoi aggiornare, installa tramite uv invece:```bash
uv pip install skyvern
pip install skyvern fails with ResolutionImpossible (litellm / fastmcp) — Hai riscontrato un conflitto di risoluzione delle dipendenze nella versione 1.0.31. Aggiorna a 1.0.32+ o usa uv: uv pip install skyvern.
SDK
Skyvern è un'estensione di Playwright che aggiunge automazione del browser basata su AI. Ti offre tutta la potenza di Playwright con capacità AI aggiuntive: usa prompt in linguaggio naturale per interagire con gli elementi, estrarre dati e automatizzare flussi di lavoro complessi multi-step.
Installazione:
- Python SDK / cloud API:
pip install skyvern - Server locale + UI impacchettata:
pip install "skyvern[all]"quindi eseguiskyvern quickstart - Server locale + UI impacchettata con Postgres:
pip install "skyvern[all]"quindi eseguiskyvern quickstart --postgres - UI impacchettata per un'API esistente:
pip install "skyvern[ui]"quindi eseguiskyvern run ui --api-url <api-url> --api-key <api-key> - TypeScript:
npm install @skyvern/client
Comandi di Pagina Basati su AI
Skyvern aggiunge quattro comandi AI fondamentali direttamente sull'oggetto page:
| Comando | Descrizione |
|---|---|
page.act(prompt) | Esegui azioni usando linguaggio naturale (ad es., "Clicca il pulsante di login") |
page.extract(prompt, schema) | Estrai dati strutturati dalla pagina con schema JSON opzionale |
page.validate(prompt) | Valida lo stato della pagina, restituisce bool (ad es., "Verifica se l'utente ha effettuato il login") |
page.prompt(prompt, schema) | Invia prompt arbitrari all'LLM con schema di risposta opzionale |
Inoltre, page.agent fornisce comandi di flusso di lavoro di più alto livello:
| Comando | Descrizione |
|---|---|
page.agent.run_task(prompt) | Esegui compiti complessi multi-step |
page.agent.login(credential_type, credential_id) | Autenticati con credenziali salvate (Skyvern, Bitwarden, 1Password) |
page.agent.download_files(prompt) | Naviga e scarica file |
page.agent.run_workflow(workflow_id) | Esegui flussi di lavoro predefiniti |
Azioni Playwright Potenziate da AI
Tutte le azioni Playwright standard supportano un parametro prompt opzionale per la localizzazione degli elementi basata su AI:
| Azione | Playwright | Potenziato da AI |
|---|---|---|
| Clic | page.click("#btn") | page.click(prompt="Click login button") |
| Compila | page.fill("#email", "[email protected]") | page.fill(prompt="Email field", value="[email protected]") |
| Seleziona | page.select_option("#country", "US") | page.select_option(prompt="Country dropdown", value="US") |
| Carica | page.upload_file("#file", "doc.pdf") | page.upload_file(prompt="Upload area", files="doc.pdf") |
Tre modalità di interazione:```python
1. Traditional Playwright - CSS/XPath selectors
await page.click("#submit-button")
2. AI-powered - natural language
await page.click(prompt="Click the green Submit button")
3. AI fallback - tries selector first, falls back to AI if it fails
await page.click("#submit-btn", prompt="Click the Submit button")
### Comandi AI principali - Esempi```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")
Esempi di Avvio Rapido
Esegui tramite UI:```bash skyvern run all
Vai a http://localhost:8080 per eseguire le attività tramite l'interfaccia web. Se l'interfaccia pacchettizzata non è presente, `skyvern run ui` offrirà di installare il pacchetto UI corrispondente. Per la configurazione non interattiva, usa `skyvern run ui --install-ui` o `skyvern run all --install-ui`.
Per eseguire solo l'interfaccia pacchettizzata contro un'API Skyvern esistente, installa `skyvern[ui]` e passa
`--api-url`; la CLI deduce `--wss-url` dall'URL dell'API a meno che non lo sovrascriva. Puoi anche impostare
`VITE_API_BASE_URL`, `VITE_WSS_BASE_URL`, `VITE_ARTIFACT_API_BASE_URL`, `VITE_SKYVERN_API_KEY`,
e `VITE_BROWSER_STREAMING_MODE` prima di eseguire `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();
**Esecuzione semplice di un'attività:**```python
from skyvern import Skyvern
skyvern = Skyvern()
task = await skyvern.run_task(prompt="Find the top post on hackernews today")
print(task)
Utilizzo Avanzato
Controlla il tuo browser (Chrome)
Fai controllare a Skyvern il tuo browser Chrome esistente — con tutti i tuoi cookie, login ed estensioni.
Passo 1: Abilita il debug remoto in Chrome
- Apri Chrome e naviga su
chrome://inspect/#remote-debugging - Clicca Abilita per avviare il server di debug
- Dovresti vedere: Server in esecuzione su: 127.0.0.1:9222
[!TIP] Il comando
skyvern init browserpuò farlo automaticamente — aprechrome://inspect/#remote-debugging, aspetta che tu lo abiliti e salva la configurazione.
Passo 2: Collega Skyvern
Opzione A — Codice 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", )
**Opzione B — Skyvern Service:**
Aggiungi due variabili al tuo file .env:```bash
BROWSER_TYPE=cdp-connect
BROWSER_REMOTE_DEBUGGING_URL=http://127.0.0.1:9222
Riavvia il servizio Skyvern con skyvern run all ed esegui il task tramite UI o codice
Collega Skyvern Cloud al tuo browser locale
Lascia che Skyvern Cloud controlli un browser Chrome in esecuzione sulla tua macchina — con tutti i tuoi cookie, login ed estensioni esistenti. Utile per automatizzare siti in cui hai già effettuato l'accesso o che si trovano dietro una VPN.```bash
One command to start Chrome + create a tunnel to Skyvern Cloud
skyvern browser serve --tunnel
Poi usa l'URL del tunnel nel tuo task:```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] Utilizzare sempre
--api-keyquando si espone il browser tramite un tunnel. Senza di esso, chiunque abbia l'URL ha il controllo completo del browser. Vedi la documentazione sulla sicurezza.
Vedi la documentazione completa per tutte le opzioni, la configurazione manuale del tunnel e la risoluzione dei problemi.
Ottieni uno schema di output coerente dalla tua esecuzione
Puoi farlo aggiungendo il parametro 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" } } } )
### Comandi utili per il debug dei problemi```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
Performance & Evaluation
Skyvern ha prestazioni SOTA sul benchmark WebBench con un'accuratezza del 64,4%. Il rapporto tecnico e la valutazione sono disponibili qui.
Prestazioni sulle attività di WRITE (es. compilare moduli, accedere, scaricare file, ecc.)
Skyvern è l'agente con le migliori prestazioni sulle attività di WRITE (es. compilare moduli, accedere, scaricare file, ecc.), che sono utilizzate principalmente per attività affini alla RPA (Robotic Process Automation).
Funzionalità di Skyvern
Attività di Skyvern
Le attività sono il mattone fondamentale all'interno di Skyvern. Ogni attività è una singola richiesta a Skyvern, che lo istruisce a navigare attraverso un sito web e a raggiungere un obiettivo specifico.
Le attività richiedono di specificare un url, un prompt, e possono opzionalmente includere uno schema dei dati (se si desidera che l'output sia conforme a uno schema specifico) e codici di errore (se si vuole che Skyvern smetta di funzionare in situazioni specifiche).
Flussi di lavoro di Skyvern
I flussi di lavoro sono un modo per concatenare più attività insieme per formare un'unità di lavoro coesa.
Ad esempio, se si volessero scaricare tutte le fatture successive al 1° gennaio, si potrebbe creare un flusso di lavoro che prima naviga alla pagina delle fatture, poi filtra per mostrare solo le fatture successive al 1° gennaio, estrae un elenco di tutte le fatture idonee e scorre ciascuna fattura per scaricarla.
Un altro esempio: se si volesse automatizzare l'acquisto di prodotti da un negozio e-commerce, si potrebbe creare un flusso di lavoro che prima naviga fino al prodotto desiderato, poi lo aggiunge al carrello. In secondo luogo, navigherebbe al carrello e ne convaliderebbe lo stato. Infine, passerebbe attraverso il processo di pagamento per acquistare gli articoli.
Le funzionalità supportate dei flussi di lavoro includono:
- Browser Task
- Browser Action
- Estrazione dati
- Validazione
- Cicli For
- Analisi di file
- Invio di email
- Prompt di testo
- Blocco Richiesta HTTP
- Blocco di codice personalizzato
- Caricamento di file nel block storage
- (Prossimamente) Condizionali
Livestreaming
Skyvern permette di trasmettere in diretta il viewport del browser alla propria macchina locale, in modo da poter vedere esattamente cosa sta facendo Skyvern sul web. Questo è utile per il debug e per comprendere come Skyvern interagisce con un sito web, e per intervenire quando necessario.
Compilazione di moduli
Skyvern è nativamente in grado di compilare input di moduli sui siti web. Il passaggio di informazioni tramite navigation_goal consentirà a Skyvern di comprendere le informazioni e compilare il modulo di conseguenza.
Estrazione dati
Skyvern è anche in grado di estrarre dati da un sito web.
Puoi anche specificare uno schema di estrazione dati direttamente all'interno del prompt principale per dire a Skyvern esattamente quali dati desideri estrarre dal sito web, in formato jsonc. L'output di Skyvern sarà strutturato in base allo schema fornito.
Download di file
Skyvern è anche in grado di scaricare file da un sito web. Tutti i file scaricati vengono automaticamente caricati nel block storage (se configurato) e puoi accedervi tramite l'interfaccia utente.
Autenticazione
Skyvern supporta diversi metodi di autenticazione per facilitare l'automazione delle attività protette da login. Se desideri provarlo, contattaci via email o su discord.
🔐 Supporto 2FA (TOTP)
Skyvern supporta diversi metodi di autenticazione a due fattori per consentire l'automazione di flussi di lavoro che richiedono 2FA.
Esempi includono:
- 2FA basata su QR (es. Google Authenticator, Authy)
- 2FA basata su email
- 2FA basata su SMS
🔐 Scopri di più sul supporto 2FA qui.
Integrazioni con gestori di password
Skyvern attualmente supporta le seguenti integrazioni con gestori di password:
- Bitwarden
- Custom Credential Service (HTTP API)
- 1Password
- LastPass
Model Context Protocol (MCP)
Skyvern supporta il Model Context Protocol (MCP) per permetterti di utilizzare qualsiasi LLM che supporti MCP.
Consulta la documentazione MCP qui
Integrazione con Zapier / Make.com / N8N
Skyvern supporta Zapier, Make.com, e N8N per permetterti di connettere i tuoi flussi di lavoro Skyvern ad altre app.
🔐 Scopri di più sul supporto 2FA qui.
Esempi reali di Skyvern
Adoriamo vedere come Skyvern viene utilizzato "sul campo". Ecco alcuni esempi di come Skyvern viene utilizzato per automatizzare flussi di lavoro nel mondo reale. Invia una PR per aggiungere i tuoi esempi!
Download di fatture su molti siti web diversi
Prenota una demo per vederlo dal vivo
Automatizza il processo di candidatura
Automatizza l'approvvigionamento di materiali per un'azienda manifatturiera
Navigare su siti web governativi per registrare account o compilare moduli
Compilare moduli di contatto casuali
Ottenere preventivi assicurativi da compagnie assicurative in qualsiasi lingua
Configurazione per i contributori
Assicurati di avere uv installato.
- Esegui questo comando per creare il tuo ambiente virtuale (
.venv)uv sync --group dev - Esegui la configurazione iniziale del server
uv run skyvern quickstart - Naviga a
http://localhost:8080nel tuo browser per iniziare a usare l'interfaccia utente La CLI di Skyvern supporta ambienti Windows, WSL, macOS e Linux.
Documentazione
La documentazione più estesa è disponibile sulla nostra 📕 pagina docs. Faccelo sapere se qualcosa non è chiaro o manca aprendo un'issue o contattandoci via email o su discord.
LLM supportati
| Provider | Modelli supportati |
|---|---|
| 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 | Qualsiasi modello GPT distribuito nella tua sottoscrizione 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 | Esegui qualsiasi modello ospitato localmente tramite Ollama |
| OpenRouter | Accedi ai modelli tramite OpenRouter |
| Compatibile OpenAI | Qualsiasi endpoint API personalizzato che segue il formato delle API di OpenAI (tramite liteLLM) |
Per una configurazione dettagliata degli LLM, inclusi tutte le chiavi modello disponibili, le variabili d'ambiente e le configurazioni multi-modello, consulta la documentazione sulla configurazione LLM.
Contribuire
Accogliamo con favore PR e suggerimenti! Non esitare ad aprire una PR/issue o contattarci via email o su discord. Dai un'occhiata alla nostra guida per contribuire e alle issue "Help Wanted" per iniziare!
Se vuoi chattare con il repository skyvern per ottenere una panoramica generale di come è strutturato, come basarti su di esso e come risolvere domande sull'utilizzo, dai un'occhiata a Code Sage.
Telemetria
Per impostazione predefinita, Skyvern raccoglie statistiche di utilizzo di base per aiutarci a capire come viene utilizzato. Se desideri disattivare la telemetria, imposta la variabile d'ambiente SKYVERN_TELEMETRY su false.
Licenza
Il repository open source di Skyvern è supportato tramite un cloud gestito. Tutta la logica principale che alimenta Skyvern è disponibile in questo repository open source con licenza AGPL-3.0, ad eccezione delle misure anti-bot disponibili nella nostra offerta cloud gestita.
Se hai domande o dubbi sulla licenza, contattaci e saremo lieti di aiutarti.