← Blog
GEO·3 AĞUSTOS 2026AUG 3, 2026·12 DK OKUMA12 MIN READ

Meta tag'den MCP'ye: web sitesini makineye görünür kılmanın hikâyesiFrom meta tags to MCP: the story of making a website visible to machines

Otuz yıldır aynı soruyu soruyoruz: "sitemi nasıl öne çıkarırım?" Soru hiç değişmedi; değişen, bu soruyu kime sorduğumuz. Önce arama motorunun crawler'ına anlattık kendimizi, sonra tarayıcıya, şimdi bir dil modeline. Ve artık hedef bir listenin başında olmak değil — cevabın içinde geçmek ve kaynak gösterilmek. Bu yazı o otuz yıllık hattı ve bugün pratikte ne yapılması gerektiğini anlatıyor.

For thirty years we've asked the same question: "how do I make my site stand out?" The question never changed; what changed is who we're asking. First we explained ourselves to a search engine's crawler, then to the browser, now to a language model. And the goal is no longer to top a list — it's to appear inside the answer, and be cited. This post traces that thirty-year line and what to actually do about it today.

Naylalabs · MühendislikEngineering

01Makineye kendini tanıtma çağıThe age of introducing yourself to a machine

İşin başında crawler basit bir şey yapıyordu: HTML'i indiriyor, linkleri takip ediyordu. Üç şeyi beceremiyordu — sayfayı iki satırda tarif etmek, aynı içeriğin farklı adreslerinden hangisinin asıl olduğunu bilmek ve kimsenin link vermediği sayfaları bulmak. Bugün hâlâ yazdığımız etiketler ve dosyalar bu üç eksikten doğdu.

In the beginning the crawler did something simple: download the HTML, follow the links. It couldn't do three things — describe a page in two lines, know which of several addresses for the same content was the real one, and find pages nobody linked to. The tags and files we still write today were born from those three gaps.

