# Use-case: mermio.ch — the best technical practices implemented

- Publication : 04/04/2026
- Temps de lecture : 9 min de lecture
- Auteur : Guillaume

## Mermio, first client of Mermio

Before advising our clients on best SEO and technical practices, we apply them ourselves. This use-case documents the implementation choices made on **mermio.ch** — with real code snippets, the tools used for tracking, and the reasons behind each decision.

The goal: a site visible to search engines *and* generative AIs, compliant with current best practices, measurable and maintainable.

---

## 1. JSON-LD: the Schema.org structured markup

JSON-LD (JavaScript Object Notation for Linked Data) is the format recommended by Google for injecting structured data into a page without touching the visible HTML. It allows search engines — and AIs — to understand *what your site is*, not just what it says.

On mermio.ch, each type of page has its own JSON-LD, dynamically generated on the server side (Laravel). Here’s what is implemented:

- **Homepage**: `Organization`, `LocalBusiness`, `ProfessionalService`, `WebSite`, `WebPage`, `FAQPage`
- **Service page**: `Service`, `BreadcrumbList`
- **Blog article**: `Article`, `BreadcrumbList`, `Person` (author)
- **Contact page**: `ContactPage`
- **FAQ page**: `FAQPage` with `Question` / `Answer`

Example of the `Organization` block injected on the homepage:

```json
{
"@context": "https://schema.org",
"@type": ["Organization", "LocalBusiness", "ProfessionalService"],
"@id": "https://www.mermio.ch/#organization",
"name": "Mermio",
"legalName": "Mermio Sàrl",
"url": "https://www.mermio.ch/",
"logo": {
"@type": "ImageObject",
"url": "https://www.mermio.ch/img/logo.webp",
"width": 200,
"height": 60
},
"address": {
"@type": "PostalAddress",
"streetAddress": "Rue de la Tour-de-l'Ile 4",
"addressLocality": "Geneva",
"postalCode": "1204",
"addressCountry": "CH"
},
"telephone": "+41786000366",
"founder": { "@type": "Person", "name": "Guillaume Mermillod" },
"foundingDate": "2025",
"taxID": "CHE-424.961.613",
"priceRange": "CHF",
"openingHours": "Mo-Fr 09:00-18:00"
}
```

