Travel / SEO — EN · FR · AR

Moroccan Airports

Answer the question they actually typed.

A trilingual guide to Morocco’s seven international airports — rebuilt around search intent after a diagnosis that the site was being seen and never clicked.

Mandate
SEO diagnosis, content system, rebuild
Role
Audit, writing, build, deployment
Stack
Static HTML · Leaflet · nginx · Cloudflare
Live
moroccanairport.com ↗
The Moroccan Airports homepage
01 — In short

The short version

Where it startedSeen, never clicked

Search Console told a blunt story: 242 queries, impressions everywhere, and zero clicks on every single top query. The traffic was being offered and refused.

What I didRead the queries, not the rankings

The searches were informational — terminals, parking, taxis, maps, in three languages — while every title and description opened with a transfer price. The fix was not more SEO. It was answering the question before selling anything.

Where it landedA real guide, in three languages

Seventeen pages in English, French and Arabic, a map page that a crawler can actually read, and a hero that weighs a twentieth of what it did.

02 — The project

Three decisions

01

Diagnose the intent mismatch before touching a ranking

The temptation with impressions and no clicks is to chase position. The query list said otherwise: cmn airport, airports in morocco map, parking aeroport rabat, مطار الرباط. Nobody typing those wants a price. Every title led with “transfers from MAD 80” — a sales pitch against an informational question, so the result was skipped.

The Arabic and French queries were about a fifth of the sample. They were not noise, and they were being served pages that were only half translated.

  • 242 queries, 0 clicks
  • Intent mismatch
  • AR + FR cluster
  • Titles rewritten
02

Make the map page exist for a reader, not just for a map

The map was a full-screen Leaflet app — position:fixed, overflow:hidden, and 62 crawlable words with no <h1>, while earning 43 impressions a week. There was nothing on it for anyone who could not run JavaScript.

The layout went back into flow and a genuine, scrollable airport directory now sits beneath the map. Because the page scrolls again, wheel-zoom is disabled until you click into the map, so the page does not hijack the scroll.

  • Leaflet
  • 62 words → a real directory
  • Layout back in flow
  • Click-to-zoom
03

Three languages means three languages, not one plus two copies

The FR and AR versions had quietly drifted: the FAQ and its schema existed only in English, the practical getting-around section was English-only on every airport page, four pages had no translation at all, and 2,204 words of English prose were sitting inside French and Arabic pages — 75 unique strings.

All of it was translated and the missing pages were built, so EN, FR and AR are seventeen pages each with hreflang wired in both directions. Parity is now checked with a detector rather than by eye: any text node over 25 characters with no Arabic range, no French accents and three or more English stopwords is flagged.

  • 17 pages × 3 languages
  • 52-URL sitemap
  • hreflang both ways
  • 2,204 words translated
  • RTL Arabic
03 — Under the hood

What it actually does

Seven airport guides

Terminals, transport, parking and timings for each international airport, written to be read.

Readable map

Leaflet plus a crawlable directory, so the page says something without JavaScript.

Trilingual by construction

EN, FR and RTL Arabic at page parity, with a drift detector to keep them there.

Licensed imagery

24 Commons photos hosted locally with a credits page naming photographer and licence.

Light hero

A 10.8MB decorative loop re-encoded to 0.5MB with a poster frame.

Static behind Cloudflare

No CMS, no database — files on nginx at the edge.

04 — The result

Where it landed

Crawlability
The map page went from 62 words and no heading to a full airport directory; robots.txt no longer blocked the FR and AR trees it was listing in the sitemap.
Weight
The hero loop dropped from 10.8MB to 0.5MB — a 5-second decorative video that was costing more than the rest of the page combined.
Parity
EN / FR / AR at seventeen pages each, 52 URLs in the sitemap, no untranslated prose left in the detector.
Licensing
Every borrowed image is CC-BY or CC-BY-SA, hosted locally and credited — no hotlinks, and nothing used without attribution.

Ranking is a slow instrument. The intent fixes are in and measurable on the page; the click-through they were made for is still being watched, and I will put the figures here when they are real rather than hopeful.

An airport guide page — Marrakech Menara (RAK)
Next project

Tarification Nationale de Référence