scanné le 2026-08-24 06:24 UTC · en cache · actualisation dans 0 h · rubric 2026.11.0
○Analyse publique non vérifiée
Défaillant
AgentSpeed teste avec quelle facilité des agents automatisés peuvent découvrir, comprendre et agir sur bfa.ao. Le score pondère cinq catégories de lisibilité machine ; les graduations de l’arc sont les 37 vérifications individuelles derrière.
Envoyez ceci à la personne qui modifie le site. Le lien affiche le score et la note sous forme d’aperçu, et il reste à jour : il relit le dernier scan au lieu de figer la valeur d’aujourd’hui.
Corrections prioritaires
failCanonical URL+4 ptsDécouvrabilité
No <link rel="canonical"> tag in <head>. Agents use canonical URLs to dedupe and cite.
Voir la marche à suivre
Ce que cela signifie
A canonical tag is one line in your page’s HTML head that says "THIS is the official address of this page." Without it, yoursite.com/pricing, yoursite.com/pricing?utm_source=x, and www.yoursite.com/pricing all look like different pages with copied content.
Pourquoi c’est important
When the same content lives at several addresses, agents split your page’s identity across the copies. They may cite a tracking-parameter URL, or treat the duplicates as a signal of low quality. The canonical tag merges them back into one.
À faire
Add <link rel="canonical" href="https://yoursite.com/this-page"> inside <head> on every page.
Each page points at ITSELF (its clean URL, no tracking parameters), not at the homepage.
On most platforms this is a setting, not code: Next.js Metadata API (alternates.canonical), WordPress via Yoast or Rank Math, Shopify themes have it built in.
Ne perdez pas ce rapport
Recevez-le dans votre boîte mail, plus une alerte dès que le score de bfa.ao change. Gratuit, désinscription à tout moment.
Vous préférez qu'on s'en charge ? Monitor rescanne chaque semaine et signale tout changement, $29/mo. Activer la surveillance →
Corriger
Des fichiers générés, prêts à déployer, pour les lacunes ci-dessus. Copiez-les ou téléchargez-les dans votre dépôt.
Add JSON-LD structured data
Paste inside <head>. Use Article/Product instead of Organization on those page types.
Ce scan a noté une page. Votre site en compte bien plus.
Point faible de ce scan : les données structurées, 33/100 — des faits comme le prix et la disponibilité manquent sous forme lisible par machine ou ne sont pas fiables, les agents doivent deviner.
Seule la page d’accueil a été notée. Vos tarifs, votre documentation et votre paiement vivent sur d’autres pages : celles que les assistants citent quand ils vous recommandent. Un 56/100 ici signifie que des agents ratent déjà des choses sur votre meilleure page. Le Deep Scan ($29) audite votre page d’accueil plus jusqu’à 10 autres pages que nous découvrons, sur les 37 vérifications, et envoie un PDF listant chaque échec et sa correction exacte, classés selon ce qui vous coûte le plus de visibilité. Paiement unique, livré en quelques minutes, sans abonnement.
Recevez ce rapport par e-mail, puis une alerte quand la compatibilité agents de bfa.ao change vraiment : une vérification qui régresse, ou le score global qui baisse.
Deux choses ne déclenchent jamais d’e-mail : un changement de score dû à la publication d’une nouvelle grille (c’est un autre instrument de mesure, pas un changement de votre site), et un mouvement expliqué uniquement par des vérifications dépendantes du temps, qui varient d’un passage à l’autre.
Vous préférez votre propre rythme, avec Slack ou un webhook plutôt que l’e-mail ? Le suivi de dérive du score est inclus dans toutes les offres payantes.
Ce score dit si un agent IA pourrait lire bfa.ao. L’analytics du trafic IA dit si un agent est réellement venu, et quelles pages l’ont fait fuir.
Détail complet
14 pass1 warn16 fail6 skip
Découvrabilité
pass
robots.txt present
A robots.txt is reachable at the site root.
100/100
pass
robots.txt allows AI agents
All 9 answer-time access agents allowed.
100/100
fail
Content-Signal directivesemerging
No Content-Signal directives. Add e.g. `Content-Signal: ai-train=no, ai-summarize=yes` to declare granular AI usage policy beyond binary allow/disallow.
0/100
pass
llms.txt present
Found /llms.txt but missing H1 header and markdown links. Not scored.
100/100
pass
Sitemap present
sitemap.xml reachable and referenced from robots.txt.
100/100
fail
Link response headers
No HTTP Link: response headers. Emit canonical/alternate/describedby relations so HEAD-only or stream-rendering agents get them without parsing HTML.
0/100
fail
Canonical URL
No <link rel="canonical"> tag in <head>. Agents use canonical URLs to dedupe and cite.
0/100
fail
MCP server cardemerging
No valid MCP Server Card at /.well-known/mcp/server-card.json. Publish one so agents can discover your tools without HTML scraping.
0/100
fail
OAuth authorization metadataemerging
No RFC 8414 metadata at /.well-known/oauth-authorization-server. Agents that act on behalf of users need this to discover your authorization endpoints.
0/100
fail
OAuth resource metadataemerging
No RFC 9728 metadata at /.well-known/oauth-protected-resource. Publish it so agents can discover required scopes without hand-coded credentials.
0/100
fail
API catalog / OpenAPIemerging
No /.well-known/api-catalog (RFC 9727) and no /openapi.json|yaml. Publish one so agents that integrate with APIs can discover your endpoints.
0/100
fail
Web Bot Authemerging
No Web Bot Auth JWKS at /.well-known/http-message-signatures-directory.json. Publish one to allow trusted agents while keeping a default-deny posture for the rest.
0/100
Lisibilité
fail
Markdown negotiationemerging
Accept: text/markdown returns HTML, not markdown. Serve a markdown variant of primary content when requested; agents summarize and cite it more reliably.
0/100
fail
Text-to-markup ratio
Visible text is 6.8% of HTML weight (6213/91726 bytes). 2% of the document is inline script, 91% is markup.
51/100
pass
Content without JavaScript
Primary content is present in the initial HTML — agents without JS can read it. (Measured statically; a rendered comparison was not run because the static reading sufficed.)
No <meta name="description">. Agents use it as a page summary; add a 50–200 character description.
0/100
Données structurées
fail
JSON-LD present
No JSON-LD blocks found. Add a <script type="application/ld+json"> with a schema.org type for this page.
0/100
skip
Structured data validates
No JSON-LD blocks present; nothing to validate (covered by structured_data.jsonld_present).
—
pass
Schema type coverage
Page intent unclear; no specific schema.org type expected.
100/100
Cohérence : vos canaux sont-ils d’accord ?
skip
JSON-LD price matches the visible priceemerging
No price declared in JSON-LD, so there is nothing to cross-check. (Whether a price SHOULD be declared is the structured-data checks’ question.)
—
skip
JSON-LD name appears on the pageemerging
No Product/Organization/Store name declared in JSON-LD, so nothing to cross-check.
—
pass
Declared language matches the contentemerging
Declared lang="pt" matches the detected content language (pt).
100/100
Actionnabilité
pass
Paywall / login wall
No paywall or login-wall detected on the landing URL.
100/100
fail
Agent Skills manifestemerging
No Agent Skills manifest at /.well-known/agent-skills.json. Enumerate the tasks agents can perform (search, add-to-cart, contact-support) so they pick the right one without scraping.
0/100
fail
WebMCP actionsemerging
No WebMCP detected. On pages with first-class actions (cart, support, account), embed a WebMCP server so on-page agents invoke tools directly.
0/100
fail
Commerce protocol manifestemerging
No agentic-commerce discovery manifest (x402 at /.well-known/x402.json, UCP at /.well-known/ucp, or ACP at /.well-known/acp.json). Agents that buy pre-flight these before attempting a transaction; publishing the one for your commerce protocol is how they learn you accept agent-initiated purchases.
0/100
pass
Primary action reachable
A primary offering and a price or call to action were both identifiable from the served HTML, so an agent can tell what this page sells and what it costs without running scripts.
100/100
pass
Reachability
HTTP 200.
100/100
skip
Primary action is clickableemerging
This page does not ask the reader to do anything, so there is no primary action to check. Informational pages are not penalised here.
—
skip
Filters reachable by URLemerging
This page does not offer to filter or sort a list, so there is nothing to address by URL. Pages without facets are not penalised here.
—
Performance
warn
Time to first byte
TTFB 1724ms. Slow. Agents time out aggressively.
40/100
skip
Full render time
Full-render time unavailable (browser pass skipped or failed).
—
pass
Page weight
Initial document is a lean 90 KB.
100/100
Au-delà du scan
Vous exploitez vos propres agents IA ? AgentSpeed les surveille aussi en production : chaque exécution, sa latence, son coût et ses échecs, avec des alertes quand quelque chose casse. Gratuit jusqu’à 10 000 événements par mois, sans carte bancaire.
Produisez ce type de rapport pour chaque client : PDF en marque blanche et surveillance hebdomadaire jusqu’à 15 domaines, $149/mo. AgentSpeed pour les agences →
Méthodologie et limites
Ce score mesure la lisibilité pour les agents automatisés selon la grille publique 2026.11.0. AgentSpeed n’évalue ni la sécurité, ni la légitimité, ni la confidentialité, ni la confiance financière.
→ <head>
À coller dans Claude Code, Cursor ou tout assistant ayant votre dépôt ouvert. Il contient ce constat, les étapes et les raccourcis à éviter.
Ou copiez-le adapté à votre outil :
À vérifier
View the page source and confirm exactly one canonical tag pointing at the clean URL.
Re-scan: "Canonical URL" flips to PASS.
À éviter
Don’t point every page’s canonical at the homepage. That tells agents your entire site is one page, and everything else vanishes.
Don’t leave a copied canonical from a template pointing at someone else’s domain. It is a surprisingly common paste error, and it hands them your pages’ identity.
No <meta name="description">. Agents use it as a page summary; add a 50–200 character description.
Voir la marche à suivre
Ce que cela signifie
The meta description is a one-sentence summary of the page that you control, embedded in the HTML head. Without it, machines compose their own summary from whatever text appears first, often cookie-notice or navigation boilerplate.
Pourquoi c’est important
This is the sentence you get to write about yourself. Pages without one are summarised by autopilot, and the autopilot frequently leads with the least representative text on the page.
À faire
Write one honest sentence per page (120–160 characters) saying what the page offers.
Add it as <meta name="description" content="…"> per page via your framework or SEO plugin.
→ <head>
À coller dans Claude Code, Cursor ou tout assistant ayant votre dépôt ouvert. Il contient ce constat, les étapes et les raccourcis à éviter.
Ou copiez-le adapté à votre outil :
À vérifier
Re-scan: "Meta description" flips to PASS.
À éviter
Don’t reuse one description site-wide. A shared summary describes none of the pages.
Describe the page, not your aspirations. Agents compare the description against the content and discount pages where they diverge.
No JSON-LD blocks found. Add a <script type="application/ld+json"> with a schema.org type for this page.
Voir la marche à suivre
Ce que cela signifie
JSON-LD is a small block of structured facts (name, what you sell, prices) embedded invisibly in your page’s HTML, written in a vocabulary (schema.org) that machines share. Think of it as the machine-readable caption for the page humans see.
Pourquoi c’est important
An agent reading prose has to guess which number is the price and which name is the brand. JSON-LD removes the guessing: typed facts it can quote directly. Pages without it get summarised from inference, which is where wrong prices and wrong names come from.
À faire
Add an Organization block (name, url, logo) site-wide, in <head>.
On product pages add Product with offers (price, currency, availability); on articles add Article; on FAQs add FAQPage.
A starter block generated for this site is in the Fix it section below. Copy it, then extend per page type.
On WordPress, Yoast or Rank Math emits this automatically. Shopify themes usually include Product markup already, so check for gaps rather than adding a duplicate.
→ <head>
À vérifier
Re-scan: "JSON-LD present" flips to PASS, and "Schema type coverage" may improve with it.
Paste a page into validator.schema.org and confirm zero errors.
Our /tools/structured-data-validator shows exactly what an agent extracts from your live page.
À éviter
The JSON-LD must describe what is actually ON the page. Declaring a price or name that differs from the visible one is incoherence: our coherence checks compare the two, and assistants that notice the mismatch stop trusting both.
Never fabricate aggregateRating or review markup you don’t have. Fake review structured data violates search engines’ spam policies and is precisely the pattern agents learn to discount.
Don’t stuff every schema.org type onto every page; one accurate type per page beats five aspirational ones.
No HTTP Link: response headers. Emit canonical/alternate/describedby relations so HEAD-only or stream-rendering agents get them without parsing HTML.
Voir la marche à suivre
Ce que cela signifie
HTTP responses can carry a Link header: the same canonical and alternate-language information your HTML declares, but delivered in the response envelope itself. Agents that only send a HEAD request, or that decide what to do while the page is still streaming, read the header without parsing any HTML. Yours is missing (or carries none of the relations agents use: canonical, alternate, describedby).
Pourquoi c’est important
An agent triaging fifty URLs doesn’t want to download and parse fifty pages to learn which are duplicates of which. The Link header answers at the cheapest possible layer. Sites that provide it get correctly de-duplicated and correctly language-routed even by the most minimal fetchers.
À faire
Emit a Link header alongside each page, mirroring what your HTML head already declares. Example: Link: <https://yoursite.com/page>; rel="canonical".
Most stacks set this in one place: Next.js headers() config, an nginx add_header line, or a CDN response-header rule.
If you serve translations, add rel="alternate" entries with hreflang, matching your HTML.
À coller dans Claude Code, Cursor ou tout assistant ayant votre dépôt ouvert. Il contient ce constat, les étapes et les raccourcis à éviter.
Ou copiez-le adapté à votre outil :
À vérifier
Run: curl -sI https://yoursite.com | grep -i "^link:" and confirm the relations appear.
Hit Re-scan above: "Link response headers" flips to PASS.
À éviter
The header must AGREE with the HTML. A Link header pointing one place while the in-page canonical points another gives machines two contradictory answers, which is worse than one missing answer.
Don’t inject the same site-wide canonical on every page via a blanket CDN rule; each page names its own clean URL, exactly as in the HTML tag.
Visible text is 6.8% of HTML weight (6213/91726 bytes). 2% of the document is inline script, 91% is markup.
Voir la marche à suivre
Ce que cela signifie
Of everything your server sends for this page, very little is actual readable text. The rest is code, styling, and markup wrapper. Agents fetched a lot of bytes and found few words.
Pourquoi c’est important
Agents work with retrieval budgets. A page that is 2% text either gets skimmed (and mis-summarised) or skipped. More signal per byte means more of your actual message survives into the agent’s summary.
À faire
Confirm your real copy is server-rendered. See the JavaScript check; these two usually fail together.
Cut boilerplate wrappers: deeply nested divs, inline SVG logos repeated per section, base64 images inlined into HTML.
Move large inline styles and scripts into external files.
Check how much of the document is inline script: your report now says. If most of it is, that is your framework serializing state for hydration, often a second copy of text already in the HTML. Send only the props a component cannot recompute, and render statically where a page does not need to hydrate.
À coller dans Claude Code, Cursor ou tout assistant ayant votre dépôt ouvert. Il contient ce constat, les étapes et les raccourcis à éviter.
Ou copiez-le adapté à votre outil :
À vérifier
Re-scan: "Text-to-markup ratio" improves, and "Page weight" often improves alongside.
À éviter
Don’t pad the page with keyword text to inflate the ratio. The ratio is a proxy for substance, and stuffing is the opposite of substance.
Headings (H1, H2, H3…) are the page’s outline. Yours skip levels, repeat H1s, or use styled text instead of real heading tags, so the outline machines extract is scrambled.
Pourquoi c’est important
Agents use the heading tree to navigate long pages and to decide which section answers a question. A broken tree means quotes get attributed to the wrong section, or sections are missed entirely.
À faire
Exactly one H1 per page: the page’s actual title.
Nest without skipping: H2 for sections, H3 for subsections. Never jump H1 to H4 for visual size.
If a heading looks right but is a styled <div>, make it a real <h2> and adjust CSS. Machines only see tags.
À coller dans Claude Code, Cursor ou tout assistant ayant votre dépôt ouvert. Il contient ce constat, les étapes et les raccourcis à éviter.
Ou copiez-le adapté à votre outil :
À vérifier
Re-scan: "Heading hierarchy" flips to PASS.
À éviter
Don’t pick heading levels for their font size; style with CSS and keep levels semantic.