{"id":40805,"date":"2026-03-01T13:00:42","date_gmt":"2026-03-01T10:00:42","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/"},"modified":"2026-03-01T13:00:42","modified_gmt":"2026-03-01T10:00:42","slug":"node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/","title":{"rendered":"Node.js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!)"},"content":{"rendered":"<h2>Node.js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!)<\/h2>\n<p>E-posta kutunuzun yo\u011funlu\u011fu sizi bunalt\u0131yor mu? Her mesaja yeti\u015fmekte zorlan\u0131yor musunuz? \u0130\u015fte \u00e7\u00f6z\u00fcm: Node.js ve Gmail API ile kendi yapay zeka e-posta yan\u0131tlay\u0131c\u0131m\u0131 geli\u015ftirdim ve ger\u00e7ekten \u00e7al\u0131\u015f\u0131yor! Bu makalede, bu ak\u0131ll\u0131 sistemin mimarisini, geli\u015ftirme s\u00fcrecini ve pratik faydalar\u0131n\u0131 detaylar\u0131yla inceleyece\u011fiz.<\/p>\n<h3>E-posta Y\u00f6netiminde Yapay Zekan\u0131n Y\u00fckseli\u015fi ve \u0130htiya\u00e7<\/h3>\n<p>Modern i\u015f hayat\u0131nda e-posta, vazge\u00e7ilmez bir ileti\u015fim arac\u0131 olmaya devam ediyor. Ancak bu durum, beraberinde ciddi bir e-posta y\u00fck\u00fcn\u00fc de getiriyor. Gelen kutusunda biriken y\u00fczlerce mesaj, \u00f6nemli olanlar\u0131 ka\u00e7\u0131rma riskini art\u0131r\u0131rken, her birine ki\u015fiselle\u015ftirilmi\u015f ve zaman\u0131nda yan\u0131t vermek neredeyse imkans\u0131z hale geliyor. \u0130\u015fte bu noktada, yapay zeka destekli otomasyon \u00e7\u00f6z\u00fcmleri devreye girerek hem verimlili\u011fi art\u0131r\u0131yor hem de insan fakt\u00f6r\u00fcn\u00fcn \u00fczerindeki y\u00fck\u00fc hafifletiyor.<\/p>\n<h4>E-posta Y\u00fck\u00fc: Modern \u00c7al\u0131\u015fma Hayat\u0131n\u0131n Kabusu<\/h4>\n<p>G\u00fcn i\u00e7inde gelen onlarca, hatta y\u00fczlerce e-posta, \u00e7al\u0131\u015fanlar\u0131n odaklanmas\u0131n\u0131 zorla\u015ft\u0131r\u0131yor ve &#8220;e-posta yorgunlu\u011fu&#8221; denilen bir duruma yol a\u00e7\u0131yor. Bu durum, sadece bireysel verimlili\u011fi de\u011fil, ayn\u0131 zamanda \u015firketlerin genel operasyonel h\u0131z\u0131n\u0131 da olumsuz etkiliyor. \u00d6zellikle tekrar eden sorulara yan\u0131t verme, randevu ayarlama veya bilgi sa\u011flama gibi rutin g\u00f6revler, de\u011ferli zaman\u0131m\u0131z\u0131 bo\u015fa harcamam\u0131za neden olabiliyor.<\/p>\n<h4>Otomasyon ve Verimlilik Aray\u0131\u015f\u0131<\/h4>\n<p>E-posta y\u00f6netiminde otomasyon, uzun s\u00fcredir g\u00fcndemde olan bir konu. Kurallar belirleyerek e-postalar\u0131 kategorize etmek, belirli g\u00f6ndericilerden gelenleri otomatik yan\u0131tlamak gibi temel otomasyonlar yayg\u0131n olarak kullan\u0131l\u0131yor. Ancak bu geleneksel y\u00f6ntemler, e-postalar\u0131n i\u00e7eri\u011fini anlama ve ba\u011flama uygun, dinamik yan\u0131tlar olu\u015fturma konusunda yetersiz kal\u0131yor. Ger\u00e7ek verimlilik art\u0131\u015f\u0131 i\u00e7in daha ak\u0131ll\u0131, ba\u011flamsal fark\u0131ndal\u0131\u011f\u0131 olan sistemlere ihtiya\u00e7 duyuluyor.<\/p>\n<h4>Yapay Zekan\u0131n Rol\u00fc: Sadece Yan\u0131tlamak De\u011fil, Anlamak<\/h4>\n<p>Yapay zeka, \u00f6zellikle B\u00fcy\u00fck Dil Modelleri (LLM&#8217;ler) sayesinde, e-postalar\u0131n sadece anahtar kelimelerini de\u011fil, t\u00fcm ba\u011flam\u0131n\u0131, niyetini ve tonunu anlayabilir hale geldi. Bu yetenek, bir e-postay\u0131 okuyup uygun bir yan\u0131t tasla\u011f\u0131 olu\u015fturmakla kalm\u0131yor, ayn\u0131 zamanda e-postan\u0131n aciliyetini, g\u00f6ndericinin beklentisini ve hatta duygusal tonunu da alg\u0131layabiliyor. Bu sayede, manuel m\u00fcdahaleye gerek kalmadan, ki\u015fiselle\u015ftirilmi\u015f ve etkili yan\u0131tlar \u00fcretmek m\u00fcmk\u00fcn hale geliyor.<\/p>\n<h3>Projenin Temel Ta\u015flar\u0131: Node.js ve Gmail API<\/h3>\n<p>Yapay zeka e-posta yan\u0131tlay\u0131c\u0131m\u0131z\u0131n omurgas\u0131n\u0131 Node.js ve Gmail API olu\u015fturuyor. Bu iki teknoloji, sistemin sorunsuz bir \u015fekilde \u00e7al\u0131\u015fmas\u0131 i\u00e7in kritik \u00f6neme sahip. Node.js, asenkron yap\u0131s\u0131yla h\u0131zl\u0131 ve \u00f6l\u00e7eklenebilir bir backend sa\u011flarken, Gmail API uygulamam\u0131z\u0131n e-posta kutumuzla g\u00fcvenli bir \u015fekilde etkile\u015fim kurmas\u0131n\u0131 m\u00fcmk\u00fcn k\u0131l\u0131yor.<\/p>\n<h4>Neden Node.js? Asenkron G\u00fc\u00e7 ve Ekosistem<\/h4>\n<p>Node.js&#8217;i se\u00e7memin temel nedenlerinden biri, JavaScript&#8217;in asenkron, olay tabanl\u0131 mimarisi. E-posta i\u015fleme, API \u00e7a\u011fr\u0131lar\u0131 ve yapay zeka modelleriyle ileti\u015fim gibi I\/O yo\u011fun i\u015flemler i\u00e7in Node.js&#8217;in performans\u0131 ve verimlili\u011fi olduk\u00e7a avantajl\u0131. Ayr\u0131ca, geni\u015f npm (Node Package Manager) ekosistemi, Gmail API&#8217;si ve yapay zeka modelleriyle entegrasyon i\u00e7in zengin k\u00fct\u00fcphaneler sunuyor.<\/p>\n<h4>Gmail API ile Kimlik Do\u011frulama ve Yetkilendirme<\/h4>\n<p>Uygulamam\u0131z\u0131n Gmail hesab\u0131m\u0131za eri\u015febilmesi i\u00e7in Google Cloud Console \u00fczerinden bir proje olu\u015fturup gerekli API&#8217;leri (Gmail API) etkinle\u015ftirmemiz gerekiyor. OAuth 2.0, bu s\u00fcre\u00e7te kimlik do\u011frulama ve yetkilendirme i\u00e7in kullan\u0131lan standart y\u00f6ntemdir. Uygulama, kullan\u0131c\u0131n\u0131n izniyle Gmail hesab\u0131na eri\u015fim token&#8217;lar\u0131 al\u0131r.<\/p>\n<p>A\u015fa\u011f\u0131da basit bir kimlik do\u011frulama ak\u0131\u015f\u0131n\u0131n temel ad\u0131mlar\u0131n\u0131 g\u00f6steren bir kod par\u00e7ac\u0131\u011f\u0131 bulunmaktad\u0131r:<\/p>\n<pre><code class=\"language-javascript\">const { google } = require('googleapis');\nconst OAuth2 = google.auth.OAuth2;\n\nconst oauth2Client = new OAuth2(\n  CLIENT_ID,\n  CLIENT_SECRET,\n  REDIRECT_URI\n);\n\n\/\/ Kullan\u0131c\u0131y\u0131 yetkilendirme sayfas\u0131na y\u00f6nlendirme\nconst authUrl = oauth2Client.generateAuthUrl({\n  access_type: 'offline',\n  scope: ['https:\/\/www.googleapis.com\/auth\/gmail.modify']\n});\n\nconsole.log('Yetkilendirme i\u00e7in \u015fu adrese gidin:', authUrl);\n\n\/\/ Kullan\u0131c\u0131 yetkilendirdikten sonra gelen kodu yakalama\nasync function getToken(code) {\n  const { tokens } = await oauth2Client.getToken(code);\n  oauth2Client.setCredentials(tokens);\n  return tokens;\n}<\/pre>\n<p><\/code><\/p>\n<h4>E-postalar\u0131 Okuma ve Yan\u0131tlama Mekanizmas\u0131<\/h4>\n<p>Gmail API, e-postalar\u0131 okumak, yan\u0131tlamak, taslak olu\u015fturmak ve hatta etiketlemek i\u00e7in kapsaml\u0131 i\u015flevsellik sunar. Uygulamam\u0131z, belirli kriterlere (\u00f6rne\u011fin, okunmam\u0131\u015f e-postalar, belirli bir etikete sahip e-postalar) g\u00f6re gelen kutusunu tarar. E-postan\u0131n i\u00e7eri\u011fi al\u0131nd\u0131ktan sonra, yapay zeka modeline g\u00f6nderilmek \u00fczere i\u015flenir. Yan\u0131t olu\u015fturulduktan sonra, yine Gmail API kullan\u0131larak ilgili e-postaya yan\u0131t olarak g\u00f6nderilir.<\/p>\n<pre><code class=\"language-javascript\">\/\/ \u00d6rnek: Okunmam\u0131\u015f e-postalar\u0131 listeleme\nasync function listUnreadEmails(auth) {\n  const gmail = google.gmail({ version: 'v1', auth });\n  const res = await gmail.users.messages.list({\n    userId: 'me',\n    q: 'is:unread'\n  });\n  return res.data.messages;\n}\n\n\/\/ \u00d6rnek: E-postay\u0131 okuma\nasync function getEmailContent(auth, messageId) {\n  const gmail = google.gmail({ version: 'v1', auth });\n  const res = await gmail.users.messages.get({\n    userId: 'me',\n    id: messageId,\n    format: 'full'\n  });\n  return res.data;\n}\n\n\/\/ \u00d6rnek: E-postaya yan\u0131t g\u00f6nderme\nasync function sendReply(auth, threadId, recipient, subject, body) {\n  const gmail = google.gmail({ version: 'v1', auth });\n  const raw = Buffer.from(\n    <code>To: ${recipient}\\r\\n<\/code> +\n    <code>Subject: Re: ${subject}\\r\\n<\/code> +\n    <code>In-Reply-To: ${threadId}\\r\\n<\/code> +\n    <code>References: ${threadId}\\r\\n<\/code> +\n    <code>Content-Type: text\/plain; charset=\"UTF-8\"\\r\\n<\/code> +\n    <code>Content-Transfer-Encoding: 7bit\\r\\n\\r\\n<\/code> +\n    <code>${body}<\/code>\n  ).toString('base64').replace(\/\\+\/g, '-').replace(\/\\\/\/g, '_').replace(\/=+$\/, '');\n\n  await gmail.users.messages.send({\n    userId: 'me',\n    requestBody: {\n      raw: raw,\n      threadId: threadId\n    }\n  });\n  console.log('Yan\u0131t g\u00f6nderildi.');\n}<\/pre>\n<p><\/code><\/p>\n<h3>Yapay Zeka Beyni: Hangi Modeli Kulland\u0131m ve Neden?<\/h3>\n<p>Uygulaman\u0131n \"ak\u0131ll\u0131\" k\u0131sm\u0131, e-postalar\u0131n i\u00e7eri\u011fini anlay\u0131p ba\u011flamsal olarak uygun yan\u0131tlar \u00fcretebilen yapay zeka modelidir. Piyasada bir\u00e7ok B\u00fcy\u00fck Dil Modeli (LLM) bulunmakla birlikte, projem i\u00e7in belirli kriterlere g\u00f6re bir se\u00e7im yapt\u0131m.<\/p>\n<h4>B\u00fcy\u00fck Dil Modelleri (LLM) Se\u00e7imi<\/h4>\n<p>Projenin ba\u015flang\u0131c\u0131nda OpenAI'nin GPT modelleri (\u00f6zellikle GPT-3.5 Turbo ve daha sonra GPT-4) ile denemeler yapt\u0131m. Bu modellerin dil anlama ve \u00fcretme yetenekleri olduk\u00e7a etkileyiciydi. Alternatif olarak, Google'\u0131n Gemini veya Anthropic'in Claude gibi modelleri de de\u011ferlendirilebilir. Se\u00e7im yaparken maliyet, performans, API eri\u015fimi ve dil deste\u011fi gibi fakt\u00f6rleri g\u00f6z \u00f6n\u00fcnde bulundurdum. OpenAI'nin API'si, kullan\u0131m kolayl\u0131\u011f\u0131 ve geni\u015f topluluk deste\u011fi nedeniyle ilk tercihim oldu.<\/p>\n<h4>Prompt M\u00fchendisli\u011fi: Do\u011fru Yan\u0131tlar \u0130\u00e7in Anahtar<\/h4>\n<p>Bir LLM'den istenen \u00e7\u0131kt\u0131y\u0131 almak i\u00e7in do\u011fru \"prompt\" (komut) olu\u015fturmak hayati \u00f6nem ta\u015f\u0131r. E-posta yan\u0131tlay\u0131c\u0131m\u0131z i\u00e7in prompt'u, gelen e-postan\u0131n i\u00e7eri\u011fini, g\u00f6ndericinin niyetini, istenen yan\u0131t\u0131n tonunu ve e-postan\u0131n ana konusunu kapsayacak \u015fekilde tasarlad\u0131m. \u00d6rne\u011fin, bir prompt \u015f\u00f6yle bir yap\u0131ya sahip olabilir:<\/p>\n<pre><code class=\"language-plaintext\">\"A\u015fa\u011f\u0131daki e-postay\u0131 dikkatlice oku ve uygun, profesyonel ve k\u0131sa bir yan\u0131t tasla\u011f\u0131 olu\u015ftur.\nE-postan\u0131n konusu: [E-posta Konusu]\nG\u00f6nderen: [G\u00f6nderen Ad\u0131]\nE-posta i\u00e7eri\u011fi: [E-posta G\u00f6vdesi]\nYan\u0131t\u0131n amac\u0131: [\u00d6rn: Te\u015fekk\u00fcr etmek, bilgi vermek, randevu onaylamak]\nYan\u0131t tonu: [\u00d6rn: Resmi, samimi, acil]\nYan\u0131t\u0131 T\u00fcrk\u00e7e olarak olu\u015ftur.\"<\/pre>\n<p><\/code><br \/>\nBu detayl\u0131 prompt, yapay zekan\u0131n e-postay\u0131 daha iyi anlamas\u0131n\u0131 ve hedeflenen nitelikte bir yan\u0131t \u00fcretmesini sa\u011flar.<\/p>\n<h4>Gelen E-postay\u0131 Anlama ve Yan\u0131t Olu\u015fturma Mant\u0131\u011f\u0131<\/h4>\n<p>Sistem, gelen e-postay\u0131 a\u015fa\u011f\u0131daki ad\u0131mlarla i\u015fler:<br \/>\n1.  <strong>E-posta \u00c7\u00f6z\u00fcmleme:<\/strong> Gmail API'den al\u0131nan e-postan\u0131n konu, g\u00f6nderen, al\u0131c\u0131lar ve g\u00f6vde gibi temel bilgileri ayr\u0131\u015ft\u0131r\u0131l\u0131r. HTML i\u00e7erikler metne d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcr.<br \/>\n2.  <strong>Niyet Analizi:<\/strong> E-postan\u0131n ana amac\u0131 (soru sorma, bilgi isteme, \u015fikayet etme, te\u015fekk\u00fcr etme vb.) belirlenir. Bu, prompt'a ek bilgi olarak verilebilir veya LLM'den do\u011frudan niyet analizi yapmas\u0131 istenebilir.<br \/>\n3.  <strong>Yan\u0131t Tasla\u011f\u0131 Olu\u015fturma:<\/strong> Haz\u0131rlanan prompt, LLM API'sine g\u00f6nderilir. LLM, bu prompt'a g\u00f6re en uygun yan\u0131t tasla\u011f\u0131n\u0131 olu\u015fturur.<br \/>\n4.  <strong>Yan\u0131t\u0131n Kontrol\u00fc:<\/strong> Olu\u015fturulan yan\u0131t, istenmeyen i\u00e7erik veya hatal\u0131 bilgiler i\u00e7erip i\u00e7ermedi\u011fi a\u00e7\u0131s\u0131ndan basit kontrollerden ge\u00e7irilir. \u0130ste\u011fe ba\u011fl\u0131 olarak, kullan\u0131c\u0131ya g\u00f6nderilmeden \u00f6nce manuel onay mekanizmas\u0131 eklenebilir.<\/p>\n<h3>Geli\u015ftirme S\u00fcreci: Ad\u0131m Ad\u0131m Yap\u0131land\u0131rma ve Kodlama<\/h3>\n<p>Uygulaman\u0131n geli\u015ftirme s\u00fcreci, mod\u00fcler bir yakla\u015f\u0131mla ilerledi. Her bir bile\u015fen ayr\u0131 ayr\u0131 geli\u015ftirilip test edildi, ard\u0131ndan bir araya getirildi.<\/p>\n<h4>Proje Yap\u0131land\u0131rmas\u0131 ve Ba\u011f\u0131ml\u0131l\u0131klar<\/h4>\n<p>Yeni bir Node.js projesi olu\u015fturuldu ve gerekli npm paketleri y\u00fcklendi:<br \/>\n*   <code>googleapis<\/code>: Gmail API ile etkile\u015fim i\u00e7in.<br \/>\n*   <code>dotenv<\/code>: Ortam de\u011fi\u015fkenlerini y\u00f6netmek i\u00e7in (API anahtarlar\u0131, client ID'ler vb.).<br \/>\n*   <code>openai<\/code> (veya ilgili LLM k\u00fct\u00fcphanesi): Yapay zeka modeliyle ileti\u015fim i\u00e7in.<br \/>\n*   <code>nodemailer<\/code> (iste\u011fe ba\u011fl\u0131, alternatif e-posta g\u00f6nderme mekanizmas\u0131 i\u00e7in).<\/p>\n<pre><code class=\"language-bash\">npm init -y\nnpm install googleapis dotenv openai<\/pre>\n<p><\/code><\/p>\n<h4>E-posta \u0130\u015fleme Ak\u0131\u015f\u0131<\/h4>\n<p>Sistem, belirli aral\u0131klarla (\u00f6rne\u011fin her 5 dakikada bir) Gmail gelen kutusunu kontrol eden bir zamanlay\u0131c\u0131 (cron job veya setInterval) ile \u00e7al\u0131\u015f\u0131r.<br \/>\n1.  <strong>Okunmam\u0131\u015f E-postalar\u0131 Getir:<\/strong> Gmail API kullan\u0131larak \"okunmam\u0131\u015f\" etiketine sahip e-postalar listelenir.<br \/>\n2.  <strong>E-postalar\u0131 Filtrele:<\/strong> Belirli g\u00f6ndericilerden gelen veya belirli anahtar kelimeleri i\u00e7eren e-postalar gibi filtreleme kurallar\u0131 uygulan\u0131r. \u00d6rne\u011fin, sadece belirli bir konu ba\u015fl\u0131\u011f\u0131na sahip e-postalar i\u015flenebilir.<br \/>\n3.  <strong>\u0130\u015flenmi\u015f Olarak \u0130\u015faretle:<\/strong> Bir e-posta i\u015flenmeye ba\u015fland\u0131\u011f\u0131nda, tekrar i\u015flenmemesi i\u00e7in \"okundu\" olarak i\u015faretlenir veya \u00f6zel bir etiketle (<code>AI_PROCESSED<\/code>) etiketlenir.<\/p>\n<h4>Yapay Zeka Entegrasyonu ve Yan\u0131t Olu\u015fturma<\/h4>\n<p>E-posta i\u00e7eri\u011fi LLM'ye g\u00f6nderilir. LLM'den d\u00f6nen yan\u0131t tasla\u011f\u0131, g\u00fcvenli bir \u015fekilde depolan\u0131r veya do\u011frudan g\u00f6nderilir.<\/p>\n<pre><code class=\"language-javascript\">const { OpenAI } = require('openai');\nconst openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });\n\nasync function generateReply(emailContent, senderName, subject) {\n  const prompt = <code>A\u015fa\u011f\u0131daki e-postay\u0131 oku ve uygun, profesyonel, k\u0131sa bir T\u00fcrk\u00e7e yan\u0131t tasla\u011f\u0131 olu\u015ftur.\n  E-postan\u0131n konusu: ${subject}\n  G\u00f6nderen: ${senderName}\n  E-posta i\u00e7eri\u011fi: ${emailContent}\n  Yan\u0131t\u0131n amac\u0131: Gelen e-postaya nazik\u00e7e yan\u0131t vermek ve gerekli bilgiyi sa\u011flamak.\n  Yan\u0131t tonu: Resmi ve yard\u0131msever.<\/code>;\n\n  try {\n    const completion = await openai.chat.completions.create({\n      model: \"gpt-3.5-turbo\",\n      messages: [{ role: \"user\", content: prompt }],\n      max_tokens: 150,\n    });\n    return completion.choices[0].message.content;\n  } catch (error) {\n    console.error(\"Yapay zeka yan\u0131t\u0131 olu\u015fturulurken hata olu\u015ftu:\", error);\n    return null;\n  }\n}<\/pre>\n<p><\/code><\/p>\n<h4>G\u00fcvenli Yan\u0131t Mekanizmas\u0131<\/h4>\n<p>Her ne kadar yapay zeka yan\u0131tlar\u0131 olduk\u00e7a ba\u015far\u0131l\u0131 olsa da, %100 g\u00fcvenli de\u011fildir. Bu nedenle, kritik e-postalar i\u00e7in otomatik yan\u0131t g\u00f6ndermeden \u00f6nce bir onay mekanizmas\u0131 eklemek \u00f6nemlidir. Bu, yan\u0131t tasla\u011f\u0131n\u0131 bir taslak olarak kaydetmek ve kullan\u0131c\u0131n\u0131n manuel olarak incelemesini sa\u011flamak \u015feklinde olabilir. Ben ilk a\u015famada, belirli bir \"g\u00fcven seviyesi\"nin \u00fczerindeki e-postalar i\u00e7in do\u011frudan yan\u0131t g\u00f6nderirken, di\u011ferleri i\u00e7in taslak olu\u015fturma yolunu se\u00e7tim.<\/p>\n<h3>Kar\u015f\u0131la\u015f\u0131lan Zorluklar ve Ak\u0131ll\u0131 \u00c7\u00f6z\u00fcmler<\/h3>\n<p>Her geli\u015ftirme projesinde oldu\u011fu gibi, bu projede de baz\u0131 zorluklarla kar\u015f\u0131la\u015ft\u0131m. Ancak bu zorluklar, sistemi daha sa\u011flam ve ak\u0131ll\u0131 hale getirmek i\u00e7in f\u0131rsatlar sundu.<\/p>\n<h4>Rate Limitler ve API Kotalar\u0131<\/h4>\n<p>Google API'leri ve LLM API'leri genellikle belirli kullan\u0131m limitleri ve kotalarla gelir. \u00d6zellikle yo\u011fun e-posta trafi\u011fi olan hesaplarda bu limitlere tak\u0131lmak olas\u0131d\u0131r.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong> API \u00e7a\u011fr\u0131lar\u0131n\u0131 \u00f6nbelle\u011fe alma, yeniden deneme mekanizmalar\u0131 (exponential backoff ile) ve API \u00e7a\u011fr\u0131lar\u0131 aras\u0131na gecikmeler ekleyerek bu limitleri y\u00f6nettim. Ayr\u0131ca, kritik olmayan i\u015flemler i\u00e7in daha d\u00fc\u015f\u00fck maliyetli LLM modellerini veya daha az s\u0131kl\u0131kta API sorgular\u0131n\u0131 tercih ettim.<\/p>\n<h4>Ba\u011flam\u0131 Koruma ve Yanl\u0131\u015f Anlamalar\u0131 Engelleme<\/h4>\n<p>Yapay zekan\u0131n e-postan\u0131n t\u00fcm ba\u011flam\u0131n\u0131 do\u011fru bir \u015fekilde anlamas\u0131 ve yanl\u0131\u015f yan\u0131tlar vermemesi \u00f6nemli bir zorluktur. \u00d6zellikle uzun e-posta zincirlerinde veya karma\u015f\u0131k konularda bu risk artar.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Prompt m\u00fchendisli\u011fini s\u00fcrekli iyile\u015ftirdim. E-postan\u0131n sadece son mesaj\u0131n\u0131 de\u011fil, t\u00fcm ileti dizisini (thread) LLM'ye g\u00f6ndermeyi denedim. Ayr\u0131ca, LLM'den yan\u0131t\u0131 olu\u015ftururken belirli anahtar kelimeleri veya bilgileri dahil etmesini veya hari\u00e7 tutmas\u0131n\u0131 istedim. Yan\u0131tlar\u0131 g\u00f6nderilmeden \u00f6nce bir \"g\u00fcvenlik katman\u0131\" olarak manuel inceleme veya basit bir filtreleme mekanizmas\u0131 ekledim.<\/p>\n<h4>G\u00fcvenlik ve Gizlilik Endi\u015feleri<\/h4>\n<p>E-postalar ki\u015fisel ve hassas bilgiler i\u00e7erebilir. Bu bilgilerin yapay zeka modeline g\u00f6nderilmesi ve i\u015flenmesi g\u00fcvenlik ve gizlilik a\u00e7\u0131s\u0131ndan riskler bar\u0131nd\u0131r\u0131r.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   Sadece gerekli izinleri (Gmail API i\u00e7in <code>gmail.modify<\/code> veya <code>gmail.send<\/code>) istedim, <code>gmail.readonly<\/code> gibi daha k\u0131s\u0131tl\u0131 izinleri tercih ettim.<br \/>\n    *   Ortam de\u011fi\u015fkenlerini kullanarak API anahtarlar\u0131n\u0131 ve kimlik bilgilerini g\u00fcvenli bir \u015fekilde saklad\u0131m (<code>.env<\/code> dosyas\u0131 ve sunucu ortam de\u011fi\u015fkenleri).<br \/>\n    *   LLM sa\u011flay\u0131c\u0131s\u0131n\u0131n veri kullan\u0131m politikalar\u0131n\u0131 inceledim ve veri gizlili\u011fi konusunda g\u00fcvenilir bir sa\u011flay\u0131c\u0131 se\u00e7tim.<br \/>\n    *   Hassas bilgileri (kimlik numaralar\u0131, banka hesap bilgileri vb.) LLM'ye g\u00f6ndermeden \u00f6nce maskeleme veya kald\u0131rma mekanizmalar\u0131 eklemeyi d\u00fc\u015f\u00fcnd\u00fcm.<\/p>\n<h3>Uygulamay\u0131 Canl\u0131ya Alma ve Ger\u00e7ek D\u00fcnya Performans\u0131<\/h3>\n<p>Geli\u015ftirme ve test s\u00fcre\u00e7lerinin ard\u0131ndan, uygulamay\u0131 ger\u00e7ek d\u00fcnyada \u00e7al\u0131\u015f\u0131r hale getirmek ve performans\u0131n\u0131 g\u00f6zlemlemek heyecan vericiydi.<\/p>\n<h4>Da\u011f\u0131t\u0131m Stratejileri (Sunucusuz, VPS vb.)<\/h4>\n<p>Uygulamay\u0131 canl\u0131ya almak i\u00e7in \u00e7e\u015fitli da\u011f\u0131t\u0131m se\u00e7eneklerini de\u011ferlendirdim. Ba\u015flang\u0131\u00e7ta, d\u00fc\u015f\u00fck maliyetli bir Sanal \u00d6zel Sunucu (VPS) \u00fczerinde bir Node.js s\u00fcreci olarak \u00e7al\u0131\u015ft\u0131rd\u0131m. Daha sonra, sunucusuz (serverless) mimarilere (AWS Lambda, Google Cloud Functions) ge\u00e7i\u015f yapman\u0131n potansiyelini ara\u015ft\u0131rd\u0131m. Sunucusuz fonksiyonlar, sadece ihtiya\u00e7 duyuldu\u011funda \u00e7al\u0131\u015ft\u0131klar\u0131 i\u00e7in maliyet etkinli\u011fi ve \u00f6l\u00e7eklenebilirlik a\u00e7\u0131s\u0131ndan avantajl\u0131d\u0131r.<\/p>\n<h4>\u0130zleme ve G\u00fcnl\u00fckleme<\/h4>\n<p>Uygulaman\u0131n sorunsuz \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in kapsaml\u0131 izleme ve g\u00fcnl\u00fckleme (logging) mekanizmalar\u0131 kurdum.<br \/>\n*   Her e-posta i\u015fleme ad\u0131m\u0131, API \u00e7a\u011fr\u0131lar\u0131, yapay zeka yan\u0131tlar\u0131 ve olas\u0131 hatalar g\u00fcnl\u00fck dosyalar\u0131na kaydedildi.<br \/>\n*   Basit bir bildirim sistemi (Slack veya e-posta yoluyla) kurarak kritik hatalar hakk\u0131nda an\u0131nda bilgi almay\u0131 sa\u011flad\u0131m.<br \/>\n*   Uygulaman\u0131n genel performans\u0131n\u0131 (yan\u0131t s\u00fcreleri, i\u015flenen e-posta say\u0131s\u0131) takip ettim.<\/p>\n<h4>Ger\u00e7ek Kullan\u0131m Senaryolar\u0131 ve Geri Bildirimler<\/h4>\n<p>Uygulamay\u0131 kendi ki\u015fisel e-posta hesab\u0131mda ve k\u00fc\u00e7\u00fck bir test grubunda kulland\u0131m. Gelen geri bildirimler paha bi\u00e7ilmezdi:<br \/>\n*   <strong>Olumlu Y\u00f6nler:<\/strong> Rutin sorulara h\u0131zl\u0131 ve do\u011fru yan\u0131tlar, zaman tasarrufu, e-posta y\u00fck\u00fcn\u00fcn azalmas\u0131. \u00d6zellikle \"Te\u015fekk\u00fcr ederim\" veya \"Bilgi ald\u0131m\" gibi k\u0131sa, onaylay\u0131c\u0131 yan\u0131tlar i\u00e7in m\u00fckemmeldi.<br \/>\n*   <strong>Geli\u015ftirilmesi Gerekenler:<\/strong> Bazen yapay zeka, karma\u015f\u0131k veya \u00e7ok katmanl\u0131 e-postalarda ba\u011flam\u0131 tam olarak kavrayamayabiliyordu. Baz\u0131 yan\u0131tlar fazla genel kalabiliyordu. Bu geri bildirimler do\u011frultusunda prompt'lar\u0131 daha da rafine ettim ve daha spesifik talimatlar ekledim.<\/p>\n<h3>Gelecek Perspektifleri ve Potansiyel Geli\u015ftirmeler<\/h3>\n<p>Bu proje, yapay zekan\u0131n e-posta y\u00f6netimindeki potansiyelini a\u00e7\u0131k\u00e7a g\u00f6sterdi. Ancak her teknoloji gibi, s\u00fcrekli geli\u015ftirme ve iyile\u015ftirme i\u00e7in alanlar mevcut.<\/p>\n<h4>\u00c7oklu Dil Deste\u011fi ve Ton Ayarlamalar\u0131<\/h4>\n<p>\u015eu anda T\u00fcrk\u00e7e odakl\u0131 olan sistemi, \u0130ngilizce, Almanca gibi di\u011fer dilleri de destekleyecek \u015fekilde geni\u015fletmek m\u00fcmk\u00fcn. Ayr\u0131ca, yan\u0131tlar\u0131n tonunu (resmi, samimi, acil, pazarlama odakl\u0131 vb.) kullan\u0131c\u0131n\u0131n tercihine g\u00f6re dinamik olarak ayarlayabilen bir \u00f6zellik eklemek, sistemin esnekli\u011fini art\u0131racakt\u0131r.<\/p>\n<h4>\u00d6\u011frenme ve Adaptasyon Yetenekleri<\/h4>\n<p>Uygulaman\u0131n g\u00f6nderilen yan\u0131tlar ve kullan\u0131c\u0131 geri bildirimleri \u00fczerinden \u00f6\u011frenerek zamanla daha ki\u015fiselle\u015fmi\u015f ve do\u011fru yan\u0131tlar \u00fcretmesi hedeflenebilir. \u00d6rne\u011fin, kullan\u0131c\u0131n\u0131n manuel olarak d\u00fczeltti\u011fi yan\u0131tlar\u0131 analiz ederek kendi prompt'lar\u0131n\u0131 veya yan\u0131t stratejilerini g\u00fcncelleyebilir.<\/p>\n<h4>Di\u011fer Platformlarla Entegrasyon<\/h4>\n<p>Sadece Gmail ile s\u0131n\u0131rl\u0131 kalmay\u0131p, Outlook, Slack veya di\u011fer ileti\u015fim platformlar\u0131yla entegrasyon sa\u011flayarak daha geni\u015f bir otomasyon ekosistemi olu\u015fturulabilir. Bu, i\u015f ak\u0131\u015flar\u0131n\u0131 daha da kolayla\u015ft\u0131rabilir ve merkezi bir yapay zeka asistan\u0131 deneyimi sunabilir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Node.js ve Gmail API kullanarak geli\u015ftirdi\u011fim bu yapay zeka e-posta yan\u0131tlay\u0131c\u0131s\u0131, e-posta y\u00f6netiminde kar\u015f\u0131la\u015f\u0131lan zorluklara pratik ve etkili bir \u00e7\u00f6z\u00fcm sunuyor. Proje, sadece teknik bir ba\u015far\u0131 de\u011fil, ayn\u0131 zamanda yapay zekan\u0131n g\u00fcnl\u00fck i\u015flerimizi nas\u0131l d\u00f6n\u00fc\u015ft\u00fcrebilece\u011fine dair somut bir \u00f6rnek te\u015fkil ediyor. Kar\u015f\u0131la\u015f\u0131lan zorluklara ra\u011fmen, do\u011fru ara\u00e7lar ve stratejilerle, ger\u00e7ekten i\u015fe yarayan ve zaman kazand\u0131ran ak\u0131ll\u0131 sistemler in\u015fa etmek m\u00fcmk\u00fcn. E-posta kutunuzun kontrol\u00fcn\u00fc yeniden ele almak ve \u00fcretkenli\u011finizi art\u0131rmak i\u00e7in yapay zeka destekli otomasyonun g\u00fcc\u00fcn\u00fc ke\u015ffetmenizi \u015fiddetle tavsiye ederim.<\/p>\n<h3>SSS (S\u0131k Sorulan Sorular)<\/h3>\n<h4>Bu sistem ne kadar g\u00fcvenli?<\/h4>\n<p>Sistem, Google'\u0131n OAuth 2.0 protokol\u00fcn\u00fc kullanarak g\u00fcvenli kimlik do\u011frulama sa\u011flar. API anahtarlar\u0131<\/p>\n","protected":false},"excerpt":{"rendered":"Node. js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[136],"tags":[],"class_list":{"0":"post-40805","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-node-js","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Node.js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Node.js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!)\" \/>\n<meta property=\"og:description\" content=\"Node. js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-01T10:00:42+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Node.js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!)\",\"datePublished\":\"2026-03-01T10:00:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/\"},\"wordCount\":2474,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Node.js\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/\",\"name\":\"Node.js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-03-01T10:00:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Node.js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Node.js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/","og_locale":"tr_TR","og_type":"article","og_title":"Node.js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!)","og_description":"Node. js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!","og_url":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-03-01T10:00:42+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"14 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Node.js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!)","datePublished":"2026-03-01T10:00:42+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/"},"wordCount":2474,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Node.js"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/","url":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/","name":"Node.js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-03-01T10:00:42+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-kendi-gmail-yapay-zeka-yanitlayicimi-gelistirdim-ve-gercekten-calisiyor\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Node.js ile Kendi Gmail Yapay Zeka Yan\u0131tlay\u0131c\u0131m\u0131 Geli\u015ftirdim (ve Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor!)"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/40805","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=40805"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/40805\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=40805"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=40805"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=40805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}