Dinoer

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 — --a11y and extraire_texte are the whole of what a single-page read returns.
  • evaluer for 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.