PushizoDocs
Operasyon

Tanıtım sitesi, SEO ve AI SEO: pushizo.com yayın adımları

Pushizo'nun tanıtım sitesi (apps/web, https://pushizo.com), geliştirici dokümantasyonu (apps/docs-site, https://docs.pushizo.com) ve müşteri paneli (apps/dashboard, https://app.pushizo.com; API https://api.pushizo.com)…

Pushizo'nun tanıtım sitesi (apps/web, https://pushizo.com), geliştirici dokümantasyonu (apps/docs-site, https://docs.pushizo.com) ve müşteri paneli (apps/dashboard, https://app.pushizo.com; API https://api.pushizo.com) arama motorları ve yapay zekâ asistanları için hazırdır. SITE_URL / DOCS_SITE_URL verilmeden yapılan derlemeler noindex üretilir. Bu rehber, pushizo.com'u yayına almak için gereken adımları sırasıyla listeler. Tasarım kararları: ADR-0034.

1. Yüzeyler ve ortam değişkenleri

YüzeyÖrnek alan adıDeğişkenNe zaman okunur
Tanıtım sitesi (apps/web, port 3200)pushizo.comSITE_URLDerleme (imaj build argümanı)
Dokümantasyon (apps/docs-site, port 3300)docs.pushizo.comDOCS_SITE_URLDerleme (imaj build argümanı)
Müşteri paneli (apps/dashboard, port 3100)app.pushizo.comAPP_URLÇalışma anı

Tanıtım sitesinin diğer değişkenleri (hepsi derleme anında):

DeğişkenVarsayılanAçıklama
WEB_DASHBOARD_URLAPP_URL, yoksa http://localhost:3100"Ücretsiz başla" ve "Giriş yap" bağlantılarının kökü (/register, /login).
WEB_DOCS_URLDOCS_SITE_URL, yoksa http://localhost:3300Dokümantasyon bağlantılarının kökü.
WEB_CONTACT_EMAILboşHakkında sayfasında ve Organization JSON-LD'de iletişim e-postası. Boşsa e-posta yayınlanmaz.
WEB_BILLING_ENABLEDfalsetrue: ödeme sağlayıcısı devrede; ücretli planlar kayda yönlenir ve SoftwareApplication JSON-LD offers yayınlanır. false: ücretli planlarda "Satış ekibiyle iletişime geçin" (mailto: WEB_CONTACT_EMAIL, boşsa support@pushizo.com), offers yok.
WEB_COMPANY_NAME, WEB_COMPANY_ADDRESS, WEB_COMPANY_TAX_ID, WEB_COMPANY_MERSISboşŞirket künyesi: alt bilgide ve /legal/imprint sayfasında. Unvan boşsa künye yayınlanmaz ve sayfa 404 döner; MERSİS 16 hanelidir.
WEB_AI_SEARCH_CRAWLERSallowYanıt/arama yapay zekâ ajanları (OAI-SearchBot, ChatGPT-User, Claude-SearchBot, PerplexityBot…).
WEB_AI_TRAINING_CRAWLERSallowModel eğitimi tarayıcıları (GPTBot, ClaudeBot, Google-Extended, Applebot-Extended, CCBot…).
INDEXNOW_KEYboşIndexNow anahtarı (8–128 harf/rakam/tire). Doluysa /indexnow-key.txt yayınlanır.

SITE_URL boşken derleme şu uyarıyı yazar ve site noindex, nofollow + robots.txt'de Disallow: / ile üretilir: [web] UYARI: SITE_URL tanımlı değil…. Aynı kural DOCS_SITE_URL için dokümantasyonda, APP_URL https değilken dashboard'da geçerlidir.

2. DNS ve TLS

  1. Tanıtım sitesi için kök alan adı (A/AAAA veya sağlayıcının ALIAS/ANAME kaydı), docs. ve app. için A/CNAME kayıtları oluşturun. www. kullanılacaksa kökten birine kalıcı (301/308) yönlendirme yapın; iki adresin de içerik sunması kopya içerik oluşturur. SITE_URL seçilen tek adres olmalıdır.
  2. Compose (tek sunucu): .env.prod içinde WEB_HOST, DOCS_HOST, APP_HOST değerlerini girin; ilk sertifikalar için ./infra/scripts/certbot-init.sh (WEB_HOST dahil tüm alan adları), ardından docker compose --env-file .env.prod -f infra/compose/docker-compose.prod.yml up -d web docs nginx.
  3. Kubernetes (Helm): web.enabled=true ve ingress.hosts.web=<alan-adı> verin; sertifika cert-manager ile ingress TLS'ine eklenir. values.yaml içindeki web bölümü kaynak ve sağlık denetimi ayarlarını içerir.

