Reading a single page and extracting what is on it
No form, no authentication, nothing mutated. The lightest thing the retained browser core can do — real output, no vision model, from a real run.
Below campaign scale, sometimes what you need is one page, read once. No authentication, no mutation, a handful of requests — and the case where Dinoer costs the least, because there is no vision model to call in any mode, not only in this one.
Real output, not a mock-up
/opt/dinoer/venv/bin/python3 /opt/dinoer/shot.py \
--url https://example.com --a11y --guide-version 1.6
{"succes": true, "http_status": 200,
"a11y_tree": "- heading \"Example Domain\" [level=1]\n- paragraph: This domain is for use in documentation examples…",
"boussole": {"titre_page": "Example Domain", "dernier_code_http": 200}}
--a11y returns the accessibility tree as text, at a fraction of the token
cost an image would carry — and there is no --som flag to reach for
instead, because there is no numbered overlay left in this tool at all.
Cleaned text, when the tree alone is not enough
{"type": "extraire_texte"}
{"extraction_texte": {"titre": "Example Domain",
"texte": "Example Domain\nExample Domain\nThis domain is for use in documentation examples without needing permission. Avoid use in operations.\nLearn more",
"url": "https://example.com/", "date_capture": "2026-08-14T13:23:35+00:00"}}
Same call path as --a11y, real output from the same session. The tree
gives you structure — roles, links, headings; extraire_texte gives you the
documentary text with noise tags stripped, when what you need is the content
rather than the DOM shape.
Pulling structured facts with evaluer
{"type": "evaluer",
"script": "document.querySelector('.price')?.textContent.trim()"}
evaluer returns structured data the caller can compare programmatically —
comparing an item across several sources, checking a listing, mapping a
documentation site built as a single-page app. Wait for the page to settle
(attendre_reseau_calme) before reading anything client-rendered; a fetch
that races the page’s own JavaScript reads nothing.
When this is not the right shape of task
A single page you already know the URL for is this page’s case. Exploring a
topic you have not narrowed down yet, across sources you do not know in
advance, is campagne.py’s case instead —
a full campaign, not a single read →.
And expect real dead ends on hardened commercial platforms regardless of which shape you reach for. What the web refuses →
In short
- No vision model in any mode —
--a11yandextraire_texteare the whole of what a single-page read returns. evaluerfor structured facts the caller can compare programmatically.- Wait for the page to settle before reading anything client-rendered.
- One known page → read it directly. An open question over unknown sources → a campaign instead.