Claude ile içerik, git ile sahiplik: Bu blog nasıl çalışıyor

Bu sitenin yapısı: Astro ile üretilen statik sayfalar, git içinde duran Markdown dosyaları, Sveltia CMS paneli, Pagefind araması, Cloudflare barındırması ve taslakları Claude'un hazırladığı bir yazım akışı.

Birbirine bağlanan üç düzgün dikdörtgen blok ve onları birleştiren ince çizgiler; solda dağınık küçük kareler sağa doğru düzenli bir ızgaraya dönüşüyor. Soyut, metinsiz bir kompozisyon.

Bir blogun yazıları genellikle bir veritabanında, bir panelin arkasında durur. Yazar panele girer, yazar, kaydeder; yazının sahibi aslında o panelin sahibidir. Bu sitede ise yazılar düz metin dosyalarıdır ve bir git deposunda yaşar. Panel yalnızca o dosyaları düzenlemeye yarayan bir arayüzdür, yani istenirse bırakılıp bir metin düzenleyicisiyle de devam edilebilir. Aşağıda bu düzenin parçalarını sırayla anlatıyorum. Anlatılanların hepsi bu sitenin deposundaki dosyalardan (package.json, astro.config.mjs, wrangler.jsonc, public/admin/config.yml, src/content/schema.ts) doğrulanabilir.

Yazı bir dosyadır: Markdown, front matter ve şema

Her yazı src/content/posts/tr/ ya da src/content/posts/en/ altında bir .md dosyasıdır. Dosyanın başında başlık, tarih, kategori, dil, durum ve kaynak listesi gibi alanları taşıyan bir YAML bloğu (front matter) bulunur; altında Markdown ile yazılmış metin durur. Türkçe ve İngilizce sürüm aynı dosya adını taşır. Bu basit kural, iki sürümün birbirine bağlanmasını da basitleştirir: karşılığı bulmak için bir eşleştirme tablosu gerekmez, aynı ad diğer klasörde aranır.

