# GEO: AI Storefront

> Üretken yapay zekâ görünürlüğü (GEO) için AI Storefront — mağaza kökündeki agents.md, llms.txt, llms-full.txt ve /ai/*.json dosyaları, site türleri (kurumsal, e-ticaret, hibrit), bilgi merkezi, tema proxy’si, WebMCP ve UTM takibi.
>
> Kaynak: https://tecof-app-dev.vercel.app/ai-storefront · Bölüm: SEO ve GEO · Son güncelleme: 2018-10-20

Arama giderek ChatGPT, Gemini, Claude ve Perplexity gibi yanıt motorlarına kayıyor. **GEO** (generative engine optimization), bu motorların mağazanızı doğru anlaması, doğru alıntılaması ve ziyaretçiyi doğru sayfaya göndermesi için yapılan çalışmadır. Tecof bunu **AI Storefront** ile sunar: panelden açıldığında mağazanın kökünde standart, makine-okunur dosyalar yayınlanır.

## Yayınlanan dosyalar

Dosyalar backend’de (`/api/store/ai/*`, vitrin anahtarıyla) üretilir ve tema kökünden proxy’lenir; AI tarayıcıları başlık gönderemediği için anahtarı sunucu tarafında tema ekler.

| Dosya | İçerik | E-ticaret | Kurumsal | Hibrit |
| :--- | :--- | :---: | :---: | :---: |
| `/agents.md` | Ajanlar için yönlendirici rehber: kurallar, politikalar, kaynak adresleri | ✓ | ✓ | ✓ |
| `/llms.txt` | llmstxt.org biçiminde kısa indeks | ✓ | ✓ | ✓ |
| `/llms-full.txt` | Tüm bağlamın birleşik metni | ✓ | ✓ | ✓ |
| `/ai/knowledge.json` | Bilgi merkezi: marka, politikalar, SSS, kurallar (şema 2) | ✓ | ✓ | ✓ |
| `/ai/content.json` | Sayfa + CMS içerik dizini ve hizmetler | — | ✓ | ✓ |
| `/ai/catalog.json` | Aktif ürünler, fiyat, stok, UTM’li ödeme bağlantısı | ✓ | — | ✓ |
| `/ai/collections.json` | Kategori ağacı | ✓ | — | ✓ |
| `/ai/products/<slug>.json` | Tek ürün | ✓ | — | ✓ |

Uygulanmayan uç `404` ve `messageCode: "not-applicable"` döner. AI Storefront kapalıysa dosyalar `404`’tür. Değişiklikler önbellekler nedeniyle en geç ~30 dakikada görünür.

## Site türü

Dosyaların içeriği mağazanın türüne göre değişir; kurumsal bir siteye ürün kataloğu ya da uydurma kargo/iade metni yazılmaz.

| Tür | Ne zaman | Yayınlanan |
| :--- | :--- | :--- |
| `ecommerce` | Mağaza ürün tipi e-ticaret (varsayılan) | Katalog, koleksiyonlar, satış politikaları |
| `website` | Ürün tipi kurumsal ya da panelde açıkça seçildi | Sayfalar, içerik dizini, hizmetler, iletişim; satış dosyaları yok |
| `hybrid` | Yalnız panelde açık seçimle | İkisi birden |

Bilgi merkezinde (panel → Ayarlar → SEO → AI Storefront) hizmetler, hizmet bölgesi, çalışma saatleri, iletişim kanalları, randevu/teklif süreci, fiyatlandırma yaklaşımı ve referanslar tutulur; uygulanmayan alanlar “Uygulanmaz” işaretlenir ve “bu işletme için geçerli değil” olarak yayınlanır. **AI ile doldur** yayındaki sayfa, CMS ve ürünlerden taslak üretir (kaydetmez; içerik yoksa kredi düşmez).

## Örnek: `catalog.json`

```json
{
  "store": { "name": "Örnek Mağaza", "currency": "TRY", "language": "tr", "domain": "https://ornek.com" },
  "products": [
    {
      "id": "60c72b2f9b1d8e001c888888",
      "title": "Minimalist deri cüzdan",
      "price": 850,
      "compareAtPrice": 1200,
      "currency": "TRY",
      "availability": "in_stock",
      "url": "https://ornek.com/products/minimalist-deri-cuzdan",
      "checkout_url": "https://ornek.com/checkout?variant=…&utm_source=ai_agent&utm_medium=agentic&utm_campaign=ai_storefront",
      "slug": "minimalist-deri-cuzdan"
    }
  ],
  "total": 1,
  "generated_at": "2026-10-11T02:00:00.000Z"
}
```

`checkout_url` adresleri `utm_source=ai_agent`, `utm_medium=agentic`, `utm_campaign=ai_storefront` taşır; AI ajanlarından gelen ziyaret ve dönüşümler analitikte ayrıca görünür.

## Örnek: `knowledge.json` (şema 2)

```json
{
  "schemaVersion": 2,
  "siteMode": "website",
  "store": { "name": "Örnek Mimarlık", "url": "https://ornek.com/tr", "language": "tr" },
  "brand": { "about": "…", "tone": "kurumsal" },
  "commerce": null,
  "business": { "services": [{ "name": "İç mimari", "summary": "…", "path": "/tr/hizmetler/ic-mimari" }], "serviceArea": "İstanbul" },
  "notApplicable": [],
  "faq": [{ "question": "Keşif ücretli mi?", "answer": "…" }],
  "aiRules": ["Fiyat sorulursa teklif formuna yönlendir."],
  "generated_at": "2026-10-11T02:00:00.000Z"
}
```

Yayınlanmayan alan `null` döner. E-ticaret modunda eski üst düzey `policies`, `sizeChart`, `usageTips` alanları geriye uyum için korunur.

## Tema tarafı

Tecof çekirdek teması ve türevleri dosyaları kök rotalardan proxy’ler; özel tema yazıyorsanız aynı rotaları koruyun:

```ts title="app/ai/[...path]/route.ts (özet)"
const ALLOWED = /^(catalog\.json|collections\.json|knowledge\.json|content\.json|products\/[a-z0-9-]+\.json)$/;

export async function GET(req: NextRequest, { params }: { params: Promise<{ path: string[] }> }) {
  const joined = (await params).path.join("/");
  if (!ALLOWED.test(joined)) return Response.json({ error: "not-found" }, { status: 404 });
  const res = await fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/api/store/ai/${joined}${req.nextUrl.search}`, {
    headers: { "x-secret-key": process.env.NEXT_PUBLIC_MERCHANT_SECRET_KEY! },
    next: { revalidate: 600 },
  });
  return new Response(await res.text(), {
    status: res.status,
    headers: { "Content-Type": res.headers.get("content-type") || "application/json; charset=utf-8" },
  });
}
```

- İzin listesi dışındaki yollar `404` döner; proxy açık bir röleye dönüşmez.
- `agents.md`, `llms.txt` ve `llms-full.txt` aynı kalıpla `app/<dosya>/route.ts` altında proxy’lenir (30 dk önbellek).
- `GET /api/store/merchant-info` yanıtındaki `ai: { enabled, mode }` temanın AI özelliklerini açıp kapatması içindir.

### WebMCP

Tecof temaları tarayıcıdaki ajanlara WebMCP araçları da sunabilir: site araçları `/ai/content.json` ve `/ai/knowledge.json`’u bir kez okuyup istemcide arama yapar; e-ticaret araçları vitrin API’lerini kullanır. Site araçları `ai.enabled` açıkken kaydedilir. Kaynak: çekirdek temada `lib/webmcp/`.

## GEO kontrol listesi

- [ ] Panelde AI Storefront açık ve site türü doğru (kurumsal sitede `website`).
- [ ] Bilgi merkezinde marka özeti, SSS ve uygulanan politikalar dolu; uygulanmayanlar işaretli.
- [ ] Tema `/agents.md`, `/llms.txt`, `/llms-full.txt` ve `/ai/*` rotalarını proxy’liyor.
- [ ] `robots.txt` AI tarayıcılarını engellemiyor ([Tema SEO’su](/seo-geo#robotstxt)).
- [ ] Ürün ve sayfa meta açıklamaları dolu; AI yanıtları çoğunlukla bunları alıntılar.
- [ ] Ajan kaynaklı dönüşümler `utm_source=ai_agent` ile izleniyor.
