Show the fixHide the fix
Put the page's words in the HTML your server sends, with server-side rendering or static generation, so they are there before any JavaScript runs. Give the page one H1 and use H2s for its sections.
Agents can read most of toppik.ro. Fix the first item below and it reaches Yes.
Ranked by the points they win back. 17 fixes in all, worth 18.6 points. Tick the fixes you want, then copy them as one prompt for Claude Code, Cursor or Codex.
Put the page's words in the HTML your server sends, with server-side rendering or static generation, so they are there before any JavaScript runs. Give the page one H1 and use H2s for its sections.
When a request's Accept header asks for text/markdown, answer with a Markdown version of the page: send Content-Type: text/markdown and start with the page title as a # heading. Add Vary: Accept so caches keep the HTML and Markdown versions apart.
Link to your About, Contact and Privacy pages from every page, usually in the footer, and make sure each one loads without signing in.
Add a section to llms.txt that tells agents when to point people to you, and when not to:
## When to use this site
- Comparing prices for X
- Not for: Y
Serve a Markdown copy of each page at its address plus .md (/pricing → /pricing.md, /docs/ → /docs/index.md), and of the homepage at /index.md, sent as text/markdown.
Add a link to the page's Markdown version in its <head>, and make sure the address returns text/markdown:
<link rel="alternate" type="text/markdown" href="/index.md">
Serve the Markdown version of a page to known AI user agents (ChatGPT-User, Claude-User, PerplexityBot and the like) even when they send Accept: */*. Match the user agent in your server or CDN, return text/markdown, and send Vary: User-Agent.
List your official profiles in your Organization JSON-LD:
"sameAs": ["https://www.linkedin.com/company/your-company", "https://github.com/your-company"]
Add a Content-Signal line to robots.txt saying how your content may be used. For example, to allow search and live AI answers but not training:
User-agent: *
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
The choice is yours: any setting earns the points.
Describe each product in JSON-LD with its name, image, an identifier and an offer:
{"@type": "Product", "name": "Blue mug, 350 ml", "image": "https://example.com/mug.jpg", "sku": "MUG-350-BLUE",
"offers": {"@type": "Offer", "price": "29.00", "priceCurrency": "EUR", "availability": "https://schema.org/InStock"}}
Describe your company in Organization JSON-LD on the homepage, with all six fields:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your company",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"sameAs": ["https://www.linkedin.com/company/your-company"],
"contactPoint": {"@type": "ContactPoint", "contactType": "customer support", "email": "[email protected]"},
"address": {"@type": "PostalAddress", "addressLocality": "City", "addressCountry": "RO"}
}
Start llms.txt with a # heading naming the site, follow it with Markdown links to your key pages ([Pricing](https://example.com/pricing): plans and prices), and keep it under 30,000 characters. Move long content into the pages it links to.
Add a Link header to the homepage response that points agents to your agent files:
Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown"
Name the AI agents that fetch pages to answer people, and let them in, in robots.txt:
User-agent: OAI-SearchBot
User-agent: Claude-SearchBot
User-agent: PerplexityBot
User-agent: ChatGPT-User
User-agent: Claude-User
User-agent: Perplexity-User
Allow: /
You can still block training crawlers like GPTBot, ClaudeBot or CCBot; that doesn't cost points.
Link your feed from the homepage's <head>:
<link rel="alternate" type="application/rss+xml" title="News" href="/feed.xml">
Most blog and CMS platforms already make the feed; it only needs linking.
Wrap the page in landmarks (<header>, <nav>, <main> and <footer>), give it one <h1>, and step down one heading level at a time: H1, then H2, then H3.
Give every field a <label>, either around it or linked with for and id:
<label for="email">Email</label>
<input id="email" type="email" name="email">
For a field with no visible label, such as a search box, add aria-label="Search".
# Make toppik.ro readable by AI agents canagentsread.com scanned toppik.ro on 3 Nov 2026: 81/100, Mostly. Make these 5 changes, then rescan https://canagentsread.com/toppik.ro to confirm. ## 1. Give the homepage an H1 (+10.5 points) Found: 22,576 characters of text in the server HTML, 0 H1 and 25 H2s. Change: Put the page's words in the HTML your server sends, with server-side rendering or static generation, so they are there before any JavaScript runs. Give the page one H1 and use H2s for its sections. ## 2. Serve Markdown when it's asked for (+3 points) Found: Asking the homepage for text/markdown still returns text/html; charset=UTF-8. Change: When a request's `Accept` header asks for `text/markdown`, answer with a Markdown version of the page: send `Content-Type: text/markdown` and start with the page title as a `#` heading. Add `Vary: Accept` so caches keep the HTML and Markdown versions apart. ## 3. Link About, Contact and Privacy (+0.5 points) Found: Found: About, Contact. Missing: Privacy (not linked from the homepage). Change: Link to your About, Contact and Privacy pages from every page, usually in the footer, and make sure each one loads without signing in. ## 4. Say in llms.txt when to use the site (+0.5 points) Found: llms.txt doesn't say when an agent should point people to this site. Change: Add a section to llms.txt that tells agents when to point people to you, and when not to: ```markdown ## When to use this site - Comparing prices for X - Not for: Y ``` ## 5. Publish .md copies of pages (+0.5 points) Found: No /index.md, and 0 of 3 pages we tried have a .md copy. Change: Serve a Markdown copy of each page at its address plus `.md` (`/pricing` → `/pricing.md`, `/docs/` → `/docs/index.md`), and of the homepage at `/index.md`, sent as `text/markdown`.
Put the page's words in the HTML your server sends, with server-side rendering or static generation, so they are there before any JavaScript runs. Give the page one H1 and use H2s for its sections.
When a request's Accept header asks for text/markdown, answer with a Markdown version of the page: send Content-Type: text/markdown and start with the page title as a # heading. Add Vary: Accept so caches keep the HTML and Markdown versions apart.
Describe your company in Organization JSON-LD on the homepage, with all six fields:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your company",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"sameAs": ["https://www.linkedin.com/company/your-company"],
"contactPoint": {"@type": "ContactPoint", "contactType": "customer support", "email": "[email protected]"},
"address": {"@type": "PostalAddress", "addressLocality": "City", "addressCountry": "RO"}
}
Link to your About, Contact and Privacy pages from every page, usually in the footer, and make sure each one loads without signing in.
llms.txt doesn't say when an agent should point people to this site.
Add a section to llms.txt that tells agents when to point people to you, and when not to:
## When to use this site
- Comparing prices for X
- Not for: Y
How we check thisNo /index.md, and 0 of 3 pages we tried have a .md copy.
Serve a Markdown copy of each page at its address plus .md (/pricing → /pricing.md, /docs/ → /docs/index.md), and of the homepage at /index.md, sent as text/markdown.
The homepage has no <link rel="alternate" type="text/markdown">.
Add a link to the page's Markdown version in its <head>, and make sure the address returns text/markdown:
<link rel="alternate" type="text/markdown" href="/index.md">
How we check thisAI agents that don't ask for Markdown get HTML.
Serve the Markdown version of a page to known AI user agents (ChatGPT-User, Claude-User, PerplexityBot and the like) even when they send Accept: */*. Match the user agent in your server or CDN, return text/markdown, and send Vary: User-Agent.
No sameAs profiles in the schema.
List your official profiles in your Organization JSON-LD:
"sameAs": ["https://www.linkedin.com/company/your-company", "https://github.com/your-company"]
How we check thisrobots.txt has no Content-Signal line.
Add a Content-Signal line to robots.txt saying how your content may be used. For example, to allow search and live AI answers but not training:
User-agent: *
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
The choice is yours: any setting earns the points.
How we check thisThe site looks like it sells products, but no page we read has Product schema.
Describe each product in JSON-LD with its name, image, an identifier and an offer:
{"@type": "Product", "name": "Blue mug, 350 ml", "image": "https://example.com/mug.jpg", "sku": "MUG-350-BLUE",
"offers": {"@type": "Offer", "price": "29.00", "priceCurrency": "EUR", "availability": "https://schema.org/InStock"}}
How we check thisllms.txt has 38,581 characters, over the 30,000 that fit in one read.
Start llms.txt with a # heading naming the site, follow it with Markdown links to your key pages ([Pricing](https://example.com/pricing): plans and prices), and keep it under 30,000 characters. Move long content into the pages it links to.
The homepage sends a Link header, but it names no agent files.
Add a Link header to the homepage response that points agents to your agent files:
Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown"
How we check thisrobots.txt lets AI agents in, but only through User-agent: *. It doesn't name OAI-SearchBot, Claude-SearchBot, PerplexityBot, ChatGPT-User, Claude-User, Perplexity-User.
Name the AI agents that fetch pages to answer people, and let them in, in robots.txt:
User-agent: OAI-SearchBot
User-agent: Claude-SearchBot
User-agent: PerplexityBot
User-agent: ChatGPT-User
User-agent: Claude-User
User-agent: Perplexity-User
Allow: /
You can still block training crawlers like GPTBot, ClaudeBot or CCBot; that doesn't cost points.
How we check this4 of 6 outline parts in place. Missing: one H1, no skipped heading levels (H2 → H5, H3 → H5).
Wrap the page in landmarks (<header>, <nav>, <main> and <footer>), give it one <h1>, and step down one heading level at a time: H1, then H2, then H3.
16 of 60 form fields have no label.
Give every field a <label>, either around it or linked with for and id:
<label for="email">Email</label>
<input id="email" type="email" name="email">
For a field with no visible label, such as a search box, add aria-label="Search".
The homepage links a feed at https://toppik.ro/feed, but it didn't load (HTTP 403).
Link your feed from the homepage's <head>:
<link rel="alternate" type="application/rss+xml" title="News" href="/feed.xml">
Most blog and CMS platforms already make the feed; it only needs linking.
How we check thisFound · 9: Leaves an llms.txt, llms.txt links work, Sitemap says what changed, Real buttons and links, Buttons say what they do, , Says when pages were updated, Answers quickly, Can be searched by URL
Doesn't apply or couldn't check · 3: Lists its APIs, Publishes an agent card, Shipping and returns are findable
One point per day, from that day's last scan. The last 10 days with a scan are shown.
Paste a URL and you'll get a report like this one.