Astro’nun içerik koleksiyonları bu dosyaları bir tür veri kaynağına çevirir. Astro belgelerine göre koleksiyonlar src/content.config.ts içinde tanımlanır, yerel dosyalar için glob() yükleyicisi bir desen ve bir klasör alır ve alanlar Zod ile tanımlanan bir şemaya karşı doğrulanır; şemaya uymayan bir dosya hata üretir. Bu sitede de durum aynıdır: posts koleksiyonu {tr,en}/*.md desenini okur ve şemayı src/content/schema.ts dosyası belirler. Başlık uzunluğu, açıklamanın 20 ile 300 karakter arasında olması, kategorinin tanımlı kimliklerden biri olması, tarihin saat dilimi farkıyla yazılması ve en az bir kaynak girilmesi gibi kurallar orada durur.

Bunun pratik karşılığı şudur: bozuk bir yazı sessizce yayına girmez. npm run build komutu, Astro derlemesinden önce ayrıca bir içerik denetimi (content:check) çalıştırır; bu denetim şemayı, dosya adı kurallarını, Türkçe-İngilizce eşleşmeyi, kaynak sayısını ve başlık yapısını kontrol eder. Hata varsa derleme durur. Kalite bekçisi bir insanın dikkati değil, bir komutun çıkış kodudur.

Panel: Sveltia CMS ve git geçmişi

Yazıları tarayıcıdan düzenlemek için /admin adresinde Sveltia CMS çalışır. Projenin kendi tanımına göre Sveltia, statik siteler için geliştirilmiş, git tabanlı, bir CDN’den sunulan tek sayfalık bir uygulamadır ve Decap CMS’in (eski adıyla Netlify CMS) halefi olarak konumlanır. Bu sitede yapılandırma public/admin/config.yml dosyasındadır ve iki dili multiple_folders yapısıyla yönetir. Sveltia belgelerine göre bu yapıda her dilin kendi klasörü bulunur ve yol <klasör>/<dil>/<dosya> kalıbını izler; bu, depodaki posts/tr ve posts/en düzeniyle birebir örtüşür.

Panelde yapılan her kayıt, GitHub arka ucu üzerinden depoya bir commit olarak gider. Kimlik doğrulama için belgelerde birkaç yol sayılır. Biri kişisel erişim jetonuyla giriştir: jeton tarayıcının yerel depolamasında tutulur, ince ayarlı bir jeton için içerik okuma-yazma izni yeterlidir. Diğeri bir GitHub App ve Cloudflare Workers üzerinde çalışan Sveltia Authenticator ile OAuth akışıdır. Tek editörlü bir blog için jetonla giriş, ayrıca çalıştırılacak bir sunucu gerektirmediği için en az bakım isteyen seçenektir; OAuth ise ileride birden fazla kişi yazacaksa eklenebilecek bir yükseltmedir. Yerel modda ise hiçbir kimlik doğrulama gerekmez, panel doğrudan bilgisayardaki klasörle çalışır.

Burada asıl kazanç sahipliktir. İçerik bir hizmetin veritabanında değil, depoda durur. Her değişiklik bir fark (diff) olarak okunabilir, geri alınabilir, bir dalda denenebilir. Panel yarın kaybolsa ya da beğenilmese bile yazılar olduğu gibi kalır.

Claude taslak hazırlar, düzeltme ve karar insanda kalır

Bu sitedeki yazıların taslakları Claude ile hazırlanıyor ve bir insan tarafından düzenleniyor. Yazım akışı dosyalar üzerinden yürüdüğü için bu işbirliği çok sade: Claude src/content/posts/tr/ altına bir .md dosyası yazar, sonra İngilizce karşılığını ekler, değişiklik git’e girer. Bir yönetim paneline giriş bilgisi vermek ya da bir veritabanına doğrudan yazma yetkisi tanımak gerekmez. Ortada yalnızca bir deponun dosyaları vardır ve her şey, tıpkı bir insan katkısı gibi, fark olarak incelenebilir.

Bu düzende şemanın rolü büyüktür. Kaynak listesi zorunlu olduğu için her yazı, dayandığı sayfaları göstermek zorundadır; içerik denetimi kaynaksız bir yazıyı derlemeye bırakmaz. Birinci şahıs deneyimi anlatan kalıpları yakalamaya çalışan bir uyarı da vardır. Yani otomasyonun sınırı kural olarak yazılmıştır: denetim, metnin doğru olduğunu garanti edemez, ama eksik ya da biçimsiz olanı eler. Doğruluğu kontrol etmek hâlâ insanın işidir.

Şeffaflık için her yazının başında “Bu yazının taslağı Claude ile hazırlandı” cümlesi görünür. Bu satır, front matter içindeki aiDisclosure alanıyla yazı bazında kapatılabilir; varsayılan değeri açıktır.

Derleme ve yayın: statik dosyalar, arama ve Cloudflare

Derleme sonunda ortaya yalnızca statik dosyalar çıkar: HTML, CSS, çok az JavaScript ve SVG kapaklar. astro.config.mjs içinde output: 'static' ayarlıdır; adresler her zaman bölü işaretiyle biter ve her sayfa kendi klasöründe bir index.html olarak üretilir.

Site iki dilli, ama Astro’nun yerleşik i18n yönlendirmesi kullanılmıyor. Yolların bölümleri çeviriyle birlikte değişiyor (örneğin Türkçe tarafta /tr/yazilar/, İngilizce tarafta /en/posts/). Bu yüzden tüm adresleri tek bir yönlendirme tablosu üretiyor; dil değiştirici, hreflang etiketleri, site haritası ve her iki dilin RSS akışı aynı tablodan besleniyor. Sitenin site haritası bu yüzden hazır eklenti yerine elle yazılmış bir uç noktadır.

Arama için Pagefind kullanılıyor. Belgelerine göre Pagefind, statik site derlemesi bittikten sonra çıktı klasörünü tarar ve kendi sunucu bileşeni olmayan bir arama paketi yazar; sayfaların kök öğesindeki lang özniteliğine bakarak her dil için ayrı bir dizin oluşturur ve dile uygun kök bulma (stemming) uygular. Bu sitede npm run build bu adımı derlemenin sonuna ekler. Sonuçta arama için çalışan bir sunucu da, ücretli bir arama hizmeti de yoktur.

Barındırma Cloudflare Workers üzerindedir. Astro belgeleri, statik bir site için bir adaptöre gerek olmadığını, yalnızca assets.directory değeri ./dist olan bir wrangler.jsonc yazılması gerektiğini söyler. Bu sitenin dosyası da bunu izler ve ek olarak 404 sayfasını ve iki özel alan adını tanımlar. Cloudflare’in fiyat sayfasına göre statik varlık istekleri ücretsiz ve sınırsızdır (bilgi 14 Kasım 2026 tarihlidir). Bu sebeple bu tür bir sitenin barındırma maliyeti pratikte sıfıra yakındır. Dağıtım tek komuttur: npm run deploy, önce üretim denetimini, sonra derlemeyi, en sonda wrangler deploy adımını çalıştırır.

Zamanlanmış yayın da aynı mantıkla çalışır: tarihi gelecekte olan bir yazı, derleme zamanı o tarihe ulaşana kadar sitede görünmez. Sunucu olmadığı için bunun için bir yeniden derleme tetiklemek gerekir; yani “zamanlama”, sitenin yeniden üretilmesine bağlıdır.

Neyin bedeli ödeniyor?

Bu düzenin zayıf yanları da var ve bunları saklamak doğru olmaz. Git tabanlı bir panel, bir veritabanlı panelin sunduğu pano, otomatik kayıt ve canlı önizleme gibi imkânları aynı rahatlıkta vermez. Zamanlanmış yayın için bir yeniden derleme gerekir. Sveltia’nın kendi belgelerinde PKCE ile girişin henüz uygulanmadığı da belirtiliyor; bu yüzden pratik kimlik doğrulama jeton ya da OAuth ile yapılır.

Karşılığında üç şey kazanılır: sıfıra yakın işletme yükü, silinmeyecek ve taşınabilir içerik, ve bir yapay zekâ taslağını da bir insan düzeltmesini de aynı biçimde, yani okunabilir bir fark olarak, değerlendirme imkânı. Bir kişisel blog için bu üçü, panelin rahatlığından daha ağır basıyor.

Kaynaklar

  1. Astro belgeleri: İçerik koleksiyonlarıerişim: 14 Kasım 2026
  2. Astro belgeleri: Cloudflare'e dağıtımerişim: 14 Kasım 2026
  3. Sveltia CMS: GitHub arka ucu ve kimlik doğrulamaerişim: 14 Kasım 2026
  4. Sveltia CMS: i18n yapılarıerişim: 14 Kasım 2026
  5. Sveltia CMS: proje sayfasıerişim: 14 Kasım 2026
  6. Pagefind: çok dilli aramaerişim: 14 Kasım 2026
  7. Pagefind: kullanımerişim: 14 Kasım 2026
  8. Cloudflare belgeleri: Workers fiyatlandırmasıerişim: 14 Kasım 2026

Bu yazının taslağı Claude ile hazırlandı.