n8n ile Her Sabah Otomatik Günlük Brifing

AgentRoost · May 5, 2026 · 5 dk okuma · Markdown olarak görüntüle
AgentRoost — n8n Automation

Güne başlamadan önce takvime bak, e-postayı tara, görev listesini gözden geçir — bu rutinin kendisi zaten 20 dakika götürüyor. Peki ya bunların hepsi otomatik olarak derlenseydi, özetlenseydi ve her sabah telefonuna bir mesaj olarak gelseydi?

Bu yazıda tam olarak bunu yapan bir n8n akışı kuruyoruz: Google Calendar + Gmail (veya Outlook) + bir görev listesi kaynağı → AI özetleme düğümü → Telegram mesajı. Akış her sabah saat 07:30'da tetiklenir, sana "bugün ne var, neye dikkat etmeli, hangi e-postalar bekliyor" sorusunu yanıtlayan yapılandırılmış bir brifing üretir.


Akışın Mimarisi

Beş ana blok var:

  1. Schedule Trigger — Sabah tetiklemesi
  2. Veri Toplama — Takvim, e-posta, görevler (paralel HTTP Request düğümleri)
  3. Code / Set Düğümü — Ham veriyi birleştirip tek bir metin haline getirme
  4. AI / LLM Düğümü — Yapılandırılmış brifing üretme
  5. Telegram Düğümü — Mesajı gönderme

Adım Adım Kurulum

1. Schedule Trigger

n8n editöründe yeni bir akış aç. İlk düğüm olarak Schedule Trigger ekle.

Trigger interval: Days
Days between triggers: 1
Trigger at Hour: 7
Trigger at Minute: 30

Bu düğüm her gün 07:30'da akışı başlatır. Hafta sonlarını atlamak istiyorsan yanına bir IF düğümü ekleyip {{ $now.weekday() }} ifadesini kontrol edebilirsin (1–5 arası iş günü, 6–7 hafta sonu).


2. Google Calendar'dan Bugünün Toplantılarını Çek

HTTP Request düğümü ekle, aşağıdaki ayarları yap:

Method: GET
URL: https://www.googleapis.com/calendar/v3/calendars/primary/events
Authentication: OAuth2 (Google Calendar)
Query Parameters:
  timeMin: {{ $now.startOf('day').toISO() }}
  timeMax: {{ $now.endOf('day').toISO() }}
  singleEvents: true
  orderBy: startTime

OAuth2 kimlik bilgilerini bir kez n8n'e tanımlarsın, sonrasında akış otomatik yeniler. Yanıtta items[] dizisi döner; her öğede summary, start.dateTime, description, attendees alanları bulunur.


3. Gmail'den Okunmamış E-postaları Çek

İkinci bir HTTP Request düğümü ekle:

Method: GET
URL: https://gmail.googleapis.com/gmail/v1/users/me/messages
Authentication: OAuth2 (Gmail)
Query Parameters:
  q: is:unread newer_than:1d
  maxResults: 15

Bu sorgu son 24 saatte gelen, henüz okunmamış en fazla 15 e-postayı döndürür. Sadece id listesi gelir; tam içerik için her ID'ye ayrı bir GET atman gerekir. Bunu yapmak istemiyorsan Gmail'in format=metadata parametresiyle sadece gönderen + konu satırını çekebilirsin — brifing için bu çoğu zaman yeterlidir.

URL: https://gmail.googleapis.com/gmail/v1/users/me/messages/{{ $json.id }}
Query Parameters:
  format: metadata
  metadataHeaders: From,Subject,Date

Bunu bir Loop Over Items düğümüyle zincirlersen her mesaj için tek tek çekim yaparsın.


4. Görev Listesi (Todoist / Google Tasks / Notion)

