{"slug": "bir-web-sitesini-yapay-zekaya-teslim-ettim-kafa1milyon-un-otonom-yayin-mimarisi", "title": "Bir web sitesini yapay zekâya teslim ettim: kafa1milyon'un otonom yayın mimarisi (Bölüm 1)", "summary": "Güray, kafa1milyon.com adlı Türkçe içerik portalının arkasındaki otonom yayın mimarisini belgeliyor. Sistem, bir LLM ajanının kural dosyalarını uzun süreli hafıza olarak kullanarak insan müdahalesi olmadan içerik üretip yayınlamasını sağlıyor. Tasarım, statik HTML ve JSON dosyalarına dayalı şeffaf bir durum yönetimi ile üretim ve yayın hızını ayırıyor.", "body_md": "*Bu serinin yazarı Güray: AI geliştirmecisi, prompt ve analiz mühendisi. Kodun büyük kısmını bir LLM ajanıyla pair programming yaparak yazıyorum; benim işim mimariyi, protokolleri ve kalite çıtasını tasarlamak. Bu seri, kafa1milyon.com'un perde arkasını mühendis gözüyle belgeliyor.*\n\nkafa1milyon.com dışarıdan bakınca sıradan bir Türkçe içerik portalı: bilim, tarih, psikoloji yazıları, günlük tarot falı, arkeoloji haberleri, sesli anlatımlar, X ve Instagram'da video fragmanlar.\n\nPerde arkasında ise insan müdahalesi olmadan şunları yapan bir sistem çalışıyor:\n\nBu yazı serinin ilki: sistemin genel mimarisi ve en önemli tasarım kararı olan \"kural dosyaları = sistemin uzun süreli hafızası\" yaklaşımı.\n\nKaba şema şöyle:\n\n```\n┌─────────────────────────────────────────────────────┐\n│  LLM AJAN (Cursor içinde çalışan agent)             │\n│  - araştırma, yazım, kod üretimi, tarayıcı kontrolü │\n└──────────────┬──────────────────────────────────────┘\n               │ her oturumda okur\n┌──────────────▼──────────────────────────────────────┐\n│  KURAL DOSYALARI (.cursor/rules/*.mdc)              │\n│  yazım stili · SEO protokolü · seslendirme akışı    │\n│  X/Instagram standardı · tarot formatı · video      │\n│  standardı · taslak kuyruğu politikası              │\n└──────────────┬──────────────────────────────────────┘\n               │ üretir / günceller\n┌──────────────▼──────────────────────────────────────┐\n│  DURUM (dosya tabanlı, git'lenebilir)               │\n│  xpost/queue.json · instagram/queue.json            │\n│  tarot/gecmis.json · radar/son-tarama.json          │\n│  taslak-durum.json (VPS'te küçük bir API)           │\n└──────────────┬──────────────────────────────────────┘\n               │ rsync\n┌──────────────▼──────────────────────────────────────┐\n│  VPS (nginx, statik HTML) + Cloudflare              │\n└─────────────────────────────────────────────────────┘\n```\n\nDikkat çekmek istediğim üç karar var.\n\nSitenin tamamı statik HTML. Kuyruklar, geçmiş kayıtları ve radar çıktıları düz JSON dosyaları. Örneğin sosyal medya kuyruğundaki bir öğe:\n\n```\n{\n  \"text\": \"Tıraş ettikçe kıl gürleşir diyorlar.\\n\\nBilim buna neredeyse yüz yıldır aynı cevabı veriyor.\",\n  \"url\": \"https://kafa1milyon.com/yazi/tiras-efsanesi/\",\n  \"kat\": \"Bilim\",\n  \"video\": \"video-lab/xvideo/elif-tiras-efsanesi.mp4\",\n  \"hold_until\": \"2026-08-12\",\n  \"posted\": false\n}\n```\n\n`hold_until`\n\nalanı sistemin tempo kontrolü: ajan istediği kadar içerik üretebilir ama X'in spam filtresine yakalanmamak için günde 2-3 paylaşım limiti var. Üretim ve yayın birbirinden ayrıştı; üretim hızlı, yayın sabırlı.\n\nBir LLM ajanla çalışırken dosya tabanlı durumun büyük avantajı şu: ajan durumu `cat`\n\nile okuyabiliyor, `python3 -`\n\nile güncelleyebiliyor, hata yaptığında diff'ten geri alınabiliyor. ORM'siz, migration'sız, şeffaf.\n\nSistemin asıl \"zekâsı\" modellerde değil, kural dosyalarında birikiyor. Her `.mdc`\n\ndosyası, yaşanmış bir problemin damıtılmış çözümü. Gerçek bir örnek, yazım stili kuralından:\n\n```\n## Uzunluk: KISA TUT (kullanıcı geri bildirimi, ZORUNLU)\n\nYazılar haddinden uzun olunca okur detaylarda boğulup yarıda bırakıyor.\n- Hedef: 700-1.100 kelime (4-7 dk okuma).\n- Giriş 2 paragrafı geçmez; ilk cümle doğrudan sahneye/soruya girer.\n- Aynı iddiayı ikinci örnekle kanıtlama; en güçlü tek örneği seç, gerisini at.\n```\n\nBu satırlar bir prompt değil, **protokol**. Okur yazıları yarıda bırakınca analiz ettik, kararı verdik, kurala işledik. Artık sistem her yeni yazıda bu dersi hatırlıyor. \"Kendi kendine gelişen sistem\" derken kastettiğim mekanizma bu: her hata ve her geri bildirim, bir kural dosyası güncellemesine dönüşüyor. Model unutur; dosya unutmaz.\n\nŞu an ~10 kural dosyası var: yazım stili, SEO standardı, seslendirme akışı, X paylaşım formatı (fragman tarzı, spoiler yasağı), Instagram aynalama, günlük tarot formatı (üç kart + \"bize ne olacak\" bölümü), arkeoloji radarının görsel politikası, sanal sunucu Elif'in sabit karakter tanımı...\n\nLLM tabanlı otomasyonda en tehlikeli an, sistemin \"bitti\" dediği an. Bu yüzden her üretim adımının bir doğrulayıcısı var:\n\n```\nsegments, info = model.transcribe(\"elif-clip.mp4\", language=\"tr\")\nsoylenen = \" \".join(s.text for s in segments)\n# istenen metinle benzerlik düşükse: RED, yeniden üret\n```\n\nBu döngü bizi en az bir kez kurtardı: model, yeni konu için ürettiğimiz videoda eski bir çekimin kapanış cümlesini söylemişti. Transkript kontrolü olmasaydı yanlış video yayına girecekti.\n\nBaşta her konu adayı kullanıcı onayı bekliyordu. Bir taslak sayfası, VPS'te minik bir onay API'si (`{\"onayli\": [], \"yazildi\": []}`\n\n), seçilenlerin yazılması... Sonra fark ettik ki dar boğaz onay adımının kendisi. Kalite kriterleri zaten kurallarda yazılıysa, süzgeci ajan kendisi işletebilir.\n\nŞimdiki model: ajan adayları bulur, kalite/etik süzgecinden geçirir (tıbbi tavsiye yok, siyaset yok, zayıf hikâye elenir), uygun olanları kuyruğa alır ve yazar. İnsan istediği an taslak sayfasından kuyruğa öncelik verebilir ama sistemin ilerlemesi insana **bağlı değil**. İnsan onayı bir kapı olmaktan çıkıp bir yönlendirme sinyaline dönüştü.\n\nBu, prompt mühendisliğinden çok **analiz mühendisliği**: hangi kararların gerçekten insan yargısı gerektirdiğini, hangilerinin yazılı kritere indirgenebileceğini ayrıştırmak. İndirgenebilen her karar, otonom sistemin bir parçası oluyor.\n\nBu seride pembe tablo çizmeyeceğim; sistemin bugünkü hâli, çöpe giden denemelerin üstünde duruyor:\n\n`DataTransfer`\n\nenjeksiyonu gerekti. (Bölüm 2'nin konusu.)`^~`\n\nCORS detayıSorusu olan yorumlara beklerim. Sistemin ürettiklerini görmek isterseniz: [kafa1milyon.com](https://kafa1milyon.com)", "url": "https://wpnews.pro/news/bir-web-sitesini-yapay-zekaya-teslim-ettim-kafa1milyon-un-otonom-yayin-mimarisi", "canonical_source": "https://dev.to/gurayta/bir-web-sitesini-yapay-zekaya-teslim-ettim-kafa1milyonun-otonom-yayin-mimarisi-bolum-1-1klc", "published_at": "2026-08-12 14:08:42+00:00", "updated_at": "2026-08-12 14:18:55.142123+00:00", "lang": "en", "topics": ["artificial-intelligence", "large-language-models", "ai-agents", "ai-infrastructure", "developer-tools"], "entities": ["kafa1milyon.com", "Güray", "Cursor", "Cloudflare", "X", "Instagram"], "alternates": {"html": "https://wpnews.pro/news/bir-web-sitesini-yapay-zekaya-teslim-ettim-kafa1milyon-un-otonom-yayin-mimarisi", "markdown": "https://wpnews.pro/news/bir-web-sitesini-yapay-zekaya-teslim-ettim-kafa1milyon-un-otonom-yayin-mimarisi.md", "text": "https://wpnews.pro/news/bir-web-sitesini-yapay-zekaya-teslim-ettim-kafa1milyon-un-otonom-yayin-mimarisi.txt", "jsonld": "https://wpnews.pro/news/bir-web-sitesini-yapay-zekaya-teslim-ettim-kafa1milyon-un-otonom-yayin-mimarisi.jsonld"}}