Co-authored-by: Kunal Mishra <kunalm2345@gmail.com> Co-authored-by: Suchintan <suchintan@users.noreply.github.com>
360 lines
12 KiB
Plaintext
360 lines
12 KiB
Plaintext
---
|
|
title: Running Tasks
|
|
subtitle: Go deeper with task configuration in the Cloud UI
|
|
slug: cloud/running-tasks
|
|
---
|
|
|
|
You've run your first task. Now let's explore what else you can do—access websites as if you're in another country, extract structured data into JSON, watch the AI work in real-time, and turn successful tasks into reusable workflows.
|
|
|
|
<Note>
|
|
New to Skyvern? Start with [Getting Started](/cloud/getting-started) to run your first task.
|
|
</Note>
|
|
|
|
---
|
|
|
|
## The Discover page
|
|
|
|
The **Discover** page is where you run ad-hoc tasks. Open [app.skyvern.com](https://app.skyvern.com) and you'll land here.
|
|
|
|
<Frame>
|
|
<img src="/images/cloud/discover-page-annotated.png" alt="The Discover page with annotations" />
|
|
</Frame>
|
|
|
|
You'll see two main areas:
|
|
|
|
**The Prompt Box** — Enter a URL and describe what you want Skyvern to do. Click the gear icon to access advanced settings before running.
|
|
|
|
**Workflow Templates** — A carousel of pre-built automations for common tasks. Click any template to see how it's built, or use it as a starting point for your own.
|
|
|
|
Tasks are flexible. You can:
|
|
- Extract data from any website without writing scrapers
|
|
- Fill out forms with data you provide
|
|
- Navigate multi-page flows (search → filter → extract)
|
|
- Download files like invoices and reports
|
|
- Monitor prices, inventory, or content changes
|
|
|
|
The power comes from combining a clear prompt with the right settings. Let's walk through the key configurations.
|
|
|
|
---
|
|
|
|
## Access geo-restricted content
|
|
|
|
You're trying to scrape product prices from a UK retailer. But when you run the task, you see USD prices—the site detected you're in the US and redirected you.
|
|
|
|
This is where **Proxy Location** changes everything.
|
|
|
|
<Frame>
|
|
<img src="/images/cloud/proxy-location-example.gif" alt="Selecting UK proxy and seeing GBP prices" />
|
|
</Frame>
|
|
|
|
Skyvern routes your browser through residential IP addresses worldwide. The site sees a real UK visitor, shows GBP prices, and doesn't block you.
|
|
|
|
**To set it up:**
|
|
|
|
1. Click the gear icon to open settings
|
|
2. Find **Proxy Location** in the dropdown
|
|
3. Select the country you need
|
|
|
|
<Frame>
|
|
<img src="/images/cloud/proxy-location-dropdown.png" alt="Proxy location dropdown showing available countries" />
|
|
</Frame>
|
|
|
|
Available locations include United States (default), United Kingdom, Germany, France, Japan, Australia, Canada, Brazil, and more. Select **None** if you're accessing internal tools that don't need a proxy.
|
|
|
|
The browser's timezone adjusts automatically to match the proxy location. Sites that check for mismatches between IP and timezone won't flag you.
|
|
|
|
---
|
|
|
|
## Extract structured data
|
|
|
|
By default, Skyvern returns whatever data makes sense for your prompt. For consistent output you can process programmatically, define a **Data Schema**.
|
|
|
|
Say you're extracting product information. Without a schema, you might get:
|
|
|
|
```json
|
|
{"info": "The product costs $79.99 and is in stock"}
|
|
```
|
|
|
|
With a schema, you get predictable fields:
|
|
|
|
```json
|
|
{
|
|
"product_name": "Wireless Headphones",
|
|
"price": 79.99,
|
|
"in_stock": true
|
|
}
|
|
```
|
|
|
|
**To set it up:**
|
|
|
|
1. Click the gear icon to open settings
|
|
2. Scroll to **Data Schema**
|
|
3. Enter a JSON Schema defining your fields
|
|
|
|
<Frame>
|
|
<img src="/images/cloud/data-schema-editor.png" alt="Data schema JSON editor" />
|
|
</Frame>
|
|
|
|
```json
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"product_name": {
|
|
"type": "string",
|
|
"description": "The full product name"
|
|
},
|
|
"price": {
|
|
"type": "number",
|
|
"description": "Current price in USD, without currency symbol"
|
|
},
|
|
"in_stock": {
|
|
"type": "boolean",
|
|
"description": "Whether the product is currently available"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
The `description` field is crucial—it tells the AI exactly what to look for. "Price in USD without currency symbol" works better than just "the price."
|
|
|
|
**Extracting lists:**
|
|
|
|
Need multiple items? Wrap your fields in an array:
|
|
|
|
```json
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"products": {
|
|
"type": "array",
|
|
"description": "Top 5 search results",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": { "type": "string", "description": "Product name" },
|
|
"price": { "type": "number", "description": "Price in USD" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
<Note>
|
|
A schema doesn't guarantee all fields are populated. If the data isn't on the page, fields return `null`.
|
|
</Note>
|
|
|
|
---
|
|
|
|
## Configure your task
|
|
|
|
Click the gear icon to access all task settings. Here's what each one does:
|
|
|
|
<Frame>
|
|
<img src="/images/cloud/task-settings-panel.png" alt="Task settings panel" />
|
|
</Frame>
|
|
|
|
### Core settings
|
|
|
|
| Setting | What it does |
|
|
|---------|--------------|
|
|
| **Navigation Goal** | Your main prompt—what should Skyvern do? |
|
|
| **Navigation Payload** | JSON data to use in form fields (names, addresses, etc.) |
|
|
| **Data Extraction Goal** | Describe what data you want extracted |
|
|
| **Data Schema** | JSON Schema for structured output |
|
|
|
|
### Cost and limits
|
|
|
|
| Setting | What it does |
|
|
|---------|--------------|
|
|
| **Max Steps Override** | Limit how many actions the AI can take. You're billed per step, so this caps costs. If the task hits this limit, it stops with a `timed_out` status. |
|
|
|
|
<Warning>
|
|
Always set a max steps limit during development. A task that gets stuck in a loop will keep consuming steps until it hits this limit.
|
|
</Warning>
|
|
|
|
### Advanced settings
|
|
|
|
| Setting | What it does |
|
|
|---------|--------------|
|
|
| **Proxy Location** | Route traffic through a specific country |
|
|
| **Webhook Callback URL** | Receive a POST request when the task completes (instead of polling) |
|
|
| **2FA Identifier** | Handle two-factor authentication during login |
|
|
| **Browser Address** | Connect to your own browser for local development |
|
|
| **Extra HTTP Headers** | Add custom headers (e.g., Authorization tokens) |
|
|
| **Max Screenshot Scrolls** | How many times to scroll for lazy-loaded content |
|
|
| **Include Action History** | Include past actions when verifying completion |
|
|
|
|
---
|
|
|
|
## Watch the live browser
|
|
|
|
Once you click run, Skyvern opens a cloud browser and starts executing. You can watch it work in real-time via a live VNC stream.
|
|
|
|
<Frame>
|
|
<img src="/images/cloud/live-execution-view.png" alt="Live browser view during task execution" />
|
|
</Frame>
|
|
|
|
The execution screen shows:
|
|
|
|
| Area | What you see |
|
|
|------|--------------|
|
|
| **Left panel** | Task configuration—URL, prompt, current status badge |
|
|
| **Center** | Live browser stream. Watch pages load, forms fill, buttons click. |
|
|
| **Right panel** | Action list showing what the AI has done, with step count and cost |
|
|
|
|
### Take control of the browser
|
|
|
|
See the **Take Control** button? Click it to pause the AI and control the browser yourself.
|
|
|
|
<Frame>
|
|
<img src="/images/cloud/take-control-demo.gif" alt="Taking control of the browser to solve a CAPTCHA" />
|
|
</Frame>
|
|
|
|
Use this when:
|
|
- A CAPTCHA appears that the AI can't solve
|
|
- The site requires an unusual login flow
|
|
- You need to manually navigate past an unexpected popup
|
|
|
|
Click **Stop Controlling** to hand control back to the AI.
|
|
|
|
### Stop a running task
|
|
|
|
Changed your mind? Click the **Cancel** button in the header. You'll be billed for steps already taken, but no further steps will run.
|
|
|
|
---
|
|
|
|
## Review your results
|
|
|
|
After the task completes, you'll see the results page. You can also find all past runs in **Runs** in the sidebar.
|
|
|
|
<Frame>
|
|
<img src="/images/cloud/task-results-header.png" alt="Task results page header" />
|
|
</Frame>
|
|
|
|
The header shows:
|
|
- **Task ID** — Unique identifier (click to copy)
|
|
- **Status badge** — `completed`, `failed`, `terminated`, `timed_out`, or `canceled`
|
|
- **Rerun button** — Run the same task again
|
|
- **API & Webhooks** — Copy the API command or test webhook delivery
|
|
|
|
### Extracted data
|
|
|
|
If the task completed successfully, the **Extracted Information** section shows your output:
|
|
|
|
<Frame>
|
|
<img src="/images/cloud/extracted-data-section.png" alt="Extracted data JSON display" />
|
|
</Frame>
|
|
|
|
```json
|
|
{
|
|
"product_name": "Wireless Bluetooth Headphones",
|
|
"price": 79.99,
|
|
"in_stock": true
|
|
}
|
|
```
|
|
|
|
If something went wrong, you'll see **Failure Reason** with details about what happened.
|
|
|
|
### Results tabs
|
|
|
|
Four tabs let you dig deeper:
|
|
|
|
<Frame>
|
|
<img src="/images/cloud/results-tabs-overview.png" alt="Results tabs showing Actions, Recording, Parameters, Diagnostics" />
|
|
</Frame>
|
|
|
|
**Actions** — Step-by-step breakdown of everything the AI did. Each action shows a screenshot, what was done, and why. The right side shows total steps, actions, and cost.
|
|
|
|
<Frame>
|
|
<img src="/images/cloud/actions-tab-detail.png" alt="Actions tab with step-by-step screenshots" />
|
|
</Frame>
|
|
|
|
**Recording** — Full video replay of the browser session. Scrub through to see exactly what happened.
|
|
|
|
<Frame>
|
|
<img src="/images/cloud/recording-tab.png" alt="Recording tab with video player" />
|
|
</Frame>
|
|
|
|
**Parameters** — The configuration you submitted: URL, navigation goal, payload, schema, proxy, and all other settings. Useful for debugging or recreating the task.
|
|
|
|
**Diagnostics** — Debug information including LLM prompts and responses, element trees, and annotated screenshots. Use this when you need to understand why the AI made a specific decision.
|
|
|
|
### Understanding failures
|
|
|
|
If your task failed or terminated, check these in order:
|
|
|
|
1. **Recording** — Watch what happened. Did the AI get stuck? Click the wrong thing?
|
|
2. **Actions tab** — Read the AI's reasoning for each step. Where did it go wrong?
|
|
3. **Diagnostics** — See the full LLM prompt and response to understand the decision
|
|
|
|
Common fixes:
|
|
- **Completed too early** → Add clearer completion criteria: "COMPLETE when you see the confirmation page with order number"
|
|
- **Wrong element clicked** → Add visual descriptions: "Click the blue Submit button at the bottom of the form"
|
|
- **Timed out** → Increase max steps, or simplify the task into smaller pieces
|
|
|
|
---
|
|
|
|
## Turn a task into a workflow
|
|
|
|
Found a task that works well? Save it as a reusable **Workflow** so you can run it again with different inputs.
|
|
|
|
Before running your task, expand Advanced Settings and toggle **Publish Workflow** on.
|
|
|
|
<Frame>
|
|
<img src="/images/cloud/publish-workflow-toggle.png" alt="Publish workflow toggle in settings" />
|
|
</Frame>
|
|
|
|
After the task completes successfully, Skyvern creates a workflow you can find in the **Workflows** section. From there you can:
|
|
|
|
- Run it again with different data
|
|
- Edit the steps in the visual workflow builder
|
|
- Schedule it to run automatically
|
|
- Share it with your team
|
|
|
|
---
|
|
|
|
## Tips for better results
|
|
|
|
### Start simple, then iterate
|
|
|
|
1. Run with just URL and prompt first—no advanced settings
|
|
2. Watch the live browser to understand what the AI does
|
|
3. Add constraints based on what you observe
|
|
|
|
### Write better prompts
|
|
|
|
The prompt drives everything. A good prompt includes:
|
|
|
|
- **Clear goal** — "Get the price of the first product" not "Get product info"
|
|
- **Completion criteria** — "COMPLETE when you see the order confirmation page"
|
|
- **Visual hints** — "Click the blue Add to Cart button below the price"
|
|
- **What to extract** — "Extract the price as a number without the currency symbol"
|
|
|
|
### Control costs
|
|
|
|
- Set **Max Steps** to a reasonable limit for your task
|
|
- Watch the **Actions tab** to see if steps are being wasted
|
|
- Use **Data Schema** to get exactly the fields you need—nothing extra
|
|
|
|
---
|
|
|
|
## What's next?
|
|
|
|
<CardGroup cols={2}>
|
|
<Card
|
|
title="Build a Workflow"
|
|
icon="diagram-project"
|
|
href="/multi-step-automations/build-a-workflow"
|
|
>
|
|
Create multi-step automations with the visual workflow builder
|
|
</Card>
|
|
<Card
|
|
title="Extract Structured Data"
|
|
icon="table"
|
|
href="/running-automations/extract-structured-data"
|
|
>
|
|
Pull structured data from websites into JSON format
|
|
</Card>
|
|
</CardGroup>
|