Hangi aracı kullandığına bağlı:

  • Google Tasks: https://tasks.googleapis.com/tasks/v1/lists/@default/tasks?showCompleted=false&dueMax={{ $now.endOf('day').toISO() }}
  • Todoist: https://api.todoist.com/rest/v2/tasks?filter=today (Authorization: Bearer token)
  • Notion Database: HTTP Request + Notion API'ye filter: { property: "Due", date: { equals: today } }

Her üçü de düz bir JSON dizisi döndürür, işleme mantığı aynıdır.


5. Veriyi Birleştir: Code Düğümü

Üç kaynaktan gelen veriyi tek bir metin bloğuna dönüştür. Code düğümü ekle (JavaScript modu):

const calItems = $('HTTP Request - Calendar').all();
const mailItems = $('HTTP Request - Gmail').all();
const taskItems = $('HTTP Request - Tasks').all();

const meetings = calItems.map(i => {
  const ev = i.json;
  const start = ev.start?.dateTime || ev.start?.date || '';
  return `- ${start.slice(11,16)} ${ev.summary}`;
}).join('\n') || 'Bugün toplantı yok.';

const emails = mailItems.map(i => {
  const headers = i.json.payload?.headers || [];
  const from    = headers.find(h => h.name === 'From')?.value || '';
  const subject = headers.find(h => h.name === 'Subject')?.value || '';
  return `- ${from}: ${subject}`;
}).join('\n') || 'Okunmamış e-posta yok.';

const tasks = taskItems.map(i => `- ${i.json.title}`).join('\n') || 'Bugün için görev yok.';

return [{
  json: {
    rawContext: `## Bugünün Takvimi\n${meetings}\n\n## Bekleyen E-postalar\n${emails}\n\n## Yapılacaklar\n${tasks}`
  }
}];

6. AI / LLM Düğümü: Brifing Üret

AI / LLM düğümü ekle. System prompt:

Sen kısa ve net konuşan bir kişisel asistansın. Aşağıdaki ham verileri alıp profesyonel bir sabah brifingi üreteceksin. Şu bölümleri içersin:
1. Bugünün Öncelikleri (max 3 madde)
2. Toplantı Gündemi (saat sıralamasıyla)
3. Dikkat Gerektiren E-postalar (önemli görünenleri vurgula)
4. Tamamlanması Gereken Görevler
Kısa ve öz yaz. Türkçe kullan.

User prompt alanına şunu gir:

{{ $json.rawContext }}

Model olarak istediğin herhangi birini seçebilirsin — akış hangi modeli kullandığına bakılmaksızın çalışır çünkü AI kredisi zaten aboneliğe dahildir, ayrı API anahtarı gerekmez.


7. Telegram Düğümü

Telegram düğümü ekle:

Operation: Send Message
Chat ID: {{ $env.TELEGRAM_CHAT_ID }}
Text: {{ $json.output }}
Parse Mode: Markdown

Telegram bot tokenini n8n'in Credentials bölümüne eklemen gerekir (BotFather'dan bir bot oluşturarak alırsın). Chat ID'ni de n8n ortam değişkenlerine (Settings → Variables) kaydet. Webhook URL'lerin otomatik olarak HTTPS'dir — SSL kurulumu sıfır.


Pratik İpuçları

Hata yönetimi: HTTP Request düğümlerine "Continue on Error" modunu aç; bir kaynak geçici olarak düşerse diğerleri yine de çalışır ve brifing kısmen de olsa gelir.

Kişiselleştirme: IF düğümüyle "toplantı 5'ten fazlaysa yoğun gün uyarısı ekle" gibi dallanmalar kurabilirsin.

Gürültüyü azalt: Gmail sorgusuna -category:promotions -category:social ekle; promosyon ve sosyal medya bildirimlerini brifingin dışında bırakır.

Zaman dilimi: Schedule Trigger'daki timezone ayarının kendi saat diliminle eşleştiğini kontrol et. Varsayılan UTC ise 07:30 tetiklemesi Türkiye'de 10:30'a denk gelir.


