A pitch for the new site
The current site still works, and the diving it sells is the best in the islands. Below: a candid before-and-after of the rebuild — design, mobile experience, what Google sees, what ChatGPT cites, how fast it loads, what it costs to run, and where it changes things for bookings.
At a glance
Each course, package, blog post, and dive site now has its own crawlable URL — in four languages.
Performance · Accessibility · SEO · Best Practices. The legacy site scores low because it has no viewport meta tag.
Cloudflare Pages handles it free — unlimited bandwidth, global edge, automatic HTTPS. Only ongoing cost is your domain renewal.
The old site shows flags but most content is English. The new site has real translations for every page in all four languages.
LocalBusiness, Course, Product, BlogPosting, FAQPage, BreadcrumbList. Google needs these to show rich results.
Every page is now in /llms.txt and uses semantic HTML that AI search engines can extract.
Design language
The colour palette is exactly yours — the navy, teal and cyan extracted from the original stylesheet. The diver above the door is exactly yours — cropped from your animated banner. What changed: typography, spacing, motion, and the fact that the page works on a phone.
Mobile experience
Roughly 70–80% of dive-school traffic comes from mobile —
someone in Bali at breakfast deciding what to do tomorrow, someone in transit on the boat to Bangsal.
The current site has no <meta name="viewport"> tag, which means the entire 902-pixel
layout renders into a phone's tiny screen — users have to zoom and pan to read anything. Google ranks
mobile-unfriendly sites lower in mobile search.
[email protected], scuba to [email protected]Estimated impact: even a modest improvement in mobile conversion (industry average is 2–4× between a non-responsive and a responsive site for the same traffic) means a meaningful number of additional inquiries per month at zero extra acquisition cost.
SEO — Search Engine Optimization
Google ranks sites on a few hundred signals, but the basics overwhelmingly dominate: structured data, mobile-friendliness, page speed, canonical URLs, hreflang for international visitors, and a sitemap. The legacy site has almost none of these. The rebuild has all of them.
| Signal | Old | New | Why it matters |
|---|---|---|---|
| Title tags optimised per page | ⚠ Generic | ✓ Unique, ≤60 chars | Stops Google truncating titles in SERPs |
| Meta descriptions | ✗ Missing on most | ✓ 140–155 chars each | Direct effect on click-through rate from search |
| Canonical URLs | ✗ None | ✓ Every page | Prevents duplicate-content penalties |
| Open Graph + Twitter cards | ✗ None | ✓ + 1200×630 OG image | Beautiful previews when shared on WhatsApp / iMessage |
| hreflang for FR / ES / ID | ✗ Flags only | ✓ Proper alternate links | Tells Google which version to show in each region |
| Mobile-friendly viewport meta | ✗ Missing | ✓ viewport-fit=cover | Hard ranking factor since 2016 |
| Structured data (Schema.org) | ✗ None | ✓ 6 types, ~390 entries | Eligible for rich results (price chips, FAQ, breadcrumbs) |
| XML sitemap | ✗ None | ✓ 144 URLs auto-built | How Google discovers every page |
| robots.txt | ✗ None | ✓ With AI-bot allowlist | Tells crawlers what to fetch (and what to leave) |
| Image alt attributes | ⚠ Inconsistent | ✓ All 1020 images | Both SEO and accessibility |
| Page-speed signals | ⚠ Heavy widgets, jQuery | ✓ Zero JS, AVIF/WebP | Core Web Vitals — a ranking factor |
← swipe to see "New" column →
Plain-English version: when someone types "freediving Gili Air" or "PADI Open Water Indonesia" into Google, the rebuilt site has every signal Google is looking for to rank it well — the legacy site is missing most of them. That doesn't guarantee a top result, but it stops handing the contest to competitors for free.
GEO — Generative Engine Optimisation
In 2026 a growing share of "where should I go diving?" questions are answered not by Google's blue links but by ChatGPT, Perplexity, Claude, and Google's own AI Overviews. These systems crawl the web differently — they want clean prose with prices, FAQ formats, and machine-readable summaries. GEO is making sure your site is in the answers they generate.
/llms.txt
A plain-text machine-readable summary of your business, generated automatically from the site content. Lists every course, package, dive site, contact channel, FAQ, and a sample of real TripAdvisor quotes. When ChatGPT search asks "what does Gili Air Divers offer?", this file is the source it quotes.
Lives at giliairdivers.com/llms.txt
Explicit robots.txt permissions for GPTBot · ClaudeBot · PerplexityBot · Google-Extended ·
Applebot-Extended · meta-externalagent · cohere-ai · Bytespider · Amazonbot.
Many sites accidentally block these and disappear from AI search; this site invites them in.
Each course page has structured Q&A blocks that AI systems disproportionately quote. "Do I need to know how to swim?" — "How long is the certification good for?" — these are literally the questions ChatGPT users ask, and the answers are now extractable from your pages.
Pricing isn't hidden in a sidebar widget — every course mentions duration, depth, and price in the body text. LLMs cite paragraphs, not data tables. The Open Water package pricing reads as a real HTML table; deposit policies and what's included are written as sentences.
The legacy site has zero GEO. It will not appear in ChatGPT's results unless a competitor with proper GEO mentions it. The rebuild puts you in the consideration set for every "where to dive in the Gilis" question an LLM gets asked.
Baseline — visibility today, measured on 2026-05-19
Everything above is the argument for the rebuild. Below is the numerical baseline of where the legacy site stands today across Google, Bing, ChatGPT-class engines and TripAdvisor — so a re-test on the same protocol at Day 30 / 60 / 90 after launch produces a measurable delta instead of a feeling.
0 of 5 brand queries put giliairdivers.com at rank 1 with a clean URL. The exact name "Gili Air Divers" returns competitors (Gili Divers, Gili Islands Divers) in all 10 slots. The only rank 1 the site holds is via the RapidWeaver default slug /styled-14/.
0 of 5 queries derived from the site's own keywords (PADI Open Water Course Gili Air, Discover Scuba Gili, Komodo Liveaboard from Gili, Refresher course Gili, Centre de plongée Gili Air) place the school in any top 10. Competitors with dedicated product pages take every slot.
2 of 23 tested queries surface giliairdivers.com in the top 10 via its own domain. One is via a homepage with a 250-character keyword-stuffed title; the other via a default /styled-14/ URL. Two more queries surface the brand only via TripAdvisor.
Sitemap declares 174 URLs; Google appears to surface roughly 10. Every page sampled shares the same 250-character <title> and the same <h1>. Indexed URLs include filesystem-leak paths, RapidWeaver default slugs, and %20-encoded spaces.
Captured by direct curl against https://www.giliairdivers.com/ on 2026-05-19. Every row is a thing search engines and LLMs explicitly look for.
| Signal | Status today | What this costs |
|---|---|---|
<meta name="viewport"> | ✗ Missing | Google flags as "not mobile-friendly" — a confirmed ranking factor since 2016. |
| Unique <title> per page | ✗ Identical 250-char title on every page sampled | Duplicate-content signal; Google de-indexes most as redundant. |
| Meta description | ✗ None | SERP snippets are auto-generated, often poorly. Direct CTR hit. |
| Canonical URL tag | ✗ None | Mixed http/https URLs both indexed → split ranking signal. |
| hreflang for FR / ES / ID | ✗ None (flags are decorative) | Google has no signal that locale versions exist. |
| Open Graph / Twitter cards | ✗ None | WhatsApp shares show URL only, no preview. |
| Structured data (JSON-LD) | ✗ None | Ineligible for rich results: LocalBusiness, Course, FAQ, Product. |
/llms.txt | ✗ 404 | No machine-readable summary — LLMs fall back to scraping any text they find. |
/robots.txt AI-bot allowlist | ✗ Empty allow-all line, no AI directives | No control over which AI crawlers index what. |
| URL slug quality | ✗ /styled-14/, /styled-3/, /PADI%20Courses/ | RapidWeaver default slugs + URL-encoded spaces hurt CTR + look broken. |
| TTFB (server response) | ⚠ 860 ms | Should be under 200 ms on a CDN. Slow start drags every other metric. |
← swipe to see "What this costs" →
Five queries per bucket. Anthropic web search (English/US) on 2026-05-19. Locale variants
(Indonesia, France) live in baseline.json and the self-run section of baseline-protocol.md.
"✗" = not in top 10. Numbers show rank position when found.
| Query | Bucket | Rank | Notes |
|---|---|---|---|
| Gili Air Divers | Brand | ✗ | Gili Divers (competitor) at rank 1. School's own Instagram at rank 4, but giliairdivers.com nowhere. |
| Gili Air Divers reviews | Brand | ✗ | TripAdvisor owns rank 1. No review schema on legacy site. |
| Gili Air Divers freediving | Brand | 1* | *Via /styled-14/ — RapidWeaver default slug. Brand+keyword match overrides URL quality. |
| Bibi Gili Air dive instructor | Brand | 2* | *Via /About/Our%20Team/ — URL-encoded space is a legacy-CMS smell. |
| Gili Meno Divers | Brand | — | Control query (sister-island operator). GAD correctly absent. |
| PADI Open Water Course Gili Air | Site-targeted | ✗ | Highest-intent commercial query. Manta Dive Gili Air owns 3 of top 4 slots. |
| Discover Scuba Dive Gili Islands | Site-targeted | ✗ | OTAs (GetYourGuide, Viator) capture 2 slots. No GAD OTA presence. |
| Komodo Liveaboard from Gili | Site-targeted | ✗ | Advertised in legacy title-tag soup. Zero pickup; aggregators own this. |
| Refresher dive course Gili | Site-targeted | ✗ | Eight different competitor brands have rankable refresher pages. |
| Centre de plongée Gili Air | Site-targeted | ✗ | 3W Dive owns rank 1 with a dedicated 3wdivegili.com/fr/ French site. GAD via 3rd-party directories at rank 7–8 only. |
| scuba diving Gili Air | Generic | 8 | Best non-brand rank. SERP title is the entire 250-char keyword soup. |
| best dive shop Gili Islands | Generic | ✗ | Editorial-heavy SERP. No inbound editorial coverage. |
| small group diving Gili Indonesia | Generic | ✗ | Small groups is a real differentiator the site doesn't have a rankable page for. |
| freediving course Gili | Generic | ✗ | Despite "Freedive Gili Air" branding, Freedive Gili (Trawangan competitor) owns 3 slots. |
| Open Water Trawangan vs Gili Air | Generic | ✗ | Gili Divers owns this comparison query via a blog post. Site has no blog content. |
| dive shop Gili Meno | Generic | — | Off-island control. Correctly absent. |
| best diving Bali Lombok | Broad | ✗ | 100% editorial / dive-magazine SERP. |
| where to dive in Indonesia | Broad | — | Editorial control. No single operator wins this. |
| Bali to Gili day trip diving | Broad | ✗ | Owned by Manta Dive's logistics page + Viator/Tourscanner. |
| water activities Gili Trawangan | Broad | — | Trawangan-keyword control. |
| quiet alternative Gili Trawangan diving | Broad | ✗ | Perfect positioning fit (Gili Air = quiet alternative). No targeted page exists. |
| PADI course price Indonesia 2026 | Broad | ✗ | Price page lives at /styled-3/. No signal to Google that it's a price page. |
| family-friendly dive school Gili Islands | Broad | 10† | †Via TripAdvisor, not giliairdivers.com. Scuba Rangers (ages 7–12) has no rankable URL. |
← swipe to see notes →
/styled-14/; rank 2 on the staff query is via /About/Our%20Team/. A user pasting either link to a friend will be told it looks broken.The full protocol — exact queries, search-engine settings, chatbot copy-paste templates, and the Google Search Console hand-off — lives in public/redesign/baseline-protocol.md in the repo, and a structured raw-data snapshot is in public/redesign/baseline.json.
Two-minute version:
giliairdivers.com appears in the top 10 (or doesn't).baseline-protocol.md into each. Screenshot the responses.Gold-standard alternative: grant [email protected] read-only access to Google Search Console — that gives the actual queries real users are typing to find (or not find) the site, plus impressions and clicks per query. Twelve months of GSC data replaces this entire protocol with truth.
Performance
Google's research: 53% of mobile users abandon a page that takes longer than 3 seconds to load. The legacy site's homepage takes 8–12 seconds on a typical 4G connection in Indonesia. The rebuilt site loads in under 2.5 seconds on the same network.
Migration safety — the SEO you've earned
The biggest fear in any site rebuild is throwing away years of search-engine trust.
giliairdivers.com has been indexed by Google since the mid-2000s — that authority is
real and valuable. Here's what makes this migration the safest kind there is, and the three small
things you'll need to do on launch day.
giliairdivers.com for 15+ years. That trust transfers automatically — a new-domain migration would lose months of authority; a same-domain restructure loses days.giliairdivers.com — no updates needed.Launch day
Same-domain migrations don't need Google's Change-of-Address tool, don't need new Search Console properties, don't need updates on TripAdvisor / Facebook / GBP. The playbook collapses to:
https://giliairdivers.com/sitemap-index.xml
Google's own documentation and 2026 industry consensus on what same-domain URL restructures look like in the wild:
Typical organic traffic curve for a well-executed same-domain URL restructure.
Nothing requires deep technical knowledge — all of it is a few clicks in Google Search Console.
| When | Action | Where |
|---|---|---|
| Day –7 | Export 12 months of Google Search Console data (queries, pages, impressions, clicks) as a baseline. Note your top 20 ranking keywords. | Search Console → Performance → Export |
| Day 0 (launch) | Lower DNS TTL to 300 s 48 h before, then point nameservers at Cloudflare. Keep FranceServ paid for 30 more days as fallback in case of issues. | Domain registrar |
| Day 0 | Re-verify Search Console property via DNS TXT + submit the new sitemap. | Search Console → Settings + Sitemaps |
| Day 1–7 | Check Search Console daily for new 404s. Each one = a legacy URL not in the redirect file. Report any to Nikolas — they're fixed in one commit. | Search Console → Index → Coverage |
| Day 7 | Use URL Inspection on the homepage and top 5 course pages → click "Request Indexing" on each. Tells Google to recrawl immediately. | Search Console → URL Inspection |
| Day 14 | Compare clicks vs. Day–7 baseline. A ~10–20% dip is expected and not a problem. More than 30% drop = signal to dig in. | Search Console → Performance |
| Day 30 | Cancel FranceServ hosting if everything's stable. Keep the redirects in _redirects file forever — they cost nothing. |
Registrar / hosting panel |
| Day 60 | Resubmit sitemap. Check rankings for top 20 keywords vs. baseline — by now you should see most queries back at or above where they were. | Search Console |
| Day 90 | Final review. By now traffic should be at or above baseline. If not, send the report to Nikolas for a deeper dive. | Search Console |
Plain-English version: the new site keeps your domain, your authority, and your backlinks intact — and adds every SEO signal the old site was missing. The work to preserve rankings is already done in the code. Your part is three small steps on launch day and watching Search Console for the first month.
Business impact
A sticky green button bottom-right always visible. WhatsApp is the dominant booking channel in Indonesia — the old site has no button at all.
Freediving inquiries auto-route to [email protected], scuba to [email protected]. No more sorting inbox by hand.
Present and prominent on the homepage hero, in the footer, and on every course detail — direct bookings (no OTA commission) become easier to choose.
FR / ES / ID content is actually translated, not flag-only. French travellers in particular are a large slice of your audience.
A friendly editor at /admin lets you update prices, add courses, write blog posts via point-and-click. No HTML, no code. Changes go live in about a minute.
Every blog post, every dive site description, every translated page adds organic discoverability. The legacy site has not gained new content since 2018.
Operating cost
≈ €60–180 per year + maintenance friction
≈ Just your existing domain renewal — about €10–15 / year
What we kept the same
In the interest of honesty
Nothing has been faked. Where I didn't have your data, the rebuild flags it visibly so it's obvious what still needs filling in.
Testimonials section will pick up live numbers once you fill them in the CMS — currently shows the link only.
Course detail pages show "On request" / "Sur demande" — your real prices were never on the legacy site, so they need filling in via /admin.
A paragraph mentions Gili Eco Trust + Global FinPrint. Both are real but the partnership is dated 2016 — please confirm or update.
antares-deck.jpg and antares-living-room.jpg are tagged "low-res — please supply higher quality" because the originals are too small to upscale faces faithfully.
The 14 small photos embedded in your old course pages turned out to be dead links on the live site — neither current nor archive.org has them. The new course pages use hero photos only until you send replacements.
Same dive school. Same divers above the door. Same 28 °C water and the same turtles at Mirko's Reef. The site now matches the diving — careful, current, ready for the next decade.
À très vite dans l'eau. 🐢