3. Yayın derlemesi

Release iş akışı (.github/workflows/release.yml) imajları GitHub depo değişkenleriyle derler. Şu değişkenleri Settings → Secrets and variables → Actions → Variables altında tanımlayın:

Depo değişkeniDeğer
PROD_SITE_URLhttps://pushizo.com
PROD_DOCS_URLhttps://docs.pushizo.com
PROD_APP_URLhttps://app.pushizo.com (zaten tanımlı olabilir)
PROD_INDEXNOW_KEYisteğe bağlı IndexNow anahtarı

Elle derleme örneği:

docker build -f infra/docker/web.Dockerfile \
  --build-arg SITE_URL=https://pushizo.com \
  --build-arg WEB_DASHBOARD_URL=https://app.pushizo.com \
  --build-arg WEB_DOCS_URL=https://docs.pushizo.com \
  -t ghcr.io/exec0de/pushizo-web:local .
docker build -f infra/docker/docs-site.Dockerfile \
  --build-arg DOCS_SITE_URL=https://docs.pushizo.com \
  --build-arg SITE_URL=https://pushizo.com \
  -t ghcr.io/exec0de/pushizo-docs-site:local .
```text

**Staging:** release imajı staging ve üretimde aynıdır; staging alan adında tarayıcıları uç katmanda engelleyin
(nginx sunucu bloğuna `add_header X-Robots-Tag "noindex, nofollow" always;` veya temel kimlik doğrulama). Canonical
adresler üretim alan adını gösterdiği için staging sayfaları kopya olarak dizine girmez, ancak taranmamaları önerilir.

## 4. Yayın sonrası doğrulama

```bash
curl -s https://pushizo.com/robots.txt        # Allow + Sitemap satırı, yapay zekâ tarayıcı grupları
curl -s https://pushizo.com/sitemap.xml | head  # mutlak https adresleri, xhtml:link alternatifleri
curl -sI https://pushizo.com/ | grep -i x-robots-tag   # çıktı OLMAMALI (noindex kalkmış olmalı)
curl -s https://pushizo.com/llms.txt | head
curl -s https://docs.pushizo.com/llms.txt | head
curl -s https://app.pushizo.com/robots.txt     # yalnızca /login ve /register izinli
```text

- Google **Rich Results Test** ve **Schema Markup Validator** ile ana sayfa (Organization, WebSite,
  SoftwareApplication), `/faq` (FAQPage) ve bir dokümantasyon sayfasını (TechArticle) doğrulayın.
- **PageSpeed Insights / Lighthouse** ile mobil ve masaüstünde performans, erişilebilirlik ve SEO puanlarının
  ≥ 95 olduğunu kontrol edin.
- Paylaşım kartları: `https://<alan-adı>/og/tr/home` görselinin açıldığını ve LinkedIn Post Inspector / X kart
  önizlemesinde başlığın doğru göründüğünü kontrol edin.

## 5. Google Search Console

1. **Alan adı mülkü** ekleyin (DNS TXT doğrulaması; tüm alt alan adlarını ve http/https sürümlerini kapsar).
2. **Site haritaları:** `https://pushizo.com/sitemap.xml` ve `https://docs.pushizo.com/sitemap.xml`
   gönderin.
3. **URL denetimi** ile ana sayfa, `/en`, `/pricing` ve `/features/push` için "Dizine eklenmesini iste".
4. Birkaç gün sonra **Sayfalar** raporunda "noindex nedeniyle hariç tutuldu" görünmemeli (görünüyorsa imaj
   `SITE_URL` olmadan derlenmiştir). **Uluslararası hedefleme** için ayrı ayar gerekmez; hreflang etiketleri sayfada.
5. Dashboard'da yalnızca `/login` ve `/register` dizine girer; diğer panel adresleri "robots.txt tarafından
   engellendi" olarak görünür, bu beklenen durumdur.

## 6. Bing Webmaster Tools ve IndexNow