Structured data is regularly validated with the [Schema Markup Validator](https://validator.schema.org/) and Google's rich results testing tool.

---

## 2. robots.txt: controlling access for crawlers

The `robots.txt` file, accessible at the root of the domain (`https://www.mermio.ch/robots.txt`), tells robots what they can — and cannot — explore.

On mermio.ch, we explicitly distinguish traditional crawlers (Googlebot, Bingbot) from AI agents (GPTBot, Claude, Anthropic), allowing the latter to index public content. We block, however, the administration areas and assets not relevant for SEO.

```text
User-agent: *
Disallow: /admin/
....

User-agent: Googlebot
Allow: /

User-agent: GPTBot
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: anthropic-ai
Allow: /

Sitemap: https://www.mermio.ch/sitemap.xml
```

Including the sitemap at the end of the file is a systematic best practice: it helps crawlers quickly discover all URLs.

---

## 3. llms.txt and llms-full.txt: preparing the site for generative AIs

The `llms.txt` and `llms-full.txt` files are an emerging convention (inspired by [llmstxt.org](https://llmstxt.org)) to provide LLMs with a structured and readable summary of a site's content — in Markdown, readable by both humans and machines.

It is the equivalent of `robots.txt`, but for AI agents: instead of controlling access, we guide understanding.

On mermio.ch, two levels are available:

- `/llms.txt`: synthetic version — agency description, list of services with their URLs, recent articles
- `/llms-full.txt`: detailed version — complete descriptions of services, article excerpts, manifesto, FAQ

Excerpt from the `llms.txt` file:

```markdown

# Mermio

> Web development and AI integration agency based in Geneva, Switzerland.
> Specializing in Laravel, Symfony, MCP integration, n8n automation.
....

## Services

- [Custom website](https://www.mermio.ch/services/developpement-web)
- [Landing page](https://www.mermio.ch/services/landing-pages)
....
```

These files are generated and updated via our internal MCP server, ensuring they always reflect the actual content of the site.

---

## 4. GTM / MTM: tracking without polluting the code

Rather than directly integrating tracking scripts into the Laravel source code, we use a **Tag Manager** — Google Tag Manager (GTM) or Matomo Tag Manager (MTM) depending on the client's compliance requirements.

The advantages:

- One snippet in the `` and ``, all tags managed from an interface without deployment
- Triggers on events (clicks, forms, scroll, time spent) without modifying the application code
- Clear separation between business code and analytics logic
- Versioning of containers (rollback possible in case of error)

Matomo Tag Manager snippet inserted in the `` of the Blade layout:

```html
{{-- Matomo Tag Manager --}}

var _mtm = window._mtm = window._mtm || [];
_mtm.push({'mtm.startTime': (new Date().getTime()), 'event': 'mtm.Start'});
(function() {
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src='https://nlpd.mondomaine.ch/js/container_XXXXXXXX.js';
s.parentNode.insertBefore(g,s);
})();

{{-- End Matomo Tag Manager --}}
```

For nLPD compliance, **Matomo** hosted on a Swiss server is sufficient in most cases — no data transfer outside Switzerland, no third-party cookies. For more advanced integration (enhanced tracking, multi-touch attribution, audiences), we switch to **server-side tagging** with GTM server-side hosted on a dedicated subdomain (`nlpd.mondomaine.ch`) — requests pass through your own server before reaching analytics platforms, giving complete control over the transmitted data.

---

## 5. Pages accessible in .md: content designed for machines

Each major content page on mermio.ch is accessible in two formats:

- The standard HTML URL: `https://www.mermio.ch/blog/mon-article`
- The Markdown version: `https://www.mermio.ch/blog/mon-article.md`

This convention allows AI agents (which often access pages via fetch or scraping) to retrieve content in a clean format, without HTML noise, navigation tags, or scripts. It is also useful for feeding RAG pipelines or automation workflows.

On the Laravel side, the implementation is simple: a route or middleware detects the `.md` extension and returns the content in plain Markdown text rather than the full Blade view:

```php
// In the Article controller
public function show(Article $article, Request $request): Response
{
if (str_ends_with($request->getPathInfo(), '.md')) {
return response($article->toMarkdown(), 200)
->header('Content-Type', 'text/markdown; charset=UTF-8');
}

return view('articles.show', compact('article'));
}
```

---

## 6. Indexing and performance tracking

### Google Search Console

The Search Console is the essential tool for monitoring indexing. We particularly monitor:

- The indexing status of URLs (indexed, excluded, errored)
- Search performance: impressions, clicks, CTR, average position
- The Core Web Vitals: LCP, INP, CLS — directly measured on real visits
- Index coverage after each significant deployment

We systematically submit the XML sitemap (`/sitemap.xml`) to the Search Console as soon as a new site goes live.

### Bing Webmaster Tools

Bing represents a significant share of search traffic, especially since the integration of Copilot. Bing Webmaster Tools allows:

- Submitting the sitemap
- Tracking indexing specific to Bingbot
- The SEO Reports tool (equivalent to a mini-integrated audit)
- Validating structured data (IndexNow is supported)

We enable **IndexNow** on all projects: each publication of a new article or service triggers an automatic notification to compatible engines (Bing, Yandex) for near-instant indexing.

### Google PageSpeed Insights

PageSpeed Insights (based on Lighthouse) measures real performance on mobile and desktop. The key metrics tracked:

- **LCP** (Largest Contentful Paint): time before the main content is visible
- **INP** (Interaction to Next Paint): responsiveness to user interactions
- **CLS** (Cumulative Layout Shift): visual stability during loading
- **TTFB** (Time To First Byte): server response speed

On mermio.ch, we aim for a Lighthouse score > 90 on all metrics in production. Images are served in `.webp`, CSS is purged via Tailwind, and assets are minified and versioned via Vite.

---

## 7. Screaming Frog SEO Spider: recurring technical audit

[Screaming Frog SEO Spider](https://www.screamingfrog.co.uk/seo-spider/) is our reference tool for technical SEO audits. It crawls the site as Googlebot would and returns a comprehensive list of potential issues.

We use it at several key moments:

- Before launching a site (pre-launch audit)
- After each redesign or migration
- In monthly follow-ups to detect regressions

The main checkpoints:

- **HTTP Codes**: detection of 404, 301, 500 errors and redirect chains
- **Title and meta description tags**: absences, duplicates, incorrect lengths
- **Headings structure**: missing H1, inconsistent hierarchy
- **Images**: missing `alt` attributes, excessive weight, unoptimized formats
- **Internal links**: generic anchors, orphan pages, indexing depth
- **Hreflang** (if multilingual): consistency of tags between versions
- **Structured data**: validation via integration with the Schema.org validator

Screaming Frog also integrates with Google Analytics, Google Search Console, and PageSpeed Insights to cross-reference data and prioritize fixes.

---

## What it looks like in practice

These best practices are not checkboxes — they form a coherent system. JSON-LD makes pages understandable for Google and AIs. The `robots.txt` guides crawlers. The `llms.txt` files prepare the site for the age of AI agents. The Tag Manager decouples tracking from the code. The `.md` pages facilitate automated ingestion. And the triad GSC + Bing + PageSpeed + Screaming Frog ensures that we are not navigating blindly.

This is exactly what we implement for our clients — mermio.ch is the concrete demonstration of this.

![Use-case: mermio.ch — the best technical practices implemented](https://www.mermio.ch/storage/80/01KNKTPVQM9MSHD6DRWQ2MZ78C.svg)

[Contact us](https://www.mermio.ch/en/contact)

## Articles similaires

4 January 2026

Discover how we successfully developed and launched the A-Track platform, marking the beginning of a...

[Lire l'article](https://www.mermio.ch/en/blog/launch-a-track)