Meta title ve description (90'ların ortası). Arama sonucunda bize iki satırlık bir alan veriliyordu ve o iki satır, tıklanıp tıklanmayacağımızı belirliyordu. Makinenin sayfamızdan rastgele bir paragraf seçmesini beklemek yerine, özeti kendimiz yazdık.

Meta title and description (mid-90s). A search result gave us two lines of space, and those two lines decided whether we got clicked. Rather than let the machine pick a random paragraph from the page, we wrote the summary ourselves.

index.html
<title>Mağaza — Elektronik, Moda ve Ev Ürünleri | Ücretsiz KargoStore — Electronics, Fashion and Home | Free Shipping</title>
<meta name="description" content="200'den fazla markada binlerce ürün, uygun fiyat ve aynı gün kargo.Thousands of products from 200+ brands, fair prices and same-day shipping.">
<meta property="og:image" content="https://site.com/og/home.jpg">

Canonical (2009). Aynı sayfa birden fazla adresten açılabiliyordu — www'lu hali, sondaki slash'li hali, ?utm_source= parametreli hali. Arama motoru bunları ayrı sayfalar sanıyor, içerik de link değeri de bölünüyordu. Çözüm tek satırdı: <link rel="canonical" href="https://site.com/urun">

Canonical (2009). The same page could open from several addresses — with www, with a trailing slash, with a ?utm_source= parameter. Search engines treated them as separate pages, splitting both content and link equity. The fix was one line: <link rel="canonical" href="https://site.com/product">

Sitemap (2005) ve robots.txt (1994). Crawler sitede link takip ederek geziyordu; yani hiçbir yerden link almayan, çok derinde kalan ya da yeni yayınlanan sayfa keşfedilemiyordu. Üstelik her sitenin bir crawl bütçesi vardı ve botun zamanını arama sayfalarında, filtre kombinasyonlarında harcaması saçmaydı. Sitemap "şunlara bak, şu tarihte güncellendi" dedi; robots.txt ise "şuralara hiç girme, haritam da şurada" dedi.

Sitemaps (2005) and robots.txt (1994). Crawlers moved through a site by following links, so a page with no inbound links, buried deep, or newly published simply wasn't discovered. Every site also had a crawl budget, and spending the bot's time on search pages and filter combinations was wasteful. The sitemap said "look at these, updated on this date"; robots.txt said "never go here, and my map is over there".

robots.txt
User-agent: *
Disallow: /sepet
Disallow: /arama

Sitemap: https://site.com/sitemap.xml

Bu üçü aslında tek bir şeydi: makineye yapılandırılmış bir öz-tanıtım. Yıllar içinde bu işin adı SEO oldu. Bugün yaptığımız da tam olarak bu.

All three were really one thing: a structured self-introduction for machines. Over the years we called it SEO. What we do today is exactly the same act.

02Tek dil yetmediOne language wasn't enough

Sitenin Türkçe ve İngilizce versiyonunu yayınladığımızda yeni bir problem çıktı: arama motoru bu ikisini birbirinin kopyası sandı. Almanya'daki kullanıcıya Türkçe sayfa, Türkiye'deki kullanıcıya İngilizce sayfa çıkmaya başladı. hreflang (2011) bunu çözdü: "bu sayfanın Türkçesi şurada, İngilizcesi şurada, hiçbiri uymuyorsa x-default şuraya gitsin."

When we published Turkish and English versions of a site, a new problem appeared: search engines took them for copies of each other. German users started getting the Turkish page and Turkish users the English one. hreflang (2011) solved it: "the Turkish version is here, the English one there, and if neither fits, send them to x-default."

<head>
<link rel="alternate" hreflang="tr" href="https://site.com/tr/urun">
<link rel="alternate" hreflang="en" href="https://site.com/en/product">
<link rel="alternate" hreflang="x-default" href="https://site.com/en/product">

Frontend tarafında bu, bir mimari karara dönüştü: ayrı domain mi (site.de), subdomain mi (de.site.com), yoksa klasör mü (site.com/de/)? Çoğu proje için klasör kazandı; tek domainin otoritesi bölünmüyor. Router'larımız /[locale]/[...slug] şeklini aldı, meta tag'ler dile göre üretilir oldu.

On the frontend this became an architectural decision: separate domain (site.de), subdomain (de.site.com), or folder (site.com/de/)? For most projects the folder won, because one domain's authority stays undivided. Our routers took the shape /[locale]/[...slug], and meta tags started being generated per language.

03SPA devrimi ve geri dönen faturaThe SPA revolution and the bill that came back

Sonra React (2013), Vue, Angular geldi. Kullanıcı deneyimi uçtu: sayfa yenilenmiyor, geçişler anlık, uygulama gibi hissettiriyor. Ama sunucudan gelen HTML şuydu: <div id="root"></div>

Then came React (2013), Vue, Angular. The user experience took off: no page reloads, instant transitions, it felt like an app. But the HTML from the server was this: <div id="root"></div>

Crawler bu sayfayı istediğinde eline boş bir kutu geçiyordu. İçeriği görmek için JavaScript çalıştırması gerekiyordu ve o dönem bunu ya hiç yapmıyor ya da günler sonra, ikinci bir tarama dalgasında yapıyordu. Daha kötüsü, meta tag'leri de client-side set ediyorduk:

When a crawler requested that page, it got an empty box. Seeing the content required running JavaScript, and back then crawlers either didn't, or did it days later in a second rendering wave. Worse, we were setting meta tags client-side too:

ProductPage.jsx
// Tarayıcıda çalışınca doğru başlığı yazar —// Running in the browser this sets the right title —
// ama HTML yanıtında bu başlık YOK.// but the title is NOT in the HTML response.
useEffect(() => {
  document.title = product.name;
}, [product]);

X, Facebook, WhatsApp gibi platformların önizleme botları JavaScript çalıştırmadığı için, hangi sayfayı paylaşırsanız paylaşın önizlemede aynı genel başlık ve aynı logo çıkıyordu.

Because the preview bots of platforms like X, Facebook and WhatsApp don't run JavaScript, every page you shared produced the same generic title and the same logo in the preview.

Cevap SSR (server-side rendering) oldu: Next.js (2016), Nuxt, SvelteKit — sayfayı sunucuda üret, dolu HTML gönder, sonra hydrate et. Meta bilgisi artık istek anında sunucuda üretiliyordu. Ardından yaklaşım olgunlaştı: SSG sayfayı build anında üretip CDN'den servis etti, ISR bunu arada bir kendini tazeleyen hale getirdi, streaming ise sayfanın hazır parçalarını gerisini beklemeden göndermeye başladı. (Bu hattın bugünkü devamını React Server Components yazısında ayrıca tartıştık.)

The answer was SSR (server-side rendering): Next.js (2016), Nuxt, SvelteKit — render on the server, send full HTML, hydrate afterwards. Meta information was now produced on the server at request time. Then the approach matured: SSG built the page once and served it from a CDN, ISR made that refresh itself periodically, and streaming started sending the ready parts of a page without waiting for the rest. (We discussed where this line leads today in our React Server Components post.)

Makineye kendimizi anlatmayı öğrenmiştik. Tam o sırada arama yapan kişi değişti.

We had learned to explain ourselves to the machine. And right then, the one doing the searching changed.

04Artık kimse aramıyor, soruyorNobody searches any more — they ask

En net örneği kendi mesleğimizde yaşadık. Eskiden bir hata mesajı aldığımızda refleksimiz belliydi: kopyala, Google'a yapıştır, Stack Overflow sonucuna tıkla. Bugün o refleks yok; hatayı doğrudan modele yapıştırıyoruz. Stack Overflow'un soru hacmi ChatGPT'nin çıkışından (Kasım 2022) sonra sert biçimde düştü ve bir daha toparlanmadı. Site hâlâ ayakta, ama artık kimsenin ilk durağı değil.

We lived the clearest example in our own profession. When you got an error message, the reflex was fixed: copy it, paste it into Google, click the Stack Overflow result. That reflex is gone; we paste the error straight into a model. Stack Overflow's question volume fell sharply after ChatGPT's launch (November 2022) and never recovered. The site is still standing, but it's nobody's first stop.

Aynı şey normal kullanıcıda da oldu. "3.000 TL'ye hangi kulaklığı alayım?", "kira sözleşmesinde nelere dikkat etmeliyim?" gibi sorular artık tek tek gezip karşılaştıracağınız bir sonuç listesine değil, doğrudan tek bir cevaba gidiyor. Google bile kendi içinde AI Overviews ve AI Mode ile aynı şeyi yapıyor. SEO'nun otuz yıllık varsayımı tekti: sıralanmış bir liste var ve siz o listede yukarı çıkmaya çalışıyorsunuz. Artık o liste cevabın arkasında kalıyor.

The same happened with ordinary users. Questions like "which headphones should I buy for $100?" or "what should I watch for in a rental contract?" no longer lead to a list of results you compare yourself, but straight to a single answer. Google does the same thing internally with AI Overviews and AI Mode. SEO's thirty-year assumption was singular: there is a ranked list, and you're trying to climb it. Now that list sits behind the answer.

Hedef 1. sırada çıkmak değil; cevabın içinde geçmek ve kaynak gösterilmek.
The goal isn't ranking first; it's appearing inside the answer — and being cited.

Buna bir de zero-click gerçeği ekleniyor: kullanıcı cevabını arayüzde alıyor, sitenize hiç gelmiyor. Trafiğiniz düşerken etki alanınız genişleyebilir — ya da tam tersi, hiç görünmediğiniz için ikisi birden düşer.

Add the zero-click reality on top: the user gets their answer in the interface and never reaches your site. Your traffic can fall while your reach grows — or, if you're not visible at all, both fall together.

05Bir model sitenizi nasıl görüyor?How does a model "see" your site?

İçeriğiniz modele üç kanaldan ulaşıyor ve üçü üzerindeki kontrolünüz çok farklı:

Your content reaches a model through three channels, and your control over each is very different:

KanalChannel Nasıl çalışırHow it works KontrolünüzYour control
Eğitim verisiTraining data Yavaş ve geriden gelir; marka bilinirliğiniz buradan doğarSlow and lagging; this is where brand familiarity comes from Yok denecek kadar az — dünkü yazınız buraya girmezAlmost none — yesterday's post isn't in it
Canlı aramaLive search Model soruyu alır, arama yapar, birkaç sayfayı çekip okurThe model takes the question, searches, fetches and reads a few pages Yüksek — üzerinde gerçekten oynayabildiğiniz alanHigh — the area you can genuinely influence
Doğrudan erişimDirect access Kullanıcı linkinizi yapıştırır ya da bir ajan API'nizi çağırırA user pastes your link, or an agent calls your API Tam — ne sunduğunuza siz karar verirsinizFull — you decide what you expose

Burada kritik bir ayrıntı var: model genelde sayfanın tamamını bağlama almıyor. Sorguyla en alakalı bölümleri seçip onlarla çalışıyor; ne kadarının seçildiği sisteme göre değişiyor. Sonuç: artık sayfanın bütünlüğü değil, her paragrafın tek başına ayakta durabilmesi önemli.

One detail matters most here: a model usually doesn't take the whole page into context. It selects the parts most relevant to the query and works with those; how much gets selected varies by system. The consequence: what matters is no longer the page as a whole, but whether each paragraph stands on its own.

06Bugün ne yapmalıyız?What should we do today?

Son dönemde bu işe AEO (answer engine optimization) ya da GEO (generative engine optimization) deniyor. Google'ın kendi rehberindeki tavır net: AI araması da arama olduğu için bu hâlâ SEO, ayrı bir disiplin değil. Google için doğru — AI Overviews aynı indeksin üstünde çalışıyor. Ama Google'ın indeksiyle çalışmayan modeller için birkaç şey gerçekten değişiyor. Aşağıdaki on madde o birkaç şey.

Lately this work goes by AEO (answer engine optimization) or GEO (generative engine optimization). Google's own guidance is unambiguous: AI search is still search, so this is still SEO, not a separate discipline. That's true for Google — AI Overviews runs on the same index. But for models that don't run on Google's index, a few things genuinely change. These ten points are those few things.

1. Render meselesi geri döndü

1. Rendering is a problem again

Google tarafında JavaScript render desteği yıllardır var; AI Overviews da aynı arama altyapısını kullandığı için orada SSR bir zorunluluk değil. Ama AI ekosistemindeki bütün botlar aynı seviyede değil — çoğu HTML'i alıp metni çıkarıyor ve gidiyor. Yani client-side render edilen sayfanız bir kısım model için boş sayfa. İçeriğinizin ilk HTML yanıtında bulunması hâlâ en güvenli yaklaşım; sadece AI için değil, sosyal medya önizlemeleri ve ilk yükleme hızı için de.

Google has supported JavaScript rendering for years, and since AI Overviews uses the same search infrastructure, SSR isn't mandatory there. But not every bot in the AI ecosystem is at that level — most fetch the HTML, extract the text and leave. Which means a client-side rendered page is an empty page to a portion of them. Having your content in the first HTML response is still the safest approach — not only for AI, but for social previews and first-load speed too.

2. robots.txt'te AI botlarına bilinçli karar verin

2. Make a deliberate decision about AI bots in robots.txt

Burada en sık yapılan hata, panikle hepsini kapatmak. Oysa "eğitim verisi olarak kullanılmak" ile "arama sonucunda kaynak gösterilmek" ayrı şeyler ve ayrı botlarla yönetiliyor. Model eğitimine izin vermemek, AI arama sonuçlarında görünmeyeceğiniz anlamına gelmiyor. Arama tarafındaki botlara (OAI-SearchBot, ChatGPT-User, PerplexityBot) ayrıca satır yazmanıza gerek yok; genel kuralınıza uyup sitenizi tarıyorlar.

The most common mistake here is panicking and blocking everything. But "used as training data" and "cited in a search result" are different things, governed by different bots. Refusing model training does not mean you'll be absent from AI search results. You don't need separate lines for the search-side bots (OAI-SearchBot, ChatGPT-User, PerplexityBot) — they follow your general rule and crawl your site.

robots.txt
User-agent: *
Disallow: /sepet
Disallow: /arama

# İçeriğiniz model eğitiminde kullanılmasın istiyorsanız:# Only if you don't want your content used for model training:
User-agent: GPTBot
User-agent: ClaudeBot
Disallow: /

3. Yapısal veriyi ciddiye alın

3. Take structured data seriously

Schema.org / JSON-LD, rich snippet için yapılan bir süs değil. AI görünürlüğü için zorunlu değil — Google bunu açıkça söylüyor — ama modele varlık netliği veriyor: bu kim, ne yapıyor, kiminle ilişkili. Article, Product, FAQPage, BreadcrumbList ve özellikle sameAs — model sizi internetteki diğer izlerinizle aynı varlık olarak birleştirebilsin diye.

Schema.org / JSON-LD isn't decoration for rich snippets. It isn't required for AI visibility — Google says so plainly — but it gives the model entity clarity: who this is, what it does, who it's connected to. Article, Product, FAQPage, BreadcrumbList and especially sameAs — so the model can merge you with your other traces across the internet into one entity.

4. İçeriği parçalanabilir yazın

4. Write content that survives being cut up

Model sayfanın tamamını değil parçalarını aldığına göre, yazınızın her bölümü tek başına okunduğunda da anlamlı olmalı. Cevabı başa koyun — girizgâh paragrafı değil, doğrudan cevap; sonra detay. Başlıkları soru gibi yazın: "Kargo Bilgileri" değil, "Kargo ne kadar sürede gelir?" Kısa paragraflar, tablolar ve listeler modelin ayrıştırması kolay yapılardır.

Since the model takes parts of the page rather than the whole, every section has to make sense read on its own. Put the answer first — not a warm-up paragraph, the answer itself; detail after. Write headings as questions: not "Shipping Information" but "How long does shipping take?" Short paragraphs, tables and lists are structures a model parses easily.

5. Semantik HTML yazın

5. Write semantic HTML

<div> çorbası hem insana hem makineye aynı derecede kötü. Model metni çıkarırken sayfanın neresi başlık, neresi içerik, bölümler nerede bitiyor — bunları etiketlerden anlıyor.

A <div> soup is equally bad for humans and machines. When a model extracts text, it works out what's a heading, what's content and where sections end from the tags.

markup
<!-- Modelin gördüğü: yapısız metin yığını --><!-- What the model sees: an unstructured pile of text -->
<div class="wrapper">
  <div class="title-lg">Kargo BilgileriShipping Information</div>
</div>

<!-- Modelin gördüğü: başlıklı, sınırları belli bir bölüm --><!-- What the model sees: a titled section with clear boundaries -->
<article>
  <h2>Kargo ne kadar sürede gelir?How long does shipping take?</h2>
  <p>Siparişler aynı gün kargoya verilir, teslimat 1-3 iş günü sürer.Orders ship the same day; delivery takes 1-3 business days.</p>
</article>

Bu maddenin ikinci bir işlevi daha var ve önemi artıyor: ajanlar sitenizde işlem yapmaya başladığında, butonun ne işe yaradığını ve formun hangi alanı istediğini yine bu etiketlerden anlayacaklar. Ekran okuyucu için doğru olan işaretleme, ajan için de doğru olanı — erişilebilirlik çalışması burada ikinci kez karşılığını veriyor.

This point has a second function whose importance is growing: once agents start acting on your site, they will work out what a button does and what a form field wants from these same tags. The markup that's right for a screen reader is the markup that's right for an agent — accessibility work pays off a second time here.

6. Alıntılanabilir olun

6. Be quotable

Modeller belirsiz cümleleri değil, kesin ifadeleri alıntılar: net tanımlar, sayılar, tarihler, versiyon bilgileri, kendi ölçtüğünüz veriler. "Oldukça hızlı" diye bir şey alıntılanmaz; "ortalama 180 ms TTFB" alıntılanır. Herkesin yazdığı genel içerik zaten modelin içinde var — size ihtiyacı yok. Sizde olup başkasında olmayan veri, sizi kaynak yapar.

Models quote precise statements, not vague ones: clear definitions, numbers, dates, version details, data you measured yourself. Nobody quotes "quite fast"; they quote "180 ms average TTFB". The generic content everyone writes is already inside the model — it doesn't need you. Data you have and others don't is what makes you a source.

7. Site dışında da var olun

7. Exist outside your own site

Listedeki tek kod yazılmayan madde: model sizi yalnızca sitenizden öğrenmiyor. GitHub, Reddit, Wikipedia, forumlar, sektör yayınları. Kendi sitenizi mükemmelleştirip hiçbir yerde adınız geçmiyorsa, modelin sizden haberi olmayabilir. Sitenizde yapabileceğiniz kısım daha mütevazı: görünür bir güncelleme tarihi ve kaynak göstermek. Güncellik gerektiren sorularda tarihi belli olan içerik öne geçiyor.

The only item on this list with no code: a model doesn't learn about you only from your site. GitHub, Reddit, Wikipedia, forums, industry publications. If you perfect your own site but appear nowhere else, the model may simply not know you exist. Your on-site share is more modest: a visible update date and citing your sources. For questions where freshness matters, dated content gets ahead.

8. Botun önünü açık tutun

8. Keep the bot's path clear

Kontrol edilecek üç şey: TTFB düşük olsun — crawler yavaş siteyi yarıda bırakır; URL'ler kalıcı olsun, 200 dönsün, gereksiz yönlendirme zinciri olmasın; ve bot korumanızı kontrol edin. Cloudflare veya WAF kuralınız AI crawler'ını sessizce 403'lüyor olabilir — bu, farkında olmadan yapılan en yaygın hata.

Three things to check: keep TTFB low — a crawler abandons a slow site; keep URLs stable, returning 200, with no needless redirect chains; and check your bot protection. Your Cloudflare or WAF rule may be quietly returning 403 to AI crawlers — the most common mistake made without noticing.

9. Her pazara kendi dilinden yazın

9. Write to each market in its own language

Kullanıcı kendi dilinde soruyor, model kendi dilinde cevap veriyor. hreflang hâlâ geçerli ama tek başına yetmiyor. Kritik fark: makine çevirisiyle üretilmiş içerik alıntılanan içerik olmuyor. Türkçe pazarda görünmek istiyorsanız, Türkçe yazılmış — çevrilmiş değil — içeriğe ihtiyacınız var: yerel örnekler, yerel terminoloji, yerel veri.

Users ask in their own language and models answer in it. hreflang still applies but isn't enough on its own. The critical difference: machine-translated content doesn't become quoted content. To be visible in a local market you need content written in that language — not translated: local examples, local terminology, local data.

10. Ölçün

10. Measure it

Ölçemediğiniz şeyi yönetemezsiniz. Dört yere bakın: Search Console (Google'ın AI özelliklerindeki görünürlüğünüz için ayrı bir performans raporu var); referrer trafiği (chatgpt.com, perplexity.ai, claude.ai — az ama yüksek niyetli); sunucu log'ları; ve manuel test — ayda bir, markanızla ilgili 10 soruyu farklı modellere sorun. Adınız geçiyor mu, doğru mu geçiyor? En ilkel ama en dürüst metrik.

You can't manage what you don't measure. Look in four places: Search Console (there's a separate performance report for your visibility in Google's AI features); referrer traffic (chatgpt.com, perplexity.ai, claude.ai — small but high-intent); server logs; and manual testing — once a month, ask ten questions about your brand across different models. Do you come up? Correctly? The crudest but most honest metric.

access.log
grep -E "GPTBot|ClaudeBot|PerplexityBot|OAI-SearchBot" access.log \
  | awk '{print $9}' | sort | uniq -c

   1243 200
    318 403   ← bu satır varsa botları engelliyorsunuz← if this line exists, you're blocking the bots

07Yarın ne var: MCP ve iş yapan makinelerWhat's next: MCP and machines that do things

Buraya kadar her şey okunmakla ilgiliydi. Sıradaki kırılma, ajanların sadece okumayıp işlem yapmaya başlaması. Bu bugün zaten oluyor, ama dar bir alanda: iş araçlarında. Slack, Notion, Figma, GitHub gibi ürünler kendi MCP (Model Context Protocol, 2024) sunucularını yayınlıyor. Asistana "dün tasarım kanalında ne konuşulmuş, özetle" diyorsunuz; o da uygulamayı hiç açmadan işi yapıyor. İçerik okutmak yerine yetenek sunmak.

Everything so far was about being read. The next break is agents moving from reading to doing. This is already happening, but in a narrow area: work tools. Products like Slack, Notion, Figma and GitHub publish their own MCP (Model Context Protocol, 2024) servers. You tell the assistant "summarize what was discussed in the design channel yesterday" and it does the job without ever opening the app. Offering capability instead of content to read.

Sıradaki adım bunun sıradan kullanıcıya inmesi. "Bana 12 Ağustos'a İzmir bileti al" dendiğinde ajan ya sitenizde bu işi tamamlayacak ya da tamamlayabildiği bir yere gidecek. O noktada "sitem var mı" sorusunun yanına yenisi ekleniyor: ajan benim sitemde işini bitirebiliyor mu? Mobil tarafta bunun nasıl göründüğünü ajan uyumlu uygulama tasarımı yazısında ayrıntılandırdık.

The next step is this reaching ordinary users. Told "book me a flight to Izmir on 12 August", the agent will either complete that on your site or go somewhere it can. At that point a new question joins "do I have a site?": can an agent finish its job on my site? We covered what this looks like on mobile in our post on agent-ready app design.

Yani artık iki kitleye birden yazıyoruz: insan ve ajan. 2010'larda "masaüstü ve mobil"e yazmayı öğrenmemize benzer bir kırılma bu — ve o zaman da başta bir azınlığın merakı gibi görünmüştü.

So we now write for two audiences at once: humans and agents. It's a shift much like learning to write for "desktop and mobile" in the 2010s — which also looked like a minority's curiosity at first.

Otuz yıllık bu hikâyede aslında hiçbir şey değişmedi. <meta name="description"> yazarken de, canonical eklerken de, SSR'a geçerken de, JSON-LD gömerken de, llms.txt yayınlarken de, MCP sunucusu açarken de aynı şeyi yaptık: makineye kendimizi doğru tanıttık. Değişen tek şey, makinenin artık sadece indekslememesi — cevabı o yazıyor.

Across this thirty-year story, nothing really changed. Writing <meta name="description">, adding a canonical, moving to SSR, embedding JSON-LD, publishing an llms.txt, standing up an MCP server — we did the same thing every time: introduced ourselves to the machine, correctly. The only difference is that the machine no longer merely indexes — it writes the answer.

Kısa liste.Short list. Bugün kontrol edilecekler: içerik ilk HTML yanıtında ✓ · robots.txt'te eğitim ile arama botları bilinçli ayrılmış ✓ · Organization/Article/FAQPage + sameAs şemaları ✓ · cevap başta, başlıklar soru formunda ✓ · semantik HTML (ajanlar için de) ✓ · sayı ve tarih içeren alıntılanabilir cümleler ✓ · WAF'ınız AI botlarını 403'lemiyor ✓ · yerel pazara çeviri değil, o dilde yazılmış içerik ✓ · Search Console + referrer + log ölçümü kurulu ✓.Check these today: content present in the first HTML response ✓ · robots.txt separates training bots from search bots deliberately ✓ · Organization/Article/FAQPage + sameAs schemas ✓ · answer first, headings as questions ✓ · semantic HTML (for agents too) ✓ · quotable sentences carrying numbers and dates ✓ · your WAF isn't 403-ing AI bots ✓ · content written in the local language, not translated ✓ · Search Console + referrer + log measurement in place ✓.

08Sık sorulanlarFrequently asked questions

GEO, SEO'dan ayrı bir disiplin mi? Google'a göre hayır: AI araması da arama, AI Overviews aynı indeks üzerinde çalışıyor ve ayrı bir işaretleme gerektirmiyor. Ama Google'ın indeksiyle çalışmayan modeller için render, paragraf yapısı ve bot erişimi gerçekten fark yaratıyor.

Is GEO a separate discipline from SEO? Per Google, no: AI search is search, AI Overviews runs on the same index and needs no special markup. But for models not running on Google's index, rendering, paragraph structure and bot access genuinely matter.

AI botlarını engellemeli miyim? Hepsini birden kapatmak en sık hata. Eğitim botlarını (GPTBot, ClaudeBot) kapatıp arama botlarını (OAI-SearchBot, ChatGPT-User, PerplexityBot) açık bırakabilirsiniz; eğitime kapalı olmak aramada görünmemek demek değil.

Should I block AI bots? Blocking them all is the common mistake. You can block the training bots (GPTBot, ClaudeBot) while leaving the search bots (OAI-SearchBot, ChatGPT-User, PerplexityBot) open; opting out of training doesn't mean opting out of visibility.

SSR zorunlu mu? Google için değil. Ama AI ekosistemindeki botların çoğu JavaScript çalıştırmadan metni çıkarıp gidiyor; onlar için client-side sayfa boş sayfa. İçeriğin ilk HTML'de olması en güvenlisi.

Is SSR mandatory? Not for Google. But most bots in the AI ecosystem extract text without running JavaScript; to them a client-side page is an empty page. Content in the first HTML response is the safe choice.

JSON-LD gerekli mi? Zorunlu değil — Google bunu açıkça söylüyor — ama varlık netliği veriyor. Özellikle sameAs, sizi internetteki diğer izlerinizle tek varlık olarak birleştirmeyi kolaylaştırıyor.

Is JSON-LD required? Not mandatory — Google says so directly — but it provides entity clarity. sameAs in particular makes it easier to merge you with your other traces online into one entity.

Görünürlüğü nasıl ölçerim? Search Console'un AI performans raporu, AI arayüzlerinden gelen referrer trafiği, sunucu log'larında bot isteklerinin HTTP kodları ve ayda bir yapılan manuel model testi.

How do I measure visibility? Search Console's AI performance report, referrer traffic from AI interfaces, the HTTP codes of bot requests in your server logs, and a monthly manual test across models.

GEOAEOSEOMCP