1. Bing Webmaster Tools'ta **Google Search Console'dan içe aktar** seçeneğiyle mülkü ve site haritalarını alın
   (veya DNS/XML dosyası ile doğrulayıp site haritalarını elle gönderin).
2. **IndexNow:** rastgele bir anahtar üretin (`openssl rand -hex 16`), `PROD_INDEXNOW_KEY` olarak tanımlayıp siteyi
   yeniden derleyin; `https://pushizo.com/indexnow-key.txt` anahtarı döndürmelidir. Her yayından sonra:

   ```bash
   SITE_URL=https://pushizo.com INDEXNOW_KEY=<anahtar> npm run indexnow --workspace @pushizo/website
   ```text

   Betik sitemap'teki tüm URL'leri `api.indexnow.org`'a bildirir (Bing, Yandex ve diğer IndexNow ortakları).

## 7. Yasal metinler

Gizlilik Politikası, Kullanım Şartları, KVKK Aydınlatma Metni, Çerez Politikası, Veri İşleme Sözleşmesi (`dpa`), Alt
İşleyenler (`subprocessors`) ve Kabul Edilebilir Kullanım Politikası (`aup`) sayfaları metin dosyaları gelene kadar
yayınlanmaz. Hukuk ekibinin metinleri şu dosyalara eklenir (iki dil de zorunlu; biri eksikse sayfa üretilmez):

```text
apps/web/content/legal/privacy.tr.md   apps/web/content/legal/privacy.en.md
apps/web/content/legal/terms.tr.md     apps/web/content/legal/terms.en.md
apps/web/content/legal/kvkk.tr.md      apps/web/content/legal/kvkk.en.md
apps/web/content/legal/cookies.tr.md   apps/web/content/legal/cookies.en.md
apps/web/content/legal/dpa.tr.md       apps/web/content/legal/dpa.en.md
apps/web/content/legal/subprocessors.tr.md   apps/web/content/legal/subprocessors.en.md
apps/web/content/legal/aup.tr.md       apps/web/content/legal/aup.en.md
```text

Eksik dosyalar `npm run check:legal --workspace @pushizo/website` ile listelenir (yalnızca uyarı verir, derlemeyi
durdurmaz).

İsteğe bağlı ön bilgi `---\nupdated: 2026-10-16\n---` sayfada "Son güncelleme" olarak gösterilir. Dosyalar eklenince
sayfalar `/legal/<ad>` ve `/en/legal/<ad>` adreslerinde üretilir, sitemap'e, alt bilgiye ve llms.txt'ye otomatik
girer. Site çerez kullanmadığından (tema tercihi tarayıcı depolamasında) çerez onay bandı yoktur; analitik aracı
eklenirse çerez politikası ve onay mekanizması yeniden değerlendirilmelidir.

Güvenlik açığı bildirimi için `/.well-known/security.txt` (RFC 9116; `Contact: mailto:security@pushizo.com`,
`Expires` derleme anından bir yıl sonra) derleme sırasında üretilir: süre dolmadan site yeniden derlenip
yayınlanmalıdır. Kötüye kullanım bildirimi adresi (`abuse@pushizo.com`) Hakkında sayfasında yayınlanır.

## 8. Yapay zekâ görünürlüğü (AI SEO)

- `llms.txt` / `llms-full.txt` tanıtım sitesinde ve dokümantasyonda yayınlanır; içerik site metinlerinden ve plan
  matrisinden üretildiği için ayrıca bakım gerektirmez.
- Yapay zekâ tarayıcıları varsayılan olarak izinlidir. Model eğitimi tarayıcılarını kapatmak için
  `WEB_AI_TRAINING_CRAWLERS=disallow`, yanıt/arama ajanlarını kapatmak için `WEB_AI_SEARCH_CRAWLERS=disallow` ile
  yeniden derleyin.
- Metin güncellerken tanım cümlelerini kısa, olgusal ve tek başına anlamlı tutun; fiyat ve limitleri metne yazmayın
  (yer tutucular plan matrisinden doldurulur).

## 9. Yerel geliştirme

```bash
npm run dev --workspace @pushizo/website          # http://localhost:3200 (Türkçe /, İngilizce /en)
npx turbo run build --filter=@pushizo/website     # SITE_URL olmadan: noindex uyarısı beklenir
npx playwright test tests/e2e/web-site.spec.ts       # sayfalar, tr/en geçişi, SEO etiketleri, axe
```text

Bu sayfada