Natural language browser automation
Project description
SurfAI
🏄 Natural Language Browser Automation
Say what you want, SurfAI does the browsing.
Quick Start
# Install
pip install surfai
# Configure your LLM (choose one)
surfai config --model kimi --key sk-your-kimi-key
surfai config --model deepseek --key sk-your-deepseek-key
# Start automating
surfai "Go to GitHub and find the most starred Python project"
Features
- 🎯 Zero Code: Just say what you want in natural language
- 🤖 Multi-LLM: Supports Kimi, DeepSeek, OpenAI, Gemini
- 🔒 Local First: Runs on your machine, data stays private
- 📸 Screenshots: Capture pages automatically
- 📊 Data Export: Save results to CSV, JSON, Excel
Supported Models
| Model | Provider | Setup |
|---|---|---|
| Kimi | Moonshot | surfai config --model kimi --key sk-xxx |
| DeepSeek | DeepSeek | surfai config --model deepseek --key sk-xxx |
| GPT-4o | OpenAI | surfai config --model openai --key sk-xxx |
| Gemini | surfai config --model gemini --key xxx |
Usage Examples
Command Line
# Extract data
surfai "Go to example.com and get all product prices"
# Take screenshot
surfai "Open github.com/microsoft and take a screenshot"
# Complex task
surfai "Search for 'Python tutorials' on Google, open the first result, summarize the content"
Python API
import asyncio
from surfai import Browser
async def main():
async with Browser() as browser:
await browser.goto("https://github.com/openclaw/openclaw")
stars = await browser.extract("stars count")
print(f"Stars: {stars}")
await browser.screenshot("openclaw.png")
asyncio.run(main())
Configuration
Configuration is stored in ~/.surfai/config.json:
{
"default_model": "kimi",
"models": {
"kimi": {
"api_key": "sk-xxx",
"base_url": "https://api.moonshot.cn/v1"
},
"deepseek": {
"api_key": "sk-xxx",
"base_url": "https://api.deepseek.com/v1"
}
}
}
License
MIT License - see LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
surfai-0.8.2.tar.gz
(2.8 MB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
surfai-0.8.2-py3-none-any.whl
(28.5 kB
view details)
File details
Details for the file surfai-0.8.2.tar.gz.
File metadata
- Download URL: surfai-0.8.2.tar.gz
- Upload date:
- Size: 2.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f1da45f337b2e6c0a68d79c35038921d017553025209c49b8ca4b4ddd494dab
|
|
| MD5 |
25c29c860fdd7b67f56ed87677eec405
|
|
| BLAKE2b-256 |
ed06d9eebf9c71aebb5d2a7ef0af1464d918bed89d5703327257d3e5aade2ea4
|
File details
Details for the file surfai-0.8.2-py3-none-any.whl.
File metadata
- Download URL: surfai-0.8.2-py3-none-any.whl
- Upload date:
- Size: 28.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c224d07d1fbfe88445f108b7142ab50c619c4c785cd496e9185e3153a5acdb09
|
|
| MD5 |
3e27fa15e9e401c18cbe25453603ea92
|
|
| BLAKE2b-256 |
2166cb15067dbcbe2c2abbf34f4b4ff6db5cfbe48c1e7a24688aefc7da11d26b
|