Your first run
One command, its answer, and how to read the three fields that matter: succes, boussole and etat.
/opt/dinoer/venv/bin/python3 /opt/dinoer/shot.py \
--url https://example.com --guide-version 1.6
{"succes": true, "http_status": 200,
"boussole": {"titre_page": "Example Domain", "dernier_code_http": 200},
"etat": {"pret_a_agir": true, "niveau_confiance": "eleve",
"raisons": ["aucun signal de friction détecté"]}}
The answer is a JSON document that says what happened. It contains no image: Dinoer produces none, in any mode.
Reading the answer
succes concerns the run, not the page. A page that returns a 404 can be
read successfully: succes: true, http_status: 404. Read both.
boussole says where the call actually ended: the URL after redirects
(url_courante), the page title, the last HTTP status. When a scenario goes
wrong, it is often because the agent believed it was on a page it had left.
etat reports; it does not decide. pret_a_agir: false means that Dinoer
noticed something, a WAF signature or a session drift. The run is not
refused, and the decision is yours.
Add the structure
/opt/dinoer/venv/bin/python3 /opt/dinoer/shot.py \
--url https://example.com --a11y --guide-version 1.6
--a11y adds the accessibility tree as text: roles, links, headings. With the
extraire_texte action, which returns the cleaned text of the page, that is
all Dinoer reads of a page.
What both return →
When the answer disappoints
{"succes": false, "erreur": "guide_non_lu"}: --guide-version is missing or
outdated. Read /opt/dinoer/docs/GUIDE_LLM.md, take the number in its header,
pass it.
A page that never finishes loading: some targets never stop using the
network, and no timeout fixes that; --wait-until load does.
The recipe →
A click reported as successful while nothing changed: read boussole before
concluding. More situations →