Bu Akışı AgentRoost'ta Çalıştırmak

Kendi sunucunda bu akışı kurmak istesen şunlarla uğraşman gerekir: Docker kurulumu, SSL sertifikası, cron zamanlayıcı, OpenAI API anahtarı ve aylık fatura takibi. Sonra güncelleme geldiğinde tekrar uğraşırsın.

AgentRoost'ta süreç farklı işliyor:

  1. agentroost.app/tr/agents/n8n sayfasına git, n8n çerçevesini seç.
  2. Instance'ına bir isim ver — birkaç saniye içinde https://<senin-id>.agentroost.app adresinde kendi n8n editörün açılır. Bu instance tamamen senin: workflow'larını yönetir, verilerini dışa aktarır, istediğin zaman takımınla paylaşırsın.
  3. Yukarıdaki akışı kur. AI / LLM düğümüne API anahtarı girmen gerekmez; AI kredisi aboneliğe dahildir.
  4. Schedule Trigger'ı kaydet — artık her sabah çalışacak.

Webhook URL'lerin otomatik olarak https://<senin-id>.agentroost.app/webhook/... şeklinde geliyor; SSL kurulumu, port açma veya reverse proxy yapılandırması yok.

Fiyatlandırma $19,99/aydan başlıyor — bu fiyata sunucu, AI kullanımı ve kurulum dahil. 14 gün iade garantisi var, istediğin zaman iptal edebilirsin. Planları karşılaştır.


Sonuç

Bu akış bir kez kurulduğunda her sabah takvimini, e-postalarını ve görev listeni çekip sana derlemiş, önceliklendirilmiş ve okunabilir bir brifing olarak gönderir. Sabah rutinindeki "nereye bakacağım" kargaşasını ortadan kaldırır. Değişken iş yükü olan günlerde ne kadar kritik olduğunu ilk birkaç günde anlarsın.

Sıkça sorulan sorular

AI düğümü için OpenAI veya başka bir API anahtarı girmem gerekiyor mu?

AgentRoost'ta hayır. AI / LLM düğümlerini kullanmak için ayrı bir API anahtarı almanı gerekmez; AI kredisi aboneliğe dahildir. n8n instance'ın içinde AI düğümünü açar, modeli seçer ve akışı çalıştırırsın.

Kendi sunucumda kurulu n8n'de de bu akışı çalıştırabilir miyim?

Evet, akışın kendisi standart n8n düğümleri kullanıyor; kendi sunucuna da kurabilirsin. Fark şu: kendi kurulumunda SSL, Docker bakımı ve LLM API faturası sana ait. AgentRoost'ta bunların hepsi tek fiyata dahil ve instance tamamen senin — workflow'larını dışa aktarabilir, akışlarını dilediğin gibi yönetebilirsin.

Schedule Trigger her gün mü çalışır, yoksa hafta sonlarını atlayabilir miyim?

Schedule Trigger varsayılan olarak her gün belirli saatte tetiklenir. Hafta sonlarını atlamak için Trigger'ın hemen ardına bir IF düğümü ekleyip {{ $now.weekday() <= 5 }} koşuluyla akışı sadece Pazartesi–Cuma çalıştırabilirsin.

Aboneliği iptal edersem akışlarımı ve verilerimi kaybeder miyim?

Hayır. n8n, akışlarını JSON olarak dışa aktarma özelliği sunar (Settings → Export). İptal etmeden önce bir yedek alabilir, dilersen başka bir n8n kurulumuna import edebilirsin. 14 gün iade garantisi süresince iptal edersen ücret alınmaz.

Telegram yerine e-posta veya başka bir kanala gönderebilir miyim?

Evet. Son düğümü Telegram yerine Gmail / SMTP (e-posta), Slack, Discord veya Microsoft Teams düğümüyle değiştirebilirsin. n8n'in çok sayıda entegrasyonu var; brifing hangi kanala gidecekse o düğümü eklemek yeterli.